diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c2d0001be..b9312f8fa 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -9,14 +9,17 @@ community/hello_world/*/* @quantumjim community/games/* @quantumjim community/games/*/* @quantumjim -community/terra/* @attp -community/terra/*/* @attp -community/algorithms/* @attp +community/terra/* @attp @ajavadia +community/terra/*/* @attp @ajavadia +community/algorithms/* @attp @ajavadia community/aqua/* @chunfuchen @pistoia community/aqua/*/* @chunfuchen @pistoia community/aqua/*/*/* @chunfuchen @pistoia -community/teach_me_qiskit_2018/* @rraymondhp -community/teach_me_qiskit_2018/*/* @rraymondhp +community/awards/teach_me_qiskit_2018/* @rraymondhp +community/awards/teach_me_qiskit_2018/*/* @rraymondhp + +community/ignis/* @dcmckayibm +qiskit/ignis/* @dcmckayibm diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..04ffc8ce3 --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at qiskit@qiskit.org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 000000000..e37ad79c6 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,33 @@ +# Contributing + +If you would like to contribute to the Qiskit-tutorials, there are a number of ways to +get involved: + +* **Issues**: Issues can be reported with GitHub [issue + reporting](https://github.com/Qiskit/qiskit-tutorial/issues) for this repository. + Select `New issue`, fill in a descriptive title, and provide as much detail + as is needed for the issue to be reproduced. + +* **Notebooks**: If you would like to contribute a notebook, please + create a [fork](https://help.github.com/articles/fork-a-repo/) of the repository + from the `master` branch and create a + [pull requests](https://help.github.com/articles/about-pull-requests) for your change. + Note that new notebooks should be placed in the relevant part of the + [Community](./community/) section. + +## Contributor License Agreement + +We'd love to accept your code! Before we can, we have to get a few legal +requirements sorted out. By having you sign a Contributor License Agreement (CLA), we +ensure that the community is free to use your contributions. + +When you contribute to the Qiskit project with a new pull request, a bot will +evaluate whether you have signed the CLA. If required, the bot will comment on +the pull request, including a link to accept the agreement. The +[individual CLA](https://qiskit.org/license/qiskit-cla.pdf) document is +available for review as a PDF. + +If you work for a company that wants to allow you to contribute your work, +then you'll need to sign a [corporate CLA](https://qiskit.org/license/qiskit-corporate-cla.pdf) +and email it to us at qiskit@qiskit.org. + diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 184a61c9e..000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,12 +0,0 @@ - - -## Description - - -## Your Environment - -* QISKit version: -* Python version: diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..580e42221 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,33 @@ +--- +name: "\U0001F41B Bug report" +about: "Create a report to help us improve \U0001F914." +title: '' +labels: bug +assignees: '' + +--- + + + + +### Informations + +- **Qiskit version**: +- **Python version**: +- **Operating system**: + +### What is the current behavior? + + + +### Steps to reproduce the problem + + + +### What is the expected behavior? + + + +### Suggested solutions + + diff --git a/.github/ISSUE_TEMPLATE/documentation.md b/.github/ISSUE_TEMPLATE/documentation.md new file mode 100644 index 000000000..da9bb4bef --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation.md @@ -0,0 +1,10 @@ +--- +name: Documentation +about: 'Create a report to help us improve the documentation ' +title: '' +labels: documentation +assignees: '' + +--- + + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000..16810df5f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,15 @@ +--- +name: "\U0001F680 Feature request" +about: "Suggest an idea for this project \U0001F4A1!" +title: '' +labels: enhancement +assignees: '' + +--- + + + + +### What is the expected behavior? + + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..385116563 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,18 @@ + + +### Summary + + + +### Details and comments + + diff --git a/INSTALL.md b/INSTALL.md index f35424b52..8cffc457a 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -9,17 +9,10 @@ **Get the tutorials**
-For the full experience, you can start by [downloading](https://github.com/Qiskit/qiskit-tutorial/archive/master.zip) the tutorials. Unzip the archive in the directory of your choice (this is the recommend way). Alternatively, the more advanced user may choose to use `git`. If you have `git` installed, run - -``` -git clone https://github.com/Qiskit/qiskit-tutorial.git -``` +For the full experience, you can start by downloading the latest release of the tutorials from [here](https://github.com/Qiskit/qiskit-tutorials/releases). Unzip the archive in the directory of your choice (this is the recommend way). To properly view and run the tutorials, you will need to install [Jupyter Notebook](https://jupyter.readthedocs.io/en/latest/install.html). -If you need to install `git` follow the instructions [here](https://help.github.com/articles/set-up-git/). - - ## 2. Install Qiskit, Qiskit Aqua and Qiskit Aqua Chemistry At least [Python 3.5 or later](https://www.python.org/downloads/) is required to install and use Qiskit. If you have multiple Python versions installed (and particularly if the command `python --version` returns an incompatble version), you will need to ensure that your versions are [managed correctly](https://conda.io/docs/user-guide/tasks/manage-python.html). This can be done using the `environment.yml` file, as detailed below. diff --git a/README.md b/README.md index 48ca97270..e8e77342f 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,25 @@ - - - -*** - - # Qiskit Tutorials -[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) -[![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/QISKit/qiskit-tutorial/master?filepath=index.ipynb) - +[![License](https://img.shields.io/github/license/Qiskit/qiskit-tutorials.svg?style=popout-square)](https://opensource.org/licenses/Apache-2.0)[![](https://img.shields.io/github/release/Qiskit/qiskit-tutorials.svg?style=popout-square)](https://github.com/Qiskit/qiskit-tutorials/releases) -Welcome to the [Qiskit](https://www.qiskit.org/ tutorials! +Welcome to the [Qiskit](https://www.qiskit.org/) tutorials! In this repository, we've put together a collection of Jupyter notebooks aimed at teaching people who want to use Qiskit for writing quantum computing programs, and executing them on one of several backends (online quantum processors, online simulators, and local simulators). The online quantum processors are the [IBM Q](https://quantumexperience.ng.bluemix.net/qx/devices) devices. -## Installation and Setup +## Installation The notebooks for these tutorials can be viewed here on GitHub. But for the full experience, you'll want to interact with them! -The easiest way to do this is using [the Binder image](https://mybinder.org/v2/gh/Qiskit/qiskit-tutorial/master?filepath=index.ipynb), which lets you use the notebooks via the web. This means that you don't need to download or install anything, but it also means that you should not insert any private information into the notebooks (such as your API key). We recommend as pointed out in [issue #231](https://github.com/Qiskit/qiskit-tutorial/issues/231) that after you are done using mybinder that you regenerate your token. +The easiest way to do this is using [the Binder image](https://mybinder.org/v2/gh/qiskit/qiskit-tutorials/master?filepath=index.ipynb), which lets you use the notebooks via the web. This means that you don't need to download or install anything, but it also means that you should not insert any private information into the notebooks (such as your API key). We recommend as pointed out in [issue #231](https://github.com/Qiskit/qiskit-tutorials/issues/231) that after you are done using mybinder that you regenerate your token. Please refer to this [installation guide](INSTALL.md) for setting up Qiskit and the tutorials on your own machine (this is the recommended way). -*** - ## Contents + We have organized the tutorials into two sections: ### 1. [Qiskit notebooks](qiskit/) + We've collected a core reference set of notebooks in this section outlining the features of Qiskit. We will be keeping them up to date with the latest Qiskit version. - [Basics](qiskit/basics) is meant for those who are getting started. - [Terra](qiskit/terra) is meant for those who want to study circuits. @@ -36,26 +28,29 @@ We've collected a core reference set of notebooks in this section outlining the - [Jupyter](qiskit/jupyter) is meant to highlight some cool Juypter features. ### 2. [Community notebooks](community/) + Teaching quantum computing and qiskit has many different paths of learning. We love our community, and we love the contributions so keep them coming. Because Qiskit is changing so much, at the moment we cant keep this updated, but there are some great notebooks in here. See: - [Hello, Quantum World](community/hello_world/) learn from the community how to write your first quantum program. - [Quantum Games](community/games/), learn quantum computing by having fun. - [Quantum Information Science with Terra](community/terra/), learn about quantum information science with Qiskit Terra. - [Textbook Quantum Algorithms](community/algorithms/), learn Qiskit from the textbook algorithms. - [Quantum Algorithms](community/aqua/), learn about quantum algorithms for noisy near-term devices with Qiskit Aqua. -- [Teach Me Qiskit 2018](community/teach_me_qiskit_2018/), learn from the great contributions to the [Teach Me Qiskit award](https://www.ibm.com/blogs/research/2018/06/teach-qiskit-winner/). +- [IBM Q Awards](community/awards/), learn from the great contributions to the [IBM Q Awards](https://qe-awards.mybluemix.net/), [Teach Me Qiskit 2018](community/awards/teach_me_qiskit_2018/index.ipynb) and [Teach Me Quantum 2018](community/awards/teach_me_quantum_2018/index.ipynb). To go through the tutorials, load up the [index.ipynb](index.ipynb) notebook and start learning. -*** +## Contribution Guidelines -## Contributing -If you would like to contribute to the tutorials, there are a number of ways to get involved: +If you'd like to contribute to Qiskit Tutorials, please take a look at our +[contribution guidelines](.github/CONTRIBUTING.md). This project adheres to Qiskit's [code of conduct](.github/CODE_OF_CONDUCT.md). By participating, you are expect to uphold to this code. -* **Issues**: Issues can be reported with GitHub [issue reporting](https://github.com/Qiskit/qiskit-tutorial/issues) for this repository. Select `New issue`, fill in a descriptive title, and provide as much detail as is needed for the issue to be reproduced. -* **Notebooks**: If you would like to contribute a notebook, please create a [fork](https://help.github.com/articles/fork-a-repo/) of the repository from the `master` branch and create a [pull request](https://help.github.com/articles/about-pull-requests/) for your change. Note that new notebooks should be placed in the relevant part of the [Community](community/) section. +We use [GitHub issues](https://github.com/Qiskit/qiskit-tutorials/issues) for tracking requests and bugs. Please use our [slack](https://qiskit.slack.com) for discussion and simple questions. To join our Slack community use the [link](https://join.slack.com/t/qiskit/shared_invite/enQtNDc2NjUzMjE4Mzc0LTMwZmE0YTM4ZThiNGJmODkzN2Y2NTNlMDIwYWNjYzA2ZmM1YTRlZGQ3OGM0NjcwMjZkZGE0MTA4MGQ1ZTVmYzk). For questions that are more suited for a forum we use the Qiskit tag in the [Stack Exchange](https://quantumcomputing.stackexchange.com/questions/tagged/qiskit). -## Contributors -These tutorials are the work of our [Qiskitters](https://github.com/Qiskit/qiskit-tutorial/graphs/contributors) who contribute to the project at different levels. +## Authors and Citation + +Qiskit Tutorials is the work of [many people](https://github.com/Qiskit/qiskit-tutorials/graphs/contributors) who contribute +to the project at different levels. If you use Qiskit, please cite as per the included [BibTeX file](https://github.com/Qiskit/qiskit/blob/master/Qiskit.bib). ## License -This project is licensed under the Apache License 2.0 - see the [LICENSE](https://github.com/QISKit/qiskit-tutorial/blob/master/LICENSE) file for details. + +[Apache License 2.0](LICENSE.txt) diff --git a/community/algorithms/shor_algorithm.ipynb b/community/algorithms/shor_algorithm.ipynb index 524e0950b..dd7200d90 100644 --- a/community/algorithms/shor_algorithm.ipynb +++ b/community/algorithms/shor_algorithm.ipynb @@ -70,10 +70,18 @@ { "data": { "text/html": [ - "" + "\n", + " \n", + " " ], "text/plain": [ - "" + "" ] }, "execution_count": 1, @@ -82,8 +90,8 @@ } ], "source": [ - "from IPython.display import HTML\n", - "HTML('')" + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/hOlOY7NyMfs?start=75&end=126\",560,315)" ] }, { @@ -213,7 +221,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "semiprime N = 908267\n" + "semiprime N = 16241\n" ] } ], @@ -272,7 +280,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "semiprime N = 908267, coprime x = 791743, period r = 151060, prime factors = 997 and 911\n" + "semiprime N = 16241, coprime x = 7076, period r = 1998, prime factors = 109 and 149\n" ] } ], @@ -610,8 +618,7 @@ " qc.cx(qr[4],qr[2])\n", " qc.cx(qr[4],qr[0])\n", " # feed forward\n", - " if cr[0] == 1:\n", - " qc.u1(math.pi/2.,qr[4])\n", + " qc.u1(math.pi/2.,qr[4]).c_if(cr, 1)\n", " qc.h(qr[4])\n", " # measure\n", " qc.measure(qr[4],cr[1])\n", @@ -623,10 +630,9 @@ " # controlled unitary.\n", " circuit_amod15(qc,qr,cr,a)\n", " # feed forward\n", - " if cr[1] == 1:\n", - " qc.u1(math.pi/2.,qr[4])\n", - " if cr[0] == 1:\n", - " qc.u1(math.pi/4.,qr[4])\n", + " qc.u1(3.*math.pi/4.,qr[4]).c_if(cr, 3)\n", + " qc.u1(math.pi/2.,qr[4]).c_if(cr, 2)\n", + " qc.u1(math.pi/4.,qr[4]).c_if(cr, 1)\n", " qc.h(qr[4])\n", " # measure\n", " qc.measure(qr[4],cr[2])" @@ -667,8 +673,7 @@ " qc.h(qr[4])\n", " # controlled identity on the remaining 4 qubits, which is equivalent to doing nothing\n", " # feed forward\n", - " if cr[0] == 1:\n", - " qc.u1(math.pi/2.,qr[4])\n", + " qc.u1(math.pi/2.,qr[4]).c_if(cr, 1)\n", " qc.h(qr[4])\n", " # measure\n", " qc.measure(qr[4],cr[1])\n", @@ -681,10 +686,9 @@ " qc.cx(qr[4],qr[3])\n", " qc.cx(qr[4],qr[1])\n", " # feed forward\n", - " if cr[1] == 1:\n", - " qc.u1(math.pi/2.,qr[4])\n", - " if cr[0] == 1:\n", - " qc.u1(math.pi/4.,qr[4])\n", + " qc.u1(3.*math.pi/4.,qr[4]).c_if(cr, 3)\n", + " qc.u1(math.pi/2.,qr[4]).c_if(cr, 2)\n", + " qc.u1(math.pi/4.,qr[4]).c_if(cr, 1)\n", " qc.h(qr[4])\n", " # measure\n", " qc.measure(qr[4],cr[2])" @@ -694,7 +698,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's build and run a circuit for $a = 7$, and plot the results:" + "Let's build and run a circuit for $a = 7$, and plot the the circuit and results:" ] }, { @@ -709,9 +713,9 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdAAAAFWCAYAAADZtMzFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XuYXFWZ7/HvS4CQIEEDISZCgBAMCZfYgAKaC4JBBEVkGBjlInpGBsEAwygc8QLMeBlRFG8IRlEBmREFVK7DYaIEEEFDDCAhwIQkhASEcL+EQPOeP/ZOT6XpTrp3uruq0t/P8/RD1a7d1W+x0v3be+2114rMRJIkdc969S5AkqRmZIBKklSBASpJUgUGqCRJFRigkiRVYIBKklSBASpJUgUGqCRJFRigkiRVsH69C6inzTbbLEeNGlXvMiRJDeQvf/nLE5k5bE379esAHTVqFDNmzKh3GZKkBjJ06NCFXdnPLlxJkiowQCVJqsAAlSSpAgNUkqQKDFBJkiowQCVJqsAAlSSpAgNUkqQKDFBJkiowQCVJqsAAlSSpAgNUkqQKDFBJkiowQCVJqsAAlSSpAgNUkqQKDFBJkiowQCVJqsAAlSSpAgNUkqQKDFBJkiowQCVJqsAAlSSpAgNUUlO48cYbecc73sFuu+3Gueee+7rXv//977PnnnsyceJEDj74YB5++OG21zbffHMmT57M5MmT+chHPtK2/YADDmjbPn78eI488sg++SxaN6xf7wIkaU1aW1s59dRTueKKKxg5ciT77rsv+++/PzvssEPbPrvssgszZsxg8ODBXHjhhZxxxhlceOGFAAwaNIiZM2e+7n2vvfbatsdHH300BxxwQO9/GK0zPAOV1PBmzZrFtttuyzbbbMOGG27IIYccwnXXXbfKPpMmTWLw4MEA7L777ixZsqTL7//ss89y8803G6DqFgO0F/VGl9O0adOYNGkSEydO5KMf/SjPP/98n3wWqZ6WLl3KW97ylrbnI0eOZOnSpZ3uf8kll/Ce97yn7fny5cvZZ599mDp1Ktdcc83r9r/22muZPHkyQ4YM6dnCtU6zC7eX9FaX05e//OW2X/LPfe5z/OhHP+Lkk0/umw8lNYHLLruM2bNnc/XVV7dtmzNnDiNHjmTBggV88IMfZPz48Wy77bZtr19++eUcddRR9ShXTcwz0F7SW11OK8MzM1m+fDkR0fPF9zO90VMwffp0dtttN4YOHcqyZcv65HOsy0aMGMEjjzzS9nzJkiWMGDHidfv9/ve/55xzzuHSSy9l4MCBbdtHjhwJwDbbbMPEiRO566672l5btmwZd955J/vtt18vfgKtiwzQXtKbXU4nnHACO+ywAw888ACf+MQner74fmRlT8Fll13GbbfdxuWXX8599923yj4rewpuueUWDjroIM4444y211b2FMycOZNLL720bfsee+zBlVdeyVZbbdVnn2VdtuuuuzJ//nwWLlzIihUruOKKK9h///1X2eeuu+7ilFNO4dJLL2XYsGFt259++mlefvlloAjL22+/nbFjx7a9/tvf/pb3vve9bLTRRn3zYbTOsAu3AXS3y+n73/8+ra2tnHbaaVx55ZUcccQR9Sq96dX2FABtPQW1Xe2TJk1qe7z77rtz2WWXrfF9d9lllx6vtT9bf/31Ofvsszn00ENpbW3liCOOYNy4cXzlK1+hpaWF973vfZxxxhm88MILfOxjHwNgyy235NJLL2XevHmccsoprLfeerz22mucdNJJq7TvFVdcwUknnVSvj6YmZoD2ku52OV199dVr7HKqvWYzYMAADjnkEL7zne8YoGuho56CWbNmdbp/Zz0FAwYM4OSTT+bAAw/s1Xr7s6lTpzJ16tRVtp1++ultj6+88soOv2+PPfbg1ltv7fR9r7rqqp4pUP2OXbi9pDe6nDKT+fPnA8U10Ouuu47tt9++7z5UP7eyp2DatGlt2+bMmcOMGTOYPn06p59+Og899FAdK5TUlzwD7SW90eX02muvcfzxx/Pcc8+Rmey000584xvfqPMnbW693VMgad0VmVnvGuqmpaUlZ8yYUe8yVEevvvoqb3/72/n1r3/NiBEj2HffffnhD3/IuHHj2va56667OOaYY/jlL3/Jdttt17b96aefZtCgQQwcOJBly5bx3ve+l0suuWSV62sTJkxgxowZbLbZZn36uSRVN3To0FmZufua9rMLV/1abU/BnnvuycEHH9zWU7DytqPanoLa21XmzZvHPvvsw6RJkzjooINWGZxywQUXsOOOO7JkyRImTZrEiSeeWLfPKKl3eAbqGagkqYZnoJIk9SIDVJKkCgxQSVKPqTo15sMPP8zee+/N5MmT2WuvvfjJT37S9j1XXHEF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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAABCMAAAPWCAYAAADat1LsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3XlcFfXi//H3Ac0dsdz3rc0VQsIshRaXAsNE28yumlqapWlet6/d8peG6a28pSWVqSGVmQapqeWCqYkraGqpqXS1DDURXHA5zO+PHpwryHKQw8w58Ho+HufxyDlzZt7QnJnD+8x8xmYYhiEAAAAAAACTeFkdAAAAAAAAlC6UEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFSUEQAAAAAAwFRlrA4AwH2NGDFCiYmJlqzbz89P77zzjiXrBgAAAFC8ODMCQJ4SExMtKSOsWi8AAAAAc3BmBIB8+fn5ad26daauMyQkxNT1AQAAADAXZ0YAAAAAAABTUUYAAExnt9t18eJFGYZhdRQAAFCKGIahixcvym63Wx2l1KOMAAAUu4yMDEVHR6tXr15q0qSJypQpo/Lly6tSpUq666679PLLL2vv3r1WxwQAACVQYmKihg8frjvvvFPly5dX+fLlVaZMGTVv3lyPP/64Fi1apMuXL1sds9ShjAAAFBvDMBQVFaUGDRqob9++2rp1q+68807961//kiQNHjxYZcuW1bvvvquWLVvqwQcf1JEjR6wNDQAASoSff/5ZISEh8vf314cffqjKlStr2LBhmjx5siSpbdu2Wr9+vXr37q3GjRsrJiaGszZNZDP4bQPIQ9ZAklYNYGn2euFaqampevzxx7Vy5UqFhIRowoQJuv/++2Wz2SRJNpvNccA/ceKEPvroI73xxhvKzMzUhx9+qCeeeMLK+AAAwIPNnj1bw4cPV6VKlfR///d/6tevn6pVq+Z4PutziN1u14oVKzRp0iRt2bJFERERmj9/vipWrGhh+tKBMyMAAC535swZPfDAA1qzZo1mzpypNWvW6IEHHnAUETnVqFFD48aN008//aQ77rhDTz75pObOnWtuaAAAUCK8/fbbeu6553Tfffdpz549eumll7IVEVfz9vZWaGioNm3apMjISC1evFgPPfSQLly4YHLq0ocyAgDgcoMGDVJSUpKWLFmioUOH5llC5NSwYUOtWrVKnTt31sCBA7Vjx45iTgrAnc2bN0+RkZFOzWsYhsaPH6+vv/66mFMBcGdr1qzRyJEjFRERobi4ONWuXdup13l7e2vMmDGKjo7W+vXrNXLkyGJOilJVRsydO9dx+rczAgICtHLlyuILBAAl0KJFi/Tll1/qtddeU2hoaKFfX758eX3xxReqWbOm+vXrx4BSQCllGIbWrFmjcePG6Y033ihw3jFjxuiNN95QfHy8SQkBuJtz587pmWee0c0336z58+erTJkyhV7Gk08+qZdeekkffPCB1qxZUwwpkaVUlRE52e12jR49WjVq1FCVKlUUERGhkydPOp4PDw9XXFychQkBz3L27FnVqFFDixYtcky7cOGCOnTooF69eikzM9PCdDCDYRh67bXX1KpVK/3zn/+87uVUq1ZN7733nnbv3q3Fixe7MCEAT2Gz2TRnzhz16dNH48ePz7OQyCoipk2bpueff15vvfWWyUkBuIv58+fryJEjioqKKtKYD6+//roaNWqkSZMmuTAdcirVZURkZKRiY2OVkJCgo0ePSpL69u3reJ4yAiicypUr6+WXX9akSZMcAwI9+uijKleunBYsWCAvr1K9yykVNm7cqJ9++kkjRoy4rm8jrtajRw81adJEs2bNclE6AJ7G29tb8+bNy7OQyFlEvPvuu05fFgag5Jk1a5YCAgIUHBxcpOVUqFBBzz//vOLj47Vnzx4XpUNObvGXwcKFC9W8eXNVrlxZXbp00ahRo9S7d+9iX29UVJTGjBmjpk2bqmrVqnrzzTe1YsUKJScnS/r7Vi/e3t7avn17sWcBSophw4bp+PHj+uqrrzR48GAdPXpUsbGxKleunNXRYIJVq1bJy8tLjz32WJGX5eXlpSeeeEIbNmzQ+fPnXZAOgCfKq5CgiABwtT/++EM//fSTnnzySZfsC/r06SNJ+v7774u8LOTO8jJi3rx5GjVqlBYsWKD09HSFhYVpxowZ8vf3L9RyIiMj1aZNG6fnT01N1W+//aaAgADHtGbNmsnHx0dJSUmOaeHh4YqNjS1UFqA0q1SpkkaPHq1+/fpp3bp1WrFihXx8fKyOBZNs375dLVq0UOXKlV2yvDvvvFOZmZnZ9ssASp+chcSUKVMoIgBkk/UFcmBgoEuWV7duXdWtW5cvpouRpWXE+fPnNXLkSEVFRSkoKEg2m00DBw6U3W53lBHR0dG66667dNddd2nt2rV5Lmvs2LHatWuX0+tOT0+XJFWtWjXbdF9fX6WlpTn+HRoaqmXLlhXmxwKgvwcQGjt2rGrVqmV1FJjo6NGjatasmcuW17RpU0nSsWPHXLZMAJ7p6kJiwoQJFBEAssn6rODqzyFZl/MjuxEjRmjEiBFOzZcnw0LLly83fH19s007cuSIIcn4448/jNOnTxtt27Y1Lly4YJw4ccJo27atYbfbr3t9n3zyiREcHGwYhmGcPn3akGTs3Lkz2zw+Pj5GbGys499RUVFGjx49rnudzpLEg4dbPrLeM8769NNPjWrVqhkDBgwwWrZsaWRmZhb6/RAcHGz5z83j+h5eXl6WZ+DBgwcPHjx48ODhPo+8FG10sSJKSUlRzZo1s02LiYlRrVq1VLt2ba1cuVLBwcEqX768ypcvr7p16+rIkSOOb8qKwtfXVw0bNtSOHTvk5+cnSTp06JDS0tKyXe4RFxeniIiIIq+vIH/3EYB7KcytcCVp+fLlGjp0qJYuXaqAgAA1adJEX375pR599NFCrzs4OFjr1q0r9OtgrS5duujUqVNOndJos9kK3PctX75coaGhWrduXZEHowLg2YyrxogYMmSI3n//fUnSlClTNG7cOIvTAbDakiVL1LNnT23evFlBQUEFzu/M55DGjRurffv2+vzzz10Vs8TI+juhoM/r+f09YellGi1atNDBgwcVHx+vS5cuKSYmRpGRkY5LNE6dOqVq1ao55q9WrZpOnTrlsvUPHjxYU6dO1eHDh5WWlqYxY8aoa9euaty4saS/TzNfu3atwsLCXLZOoKTatGmTHn/8cc2fP1+dOnVyjB0xadIkbulZitxxxx3avXu3MjIyXLK8bdu2SVKhxxECULIYOQarnDlzpiQVeNtPAKVH1liAWZ8diurkyZNKTk7ONsYgXMvSMiIwMFATJkxQz549Vb9+fSUkJCgoKMjxofOmm27S6dOnHfOnpqbqpptuynVZU6ZMUcuWLQu1/rFjx6p79+4KDAxUvXr1ZLfbFR0d7Xh+1apV8vf3V/Xq1a/jpwNKj59++klhYWF666231KNHD8f0559/XidOnNCXX35pYTqY6d5779Xly5ddMvCvYRhauHCh2rVrxyCoQCmWs4i4eoyI/G77CaB0adCggZo2baqFCxe6ZHlZy7n33ntdsjxcy/K7aUyaNEmnTp1SSkqKZsyYof379zvKiKCgIP3www+6ePGi/vrrLx07dsxx1kJO48ePL/Q9YL29vTV9+nSdPHlS6enpWrx4cbbiIS4uTuHh4df9swGlRatWrfTXX39p4MCB2aZXrFhRf/75p0tu8wjP0LlzZzVp0kTvvPNOkS8/W716tfbs2aMhQ4a4KB0AT5NfESHlfdtPAKWPzWbTc889p/Xr12vHjh1FWtaVK1f03nvvKSAggDMjipHlZcTV0tLSlJyc7CgjfH19NWLECIWEhCg0NFT//ve/5eVlXuRGjRqpd+/epq0PADydl5eXxo0bp82bNysqKuq6l3P+/HkNGTJEjRs31uOPP+7ChAA8RUFFRJachURkZKQFaQG4g4EDB6pmzZoaNGiQLl++fN3LefPNN7Vv3z6NHz+eu/UUI0sHsMzpp59+UpUqVbLdjuXpp5/W008/7ZLl+/n5qV+/fk7P/+qrr7pkvQBQmgwcOFBffPGFRo4cKT8/P6cGkbqa3W7XoEGDdPDgQa1Zs0YVK1YspqQA3JnNZlO1atWcun1nViHh5eUlX19fE1MCcCfVqlXTrFmz1KtXL40YMULvvfdeocuE7777Tq+++qp69+6tnj17FlNSSG5WRnTo0EFpaWnFtnw/Pz/HnTMAAMXDZrPp008/VceOHdW5c2dFR0fr4Ycfduq1qampGjRokBYtWqQpU6ZwnSZQyo0bN06GYTj1x0RWIcG3mEDpFhERoZdfflnTp0/XhQsX9O6776pSpUoFvs4wDMXExOiZZ57RbbfdptmzZ5uQtnRzq8s0AAAlQ506dRQfH69mzZopPDxcTz31lPbu3Zvn/BkZGZo/f75atmypJUuWaPr06dyqD4AkFapcoIgAIP19mcXEiRM1d+5ctWnTRl9++WW+l23s3LlTPXv21FNPPaWAgACtWbMm210dUTzc6swIAEDJUa9ePSUkJGjy5MmKjIzUggUL1L59e9111126/fbbJUnTp0/X9u3b9f333+vkyZNq06aNYmNj1a5dO4vTAwAAT2Wz2TRp0iR17txZAwcO1KOPPqo6dero/vvv1x133OG4Q+Pw4cO1YcMG7dixQxUqVNCbb76pkSNHytvb2+KfoHSwGUUd7hxAiRUSEiJJWrduXalYL4rPiRMnNGfOHC1ZskRJSUnKyMhwPNegQQN16NBBAwcO1P333883mwCcYrPZinzXHgAln91u14oVKzRnzhxt3rxZv//+u+O5ihUryt/fX71799Y//vEPxpwpBGc/r4eEhOQ5D2dGAACKXY0aNTRmzBiNGTNGV65c0e+//65GjRrp5MmTjm8nAAAAXM3b21uhoaEKDQ2V9PcXJGlpaWrevLnS0tI4C8JClBEAAFOVKVNGDRs2lCSKCAAAYKoaNWqoRo0akkQRYTEGsAQAAAAAAKbizAgA+UpMTHRcE2bmOrkNLwAAAFByUUYAyJNVhYCfnx9lBAAAAFCCUUYAyNM777xjdQQAAAAAJRBjRgAAAAAAAFNRRgAAAAAAAFNRRgAAAAAAAFNRRgAAAAAAAFNRRgAAAAAAAFNRRgAAAAAAAFNRRgAAAAAAAFNRRgAAAAAAAFNRRgAAAAAAAFNRRgAAAAAAAFNRRgAAAAAAAFNRRgAAAAAAAFNRRgAAAAAAAFNRRgAAAAAAAFNRRgAAAAAAAFNRRgAAAAAAAFNRRgAAAAAAAFOVsToAAAAAAMAzXLp0SVu3btX27dt16NAhXblyRTfeeKP8/f3Vvn171alTx+qI8BCUEQAAAACAfP311196++239eGHH+rPP/+UJFWpUkXp6eny9vaW3W6Xl5eXwsLCNHLkSAUHB1ucGO6OyzQAAAAAAHmKi4tTixYtNHnyZAUGBuqrr77SsWPHlJaWJklKT0/X5s2bNXbsWP34448KCQnR4MGDlZ6ebnFyuDPKCAAAAABArt566y2Fh4erdu3a2rFjh7755hv17NlTdevWdcxToUIFBQUFafLkyUpOTtbo0aP18ccfKzg4WCdPnrQwPdwZZQQAAADcUkpKig4dOuT0/Pv27dOZM2eKMZFzNm/e7PS8drtdW7duLcY0wPWbN2+eRo0apUcffVRbtmyRn59fga+pUKGC3nzzTS1btkz79u1TaGioLl26ZEJaeBrKCAAAALgdwzD06KOPKjg4WL/++muB8+/evVudOnXSgAEDTEiXt6VLl+quu+7SlClTCpzXbrerf//+6tChg3755RcT0gHOO3LkiIYNG6Z7771X0dHRuuGGGwr1+m7duik6OlpbtmzR5MmTiyklPFmpKiPmzp2rkJAQp+cPCAjQypUriy8QAAAAcmWz2TRjxgxduHBBISEh+RYSu3fv1n333ady5copMjLSxJTXevDBB/Xkk09qwoQJ+RYSWUXEp59+qldeeUW33nqriSmBgr388suSpDlz5qhs2bLXtYyIiAg99dRTmjJlio4cOeLCdCgJSlUZkZPdbtfo0aNVo0YNValSRREREdmuaQoPD1dcXJyFCQEAAEqvtm3bavXq1fkWElcXEWvXrtXNN99sQdL/8fb21vz58/MtJK4uIiZNmqSJEydakBTI29GjR7VkyRINHTpUjRs3LtKypkyZoszMTM2ePds14VBilOoyIjIyUrGxsUpISNDRo0clSX379nU8TxkBAABgrfwKCXcrIrLkV0hQRMATfPHFF8rMzNRzzz1X5GU1aNBAYWFhio6OdkEylCRuUUYsXLhQzZs3V+XKldWlSxeNGjVKvXv3Lvb1RkVFacyYMWratKmqVq2qN998UytWrFBycrKkvw9+3t7e2r59e7FnAQAAQO7yKiTcsYjIklshQREBT7F161Y1atRITZo0ccny7r33Xh09elTHjx93yfJQMlheRmSN0LpgwQKlp6crLCxMM2bMkL+/f6GWExkZqTZt2jg9f2pqqn777TcFBAQ4pjVr1kw+Pj5KSkpyTAsPD1dsbGyhsgAAAMC1ri4k7r77bkly2yIiS85Col27dhQR8Ah79uxR27ZtXba8rGX99NNPLlsmPJ+lZcT58+c1cuRIRUVFKSgoSDabTQMHDpTdbneUEQ888IBq1Kih119/Pd9ljR07Vrt27XJ63enp6ZKkqlWrZpvu6+urtLQ0x79DQ0O1bNkyp5cLAACA4tG2bVt98MEHSklJkfT3l1ruWkRk8fb21ieffKLGjRsrMTFR999/P0UE3N758+fl4+PjsuVVqVJFknThwgWXLROer4yVK4+Pj1dmZqYefPBBx7QTJ05IkqOMmDt3rr7//nvHmA6ukvWGyHkv6tTU1GxvvOTkZDVs2NCl686NzWYr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un14am53wWUaAFAKHThwQB999JE2bNignTt36sKFC5KkunXrKiAgQGFhYerTp48qVapkcdL88SEAQFF44j7EEzNLnpvb3e3bt08ff/yxNm7cqMTERGVkZEiS6tevr4CAAIWHh+vxxx/Pc3wJd+Gp24en5nYXlBEAUMplZmbq4sWLqlixoscdUPkQAKAoPHEf4omZJc/N7UkyMzOVkZGhSpUqedzv2lO3D0/N7S4YMwIASjkvLy+3/8YEAADkz8vLSxUrVrQ6BmAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGAqyggAAAAAAGCqMlYHAAAAAICiOHfunL7//ntt375d+/fv1+XLl1W1alW1bdtW7du315133imbzWZ1TABXoYwAAAAA4JH+/PNPTZkyRXPnzlVaWpq8vLzUtGlTHTx4ULVr19Ynn3wiSWrRooVGjBihZ555Rl5enBwOuAPeiQAAAAA8zpdffqmWLVvq/fffV1hYmNasWaP09HQdOHBAkvTHH3/o999/18cff6zy5ctr8ODBCgkJ0eHDhy1ODkCijAAAAADgYf7973/r0UcfVdOmTZWYmKgFCxbo3nvvVcWKFbPNV6dOHQ0YMEDbtm3TJ598ol27dql9+/b66aefLEoOIAtlBAAAAFDKJSUl6ddff3V6/tWrV+vMmTPFmChvMTExevnll/Xoo49q48aNatGiRYGvsdls6tevnxISElSmTBl17txZKSkpJqQFkJdSVUbMnTtXISEhTs8fEBCglStXFl8gAAAAwGJ2u12PPfaYQkJCnCokYmNj1a1bN40bN86EdNkdO3ZMQ4cO1d13363o6GiVLVu2UK+/9dZb9e233+qvv/7S888/X0wpATijVJUROdntdo0ePVo1atRQlSpVFBERoZMnTzqeDw8PV1xcnIUJAQAAgOLl7e2tL774QhcuXCiwkIiNjVWvXr3Url07vfHGGyam/NvEiRN18eJFffLJJ4UuIrK0adNGr776qhYtWqS1a9e6OCEAZ5XqMiIyMlKxsbFKSEjQ0aNHJUl9+/Z1PE8ZAQAAgNKgbdu2Wr16db6FxNVFxIoVK1S1alVTM546dUqfffaZ+vXrp5tvvrlIyxoxYoSqVaumWbNmuSgdgMJyizJi4cKFat68uSpXrqwuXbpo1KhR6t27d7GvNyoqSmPGjFHTpk1VtWpVvfnmm1qxYoWSk5Ml/b1T9vb21vbt24s9CwAAAGCl/AoJq4sISfrmm2+UkZGhQYMGFXlZFSpU0NNPP62vv/5aGRkZLkgHoLAsLyPmzZunUaNGacGCBUpPT1dYWJhmzJghf3//Qi0nMjJSbdq0cXr+1NRU/fbbbwoICHBMa9asmXx8fJSUlOSYFh4ertjY2EJlAQAAADxRXoWE1UWEJG3btk1VqlSRn5+fS5bXqVMnXblyRbt27XLJ8gAUjqVlxPnz5zVy5EhFRUUpKChINptNAwcOlN1ul7+/v/7880916NBBISEhCgoK0urVq/Nc1tixYwu1I0lPT5eka3amvr6+SktLc/w7NDRUy5YtK+RPBgAAAHimqwuJoKAgSbK8iJCkffv2qWXLlvLycs2fMK1bt3YsF4D5yli58vj4eGVmZurBBx90TDtx4oQkyd/fX9WrV9cPP/wgb29vHTp0SI899pi2bt3qknVXqVJFkq65JVFqaqp8fHwc/05OTlbDhg1dss782Gy2Yl8HgJLNE/cjnpgZgPvwxH2IJ2aWpM2bN8vX19fqGJKc/x06O1+/fv3Ur1+/IiRyLU/cRjwxs+S5ud1JUX6HlpYRKSkpqlmzZrZpMTExqlWrlmrXrp1tempqaqEuwyiIr6+vGjZsqB07djhO9Tp06JDS0tKyrScuLk4REREuW29eDMMo9nUAKLlsNpvH7Uc8MTMA9+GJ+xBPypw1RsTtt9+u3bt3q379+lq3bp2aNWtmWaZu3brpxIkTTo3n5szves+ePWrVqpWio6PVp08fV8UsEk/aRrJ4YmbJc3O7i5CQEEnSunXrnJovN5ZeptGiRQsdPHhQ8fHxunTpkmJiYhQZGZltvIjDhw/rnnvuUdeuXfXII4+4dP2DBw/W1KlTdfjwYaWlpWnMmDHq2rWrGjduLEk6d+6c1q5dq7CwMJeuFwAAAHBXVw9W+cMPP0iSU7f9LG6tW7fWnj17dPnyZZcsb+fOnZLk0i88ATjP0jIiMDBQEyZMUM+ePVW/fn0lJCQoKCgoWxnRpEkTbdiwQQkJCRo2bFiey5oyZYpatmxZqPWPHTtW3bt3V2BgoOrVqye73a7o6GjH86tWrXJcLgIAAACUdHndNaOg236aISgoSBcvXnQUJEX13XffqXLlyrr99ttdsjwAhWP53TQmTZqkU6dOKSUlRTNmzND+/fsdZcTFixcd8/n4+Khy5cp5Lmf8+PHas2dPodbt7e2t6dOn6+TJk0pPT9fixYuzFQ9xcXEKDw8v5E8EAAAAeJ78bt+Z320/zRIaGqobb7xRs2bNKvKyTp06pYULF+qpp55SmTKWXrkOlFqWlxFXS0tLU3JysqOM2Lp1qzp16qR7771XPXr00IwZM0zN06hRI/Xu3dvUdQIAAABmy6+IyGJ1IVGhQgUNHjxYixcvLvLZERMmTNDFixc1dOhQF6UDUFg2w41G7di0aZO6deumM2fOFMvIpomJiUpMTHSr0XIBwBU8cRAmT8wMwH144j7EXTPb7Xa1a9dO5cuXz7WIyJk7KSlJ999/v55++mm99dZbpmY9e/as2rRpIy8vL23ZskU33nhjrvPl97teunSpunfvrlGjRmn69OnFGbfQ3HUbyY8nZpY8N7e7KMwAlnnN41ZlBADg+njiAdUTMwNwH564D3HnzCkpKSpXrlyuZ0TklvvQoUNq1KiRvL29zYrosGHDBj3wwANq1aqVli9ffs3d+aS8f9fffvutIiIidNttt2njxo2qUKGCGZGd5s7bSF48MbPkubndhSvKCLe6TAMAAACA+WrWrJlrEZGXpk2bWlJESNI999yjxYsXa8+ePWrdurUWLVpU4B+VZ8+e1fDhwxUaGqpbb71VK1eudLsiAihtKCMAAAAAeJSHHnpIW7ZsUf369dW7d2+1atVKb7/9thISEnT27FlJ0vHjx7V8+XK98MILqlevnv7zn//o+eef14YNG1SjRg2LfwIADB0LAAAAwOO0bt1amzdvVnR0tGbOnKmRI0dme75OnTqSpLJly6p3794aPny47rzzTiuiAsgFZQQAAAAAj1S2bFn1799f/fr102+//abt27dr//79GjdunN555x35+fnJ399fPj4+VkcFkAMDWAJACeCJgzB5YmYA7sMT9yGemFnyzNyemFnyzNyemFny3NzuggEsAQAAAACAx6GMAAAA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6tTJ6Nq1q9GsWTOjTZs2xqZNm6572Vdf4+mMfv36GdOmTbvu9XmC4OBgS66dLso6rcjsivXmfP2uXbuM77//vsDXffXVV0bZsmWvGSMiN8uWLTN++eWXPNdZWM68vjjeV564jZi9zrNnzxrTp083mjRpYkgyvLy8jIceeshYtWqVaRmux/r1642ePXsa3t7ehiSjXr16xuTJk43Tp0+blsETt4+Sst/79ddfjW+++Sbb2Da52bFjh1GuXLlrxojIzbp1/5+9e4+zsq73/v8eEAVxBhDxHCpgpakhRAgbFJWDpmbIj0pNaxMby12e0KAsLUsbVHZQ7lK0khL2nYaF6C26TcFTouVOQ7eaghwsRchxBBVkZv3+8HYSBcEYrjXMPJ9/Tdf1bX0/8JA1a16zrmvNKf3xj3/c4J7vl+e9prvn2rVrSz/96U9LPXv2bLgOuW/fvqVp06Zt8j1IymH+/PmlL37xi6W2bduWkpQ6depUOvfcc0tLliwp92gb9Nprr5V+9KMflT70oQ+VkpQqKipKgwcPLt10003lHu09zZs3r/TZz3621KZNm1KS0i677FK68MILSy+++GK5R9ugl19+uVRdXV3q2rVrKUmpdevWpU9+8pOlO++8s9yjvaff/e53peOOO67h+3nXrl1LEyZMKNXW1pZ7tA1atmxZ6YILLijtvPPOpSSlNm3alE488cTSgw8+WNgMW+v38815zPda894XHhestrY2ixYtaviN3xlnnNHwVuNvf/vb6dGjxyZ/Fnlj2GuvvTJy5MjC9qNlOfDAAzdp3QknnJCnnnqq4e2+7+UTn/jEZk615fl31Tjat2+fsWPHZuzYsVmzZs16f/PWFA0cODADBw5MfX191q5du8kfZ1ukv/71rzn22GPz+OOPZ+XKlev89vgLX/hC/vd//zft2rXLmDFjctJJJ+Wss85quNv5I488kpdeeqlcozd53bp126TfPB188MF54oknNul5r6m9C2h9PO81jtatW2fUqFEZNWpU1q5dmyQbvYdOU/CRj3wk11xzTa6++uqsWbNmkz89q5zatm2br3zlK/nKV76SN954I61atXrPj2duKj7+8Y/nv/7rv1Iqlbaav+uqqqqMGzcu48aN26q+nx9xxBE54ogjmvT383fq0qVLvvOd7+Q73/lOVq9enW233bZJXdqVJPPmzcvZZ5+d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jB8/Po8++ugm7/vKK68kSTp06LDO8Y4dO6a2tvaf+8MAsNV6+umnc9NNN2X8+PE57rjj1jm300475YYbbkh9fX2uvPLKMk0IADRXkyZNyh577JGf//znadeuXcPxVq1a5cwzz8yIESNy5ZVX5rXXXivjlJtnm3IP8E5z585NRUVFjj/++Hed69ixY37zm9+kc+fOefzxx3PaaaflnnvuaZR9KysrkyQvv/zyOsdrampSVVXVKHu8l/ETpmzxPQDYdH+8/64kyRe+8IX1nt99990zdNiwTP3ltGzT5YMFTgYANGd1dXW57bbb8rWvfS3bbrvtetf867/+a2bMmJFRZ34ze3X/UMETJgsW/y3Jxn+OfWvd+jS5GLF8+fJ06tQpFRUV7zrXuXPnhq+32267tG7dutH27dixY7p27ZqHH344PXv2TJIsWLAgtbW17+tyj39W9bgxW3wPADbd5ZfX5o6b/k923HHHDa7ZsVOntG+3nedwAKDRrFq1Kpeff/p7vgbp1KlTkuTU4YNz9NFHFzVagwdunZ5k4z/HvrVufZrcZRq9evXKwoULM2vWrNTX16empia33XbbOmvq6upyxhlnZPz48Y2695gxYzJhwoQsXLgwtbW1GTduXIYNG5a99967UfcBoOnbb7/9kiR33HHHes+vXbs2d911V8M6AIDGsP322+cDH/jABl+DJP94ffLhD3+4qLEaXZN7Z8QBBxyQa665Jueee25OPPHEVFZWZtSoURk2bFiSpFQqZdSoUTn22GNz1FFHbfBxLrnkkkybNi2PPfbYJu89fvz4vPTSS+nTp09Wr16dIUOG5LrrrtvsP9Mm7e0yDYAmpb6+Ph067ZjvfOc7GTJkSMPlfG+54oor8txzz6XvEZ/0HA4ANKq99+uVO26fmdtvvz1Dhw5d59zixYtzxRVXZJ99989V1/93WeZrjMs0KkqlUqlRp9rCvvKVr2SXXXbJt771rXKPAkAzd/PNN+dTn/pUPvShD2XcuHEZMGBAnn/++Vx99dW59tpr88lPfjI33nhjo142CABQW1ubgQMH5oknnsiZZ56Zk08+Odtvv31uueWWTJgwIa+++mruvffeHHjggWWZb9CgQUmSOXPmbHTdhtZsVTFizpw5GTp0aPr3758k2XHHHXPjjTeWeSoAmrNbb701Z599dp588smGY9tuu12+9KXTctlll23wxlIAAJtjxYoVOf300zNjxozU1dU1HN+ja7fcctON+ehHP1q22RojRjS5yzTey6BBg7JmzZpyjwFAC3L00UfnqKOOyue+/LUMOeQjad++fe577LlM+vZZ5R4NAGjGOnfunF/96ld57rnn8uVzL8z/d/Sh+ehHP5r/mj2vrCGisWxVMQIAyqGioiIf2Gffho/5/OMC94gAAIqxxx57ZP+eH8+pp56aJPmv2fPKPFHjaHKfpgEAAAA0b2IEAAAAUCgxAgAAACiUGAEAAAAUSowAAAAACiVGAAAAAIUSIwAAAIBCiREAAABAocQIAAAAoFBiBAAAAFAoMQIAAAAolBgBAAAAFEqMAAAAAAolRgAAAACFEiMAAACAQokRAAAAQKHECAAAAKBQYgQAAABQKDECAAAAKJQYAQAAABRKjAAAAAAKJUYAAAAAhRIjAAAAgEKJEQAAAEChxAgAAACgUGIEAAAAUCgxAgAAACiUGAEAAAAUSowAAAAACiVGAAAAAIUSIwAAAIBCiREAAABAocQIAAAAoFDblHuApqSuri7jx4/Ptddem9dffz1Dhw7NVVddlZ122qncowFQzuVgfQAAIABJREFURq+++mrm//H3ufDC59K+ffv8/cXV5R4JAGgBSqVSHnzwwdx/5//Nd17/Wz760Y+mvq6u3GM1CjHibaqrqzNz5szMmzcvnTt3zqhRo3LKKafk1ltvLfdoAJTJlClTMm7cuNTU1OSWtx1//qmHMnXq1HTq1KlsswEAzdeCBQvy2c9+Ng899FCS5J7bZyZJqjrumCN7d8uwYcPKOd5ma7KXadx333058sgjU1VVlY4dO2bkyJFbfM+3XnB269YtHTp0yKWXXprZs2dn0aJFW3xvAJqea665Jqeddlp69+6du+++O3V1dfnrX/+a73znO5k9e3aOPvrorF7tXRIAQON6/vnnM2jQoDzzzDP5z//8z9TU1GTNmjX57W9/mw/ssVuOO+643H333eUec7M0yRgxY8aMDB8+PKeffnqWLVuWJUuWZPTo0e/rMaqrq3PQQQdt8vqamposXrw4vXv3bjjWvXv3VFVV5ZFHHnlfewOw9Xv99dfz9a9/PYcddlhmz56dgQMHplWrVtltt91ywQUX5Be/+EXmzZuXG264odyjAgDNzKRJk/LXv/41d9xxR04//fR06NAhbdq0yfHHH5977703e+yxR8aPH1/uMTdLRalUKpV7iLdbtWpV9tprr1xzzTX51Kc+tc65F154IcOHD8+2226b1157LZdcckmOPPLIRtl3yZIl6dq1axYsWJB99tmn4fhee+2Viy++OJ/73OcaZZ8NGT9hyhZ9fADenyce/WNmTp+S22+/PUOGDHnX+VKplA99+MNZvTY5cczYMkwIADRHpVIp/3nxeRkyZHB+c+ON613zgx/8IOecc06+ePaF2WmX3QueMJl+1cQkyUmnvfdroOlXTcziBU+u91yTu2fE3LlzU1FRkeOPP/5d53baaafcc889ad26dRYsWJDPfOYzDdfPbK7Kysokycsvv7zO8ZqamlRVVTXKHu+letyYLb4HAJvusssuy8zpySGHHLLe8xUVFel3yCGZM2eO53AAoNGsXLkyl379S+m3gdcgSdKvX78kyQmDP55PfOITRY3W4IFbpyfZ+M+xb61bnyZ3mcby5cvTqVOnVFRUvOtc69at07p16yRvRoL3cxnGxnTs2DFdu3bNww8/3HBswYIFqa2tbdR9ANg6vBWply5dusE1S5cuLSRYAwAtR9u2bbPNNtts9DVIkq36dUiTe2dEr169snDhwsyaNSvHHHNMamtrM2/evIY7hS5cuDCnnHJKnnzyyfz85z9v1L3HjBmTCRMm5PDDD0/nzp0zbty4DBs2LHvvvXej7rM+LtMAaFpeqa1N69atc+WVV2by5MnvOv/kk0/mzjvvzL8MPtZzOADQqLrvd1Cuu+66XHzxxQ2/IHlLqVTKT35yZSo7dMpNd/85N9/3eOHzLVj8tyQb/zn2rXXr0+TuGZEkU6dOzSWXXJLnnnsulZWVGTVqVC6++OJ11ixYsCBHHHFEnn322fU+xiWXXJJp06blscce2+R96+rqMm7cuFx77bVZvXp1hgwZkilTpmSnnXbanD8OAFupUaNG5dprr83kyZPzpS99KW3atEmSzJ8/PyNGjMgLL7yQ//3f/81uu+1W5kkBgObkgQceyIABA3LooYfml7/8ZfbYY48kb17C8a1vfSuTJk3KxIkTc84555RlvkGDBiVJ5syZs9F1G1rTJGPEhqxevTrbbbddkjcv5xg0aFDmz59f5qkAaK5ee+21jBgxIrfeemt23XXX9OvXL88//3x+//vfp2PHjpk1a1YGDBhQ7jEBgGZo2rRp+cIXvpBSqZRBhx+e9ttvnzlz5qS2tjZf/epXM3ny5PXe3qAIjREjmtxlGu/loYceyje+8Y20bt06b7zxxnrfNgsAjaVdu3aZNWtWZs+enbPOOz9PPfVU2rdvn8OOGp7rp16ZnXfeudwjAgDN1Mknn5x+/frlyiuvzC+n/ypdduyQT37ykylV7p7Jk6vLFiIay1YVIwYMGJC777673GMA0IK0bt06xxxzTO6Z/1zDHaPHT5giRAAAW1y3bt1y6aWXplXnHuu8DtnaQ0TSBD9NAwAAAGjexAgAAACgUGIEAAAAUCgxAgAAACiUGAEAAAAUSowAAAAACiVGAAAAAIUSIwAAAIBCiREAAABAocQIAAAAoFBiBAAAAFAoMQIAAAAolBgBAAAAFEqMAAAAAAolRgAAAACFEiMAAACAQokRAAAAQKHECAAAAKBQYgQAAABQKDECAAAAKJQYAQAAABRKjAAAAAAKJUYAAAAAhRIjAAAAgEKJEQAAAEChxAgAAACgUGIEAAAAUCgxAgAAACiUGAEAAAAUSowAAAAACiVGAAAAAIUSIwAAAIBCiREAAABAocSIt6mrq8t5552XLl26pLKyMiNGjMjy5cvLPRYATUCpvj61tbVZs2ZNuUcBAFqYtW+8kZUrV6ZUKpV7lEYjRrxNdXV1Zs6cmXnz5mXp0qVJklNOOaXMUwFQTi+++GLOP//8/Pj749KhQ4e0a9cuM6b+Z+bMmVPu0QCAZqxUKuX666/PgAEDMvFbX0llZWX23XffPHj3f+e1114r93ibrcnGiPvuuy9HHnlkqqqq0rFjx4wcOXKL7zllypSMGzcu3bp1S4cOHXLppZdm9uzZWbRo0RbfG4CmZ8mSJTnkkENSXV2dIw4flMsuuyxnn312Xl7+txxxxBG56qqryj0iANAMlUqlnH322fnMZz6TF154Id/61rfy/e9/P7vvvnvu+r+/ztChQ7Nq1apyj7lZmmSMmDFjRoYPH57TTz89y5Yty5IlSzJ69Oj39RjV1dU56KCDNnl9TU1NFi9enN69ezcc6969e6qqqvLII4+8r70BaB5OPfXULF++PPfff39mzpyZc889N5dffnkWLVqUT3ziE/nyl7+cP//5z+UeEwBoZn79619n8uTJOfPMM/Pkk0/moosuyvjx43P33XfnV7/6Ve6///6MGzeu3GNuliYXI1atWpXTTjstU6ZMyYgRI9K2bdtUVlZm2LBhDWtWrFiRTp065brrrtvg44wfPz6PPvroJu/7yiuvJEk6dOiwzvGOHTumtrb2ff4pANja/fnPf86cOXPyzW9+M3379l3nXLt27TJ16tRst912+clPflKmCQGA5upHP/pRunfvnv/4j/9Iq1br/tj+6U9/OqecckqmTp3a8HPs1mibcg/wTnPnzk1FRUWOP/74Da753ve+lwEDBjTqvpWVlUmSl19+eZ3jNTU1qaqqatS91mf8hClbfA8ANt0f7v1dkuTkk09e7/nOnTvnqKOOyq9+fWOq9upZ5GgAQDO2du0bueeee/LNb37zXSHiLSeddFKmTp2afzv7guy9734FT5gsWPy3JBv/OfatdevT5GLE8uXL06lTp1RUVKz3/NNPP50VK1asczlFY+jYsWO6du2ahx9+OD17vvmicsGCBamtrX1fl3v8s6rHjdniewCw6SZu80p+d/P1adeu3QbXbL/99umww/aewwGARvPqq69m4je/stHXIEnyryOPWucqgqK8/rfHk2z859i31q1Pk7tMo1evXlm4cGFmzZqV+vr61NTU5Lbbbms4f8EFF+TCCy/cInuPGTMmEyZMyMKFC1NbW5tx48Zl2LBh2XvvvbfIfgA0XW+F6VtuuWW951evXp3bb7+9YR0AQGNo165dPvjBD27wNUiS3HzzzWndunUOOOCAAif7h0mTJmXSpEmbtG5Dmtw7Iw444IBcc801Offcc3PiiSemsrIyo0aNyrBhw3L//fenc+fO6d69+0Yf55JLLsm0adPy2GOPbfLe48ePz0svvZQ+ffpk9erVGTJkyHvel6IxuUwDoGkp1denc5dd8+1vfztDhw7Nzjvv/I9zpVIuuuiiLF++PG127Oo5HABoVHt+8KO58+YbMn369Jx00knrnJs/f35+/OMfp9uHDsyPrttwsGgqNvTuiYpSqVQqeJZ/2g9/+MPMmDEj7dq1y9NPP5327dvnyiuvTL9+/co9GgDN0L333puhQ4dmxx13zFe/+tUMGDAgzz//fK6++urcdttt+eIXv5irr756g5cWAgD8M15//fUMGzYs99xzT04++eScfPLJ2X777XPLLbfkyiuvTPv27XP//fdv1e/i36pixNt9+9vfTo8ePfK5z32u3KMA0Iw9+OCDGT9+fO66666GY7vuumvOOuusnHfeeRu8sRQAwOZ49dVX841vfCM/+9nPGj41o3Xr1jn++OMzceLErTpEJFtxjACAIv3lL3/JggUL0r59+/Tt2zdt2rQp90gAQAuwcuXKPPTQQ1m7dm0+8pGPZPfddy/3SI1CjAAAAAAK5b2lAAAAQKHECAAAAKBQYgQArMfZZ5+dgQMH5swzz1zv+VtvvTUf/vCHM2DAgIInAwCas429Bpk6dWoOPfTQ9OnTJz/+8Y8Lnq7xiBEA8A4PP/xwVq5cmXvuuSdr1qzJQw899K41hxxySB555JEyTAcANFeb8hrkpJNOyt13350HHnggV111VRmmbBxiBAC8wwMPPJAhQ4YkSQYPHpzf//73Oe+881JfX5+jjjoqixcvTqdOnbLddtuVeVIAoDnZlNcgb32i15o1a7LffvuVc9zNIkYAwDvU1NSkqqoqSdKhQ4fU1NTkhRdeyJgxY3Lcccela9euZZ4QAGiONvU1yEUXXZR99903vXv3Lue4m0WMAIB36NChQ2pra5MktbW16dixY0477bRcf/31GT16dJmnAwCaq019DXLBBRfkmWeeyQ033JAVK1aUa9zNIkYAwDv069cvv/vd75Ikd9xxRw455JB897vfzYUXXpjq6uoyTwcANFeb8hpk9erVSZJtt90222+//VZ72agYAQDv0KtXr7Rt2zYDBw5M69atc//992f48OEZO3Zs/vznP+exxx7LH/7whwwePDjz58/P4MGD8/rrr5d7bABgK7cpr0G+//3vZ9CgQfmXf/mXfOYzn8kOO+xQ7rH/KRWlUqlU7iEAAACAlsM7IwAAAIBCiREAAABAocQIAAAAoFBiBAAAAFAoMQIAAAAolBgBAAAAFEqMAAAAAAolRgAAAACFEiMAAACAQokRAAAAQKHECAAAAKBQYgQAAABQKDECAAAAKJQYAQAAABRKjAAAAAAKJUYAAAAAhRIjAAAAgEKJEQAAAEChxAgAAACgUGIEAAAAUCgxAgAAACiUGAEAAAAUSowAAAAACiVGAAAAAIUSIwAAAIBCiREAAABAocQIAAAAoFBiBAAAAFAoMQIAAAAolBgBAAAAFEqMAAAAAAolRgAAAACFEiMAAACAQokRAAAAQKHECAAAAKBQYgQAAABQKDECAAAAKJQYAQAAABRKjAAAAAAKJUYAAAAAhRIjAAAAgEKJEQAAAEChxAgAAACgUGIEAAAAUCgxAgAAACiUGAEAAAAUSowAAAAACiVGAAAAAIUSIwAAAIBCiREAAABAocQIAAAAoFBiBAAAAFAoMQIAAAAolBgBAAAAFEqMAAAAAAolRgAAAACFEiMAAACAQokRAAAAQKHECAAAAKBQYgQAAABQKDECAAAAKJQYAQAAABRKjAAAAAAKJUYAAAAAhRIjAAAAgEKJEQAAAEChxAgAAACgUGIEAAAAUCgxAgAAACiUGAEAAAAUqkXHiOuvvz49evTIDjvskKFDh2bs2LEZOXJkuccCAACAZq3FxoipU6dm7NixmTZtWl555ZUce+yxmTx5cg4++OByjwYAAADNWouMEa+++mrOOeecTJkyJX379k1FRUVGjx6durq6hhhx3XXXpV+/funXr1/uuuuuMk8MAAAAzcc25R6gHObOnZv6+vocffTRDcdefPHFJMnBBx+cmpqaXH755XnggQeycuXKDB48OA8//HBatdoy7eass85KkkyaNGmz1gAAAMDWoEXGiGXLlmXnnXde59j06dOzyy67ZNddd81tt92Www47LG3btk3btm2z++6759lnn023bt22yDx/+tOfMnfu3EyePHmjazdlDQAAADQFpVJpvcdbZIzYf//98/TTT2fu3Lnp169ffv3rX6e6ujr9+/dPkqxYsSKdOnVqWN+pU6esWLFii8WIJDnssMMyZ86cDZ4fNGhQkrznGgAAANgatMh7RvTp0yfnn39+TjjhhOy5556ZN29e+vbt23C/iM6dO+ell15qWF9TU5POnTuXa1wAAABoVlpkjEiSiy66KCtWrMiyZcsyefLkPPXUUw0xom/fvrnnnnuyevXq/P3vf89zzz2Xvffeu7wDAwAAQDPRIi/TeKfa2tosWrSoIUZ07NgxZ511VsOlERMnTtxiN68EAACAlkaMSDJ//vxUVlame/fuDcdOPfXUnHrqqWWcCgAAAJonMSJJ//79U1tbW+4xAAAAoEVw7QEAAABQKDECAAAAKJQYAQAAABRKjAAAAAAKJUYAAAAAhRIjAAAAgEKJEQAAAEChxAgAAACgUGIEAAAAUCgxAgAAACiUGAEAAAAUSowAAAAACiVGAAAAAIUSIwAAAIBCiREAAABAocQIAAAAoFBiBAAAAFAoMQIAAAAolBgBAAAAFEqMAAAAAAolRgAAAACFEiMAAACAQokRAAAAQKHECAAAAKBQYgQAAABQKDECAAAAKJQYAQAAABRKjAAAAAAKJUYAAAAAhRIjAAAAgEKJEQAAAEChxAgAAACgUGIEAAAAUCgxAgAAAChUi44R119/fXr06JEddtghQ4cOzdixYzNy5MhyjwUAAADNWouNEVOnTs3YsWMzbdq0vPLKKzn22GMzefLkHHzwweUeDQAAAJq1FhkjXn311ZxzzjmZMmVK+vbtm4qKiowePTp1dXUNMWLw4MHp0qVLvve975V5WgAAAGhetin3AOUwd+7c1NfX5+ijj2449uKLLyZJQ4y49tprc8cdd2Tp0qVlmREAAACaqxYZI5YtW5add955nWPTp0/PLrvskl133TVJsueeexY609y5c1NRUbHRdZuyBgAAAJqCUqm03uMtMkbsv//+efrppzN37tz069cvv/71r1NdXZ3+/fuXbabDDjssc+bM2eD5QYMGJcl7rgEAAICtQYu8Z0SfPn1y/vnn54QTTsiee+6ZefPmpW/fvm5eCQAAAAVokTEiSS666KKsWLEiy5Yty+TJk/PUU0+JEQAAAFCAFnmZxjvV1tZm0aJF68SIUaNGZd68eVm9enXmzZuXWbNmlXFCAAAAaD7EiCTz589PZWVlunfv3nDsZz/7WRknAgAAgOZLjEjSv3//1NbWlnsMAAAAaBFa7D0jAAAAgPIQIwAAAIBCiREAAABAocQIAAAAoFBiBAAAAFAoMQIAAAAolBgBAAAAFEqMAAAAAAolRgAAAACFEiMAAACAQokRAAAAQKHECAAAAKBQYgQAAABQKDECAAAAKJQYAQAAABRKjAAAAAAKJUYAAAAAhRIjAAAAgEKJEQAAAEChxAgAAACgUGIEAAAAUCgxAgAAACiUGAEAAAAUSowAAAAACiVGAAAAAIUSIwAAAIBCiREAAABAocQIAAAAoFBiBAAAAFAoMQIAAAAolBgBAAAAFEqMAAAAAAolRgAAAACFEiMAAACAQrXoGHH99denR48e2WGHHTJ06NCMHTs2I0eOLPdYAAAA0Ky12BgxderUjB07NtOmTcsrr7ySY489NpMnT87BBx9c7tEAAACgWWuRMeLVV1/NOeeckylTpqRv376pqKjI6NGjU1dXl4MPPjjPPPNMDj300AwcODADBgzIH/7wh3KPDAAAAM3GNuUeoBzmzp2b+vr6HH300Q3HXnzxxSTJwQcfnDZt2uQ3v/lNOnfunMcffzynnXZa7rnnnnKNCwAAAM1Ki4wRy5Yty84777zOsenTp2eXXXbJrrvuus7x7bbbLq1bty5yPAAAAGjWWmSM2H///fP0009n7ty56devX37961+nuro6/fv3X2ddXV1dzjjjjIwfP36LzzR37txUVFRsdN2mrAEAAICmoFQqrfd4i4wRffr0yfnnn58TTjghrVu3zoknnpi+ffuuc/PKUqmUUaNG5dhjj81RRx21xWc67LDDMmfOnA2eHzRoUJK85xoAAADYGrTIG1gmyUUXXZQVK1Zk2bJlmTx5cp566ql1YsRXv/rV9OjRI1/+8pfLOCUAAAA0Py02RrxdbW1tFi1a1BAj5syZkylTpuR3v/tdBg0alBNOOKHMEwIAAEDz0SIv03in+fPnp7KyMt27d0/y5iURa9asKfNUAAAA0DyJEUn69++f2traco8BAAAALYLLNAAAAIBCiREAAABAocQIAAAAoFBiBAAAAFAoMQIAAAAolBgBAAAAFEqMAAAAAAolRgAAAACFEiMAAACAQokRAAAAQKHECAAAAKBQYgQAAABQKDECAAAAKJQYAQAAABRKjAAAAAAKJUYAAAAAhRIjAAAAgEKJEQAAAEChxAgAAACgUGIEAAAAUCgxAgAAACiUGAEAAAAUSowAAAAACiVGAAAAAIUSIwAAAIBCiREAAABAocQIAAAAoFBiBAAAAFAoMQIAAAAolBgBAAAAFEqMAAAAAAolRgAAAACFEiP4/9u786iq68T/468LqKSs4p6SqWUqOYoxgmGQomjulqVTWqMW45Jp2telXMIlrWwg14iZspKmjLTQ0tIRNBfEMReqKQlcKhI1CcUN4f7+6MgvYtHJeH8u3ufjnHvC9/sN90X3Hs+5L9+f9wcAAAAAAKMoIwAAAAAAgFGUEQAAAAAAwCinLiPeffddtWjRQh4eHurevbsmTpyoQYMGWR0LAAAAAIDrmtOWEStWrNDEiRO1cuVKnT59Wr1791ZsbKzat29vdTQAAAAAAK5rTllGnD17Vk8++aTi4uLUsWNH2Ww2jRw5UoWFhWrfvr2OHTumTp06KTw8XB07dtSmTZusjgwAAAAAwHXDzeoAVkhJSVFRUZF69uxZPHb8+HFJUvv27VWnTh1t3bpVrq6uyszM1AMPPKC0tDSr4gIAAAAAcF1xyjIiJydH9erVKzGWkJCg+vXrq0GDBiXGc3Nz1bZt20rPlJKSIpvNdsV1V7MGAAAAAABHYLfbyxx3yjKidevWysjIUEpKikJCQvTee+9p/vz56tSpU/GarKwsDR06VF9//bVee+21Ss8UFham5OTkcufDw8MlqcI1AAAAAABUBU55ZkRQUJCefvppDRw4UI0bN1Zqaqo6duxY4vDKm2++WZ999plSU1M1duxYC9MCAAAAAHB9ccoyQpKio6N18uRJ5eTkKDY2Vt98801xGXHhwoXidV5eXvLw8LAqJgAAAAAA1x2nvEzjt/Ly8nT48OHiMiItLU3Tpk2Tq6urCgoKFBsba3FCAAAAAACuH5QRktLT0+Xp6anmzZtLkkJDQ7VlyxaLUwEAAAAAcH2ijJDUqVMn5eXlWR0DAAAAAACn4LRnRgAAAAAAAGtQRgAAAAAAAKMoIwAAAAAAgFGUEQAAAAAAwCjKCAAAAAAAYBRlBAAAAAAAMIoyAgAAAAAAGEUZAQAAAAAAjKKMAAAAAAAARlFGAAAAAAAAoygjAAAAAACAUZQRAAAAAADAKMoIAAAAAABgFGUEAAAAAAAwijICAAAAAAAYRRkBAAAAAACMoowAAAAAAABGUUYAAAAAAACjKCMAAAAAAIBRlBEAAAAAAMAoyggAAAAAAGAUZQQAAAAAADCKMgIAAAAAABjlZnUAWGv8+PHau3ev8edt166dYmJiftf3WpVZqpq5q2Jm6dpyAwAAAHBs7Ixwcnv37jX+YfNan9OKzH/E8/L/2vGfFwAAAIAZ7IyA2rVrp+TkZGPPFx4efs0/w3RmqWrmroqZpT8mNwAAAADHxc4IAAAAAABgFGUEAAAAAAAwijICV5STkyObzabPP/+8xPjhw4dls9n01VdfWZSsYlU1NwAAAABc7ygjcEVpaWm64YYbdPvtt5cY37Vrlzw9PdWyZUuLklWsquYGAAAAgOsdZQSuaPfu3WrXrp3c3Eqed7pr1y516NBBLi6O+TaqqrkBAAAA4HrHpzFc0e7duxUUFFRqfNeuXWWOO4qqmtsZXbx40eoIAAAAAAyijMAVlfWhvqioSHv27Ckej4iIUN26dTVnzhwrIpapquauqi5duqS1a9dq0qRJ6tKliwICAnT77berV69emjFjhrZt2ya73V7q+5YuXaqgoCCdPHnSgtQAAAAArEAZgQp9//33+vHHH9WhQ4cS43v37tWZM2cUHBwsSXr99df1wgsvWBGxTFU1d1VUVFSkxYsXq1mzZurTp48WL16s/Px8tWzZUi1atNCRI0c0d+5chYaGql27dvrggw+Kv3fp0qUaM2aMbrrpJnl4eFj4WwAAAAAwyanLiHfffVctWrSQh4eHunfvrokTJ2rQoEFWx3Io3333nSTJx8enxHhCQoKCg4PVpEkTSVLjxo2NZ6tIVc39W40aNVJ8fHyJMbvdLi8vL61evdqiVP/fkSNHFBYWpscff1zNmjXT+++/r9OnTys1NVWJiYlavXq1Dhw4oNzcXMXFxamgoED9+/fXgw8+qL///e8aM2aM+vTpo1WrVqlGjRpW/zoAAAAADHHaMmLFihWaOHGiVq5cqdOnT6t3796KjY1V+/btrY7mUFq1aiVvb2/Nnz9fubm5+umnn7R8+XItXbpU8+fPtzpeuapq7l/7/vvvlZ2drXbt2pUYz8zM1OnTp3XHHXdYlOwXWVlZCg0N1f79+7VixQpt3rxZAwYMULVq1Uqt9fT01KOPPqq9e/dq1qxZevvtt/Xkk0+qZ8+eFBEAAACAE3LKMuLs2bN68sknFRcXp44dO8pms2nkyJEqLCwsUUacPHlSvr6+euuttyxMay0vLy+tXbtWu3fvVuPGjXXbbbfp/fff1/r16xUWFmZ1vHJV1dy/lpaWJldXVwUQsc7tAAAgAElEQVQEBJQY37dvn+rXr1+8u8MKZ8+eVc+ePXXmzBmlpKRo2LBhstlsV/y+6tWrq27dusVnR7i4uKh69eqVHRcAAACAg3G78pLrT0pKioqKitSzZ8/isePHj0tSiTJizpw5Cg0NNZ7P0YSGhmrbtm1Wx/ifVdXcl6WlpenWW2+Vu7t7ifF9+/ZZviti+vTp+vrrr7Vx48ZSOzcqcvmMiD59+ujOO+/UlClTtHLlSj300EOVmBYAAACAo3HKMiInJ0f16tUrMZaQkKD69eurQYMGkqSMjAydPHmy1AGIKNvw4cOVmpqqCxcuKDU1VUlJSVZHuiqOnDstLU0ZGRmqU6dOifEzZ85o6tSpFqX65TyOmJgYPfbYY+ratetVf9+vi4hVq1bJzc1Na9as0ZQpUzR48GC5uTnlX0cAAACAc7I7oV27dtldXFzsycnJ9gsXLthXrlxp9/Lysvfo0aN4zZAhQ+wZGRn2mTNn2t98881KzRMWFmaXZNkjLCysUn+/yvh9TWe2Irevr6997ty59qNHj5Z4+Pj42NeuXWtZ5unTp9ttNps9Kyvrqn+XJUuW2CXZ+/TpYz9//nzx+AcffGCXZH///ff/8Nw8ePDgwYMHDx48ePCw/lEep/ynyKCgID399NMaOHCgXF1dNWTIEHXs2LH4Eo3t27fLz89PzZs3N5YpLCxMycnJ5c6Hh4dLUoVrfo/LP9e0K/2+FbEqs2Qud0ZGhk6dOqXIyMgSd/zIyMhQbm6ugoKCrvpn/dGZ16xZoy5duqhp06ZX9TN+uyPi14dV9urVS/Xq1dPq1as1YMCAPyw3AAAAAMfmlGWEJEVHRys6Orr4z02bNtWjjz4qSdq9e7f279+vHj16KCMjQ7Vq1VLz5s0VEhJiVVw4mbS0NNWsWVN/+tOfSoxv375dTZo0KXWZkSlnz57VF198oX79+l3V+oqKCElydXXVn//8Z/3nP/+pjLgAAAAAHJTTlhG/lpeXp8OHDxfvjBg3bpzGjRsnSZo1a5ZatGhBEQGj0tLSFBQUVOochR07dlh6eOXhw4dVVFSkVq1aXXHtlYqIy1q1aqVPPvnkj44KAAAAwIFRRkhKT0+Xp6dnmZdlzJo1y3wgOL2XXnqpzPFly5YZTlKSv7+/Nm/efMUy4sKFC1q+fPkViwhJioqKUu/evf/oqAAAAAAcmIvVARxBp06dlJeXJ5vNZnUUh/PDDz8oMDBQ7u7uunTpUom5Rx55RB07dlR4eLgSEhIkSePHj1d4eLjCw8Pl6+trRWRJ0oQJE9S5c2c98cQTJcYHDx6s8PBwhYSEFN+Scu/evbrzzjvVuXNnbd261Yq4VUatWrUUHh6u+vXrV7iuRo0a2rx58xWLCElq3ry57rrrrj8yJgAAAAAHx84IVKh27dratGlTqcMFL1u5cqVatGhR/OeYmBhJ0ueff66FCxcayfhbe/bs0ZkzZ7R161aNGjWq+JIHSfrXv/4lSVq9enXxOQUzZszQO++8o9q1a2vgwIFav369JbmvN35+flZHAAAAAOCg2BmBCrm7u5e7w8Fms2nYsGHq06ePDh8+XGJu9erVGjhwoImIpezcuVPdunWTJEVERGjHjh2l1vw636lTp9S4cWPVrFlT+fn5OnfunNG8AAAAAOBsKCPwuy1cuFDbt2/X5MmTNXHixBJz69evV48ePSzJlZubKy8vL0mSt7e3cnNzS8wXFBTowIEDCgwMlCTVrVtX6enpOn78uNLT00utBwAAAAD8sbhMA79b7dq1JUmhoaGaMmVK8fjBgwd14403qmbNmpbk8vb2Vl5enqRf7pTi4+NTYj45OVnh4eHFf54/f77Gjh0rT09PtW3bVnXq1DEZFwAAAACcDjsj8Ltd/sD/9ddfl/jAv3r16nLPmDAhJCREmzZtkiRt3LhRwcHBJeZ/m+/WW2/VJ598oldeeUX+/v6qVq2a0bwAAAAA4GwoI1ChgoICRUREaN++fYqMjFRKSormzp0rSXrwwQcVGhqqkSNHav78+cXfs3btWvXp08eqyMV3/+jcubNcXV3l7+9fnNlut2vHjh0KDQ0tXv+Pf/xDd999t4YNG6bo6GirYgMAAACA0+AyDVSoWrVq2rhxY4mxsLAwSVJSUlKZ37Nly5ZKz3UlsbGxJf789NNPS/rl0M3PP/+8xNyIESM0YsQIY9kAAAAAwNmxMwIAAAAAABjFzgho7969JQ50NPF87dq1u+afYTLz5eesarmrYubLz3mtuQEAAAA4LsoIJ/d7P/BlHslWM/+Gpb6+2ue8lg+a1/K9l7P+r5kvP69Vua/lOa3IfC3vj8vPSxkBAAAAXL9sdrvdbnUIZ3f5X52Tk5OvaY1JUxbEaf7kx0p97eguZ61Kmauiqvr+AAAAAGAGZ0YAAAAAAACjKCMAAAAAAIBRlBEAAAAAAMAoyggAAAAAAGAUZQQAAAAAADCKMgIAAAAAABhFGQEAAAAAAIyijAAAAAAAAEZRRgAAAAAAAKMoIwAAAAAAgFGUEQAAAAAAwCjKCAAAAAAAYBRlBAAAAAAAMIoyAgAAAAAAGEUZAQAAAAAAjKKMAAAAAAAARlFGAAAAAAAAoygjAAAAAACAUZQRAAAAAADAKMoIAAAAAABgFGUEAAAAAAAwijICAAAAAAAYRRkBAAAAAACMcvoyYtu2beratau8vLzk4+OjQYMGWR3JoeXl5enll1/WisXz1KhRI91+++3asfljHT9+3OpoFdq6dasGDx6sJXP/TzfeeKM+SIjTli1brI4FAAAAAE7JqcuIxMREDRgwQKNHj1ZOTo6OHj2qkSNHWh3LYR0+fFgdOnTQE088oSYN6+mee+6Rn5+ftmxYo7Zt2+rAgQNWRyzFbrdr2rRpuuuuu7Rq1SqdOf2zfvjhB319YI/CwsI0depU2e12q2MCAAAAgFNx2jIiPz9fUVFRiouL07333it3d3d5enoqMjJSkvTWW28pJCREISEh2rx5s8VprWe329WvXz8dP35cmzdv1q5duxQfH6/k5GTt2bNHrq6uuueee3Tu3Dmro5bw1ltv6bnnnpMkFRUVFY9fLiDmz5+vN99805JsAAAAAOCsnLaMSElJkc1mU79+/UrN5ebm6sUXX9TmzZuVlJSkCRMmlPgg64z+/e9/a9++fYqJiVF4eHiJufbt2+u1117Td999p1WrVlkTsAx2u13PP/+8XFzKf5u7uLjohRdeYHcEAAAAABjkZnUAq5w4cUK+vr6y2Wyl5lJTUxUWFiZ3d3e5u7urUaNGOnTokJo1a1ZpeTKPZGvKgrgK5yVVuKYybfzwX6pZs6YGDx5c5nxERIT8b7pJc5+P0ZfZ5w2nK9vPp04qPT29wjVFRUVKT0/XqCnPyad2HUPJnMOv36tWvW8BAAAAWGv+5MfKHHfaMiIwMFBZWVlKSkpSr169lJeXp9TUVEVGRurkyZPy9fUtXuvr66uTJ09WahnRzL9huS+SJO38OEFS+S9kZRvxTap+yPqv3N3dy5y32WyqX6+e/Pz8LMv4W19++aWWL5h2VWsfH9ZPbdq0qeREzmPKgrji98GvvwYAAAAAyYkv0wgICFB8fLwmTZokLy8vtWrVqvjuCn5+fjp16lTx2tzcXPn5+VkV1SHccsstys7O1sGDB8ucP3nypA4cOKAWLVoYTla+xo0bq0aNGldcV716dTVu3NhAIgAAAACAJNnsXCxfSm5urrp06aIdO3YoPz9fXbp00Z49eyo8e+BahIeHK/NItv4SNbHcNQmvLJSkCtdUpjN5P2vZgqm6f9AgrVy5stT/i4kTJ+qll17SX5+YrnoNHeeD/bpVr+uLPTvLPRPCZrOpTftg9br/EbPBAAAAAMAJcJnG/8DHx0fjx48vPqhx4cKFlVZEXObol2lIUn3385oxY4by8vL01FNPqW3btsrIyFBMTIzefvttRUVFaXlMtGX5yhJ1fzcFBQXp1KlTpQ4hdXFxkY+Pjz5Y9ValXoLjjLhMAwAAAEBFKCPKMWzYMA0bNszqGA7lmWeeUc2aNTVnzhzdfffdxePVq9fQ1KlTNXv2bAvTle3mm2/Wtm3bNHToUKWlpZWY69Chg9544w2KCAAAAAAwjDICV81ms2nixIkaNWqUhox8Qnf/uY38/Py0J/MnzZv5hNXxytWyZUvt2rVLe/bs0ZToF9Q34k7t/jpbry+aa3U0AAAAAHBKTnuAJX6/mjVrqtWfgjR+/HgNHTpUNdxvsDrSVQkMDFRgyN0aO3asGjS+yeo4AAAAAOC0KCMAAAAAAIBRlBEAAAAAAMAoyggAAAAAAGAUZQQAAAAAADCKMgIAAAAAABhFGQEAAAAAAIyijAAAAAAAAEZRRgAAAAAAAKMoIwAAAAAAgFGUEQAAAAAAwCjKCAAAAAAAYBRlBAAAAAAAMIoyAgAAAAAAGEUZAQAAAAAAjKKMAAAAAAAARlFGAAAAAAAAoygjAAAAAACAUZQRAAAAAADAKMoIAAAAAABgFGUEAAAAAAAwijICAAAAAAAYRRkBAAAAAACMoowAAAAAAABGUUYAAAAAAACjKCMAAAAAAIBRlBEAAAAAAMAoyggAAAAAAGAUZQQAAAAAADCKMgIAAAAAABhFGQEAAAAAAIyijAAAAAAAAEZRRgAAAAAAAKMoIwAAAAAAgFFuVgdA1ZOfn68v9+7SSy+dkZ+fn86fO2t1pKuye/du7d72b7388nllH/3R6jgAAAAA4LScvozYtm2bZsyYobS0NLm4uKhbt25atWqV1bEckt1u1wsvvKA5c+bo9OnTSvrXL+Oubm5yP/+j5s6dK1dXV2tDluGrr77Sww8/rLS0NEnSpqR3JElfpn6qFStWqHXr1lbGAwAAAACn49SXaSQmJmrAgAEaPXq0cnJydPToUY0cOdLqWA4rOjpakydP1unTp0uMF166pAULFmjUqFEWJStfZmam7rrrLh0+fFiLFy9Wdna2srOztWTJEh09elRhYWH69ttvrY4JAAAAAE7FacuI/Px8RUVFKS4uTvfee6/c3d3l6empyMhISVJERITq1q2rOXPmWJzUMWRnZ2v27NkVrnn11Ve1b98+Q4muTnR0tM6dO6etW7dqzJgxatCggRo0aKDRo0dr69atOn/+vKKjo62OCQAAAABOxWkv00hJSZHNZlO/fv3KnH/99de1ceNGfffdd0byZB7J1pQFcRXOS6pwTWXasfljFRYWVrzIZtPwUePVrd8QM6Gu4ML5c1qZkKBHR47UrbfeWmr+lltu0bBhwxT36quq3SxQNdxvsCDl9evX71Wr3rcAAAAArDV/8mNljjttGXHixAn5+vrKZrOVOd+4cWOjeZr5Nyz3RZKknR8nSCr/haxsI75J1TZX1woLCZuket7ulmX8rS+//FIxswrUuXPnctfcddddWrp0qUbeF6E2bdoYTHd9m7Igrvh98OuvAQAAAEBy4ss0AgMDlZWVpaSkJBUVFSk3N1cbNmywOpbDqlWrlux2e4VrbDabatasaSjRldWqVUuSlJOTU+6aY8eOSZJD5QYAAACA653T7owICAhQfHy8Jk2apCFDhsjT01PDhw8vPjPCNEe/TCPnnKuKiooqXFNUVKQLbt4OsyXfbrerfqMmio+P19ixY0vd6aOoqEj/+Mc/VL9REy1/55Nyd8ng9+EyDQAAAABcplGGhx9+WA8//LDVMSQ5/mUadrtdX+36t9LT08ssJVxdXVW/fn29t2Kp3N3dLUhYttsb19LQoUMVFRWl2NjY4t0S+fn5mjBhgvbv36833nhDQ4cOtTjp9YXLNAAAAABUxKnLiIoMHz5cqampunDhglJTU5WUlGR1JEvZbDYlJSXp7rvvVmZmpmw2m+x2e/F//fz8tGHDBocqIiTpoYce0n//+1/NnTtX7733nu655x5J0rp165SXl6dp06bpoYcesjglAAAAADgXyohy/POf/7Q6gsPx9/fX3r179cYbb2j2vOdlK7qoOnXqqE6TW/Xem3Hy8/OzOmKZ5syZo549e2rJkiVa/8lGeXnU1I03t9S6xS8pNDTU6ngAAAAA4HSc9gBL/D6enp4aM2aMHhn3tLKzs3XgwAF1DIt02CLisjvvvFMJCQl67Kk5OnTokPoOGUkRAQAAAAAWoYwAAAAAAABGUUYAAAAAAACjKCMAAAAAAIBRlBEAAAAAAMAoyggAAAAAAGAUZQQAAAAAADCKMgIAAAAAABhFGQEAAAAAAIyijAAAAAAAAEZRRgAAAAAAAKMoIwAAAAAAgFGUEQAAAAAAwCjKCAAAAAAAYBRlBAAAAAAAMIoyAgAAAAAAGEUZAQAAAAAAjKKMAAAAAAAARlFGAAAAAAAAoygjAAAAAACAUZQRAAAAAADAKMoIAAAAAABgFGUEAAAAAAAwijICAAAAAAAYRRkBAAAAAACMoowAAAAAAABGUUYAAAAAAACjKCMAAAAAAIBRlBEAAAAAAMAoN6sDAKja7Ha7ck7mSnZ7ifFjx38q82u3am7y8/Eylg8AAACA46GMAHBNbDabUlL3aU/6NyXG//7P98r8unfXEIXecbuxfAAAAAAcD5dpALhmPe4KUvVqV+4269b2Vkj7NgYSAQAAAHBklBEArpmXZy2FB7e74rpeXULk6spfOwAAAICz41MBgD9E56C28vHyKHf+1psbq2WzJgYTAQAAAHBUlBH43ey/ObCwKrDb7VUyd1VQrZqbeoZ3LHPOxWZTry4hstlshlMBAAAAcEROX0Zs27ZNXbt2lZeXl3x8fDRo0CCrIzm0H374QVOnTtXS5ybLxcVFderU0cYP/6Vvv/3W6mjlstvtevfddxUWFqYXnxmj6tWrK+GVF/XOO+9QTPzB2t7WTDfdWL/UeMf2rVW/jq8FiQAAAAA4IqcuIxITEzVgwACNHj1aOTk5Onr0qEaOHGl1LIeVnp6uwMBAPf/887o7PEzPPPOMunXrpgO7t6l9+/b67LPPrI5YSlFRkUaMGKEHHnhA3333nZ6cMEHjx4+Xmy5p8ODBGj58uIqKiqyOed2w2Wzq07VTiTH3GtUVEdrBokQAAAAAHJHT3tozPz9fUVFRio+PV//+/SVJ7u7uioyM1Lfffqu//vWvxVv6Y2JidMcdd1ic2FqFhYXq37+/XFxctH//frVp8//viHDkyBF1795d/fr106FDh+Tp6Wlh0pKWLVum1157TdOnT9esWbPk4vJL/7ZgwQJFR0fr2WefVWBgoB5//HGLk14/Gjesq8CAW4tv9RkR2kG1bnC3OBUAAAAAR+K0OyNSUlJks9nUr1+/UnM+Pj5avXq1tm7dqri4OE2YMMGChI5l3bp1+vbbb7Vo0aISRYQk+fv767XXXtNPP/2klStXWpSwtKKiIsXGxiokJETPPvtscREhSS4uLpo5c6Y6deqkRYsWsTviD3b5Vp/cyhMAAABAWZx2Z8SJEyfk6+tb5oF6fn5+xV/XqFFDrq6ulZ4n80i2piyIq3BeUoVrKtMnaxLk6empvn37ljkfHBysFi1aaOHLy3XoZ8fouE6dPK6DBw/qySefLPN1ttlsGjZsmP72t79p1OR58q1Tz4KU17fjP/2sp1+MtzoGAAAAAIvMn/xYmeNOW0YEBgYqKytLSUlJ6tWrl/Ly8pSamqrIyMjiNYWFhRo3bpymTJlS6Xma+Tcs90WSpJ0fJ0gq/4WsbCcO7lL2oa9VrVq1MudtNpt8fHxUt25dyzL+1ldffaW4F56Rl5dXuWu8vb0lSU/8daBat25tKppTKCwskouLjTtoAAAAACjFMf4J2wIBAQGKj4/XpEmT5OXlpVatWmnLli3F83a7XcOHD1fv3r3Vo0cPC5M6hoCAAP3444/av39/mfPZ2dnau3evQ32g9/f3l4eHhzZs2FDumvXr18vDw0P+/v4GkzkHV1cXiggAAAAAZbLZubdhmcaOHav69etr+vTplf5c4eHhyjySrb9ETSx3TcIrCyWpwjWV6dzZfC17boq6dLlbSUlJJXZIFBUVafjw4VqxYoUenRSt2nVK39rRKp+sSVD6nh3aumWLOnbsWGJu165d6tz5LrUJDFb3/n+xKCEAAAAAXL/K2zlPGVGG5ORkde/eXZ06/XKLwtq1a+v999+vtOcLDw8vft5rWVPZli9frlGjRikoKEgTJkxQ27ZtlZGRoZjYWCVv3qxnnnlGs2fPtixfWY4dO6ZOnTrp2LFjevzxx3XfffdJ+uW2rosWLVLdunW1fft2NWjQwOKkAAAAAOA8KCMcQFUpIyRp5cqVmjFjhjIzM4vHvLx9NWf2sxo7dqxDbsv/4YcfNGbMGH344YfFd82w2VzUr19fLVmyRI0aNbI4IQAAAAA4F8oIB1CVygjpl8syho76P/XtEiQ/Pz9t2HVQL0wbZXWsKzp69KjGTZurh/p306bdB7X0uco/mBQAAAAAUJrTHmCJ38/FxUVNmt2qBx54QBEREUZuffpHaNKkiVoGBOree++Vl09tq+MAAAAAgNOijAAAAAAAAEZRRgAAAAAAAKMoIwAAAAAAgFGUEQAAAAAAwCjKCAAAAAAAYBRlBAAAAAAAMIoyAgAAAAAAGEUZAQAAAAAAjKKMAAAAAAAARlFGAAAAAAAAoygjAAAAAACAUZQRAAAAAADAKMoIAAAAAABgFGUEAAAAAAAwijICAAAAAAAYRRkBAAAAAACMoowAAAAAAABGUUYAAAAAAACjKCMAAAAAAIBRlBEAAAAAAMAoyggAAAAAAGAUZQQAAAAAADCKMgIAAAAAABhFGQEAAAAAAIyijAAAAAAAAEZRRgAAAAAAAKMoIwAAAAAAgFGUEQAAAAAAwCjKCAAAAAAAYBRlBAAAAAAAMIoyAgAAAAAAGEUZAQAAAAAAjKKMAAAAAAAARrlZHQBVT3Z2tnZt/VRPnTgoPz8/5Z4qsjrSFRUWFmrdunVKWb9aU3OzdPCHPBUWFsrV1dXqaAAAAADgdJy+jNi2bZtmzJihtLQ0ubi4qFu3blq1apXVsRxSYWGhJk2apMWLF+vSpUvascld58+fl81m07kfv9Yrr7wid3d3q2OWsmPHDg0ZMkSHDx+Wm5ubdn+2UZcuXVKz5LV6++231alTJ6sjAgAAAIBTcerLNBITEzVgwACNHj1aOTk5Onr0qEaOHGl1LIc1fvx4xcTE6JFHHtE333yjc+fO6ciRI5o0aZLeeOMN/eUvf5Hdbrc6ZgkHDhxQ9+7d5ebmpsTERJ09e1Znz55VYmKiqlevru7du2v//v1WxwQAAAAAp2KzO9qnR0Py8/N10003KT4+Xv379y8xd+zYMQ0YMEDVq1fXuXPnNG/ePHXt2rXSsoSHh0uSkpOTr2lNZcrKylLz5s01evRoLV68uNT8vHnz9PTTT2vHjh0KDg62IGHZ7r//fm3cuFHp6elq1KhRibns7GwFBASoS5cu7IYBAAAAAIOctoz46KOP9PDDDysnJ0c2m63EXGFhoSTJ1dVVmZmZeuCBB5SWllZpWcLDw5V5JFt/iZpY7pqEVxZKUoVrKtNnnyZpx+aPdOjQITVp0qTU/OnTp9WoUSM1a9VOPe8dakHC0s6dzdfiuU9pwvjxevHFF8tc89RTT+mll17S2Kdf0A21PAwnBAAAAIDr2/zJj5U57rRnRpw4cUK+vr6lighJJQ41zM3NVdu2bSs9TzP/huW+SJK08+MESeW/kJVtxDepymrQoMwiQpI8PT3VunVr+frWsizjb3355Zd6OfpJ3XHHHeWuCQoKUlFRkR69v7sCAgIMpgMAAAAA5+W0Z0YEBgYqKytLSUlJKioqUm5urjZs2FA8n5WVpdDQUEVGRmrAgAEWJnUM3t7e+umnn3T69Oky5wsLC/Xdd9/J29vbcLLyXc5y+PDhctdcnnOk3AAAAABwvXPayzQkacWKFZo3b56+//57eXp6avjw4Zo7d26JNZmZmerSpYsOHTpUaTmqwmUa3x/J1FtLFyg2Nlbjxo0rNZ+YmKj77rtP/R+MUsvbAy1IWLaVy55XDTfpiy++UI0aNUrMXbx4UW3atNG5ArseGvV/FiUEAAAAgOtXeTvnnbqMKM+FCxeKP7ieOHFC4eHhSk9Pr7TnqwoHWNrtdnXp0kU7d+7Uq6++qiFDhsjV1VV2u13r1q3T0KFD1bBhQ+3fv19ubo5z9c/atWvVp08f9e3bV8uXL1fDhg0l/XJ45ejRo7VmzRp98MEH6tu3r8VJAQAAAMB5OM6nRgeSlpamadOmydXVVQUFBYqNjbU6kuVsNptWrVqlXr16aejQoZo6daoCAgKUkZGhjIwMtWzZUh9//LFDFRGS1Lt3by1atEjjxo3TRx99pNDQUEnSZ599psLCQr388ssUEQAAAABgGDsjHEBV2Blx2aVLl/Thhx9q8jPPytejhmrXri0370Z6b8VSubu7W5qtIhkZGVq2bJneSfxA/o3qqcC1phL+uUy33HKL1dEAAAAAwOk47QGW+H3c3Nw0cOBA3fvwGO3atUvr169XQGCwQxcRktSiRQstXLhQD436P23fvl1de99PEQEAAAAAFqGMAAAAAAAARlFGAAAAAAAAoygjAAAAAACAUZQRAAAAAADAKMoIAAAAAABgFGUEAAAAAAAwijICAAAAAAAYRRkBAAAAAACMoowAAAAAAABGUUYAAAAAAACjKCMAAAAAAIBRlBEAAAAAAMAoyggAAAAAAGAUZQQAAAAAADCKMgIAAAAAABhFGQEAAAAAAIyijAAAAAAAAEZRRgAAAAAAAKMoIwAAAAAAgFGUEQAAAAAAwCjKCAAAAAAAYBRlBAAAAAAAMIoyAgAAAAAAGEUZAQAAAAAAjKKMAAAAAAAARlFGAAAAAAAAoygjAAAAAACAUZQRAAAAAADAKMoIAAAAAABgFGUEAAAAAAAwijICAAAAAAAYRRkBAAAAAACMoowAAAAAAJdrXgEAAAbtSURBVABGUUbgd7lUUKAff/xRZ8+etTrKVbPb7Tqbf0YnTpyQvajI6jgAAAAA4LScvozYtm2bunbtKi8vL/n4+GjQoEFWR3JoX331lR555BHFPjtBDRs2lJeXl9asfEW7d++2Olq5CgoKFBsbq9tuu02LZk9U3bp19Y+/z1JMTIwKCgqsjgcAAAAATsfN6gBWSkxM1KhRo7Rs2TL16tVLBQUF2r59u9WxHNb27dvVo0cP2e12jRw5QrfffrsyMjL0+uuv684779SqVavUt29fq2OWUFBQoAEDBmjdunXq1KmToqKiJP3y2k+YMEGffvqp1qxZo2rVqlmcFAAAAACch81ut9utDmGF/Px83XTTTYqPj1f//v3LXHPy5Em1aNFCixYt0kMPPVRpWcLDwyVJycnJ17SmMl28eFFNmzaVh4eHNm/erBtvvLF47tSpU4qMjNQXX3yho0ePqnbt2pZkLMv8+fM1depULV26VKNGjSox98orr+hvf/ub5s6dq2nTplmUEAAAAACcj9NeppGSkiKbzaZ+/fqVu2bOnDkKDQ01mMpxvf/++8rOzlZsbGyJIkKSfH19FR8fr7Nnz+q1116zKGFply5d0tKlS9W1a9dSRYQkRUVFqVu3blq2bJkuXbpkQUIAAAAAcE5Oe5nGiRMn5OvrK5vNVuZ8RkaGTp48qQ4dOhjJk3kkW1MWxFU4L6nCNZVpw+qV8vb2VmRkZJnzbdu2VatWrbQsfoWOX/I0nK5sP504pqNHj2rmzJnlrhk8eLBGjBih0VOeU+269Q2mAwAAAIDr3/zJj5U57rRlRGBgoLKyspSUlKRevXopLy9PqampxR+2Z8yYodmzZ+vNN9+s9Czt2rVTu3btyn2RJOl89peSyn8hK9vJjDR9n/lVueWNJLm7u+vmhg0ty/hb//3vf/XqizNUvXr1ctfUqFFDkjRhxH1q1aqVqWgAAAAA4NSc9jKNgIAAxcfHa9KkSfLy8lKrVq20ZcsWSb8c1Ojn56fmzZsbyRITE6OYmJhrXlOZ7rjjDh0/flypqallzmdlZWnv3r3GdpJcjaZNm8rPz08ffvhhuWs++OAD1a5dWzfffLPBZAAAAADg3Jz2AMuKvPzyy0pMTNQNN9ygjIwM1apVS8uXL1dISEilPadVl19crQsXzmvZc1PUvt2f9Omnn8rDw6N47uLFi7rvvvu0du06/W3yXHn5OM4Blps/StR/tm1SUlKSevbsWWJuw4YN6tWrlwI7dVGXXvdZlBAAAAAArl/l7ZynjLiCWbNmqUWLFpV6N42qYtWqVRo8eLCaNm2qMWPGqG3btsrIyNDSpUt14MABLVq0SGPHjrU6Zgl5eXkKCwtTenq6HnzwQd133y+lQ2Jiot566y21adNGKSkp8vb2tjgpAAAAADgPygj8TzZu3KiZM2dq+/btxWNt27bV9OnTiz/oO5qff/5Z06ZN0xtvvKEzZ85Ikjw8PDR06FDNmzdPPj4+FicEAAAAAOdCGYHf5eDBg8rOzpafn59at25d4cGWjuL06dNKT0+X3W5XQECAvLy8rI4EAAAAAE6JMgIAAAAAABjltHfTAAAAAAAA1qCMAAAAAAAARlFG4KpMmDBBnTt31hNPPFHmfFxcnIKDgxUcHKyEhATD6cp2pcwff/yxbrvtNoWGhhpOBgAAAADOjTICV7Rnzx6dOXNGW7du1cWLF5WWllZqTffu3bVz505t3bpVCxcutCBlSVeTOTg4WPv27bMgHQAAAAA4N8oIXNHOnTvVrVs3SVJERIR27Nihp556SkVFRerRo4eOHDmipk2bSpLc3Nzk5uZmYdpfXE1mX19f1ahRw+KkAAAAAOB8KCNwRbm5ucW3wfT29lZubq6OHTumxx57TH369JG/v3/x2uXLl6tfv35WRS32v2QGAAAAAJhl/T9hw+F5e3srLy9PkpSXlycfHx9FRUWpZ8+eWrJkSfG61NRUffTRR1qzZo1VUYtdbWYAAAAAgHnsjMAVhYSEaNOmTZKkjRs3Kjg4WLNnz9bMmTM1f/58SdL333+viRMnasWKFXJ1dbUyrqSrywwAAAAAsAZlBK4oMDBQ7u7u6ty5s1xdXbV9+3YNGDBAEydO1IEDB/TFF18oOjpax44d08CBAxUeHq5z5845fObdu3crIiJC6enpioiI0Pnz5y3NDAAAAADOwma32+1WhwAAAAAAAM6DnREAAAAAAMAoyggAAAAAAGAUZQQAAAAAADCKMgIAAAAAABhFGQEAAAAAAIyijAAAAAAAAEZRRgAAAAAAAKMoIwAAAAAAgFGUEQAAAAAAwCjKCAAAAAAAYBRlBAAAAAAAMIoyAgAAAAAAGEUZAQAAAAAAjPp/IfC0L3awIWYAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "
" ] }, "execution_count": 9, @@ -725,7 +729,27 @@ "\n", "shor = QuantumCircuit(q, c)\n", "circuit_aperiod15(shor,q,c,7)\n", - "\n", + "shor.draw(output='mpl')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdAAAAFWCAYAAADZtMzFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl8VOXZ//HPRRAKCGg0xqAiIjaipRjEHUFU+rgvaLUupdqfD25FLVXb+tS1ap+qKLZ1qxXX8lStqHWrGwouFJVNFEhVNoGg7CKKgXD9/rhP0iEmkDmZzJxkvu/XKy8zZ04m13iT+Z7lPtcxd0dERETS0yrXBYiIiDRHClAREZEYFKAiIiIxKEBFRERiUICKiIjEoAAVERGJQQEqIiISgwJUREQkBgWoiIhIDK1zXUAubbPNNt61a9dclyEiIgkyderUpe5etLn18jpAu3btytixY3NdhoiIJEhhYeG8hqynQ7giIiIxKEBFRERiUICKiIjEoAAVERGJQQEqIiISgwJUREQkBgWoiIhIDApQERGRGBSgIiIiMShARUREYlCAioiIxKAAFRERiUEBKiIiEoMCVEREJAYFqIiISAwKUBERkRgUoCIiIjEoQEVERGJQgIqIiMSgABUREYlBASoiIhKDAlRERCQGBaiIiEgMClCRyCuvvMK+++7L3nvvzciRI7/1/B133MH+++9Pv379OOGEE/j0009rnluwYAGDBw9mv/32Y//992f+/PkAuDvXX389++yzD/vttx/33HNP1t6PiDSt1rkuQCQJqqqquPzyyxkzZgxdunThsMMO44gjjmD33XevWef73/8+Y8eOpX379owaNYqrr76aUaNGAXD++eczfPhwBg4cyJdffkmrVmHbdPTo0SxcuJCJEyfSqlUrlixZkpP3JyKZpz1QEWDSpEnssssudOvWjTZt2jB48GBeeOGFjdY5+OCDad++PQB9+/Zl0aJFAMyaNYv169czcOBAALbccsua9e6//34uu+yymkAtKirK1lsSkSamABUBKioq2GGHHWoed+nShYqKinrXf+SRRzj88MMB+OSTT+jcuTNDhgxhwIABXHXVVVRVVQEwZ84cnnzySQ499FB++MMf8sknnzTtGxGRrFGAiqTpscceY8qUKQwbNgyA9evXM2HCBK677jpeffVV5s6dy+jRowGorKykbdu2jB07liFDhtT8jIg0fwpQEaCkpISFCxfWPF60aBElJSXfWu/1119nxIgRjB49mrZt2wJhb7VXr15069aN1q1bc/TRR/P+++/XPHfssccCcMwxx/Dhhx9m4d2ISDYoQEWAPn36MHv2bObNm0dlZSVjxozhiCOO2Gid999/n+HDhzN69OiNzmX26dOHVatWsXTpUgDGjx9PaWkpAEcddRRvvPEGAG+99RY9evTI0jsSkaamWbgiQOvWrbnppps4+eSTqaqq4owzzqBnz57ceOONlJWVceSRR3L11VezZs0azj77bAB23HFHRo8eTUFBAddddx0nnHAC7s5ee+3FkCFDALjkkksYOnQod911Fx06dOD222/P5dsUkQwyd891DTlTVlbmY8eOzXUZIiKSIIWFhZPcve/m1tMhXBERSUtjmo5su+229O/fn/79+3P66afXLL/wwgvZa6+9ap6bPn16Vt5LY+gQroiINFhjm460a9eO8ePH1/na1157Lccff3xW3kcmaA9UREQarDFNR1oaBaiIiDRYY5qOAKxdu5ZDDz2UQYMG8dxzz2207g033EC/fv244oor+OabbzJffIbpEK6IiDSJ6qYjzz77bM2yadOm0aVLF+bOncvxxx/PHnvswS677MKVV15JcXExlZWV/PznP+f222/n8ssvz2H1m6c9UBERabDGNB2BsMcK0K1bN/r161fTdGT77bfHzGjbti2nn346kydPbuJ30ngKUBERabDGNB1ZuXJlzaHZZcuWMXHixJqmI4sXLwbCLQCfe+45evbsmaV3FJ8O4YqISIM1pulIeXk5w4cPp1WrVmzYsIGLL764Zvbuueeey9KlS3F3evXqxYgRI3L5NhtEjRTUSEFERFKokYKIiEgTUoCKiIjEoHOg0iJd/uDWuS4hY276yYpclyAiddAeqIiISAwKUBFJtMY0Lgf44osv2HPPPTe6KH/q1KkcdNBB7L333vzqV78inydTSnwK0ByJ+6Hw6aefcsghh9C/f38OOOAA7r///pqfGTNmDP369eOAAw7gmmuuydZbEWky1Y3LH3vsMSZMmMATTzzBrFmzNlqnunH5m2++yXHHHcfVV1+90fM33ngjBx544EbLLr30UkaOHMl7773HJ598wiuvvNLk70VaHgVoDjTmQ6G4uJgXX3yR8ePH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\n", + "text/plain": [ + "
" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ "backend = BasicAer.get_backend('qasm_simulator')\n", "sim_job = execute([shor], backend)\n", "sim_result = sim_job.result()\n", @@ -737,8 +761,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We see here that the period, $r = 4$, and thus calculate the factors $p = \\text{gcd}(a^{r/2}+1,15) = 3$ and $q = \\text{gcd}(a^{r/2}-1,15) = 5$. Why don't you try seeing what you get for $a = 2, 8, 11, 13$?" + "We see the measurements yield $x = 0, 2, 4$ and $6$ with equal(ish) probability. Using the continued fraction expansion for $x/2^3$, we note that only $x = 2$ and $6$ give the correct period $r = 4$, and thus the factors $p = \\text{gcd}(a^{r/2}+1,15) = 3$ and $q = \\text{gcd}(a^{r/2}-1,15) = 5$. \n", + "\n", + "Why don't you try seeing what you get for $a = 2, 8, 11, 13$?" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -757,7 +790,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.7" } }, "nbformat": 4, diff --git a/community/aqua/README.md b/community/aqua/README.md index 3c297ab61..30b4a711a 100644 --- a/community/aqua/README.md +++ b/community/aqua/README.md @@ -9,7 +9,7 @@ Aqua provides a library of cross-domain algorithms upon which domain-specific ap built. Tutorials, sample code and sample input files may be found here for: * [General](general) -* [Aqua Chemistry](chemistry) +* [Qiskit Chemistry](chemistry) * [Aqua Optimization](optimization) * [Aqua Artificial Intelligence](artificial_intelligence) * [Aqua Finance](finance) diff --git a/community/aqua/artificial_intelligence/input_files/qsvm_kernel.json b/community/aqua/artificial_intelligence/input_files/qsvm_kernel.json index e202e9719..a0dc7592c 100644 --- a/community/aqua/artificial_intelligence/input_files/qsvm_kernel.json +++ b/community/aqua/artificial_intelligence/input_files/qsvm_kernel.json @@ -2,7 +2,7 @@ "algorithm": { "name": "QSVM.Kernel"}, "problem": {"name": "svm_classification"}, - "backend": {"name": "qasm_simulator", "shots":1000}, + "backend": {"provider": "qiskit.BasicAer", "name": "qasm_simulator", "shots":1000}, "input": { "name": "SVMInput", diff --git a/community/aqua/artificial_intelligence/input_files/qsvm_variational.json b/community/aqua/artificial_intelligence/input_files/qsvm_variational.json index 9f26fed8c..36ee9663a 100644 --- a/community/aqua/artificial_intelligence/input_files/qsvm_variational.json +++ b/community/aqua/artificial_intelligence/input_files/qsvm_variational.json @@ -1,10 +1,9 @@ { "algorithm": { - "name": "QSVM.Variational", - "circuit_depth": 3 + "name": "QSVM.Variational" }, "problem": {"name": "svm_classification"}, - "backend": {"name": "qasm_simulator", "shots": 1000}, + "backend": {"provider": "qiskit.BasicAer", "name": "qasm_simulator", "shots": 1000}, "optimizer": {"name": "SPSA", "max_trials": 100, "save_steps": 10}, "input": { "name": "SVMInput", diff --git a/community/aqua/chemistry/LiH.png b/community/aqua/chemistry/LiH.png new file mode 100644 index 000000000..dde425ee7 Binary files /dev/null and b/community/aqua/chemistry/LiH.png differ diff --git a/community/aqua/chemistry/LiH_with_qubit_tapering_and_uccsd.ipynb b/community/aqua/chemistry/LiH_with_qubit_tapering_and_uccsd.ipynb index 4b6c9b360..c0ce12fb2 100644 --- a/community/aqua/chemistry/LiH_with_qubit_tapering_and_uccsd.ipynb +++ b/community/aqua/chemistry/LiH_with_qubit_tapering_and_uccsd.ipynb @@ -7,7 +7,6 @@ "outputs": [], "source": [ "# import common packages\n", - "from collections import OrderedDict\n", "import itertools\n", "import logging\n", "\n", @@ -18,12 +17,12 @@ "from qiskit_aqua import Operator, set_aqua_logging, QuantumInstance\n", "from qiskit_aqua.algorithms.adaptive import VQE\n", "from qiskit_aqua.algorithms.classical import ExactEigensolver\n", - "from qiskit_aqua.algorithms.components.optimizers import COBYLA\n", + "from qiskit_aqua.components.optimizers import COBYLA\n", "\n", - "from qiskit_aqua_chemistry.drivers import ConfigurationManager\n", - "from qiskit_aqua_chemistry.core import Hamiltonian\n", - "from qiskit_aqua_chemistry.aqua_extensions.components.variational_forms import UCCSD\n", - "from qiskit_aqua_chemistry.aqua_extensions.components.initial_states import HartreeFock\n", + "from qiskit_chemistry.drivers import PySCFDriver, UnitsType\n", + "from qiskit_chemistry.core import Hamiltonian, TransformationType, QubitMappingType \n", + "from qiskit_chemistry.aqua_extensions.components.variational_forms import UCCSD\n", + "from qiskit_chemistry.aqua_extensions.components.initial_states import HartreeFock\n", "\n", "# set_aqua_logging(logging.INFO)" ] @@ -35,14 +34,9 @@ "outputs": [], "source": [ "# using driver to get fermionic Hamiltonian\n", - "cfg_mgr = ConfigurationManager()\n", - "pyscf_cfg = OrderedDict([('atom', 'Li .0 .0 .0; H .0 .0 1.6'), \n", - " ('unit', 'Angstrom'), ('charge', 0), \n", - " ('spin', 0), ('basis', 'sto3g')])\n", - "section = {}\n", - "section['properties'] = pyscf_cfg\n", - "driver = cfg_mgr.get_driver_instance('PYSCF')\n", - "molecule = driver.run(section)" + "driver = PySCFDriver(atom='Li .0 .0 .0; H .0 .0 1.6', unit=UnitsType.ANGSTROM,\n", + " charge=0, spin=0, basis='sto3g')\n", + "molecule = driver.run()" ] }, { @@ -60,7 +54,7 @@ } ], "source": [ - "core = Hamiltonian(transformation='full', qubit_mapping='parity', \n", + "core = Hamiltonian(transformation=TransformationType.FULL, qubit_mapping=QubitMappingType.PARITY, \n", " two_qubit_reduction=True, freeze_core=True)\n", "algo_input = core.run(molecule)\n", "qubit_op = algo_input.qubit_op\n", @@ -252,8 +246,7 @@ " cliffords=cliffords, sq_list=sq_list, tapering_values=the_coeff, symmetries=symmetries)\n", "\n", "# setup optimizer\n", - "optimizer = COBYLA()\n", - "optimizer.set_options(maxiter=1000)\n", + "optimizer = COBYLA(maxiter=1000)\n", "\n", "# set vqe\n", "algo = VQE(the_tapered_op, var_form, optimizer, 'matrix')\n", @@ -313,9 +306,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Quantum py37", + "display_name": "Python 3", "language": "python", - "name": "quantum-dev-37" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -327,7 +320,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.1" + "version": "3.6.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/ParticleHole_example.ipynb b/community/aqua/chemistry/ParticleHole_example.ipynb index 8c4172290..848af7262 100644 --- a/community/aqua/chemistry/ParticleHole_example.ipynb +++ b/community/aqua/chemistry/ParticleHole_example.ipynb @@ -6,8 +6,6 @@ "metadata": {}, "outputs": [], "source": [ - "from collections import OrderedDict\n", - "\n", "import numpy as np\n", "from qiskit import Aer\n", "from qiskit.transpiler import PassManager\n", @@ -15,11 +13,11 @@ "from qiskit_aqua import Operator, QuantumInstance\n", "from qiskit_aqua.algorithms.adaptive import VQE\n", "from qiskit_aqua.algorithms.classical import ExactEigensolver\n", - "from qiskit_aqua.algorithms.components.optimizers import L_BFGS_B\n", - "from qiskit_aqua.algorithms.components.variational_forms import RY\n", + "from qiskit_aqua.components.optimizers import L_BFGS_B\n", + "from qiskit_aqua.components.variational_forms import RY\n", "\n", - "from qiskit_aqua_chemistry import FermionicOperator\n", - "from qiskit_aqua_chemistry.drivers import ConfigurationManager" + "from qiskit_chemistry import FermionicOperator\n", + "from qiskit_chemistry.drivers import PySCFDriver, UnitsType" ] }, { @@ -28,15 +26,9 @@ "metadata": {}, "outputs": [], "source": [ - "from qiskit_aqua_chemistry.drivers import ConfigurationManager\n", - "from collections import OrderedDict\n", - "cfg_mgr = ConfigurationManager()\n", - "pyscf_cfg = OrderedDict([('atom', 'H .0 .0 .0; H .0 .0 0.735'), ('unit', 'Angstrom'), ('charge', 0), ('spin', 0), \\\n", - " ('basis', 'sto3g')])\n", - "section = {}\n", - "section['properties'] = pyscf_cfg\n", - "driver = cfg_mgr.get_driver_instance('PYSCF')\n", - "molecule = driver.run(section)" + "driver = PySCFDriver(atom='H .0 .0 .0; H .0 .0 0.735', unit=UnitsType.ANGSTROM,\n", + " charge=0, spin=0, basis='sto3g')\n", + "molecule = driver.run()" ] }, { @@ -48,13 +40,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "The exact ground state energy is: -1.8572750302023824\n", + "The exact ground state energy is: -1.8572750302023795\n", "The Hartree Fock Electron Energy is: -1.8369679912029842\n" ] } ], "source": [ - "ferOp = FermionicOperator(h1=molecule._one_body_integrals, h2=molecule._two_body_integrals)\n", + "ferOp = FermionicOperator(h1=molecule.one_body_integrals, h2=molecule.two_body_integrals)\n", "qubitOp_jw = ferOp.mapping(map_type='JORDAN_WIGNER', threshold=0.00000001)\n", "qubitOp_jw.chop(10**-10)\n", "\n", @@ -65,7 +57,7 @@ "# print(qubitOp_jw.print_operators())\n", "\n", "print('The exact ground state energy is: {}'.format(ret['energy']))\n", - "print('The Hartree Fock Electron Energy is: {}'.format(molecule._hf_energy - molecule._nuclear_repulsion_energy))" + "print('The Hartree Fock Electron Energy is: {}'.format(molecule.hf_energy - molecule.nuclear_repulsion_energy))" ] }, { @@ -78,8 +70,8 @@ "output_type": "stream", "text": [ "Energy shift is: 1.8369679912029846\n", - "The exact ground state energy in PH basis is -0.020307038999395587\n", - "The exact ground state energy in PH basis is -1.8572750302023802 (with energy_shift)\n" + "The exact ground state energy in PH basis is -0.020307038999396183\n", + "The exact ground state energy in PH basis is -1.8572750302023808 (with energy_shift)\n" ] } ], @@ -107,25 +99,24 @@ "name": "stdout", "output_type": "stream", "text": [ - "Minimum value: -0.020307038916806994\n", - "Minimum value: -1.8572750301197916\n", - "Parameters: [-0.61946199 -1.87409724 0.24417792 1.60641243 -2.3985038 -2.55902994\n", - " -1.68929972 -0.55469298 -1.09966074 -3.00271563 2.53835355 0.30461019\n", - " 0.86787481 2.57016619 -2.17943234 -1.08788746 2.60613503 2.21836476\n", - " -1.77645011 -1.88678767 3.14158727 0.69993303 1.62197744 -0.65831574]\n" + "Minimum value: -0.020307038772801052\n", + "Minimum value: -1.8572750299757856\n", + "Parameters: [ 0.6968305 -0.75469172 -0.93681376 0.90714539 -0.35663766 1.80503875\n", + " 0.36268468 0.91067094 -3.01470787 0.13268903 1.07891483 1.80043481\n", + " -2.97791979 -0.99008645 0.99278289 2.88254594 0.16418367 2.7610048\n", + " -1.98782455 -2.77533268 -2.72793504 1.146142 -0.83030385 -2.75112004]\n" ] } ], "source": [ "# setup VQE \n", "# setup optimizer, use L_BFGS_B optimizer for example\n", - "lbfgs = L_BFGS_B()\n", - "lbfgs.set_options(maxfun=1000, factr=10, iprint=10)\n", + "lbfgs = L_BFGS_B(maxfun=1000, factr=10, iprint=10)\n", "\n", - "# setup variation form generator (generate trial circuits for VQE)\n", + "# setup variational form generator (generate trial circuits for VQE)\n", "var_form = RY(newqubitOp_jw.num_qubits, 5, entangler_map = {0: [1], 1:[2], 2:[3]})\n", "\n", - "# setup VQE with operator, variation form, and optimzer\n", + "# setup VQE with operator, variational form, and optimizer\n", "vqe_algorithm = VQE(newqubitOp_jw, var_form, lbfgs, 'matrix')\n", "\n", "backend = Aer.get_backend('statevector_simulator')\n", @@ -147,9 +138,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Quantum py37", + "display_name": "Python 3", "language": "python", - "name": "quantum-dev-37" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -161,7 +152,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.1" + "version": "3.6.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/PySCF_end2end.ipynb b/community/aqua/chemistry/PySCF_end2end.ipynb index 21f777f1f..ccf81a511 100644 --- a/community/aqua/chemistry/PySCF_end2end.ipynb +++ b/community/aqua/chemistry/PySCF_end2end.ipynb @@ -6,8 +6,6 @@ "metadata": {}, "outputs": [], "source": [ - "from collections import OrderedDict\n", - "\n", "import numpy as np\n", "from qiskit import Aer\n", "from qiskit.transpiler import PassManager\n", @@ -15,11 +13,11 @@ "from qiskit_aqua import Operator, QuantumInstance\n", "from qiskit_aqua.algorithms.adaptive import VQE\n", "from qiskit_aqua.algorithms.classical import ExactEigensolver\n", - "from qiskit_aqua.algorithms.components.optimizers import L_BFGS_B\n", - "from qiskit_aqua.algorithms.components.variational_forms import RYRZ\n", + "from qiskit_aqua.components.optimizers import L_BFGS_B\n", + "from qiskit_aqua.components.variational_forms import RYRZ\n", "\n", - "from qiskit_aqua_chemistry import FermionicOperator\n", - "from qiskit_aqua_chemistry.drivers import ConfigurationManager" + "from qiskit_chemistry import FermionicOperator\n", + "from qiskit_chemistry.drivers import PySCFDriver, UnitsType" ] }, { @@ -30,12 +28,9 @@ "source": [ "# using driver to get fermionic Hamiltonian\n", "# PySCF example\n", - "cfg_mgr = ConfigurationManager()\n", - "pyscf_cfg = OrderedDict([('atom', 'H .0 .0 .0; H .0 .0 0.735'), ('unit', 'Angstrom'), ('charge', 0), ('spin', 0), ('basis', 'sto3g')])\n", - "section = {}\n", - "section['properties'] = pyscf_cfg\n", - "driver = cfg_mgr.get_driver_instance('PYSCF')\n", - "molecule = driver.run(section)" + "driver = PySCFDriver(atom='H .0 .0 .0; H .0 .0 0.735', unit=UnitsType.ANGSTROM,\n", + " charge=0, spin=0, basis='sto3g')\n", + "molecule = driver.run()" ] }, { @@ -45,7 +40,7 @@ "outputs": [], "source": [ "# get fermionic operator and mapping to qubit operator\n", - "ferOp = FermionicOperator(h1=molecule._one_body_integrals, h2=molecule._two_body_integrals)\n", + "ferOp = FermionicOperator(h1=molecule.one_body_integrals, h2=molecule.two_body_integrals)\n", "qubitOp = ferOp.mapping(map_type='JORDAN_WIGNER', threshold=0.00000001)\n", "qubitOp.to_matrix()\n", "qubitOp.chop(10**-10)" @@ -57,7 +52,7 @@ "metadata": {}, "outputs": [], "source": [ - "# if you do not install any driver and want like to start with random Hamiltonian\n", + "# If you do not install any driver and would like to start with a random Hamiltonian\n", "# SIZE=4\n", "# matrix = np.random.random((SIZE,SIZE))\n", "# qubitOp = Operator(matrix=matrix)" @@ -72,7 +67,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "The exact ground state energy is: -1.857275030202381\n" + "The exact ground state energy is: -1.8572750302023784\n" ] } ], @@ -92,28 +87,27 @@ "name": "stdout", "output_type": "stream", "text": [ - "Minimum value: -1.8558394075654778\n", - "Parameters: [-0.36421285 -3.14159265 0.40713821 0.628366 1.16855107 3.13654292\n", - " 3.04706761 1.01598668 3.14159265 0.01276409 -2.71605135 -0.55606055\n", - " 1.38614919 1.99367984 2.96826647 3.09819302 2.66399496 0.21704659\n", - " -3.14159265 2.45685901 0.0471695 1.59525629 -0.0287444 0.24710631\n", - " -3.14159265 -2.76470226 -0.5284518 -2.3109039 1.56821496 0.27591985\n", - " 2.92605829 -1.72430953 2.17302923 -0.59972485 -3.14159265 0.78339345\n", - " -2.0963081 -1.43178347 1.61460406 3.11192051 2.9109565 1.92113649\n", - " -2.71970626 -1.01656819 -3.13375028 -2.96831398 -1.59718039 -1.13423582]\n" + "Minimum value: -1.8543764647149892\n", + "Parameters: [-0.11491214 0.32930264 -0.88261763 1.06617404 0.40859901 -1.97440033\n", + " -1.92168204 -0.84401099 0.86926132 0.19962884 1.88259456 0.58563547\n", + " 0.2392261 -1.22095488 -1.8106901 -2.18264222 0.33053157 1.44130586\n", + " 1.16319625 3.08314583 2.86759507 1.39583915 0.89226104 -1.33970127\n", + " -0.20377285 -1.78328421 -1.13356666 2.15515282 1.72935768 -1.02814735\n", + " 0.9198738 -0.51798203 2.25275439 2.70574515 -0.7428116 2.69334082\n", + " -1.96540296 -2.06722665 0.19826459 1.29081156 0.03509571 0.55931109\n", + " 1.61732516 -0.3508986 1.62533384 -0.64622024 3.14159265 -1.78378164]\n" ] } ], "source": [ "# setup VQE \n", "# setup optimizer, use L_BFGS_B optimizer for example\n", - "lbfgs = L_BFGS_B()\n", - "lbfgs.set_options(maxfun=1000, factr=10, iprint=10)\n", + "lbfgs = L_BFGS_B(maxfun=1000, factr=10, iprint=10)\n", "\n", - "# setup variation form generator (generate trial circuits for VQE)\n", + "# setup variational form generator (generate trial circuits for VQE)\n", "var_form = RYRZ(qubitOp.num_qubits, 5, entangler_map = {0: [1], 1:[2], 2:[3]})\n", "\n", - "# setup VQE with operator, variation form, and optimzer\n", + "# setup VQE with operator, variational form, and optimizer\n", "vqe_algorithm = VQE(qubitOp, var_form, lbfgs, 'matrix')\n", "\n", "backend = Aer.get_backend('statevector_simulator')\n", @@ -123,20 +117,13 @@ "print(\"Minimum value: {}\".format(results['eigvals'][0].real))\n", "print(\"Parameters: {}\".format(results['opt_params']))" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Quantum py37", + "display_name": "Python 3", "language": "python", - "name": "quantum-dev-37" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -148,7 +135,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.1" + "version": "3.6.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/Pyquante_end2end.ipynb b/community/aqua/chemistry/Pyquante_end2end.ipynb index 48ffdb890..dee663931 100644 --- a/community/aqua/chemistry/Pyquante_end2end.ipynb +++ b/community/aqua/chemistry/Pyquante_end2end.ipynb @@ -6,7 +6,6 @@ "metadata": {}, "outputs": [], "source": [ - "from collections import OrderedDict\n", "import numpy as np\n", "from qiskit import Aer\n", "from qiskit.transpiler import PassManager\n", @@ -14,11 +13,11 @@ "from qiskit_aqua import Operator, QuantumInstance\n", "from qiskit_aqua.algorithms.adaptive import VQE\n", "from qiskit_aqua.algorithms.classical import ExactEigensolver\n", - "from qiskit_aqua.algorithms.components.optimizers import L_BFGS_B\n", - "from qiskit_aqua.algorithms.components.variational_forms import RY\n", + "from qiskit_aqua.components.optimizers import L_BFGS_B\n", + "from qiskit_aqua.components.variational_forms import RY\n", "\n", - "from qiskit_aqua_chemistry import FermionicOperator\n", - "from qiskit_aqua_chemistry.drivers import ConfigurationManager\n" + "from qiskit_chemistry import FermionicOperator\n", + "from qiskit_chemistry.drivers import PyQuanteDriver, UnitsType, BasisType" ] }, { @@ -29,14 +28,11 @@ "source": [ "# using driver to get fermionic Hamiltonian\n", "# PyQuante example\n", - "cfg_mgr = ConfigurationManager()\n", - "pyquante_cfg = OrderedDict([('atoms', 'H .0 .0 .0; H .0 .0 0.735'), ('units', 'Angstrom'), ('charge', 0), ('multiplicity', 1), ('basis', 'sto3g')])\n", - "section = {}\n", - "section['properties'] = pyquante_cfg\n", - "driver = cfg_mgr.get_driver_instance('PYQUANTE')\n", - "molecule = driver.run(section)\n", - "h1 = molecule._one_body_integrals\n", - "h2 = molecule._two_body_integrals" + "driver = PyQuanteDriver(atoms='H .0 .0 .0; H .0 .0 0.735', units=UnitsType.ANGSTROM,\n", + " charge=0, multiplicity=1, basis=BasisType.BSTO3G)\n", + "molecule = driver.run()\n", + "h1 = molecule.one_body_integrals\n", + "h2 = molecule.two_body_integrals" ] }, { @@ -61,28 +57,27 @@ "name": "stdout", "output_type": "stream", "text": [ - "IIII\t(-0.8105479862761009+0j)\n", - "IIIZ\t(0.1721839427308564+0j)\n", - "IIZI\t(-0.22575350251540538+0j)\n", - "IIZZ\t(0.12091263358560006+0j)\n", - "IZII\t(0.1721839427308564+0j)\n", - "IZIZ\t(0.1689275404885901+0j)\n", + "IIII\t(-0.8105479862760991+0j)\n", + "IIIZ\t(0.17218394273085635+0j)\n", + "IIZI\t(-0.22575350251540605+0j)\n", + "IIZZ\t(0.12091263358559995+0j)\n", + "IZII\t(0.17218394273085635+0j)\n", + "IZIZ\t(0.16892754048859007+0j)\n", "IZZI\t(0.16614543338049342+0j)\n", - "IZZZ\t(-5.551115123125783e-17+0j)\n", - "XXXX\t(0.045232799794893475+0j)\n", - "XXYY\t(0.045232799794893475+0j)\n", - "YYXX\t(0.045232799794893475+0j)\n", - "YYYY\t(0.045232799794893475+0j)\n", - "ZIII\t(-0.2257535025154054+0j)\n", + "IZZZ\t(-8.326672684688674e-17+0j)\n", + "XXXX\t(0.045232799794893426+0j)\n", + "XXYY\t(0.045232799794893426+0j)\n", + "YYXX\t(0.045232799794893426+0j)\n", + "YYYY\t(0.045232799794893426+0j)\n", + "ZIII\t(-0.2257535025154061+0j)\n", "ZIIZ\t(0.16614543338049342+0j)\n", - "ZIZI\t(0.17464343142442204+0j)\n", - "ZIZZ\t(-5.551115123125783e-17+0j)\n", - "ZZII\t(0.12091263358560007+0j)\n", - "ZZIZ\t(-5.551115123125783e-17+0j)\n", - "ZZZI\t(-4.163336342344337e-17+0j)\n", - "ZZZZ\t(-2.7755575615628914e-17+0j)\n", + "ZIZI\t(0.17464343142442207+0j)\n", + "ZZII\t(0.12091263358559991+0j)\n", + "ZZIZ\t(-2.42861286636753e-17+0j)\n", + "ZZZI\t(-6.938893903907228e-17+0j)\n", + "ZZZZ\t(-3.122502256758253e-17+0j)\n", "\n", - "The exact ground state energy is: -1.85727507663788\n" + "The exact ground state energy is: -1.8572750766378763\n" ] } ], @@ -109,24 +104,23 @@ "name": "stdout", "output_type": "stream", "text": [ - "Minimum value: -1.857275076616748\n", - "Parameters: [ 1.24560170e-01 -2.24608226e+00 -3.14159048e+00 -2.42131530e+00\n", - " 8.72124461e-01 -2.06751067e+00 -6.50175294e-01 2.88665414e+00\n", - " 1.27536588e+00 4.63691897e-01 -1.92054319e+00 2.67567922e+00\n", - " -2.34453122e-01 1.10136519e+00 1.69630611e+00 7.44171042e-01\n", - " 2.95271596e+00 2.30531994e-03 1.59835566e-01 7.98698092e-01\n", - " -1.75134877e+00 9.96040972e-01 2.10338450e+00 2.03697896e+00]\n" + "Minimum value: -1.857275076588138\n", + "Parameters: [ 1.72459655 1.92029571 -0.34982926 -1.49153618 2.26170073 0.1302224\n", + " 0.72586921 0.29764644 -1.401497 1.49290088 -3.09131598 0.1647657\n", + " -2.69893629 -1.46110898 -1.99677374 1.92441472 -0.94314616 2.69400524\n", + " 2.75985138 0.16260948 -2.3450682 1.46493868 1.22492389 3.03079433]\n" ] } ], "source": [ - "lbfgs = L_BFGS_B()\n", - "lbfgs.set_options(maxfun=1000, factr=10, iprint=10)\n", + "# setup VQE \n", + "# setup optimizer, use L_BFGS_B optimizer for example\n", + "lbfgs = L_BFGS_B(maxfun=1000, factr=10, iprint=10)\n", "\n", - "# setup variation form generator (generate trial circuits for VQE)\n", + "# setup variational form generator (generate trial circuits for VQE)\n", "var_form = RY(qubitOp_jw.num_qubits, 5, entangler_map = {0: [1], 1:[2], 2:[3]})\n", "\n", - "# setup VQE with operator, variation form, and optimzer\n", + "# setup VQE with operator, variational form, and optimizer\n", "vqe_algorithm = VQE(qubitOp_jw, var_form, lbfgs, 'matrix')\n", "\n", "backend = Aer.get_backend('statevector_simulator')\n", @@ -141,9 +135,9 @@ ], "metadata": { "kernelspec": { - "display_name": "quantum-dev", + "display_name": "Python 3", "language": "python", - "name": "quantum-dev" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -155,7 +149,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.6.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/QSE_pytket.ipynb b/community/aqua/chemistry/QSE_pytket.ipynb new file mode 100644 index 000000000..e93e915f4 --- /dev/null +++ b/community/aqua/chemistry/QSE_pytket.ipynb @@ -0,0 +1,942 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# _*Quantum chemistry with Qiskit `Terra`, `Aqua` and CQC's `t|ket〉` compiler*_ \n", + "\n", + "In this tutorial, we discuss how to use IBM's Qiskit `Terra` and `Aqua` packages, and the `t|ket〉` compiler by Cambridge Quantum Computing (CQC), to calculate the excited state energies of simple molecules using the quantum subspace expansion (QSE) technique. By the end of this tutorial, you will\n", + "\n", + "* Understand why optimizing circuits for quantum chemistry is necessary\n", + "* Learn about the quantum subspace expansion technique for computing excited state energies\n", + "* See how Qiskit `Terra` enables 3rd-party passes in its transpiler architecture\n", + "* Use `pytket` to perform native circuit optimization and circuit routing\n", + "\n", + "NOTE: Throughout this tutorial, we assume the reader has some familiarity with quantum chemistry methods, though an extensive knowledge is not necessary.\n", + "\n", + "**Code setup**\n", + "\n", + "This tutorial makes use of Qiskit `Terra` and `Aqua`, as well as `pytket` (the Python interface to `t|ket〉`). To install `Terra` and `Aqua`, follow instructions available [here](https://qiskit.org/). To install `pytket`, follow the instructions at [this Github repository](https://github.com/CQCL/pytket)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Quantum chemistry in the NISQ era, and the need for circuit optimization techniques\n", + "\n", + "One of the expected applications of noisy, intemediate-scale quantum (NISQ) devices is simulating quantum chemistry. A simple quantum chemistry question is \"Given how the electrons and nuclei of a particular molecule are arranged, what is the _energy_ of that configuration?\". By examining how the energy of the configuration changes as the nuclei and electrons are moved relative to one another, we can map out an _energy surface_. The configuration that minimizes the energy is a stable, equilibrium point for the molecule. Knowing this configuration (and its associated energy), we can deduce a variety of molecular properties, such as reaction rates.\n", + "\n", + "Most techniques for computing molecular energies on near term quantum devices rely on the [variational quantum eigensolver (VQE) algorithm](https://doi.org/10.1038/ncomms5213). This algorithm uses a parameterized _ansatz_ $|{\\psi}(\\boldsymbol{\\theta})\\rangle$ to describe the ground state energy of the Hamiltonian $H$ for a given configuration. By examining how the expected energy $\\langle \\psi(\\boldsymbol{\\theta})|H| \\psi(\\boldsymbol{\\theta})\\rangle/\\langle \\psi(\\boldsymbol{\\theta})|\\psi(\\boldsymbol{\\theta})\\rangle$ changes as $\\boldsymbol{\\theta}$ is varied, we can optimize the parameters to find an estimate for the ground state and its corresponding energy.\n", + "\n", + "Running the VQE algorithm on actual hardware has two complications:\n", + "\n", + "* Efficiently preparing the trial state $|\\psi(\\boldsymbol{\\theta})\\rangle$.\n", + "\n", + "* Efficiently measuring the terms in the Hamiltonian $H$ that describe the configuration.\n", + "\n", + "In this tutorial, we'll focus on the problem of efficiently preparing the trial state. We do so for two reasons:\n", + "\n", + "* An accurate estimate of the ground state is all that's necessary to do the quantum subspace expansion technique to estimate excited state energies\n", + "\n", + "* To demonstrate the capabilies of Qiskit `Terra` and CQC's `t|ket〉` compiler to reduce the circuit _resources_ (number of gates, depth, etc.) for the state preparation. In principle, these capabilities can be deployed for other problems.\n", + "\n", + "Reducing the resources is crucial in the NISQ era, because the noise present in NISQ devices dominates more for larger circuits (with more operations) and reduces the accuracy of the results. Therefore techniques which reduce circuit requirements can significantly improve the results on real hardware. Note that there are techniques, such as [qubit tapering](https://arxiv.org/abs/1701.08213), or ['gate-efficient' circuits](https://arxiv.org/abs/1809.05057), which are useful for constructing a lower-resource circuit that could be run on _ideal_ hardware. In practice, even these \"resource-efficient\" circuits can be further optimized, especially when the imperfections and constraints of a real piece of hardware are taken into account.\n", + "\n", + "At a high level, our approach utilizes Qiskit `Aqua` to generate a parameterized ansatz based on the [_Unitary Coupled Cluster, Single-Double_ (UCCSD) ansatz](https://en.wikipedia.org/wiki/Coupled_cluster). We then use Qiskit `Terra` and the `t|ket〉` compiler (as implemented in `pytket`) to optimize the circuit for that ansatz. We will show that the optimized ansatz requires substantially fewer circuit resources than the naive UCCSD ansatz. An application of our approach, we show how to use the quantum subspace expansion (QSE) technique to compute excited state energies for gaseous hydrogen (H$_{2}$) and lithium hydride (LiH)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Computing excited state energies using the Quantum Subspace Expansion (QSE) technique\n", + "\n", + "The VQE algorithm is often used to compute the _ground state_ energy of a given molecular configuration. However, knowing the energies of _excited states_ of the system is also useful. The energies of electronic excited states prove, in general, challenging to compute. Excited states are usually more _entangled_ than ground states and so require more computational resources to compute. While there exists techniques for efficiently representing certain classes of entangled states, in general, the complexity of the simulation will be non-trivial. This is a problem as it makes classical computation of the energy, to an appropriate accuracy, of many molecules impossible. \n", + "\n", + "This notebook demonstrates calculation of excited states of molecules using the [quantum subspace expanansion (QSE) technique](https://doi.org/10.1103/PhysRevA.95.042308). The QSE technique uses an accurate estimate of the ground state energy of a given molecular configuration to estimate the energies of excited states. Consider a fixed molecule (represented by a given Hamiltonian $H$), and suppose $\\left|\\Psi_{0}\\right\\rangle$ is the output of the VQE algorithm for estimating the ground state energy of $H$.\n", + "\n", + "The QSE technique constructs a subspace of state vectors $\\left|\\Psi_j^k\\right\\rangle$ formed by one-electron excitations of the ground state wavefunction:\n", + "\n", + "\\begin{equation}\n", + "\\left|\\Psi_{j}^{k}\\right\\rangle = c_k^{\\dagger}c_{j}\\left|\\Psi_0\\right\\rangle.\n", + "\\end{equation}\n", + "\n", + "where $c_k^{\\dagger}, c_{j}$ are the fermionic creation and annihilation operators over spin orbitals $k$ and $j$, respectively. That is, these vectors are formed by reducing the occupation of spin orbital $j$ by one, and increasing the occupation of spin orbital $k$ by one. The vectors are not in general orthogonal to $\\Psi_{0}$ hence we will need to calculate an overlap matrix.\n", + "\n", + "\n", + "Within this subspace, we solve a generalized eigenvalue problem. Consider the operator $H'$ with matrix elements given by\n", + "$$(H')_{jk}^{lm} = \\langle\\Psi_j^l \\left| H \\right| \\Psi_k^m\\rangle,$$\n", + "\n", + "and define an overlap matrix $S$ whose matrix elements are given by\n", + "\n", + "$$S_{jk}^{lm} = \\langle \\Psi_j^l \\left|\\Psi_k^m\\right\\rangle.$$\n", + "\n", + "The generalized eigenvalue equation to be solved is \n", + "\n", + "\\begin{equation}\n", + "H'C=SCE,\n", + "\\end{equation}\n", + "\n", + "where $C$ is the matrix of eigenvectors, and $E$ is the vector of eigenvalues. Crucially, _the energy eigenvalues $E$ provide an estimate of the excited state energies of $H$_ as well as a refined value of the ground state energy.\n", + "\n", + "Notice that the solution to the generalized eigenvalue equation can be done on a classical computer, provided $H'$ and $S$ have been calculated. The matrix elements of both of these matrices can be constructed using a quantum computer, in the following way. First, re-write the matrix elements in terms of $\\left | \\Psi_{0}\\right \\rangle$:\n", + "\n", + "\\begin{align}\n", + "(H')_{jk}^{lm} =& \\langle\\Psi_j^l \\left| H \\right| \\Psi_k^m\\rangle = \\langle \\Psi_{0} | c_{j}^\\dagger c_{l} Hc_{m}^{\\dagger}c_{k}|\\Psi_{0}\\rangle\\\\\n", + "S_{jk}^{lm} &= \\langle \\Psi_j^l \\left|\\Psi_k^m\\right\\rangle = \\langle \\Psi_{0} | c_{j}^\\dagger c_{l} c_{m}^{\\dagger}c_{k}|\\Psi_{0}\\rangle.\n", + "\\end{align}\n", + "\n", + "The matrix elements can be calculated using a quantum computer or simluator. How? By transforming the operators \n", + "$c_{j}^\\dagger c_{l} c_{k}^{\\dagger}c_{m}$ and $c_{l}^\\dagger c_{j} H c_{m}^{\\dagger}c_{k}$ to a set of Pauli quantum gates according to an appropriate scheme such as Jordan-Wigner or Bravyi-Kitaev, apply this gate set to the ground state wavefunction (constructed with the coefficients obtained from the VQE calculation) and perform a measurement to obtain the expected value. By measuring these expectation values, we obtain estimates of $S_{jk}^{lm}$ and $(H')_{jk}^{lm}$, respectively.\n", + "\n", + "Therefore, to use the QSE technique, we need to use the quantum computer to calculate 2 quantities:\n", + "\n", + "* An estimate of the ground state $\\left |\\Psi_{0}\\right\\rangle$ (by running the VQE algorithm)\n", + "* The matrix elements of $H'$ and $S$.\n", + "\n", + "For the first quantity, we want to have an efficient representation of the trial state $|\\psi(\\boldsymbol{\\theta})\\rangle$. And for the second, we need to be able to take the estimate of the ground state and efficiently compute matrix elements. In both of these cases, being able to optimize the circuit for preparing would be useful. Thankfully, Qiskit `Terra`, in conjunction with `t|ket〉`, provides us tools for doing so. We discuss the problem of _circuit compilation/optimization_ in the next section." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Circuit compilation with Qiskit `Terra` and `t|ket〉`\n", + "\n", + "In the remainder of this tutorial, we show how to use Qiskit `Terra` and `t|ket〉` to optimize the circuits for preparing VQE trial states, and simulate the QSE technique." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Application I: Reducing circuit resources for trial state preparation\n", + "\n", + "In this tutorial, we'll focus on two simple molecules: hydrogen (H$_{2}$) and lithium hydride (LiH). NOTE: the code is much slower for LiH, which is why here, we'll demonstrate H$_{2}$.\n", + "\n", + "\n", + "As a first application of the pipelines provided by `Terra`, `Aqua`, and `t|ket〉`, we first show how to configure a VQE experiment using `Aqua`, and then use `Terra` and `t|ket〉` to compile the trial state preparation circuit.\n", + "\n", + "Let's start by importing the necessary packages." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# numpy, for random number generation\n", + "import numpy as np\n", + "\n", + "# Qiskit, for transpiler-related functions, the IBMQ provider, and the Aer simulator\n", + "from qiskit import IBMQ, Aer, QuantumRegister\n", + "from qiskit.transpiler import transpile, transpile_dag, PassManager\n", + "from qiskit.converters import circuit_to_dag, dag_to_circuit\n", + "\n", + "# pytket, for optimization\n", + "import pytket\n", + "from pytket.qiskit import TketPass\n", + "\n", + "# Qiskit Aqua, for chemistry\n", + "from qiskit_chemistry.drivers import PySCFDriver, UnitsType\n", + "from qiskit_chemistry import FermionicOperator\n", + "from qiskit_chemistry.aqua_extensions.components.initial_states import HartreeFock\n", + "from qiskit_chemistry.aqua_extensions.components.variational_forms import UCCSD" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 0: Enable IBMQ account" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-29T00:04:16.313210Z", + "start_time": "2018-09-29T00:04:14.460647Z" + } + }, + "outputs": [], + "source": [ + "IBMQ.load_accounts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 1: setting up the molecule\n", + "\n", + "We choose the basis set spanning the molecular wavefunction, the molecular geometry, the chemical identity of each atom, the charge and spin quantum number.\n", + "\n", + "To calculate results for LiH (slower), just comment out the H$_{2}$ string and replace it with the LiH one.\n", + "\n", + "NOTE: Here, we focus only on one particular value for the `bond_length`. If you wanted to replicate the final plot for the excited state energies of LiH as a function of bond length, you'd need to sweep `bond_length` over several values." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-29T00:04:20.069592Z", + "start_time": "2018-09-29T00:04:20.065489Z" + } + }, + "outputs": [], + "source": [ + "# Choose a particular bond length\n", + "# NOTE: Units are in Angstroms\n", + "\n", + "bond_length = 0.7\n", + "\n", + "# Set up molecule\n", + "\n", + "# base_molecule_str = 'Li .0 .0 .0; H .0 .0 {}'\n", + "base_molecule_str = 'H .0 .0 .0; H .0 .0 {}'\n", + "\n", + "# Specify other molecular properties\n", + "charge = 0\n", + "spin = 0\n", + "basis = 'sto3g'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Having set up the molecule, we now execute our classical chemistry driver to obtain the integrals that define the terms in the molecule's Hamiltonian. In this case, we choose `PYSCF` as our driver, so make sure you have that installed.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Molecular repulsion energy: 0.7559674441714287\n" + ] + } + ], + "source": [ + "# Using driver to get fermionic Hamiltonian\n", + "# PySCF example\n", + "\n", + "driver = PySCFDriver(atom=base_molecule_str.format(bond_length),\n", + " unit=UnitsType.ANGSTROM,\n", + " charge=charge,\n", + " spin=spin,\n", + " basis=basis)\n", + "\n", + "molecule = driver.run()\n", + "\n", + "print(\"Molecular repulsion energy: \", molecule.nuclear_repulsion_energy)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The molecular repulsion energy calculated by the driver corresponds to the coulombic repulsion between the nuclei in the molecule, and we can add it to our electron structure calculation at the end to get the total energy." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 2: Set up a variational form for VQE\n", + "\n", + "To run the VQE algorithm, we need to specify a mapping from the molecular Hamiltonian to qubits, an initial state, and the ansatz we use for the trial state. Here, we use the Jordan-Wigner transform to map the molecular Hamiltonian onto qubits (Pauli operators). We choose the initial state to be a Hartree-Fock state, and we take the variational ansatz to be the unitary coupled cluster with single and double excitations (UCCSD)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of qubits: 4\n" + ] + } + ], + "source": [ + "n_qubits = molecule.one_body_integrals.shape[0]\n", + "n_electrons = molecule.num_alpha + molecule.num_beta - molecule.molecular_charge\n", + "\n", + "# get fermionic operator and mapping to qubit operator\n", + "ferOp = FermionicOperator(h1=molecule.one_body_integrals, h2=molecule.two_body_integrals)\n", + "\n", + "qubitOp = ferOp.mapping(map_type='JORDAN_WIGNER', threshold=0.00000001)\n", + "qubitOp.chop(10**-10)\n", + "\n", + "# Instantiate the initial state as a Hartree-Fock state\n", + "initial_hf = HartreeFock(num_qubits=n_qubits, num_orbitals=n_qubits, \n", + " qubit_mapping='jordan_wigner', two_qubit_reduction=False, num_particles= n_electrons)\n", + "\n", + "# Create the variational form\n", + "var_form = UCCSD(num_qubits=n_qubits, num_orbitals=n_qubits, \n", + " num_particles=n_electrons, depth=1, initial_state=initial_hf, qubit_mapping='jordan_wigner')\n", + "\n", + "# How many qubits do we need?\n", + "print('Number of qubits: {0}'.format(n_qubits))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 3: Transpile circuit and examine circuit properties" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At this point, we have instantiated a variational form for the molecule according to the UCCSD formulation. Aqua's `UCCSD` method has returned back to us an abstraction of the VQE variational form. Let's query some of its properties." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3, (-3.141592653589793, 3.141592653589793))" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Query the variational form for the number of parameters, and the parameter bounds.\n", + "var_form.num_parameters, var_form.parameter_bounds[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As a VQE circuit, `var_form` has some number of parameters, and each parameter can take values in $[-\\pi, \\pi]$.\n", + "These parameters control the angles of rotation in the quantum circuit that represents the variational anatz.\n", + "\n", + "For a particular set of parameters, there is an assocated quantum circuit. Let's input some fiducial parameter values and query properties of the resulting circuit to introduce some nomenclature for describing circuits." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'size': 150,\n", + " 'depth': 83,\n", + " 'width': 4,\n", + " 'bits': 0,\n", + " 'factors': 1,\n", + " 'operations': {'u3': 42, 'u2': 40, 'cx': 56, 'u1': 12}}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Instantiate a concrete instance of the VQE ansatz by setting all the parameters to the\n", + "# arbitrarily-chosen value of 0.\n", + "var_circ = var_form.construct_circuit(np.zeros(var_form.num_parameters))\n", + "\n", + "# Use Terra to convert the circuit to its directed, acyclic graph (DAG) representation.\n", + "var_circ_dag = circuit_to_dag(var_circ)\n", + "\n", + "# The .properties() method of the DAG to get circuit properties.\n", + "var_circ_dag.properties()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These circuit properties are:\n", + "\n", + "\n", + "* `size`: The total number of gates in the circuit\n", + "* `depth`: The total number of _layers_ in the circuit\n", + "* `width`: The number of qubits in the circuit\n", + "* `bits`: The number of classical bits in the circuit. (NOTE: Because the circuit prepares a VQE trial state, and does not have any measurements, `bits` will be 0.)\n", + "* `factors`: The number of tensor factors the circuit could be decomposed into (by looking at the number of weakly connected components of the DAG)\n", + "\n", + "The `.properties()` method of the DAG representation also breaks down the total number of gates (`size`) by the individual gates themselves. These are the $u1,u2,u3$ and CNOT gates described [here](https://qiskit.org/documentation/terra/summary_of_quantum_operations.html). You can verify that the total number of gates is in fact equal to `size`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 4: Transpile the circuit using Terra and `t|ket〉`\n", + "\n", + "Having instantiated a VQE variational form and examined some of its properties, we'd like to optimize those properties so that the circuit could be run on a near-term device. Terra provides a framework (the [_transpiler_](https://qiskit.org/documentation/terra/overview.html#transpiler)) for manipulating circuits according to certain _passes_, and where the execution of the passes is orchestrated by a _PassManager_, which we can use to do this optimization. Importantly, _the transpiler manipulates the circuit to change circuit properties, without actually changing the input-output relationship the circuit defines_. That is, the transpiler takes a circuit and re-writes it, but doesn't change what the circuit actually does.\n", + "\n", + "CQC has written several passes for manipulating quantum circuits which are available via `pytket`. For an extensive discussion of the framework `t|ket〉` uses to manipulate circuits, see **[TODO: include link]**. Here, we'll demonstrate using Terra and `pytket` to optimize a randomly-chosen realization of the VQE variational form. Currently, passes in the transpiler require a backend in order to run. For simplicity, we start by using a simulator backend." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# Grab an Aer backend\n", + "aer_backend = Aer.get_backend('qasm_simulator')" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "# Choose a random set of parameters\n", + "seed = 0\n", + "np.random.seed(seed)\n", + "params = np.random.uniform(low=-3.1, high=3.1, size=var_form.num_parameters)\n", + "\n", + "# Construct a random instance of the variational circuit\n", + "var_circuit = var_form.construct_circuit(params)\n", + "\n", + "# Turn the circuit into a DAG\n", + "var_dag = circuit_to_dag(var_circuit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This randomly-chosen realization of the variational form has the same circuit properties as the circuit we instantiated in Step 3." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'size': 150,\n", + " 'depth': 83,\n", + " 'width': 4,\n", + " 'bits': 0,\n", + " 'factors': 1,\n", + " 'operations': {'u3': 42, 'u2': 40, 'cx': 56, 'u1': 12}}" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "var_dag.properties()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we set up a transpiler using Terra and the `TketPass` from `pytket`." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a Terra PassManager object\n", + "tk_pass_manager = PassManager()\n", + "\n", + "# Set up the TketPass\n", + "tk_pass = TketPass(aer_backend)\n", + "\n", + "# Add the TketPass to the PassManager\n", + "tk_pass_manager.append(tk_pass)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the transpiler set up and the realization of the variational form put into a DAG, we can now use the `transpile_dag` function to run the PassManger." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "var_dag_transpiled = transpile_dag(var_dag, pass_manager=tk_pass_manager)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's check the properties of this circuit to see how the transpiled circuit differs from the original one." + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'size': 95,\n", + " 'depth': 57,\n", + " 'width': 4,\n", + " 'bits': 0,\n", + " 'factors': 1,\n", + " 'operations': {'u3': 30, 'cx': 52, 'u1': 12, 'u2': 1}}" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "var_dag_transpiled.properties()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `t|ket〉` compiler has optimized the circuit, and as we might hope for, _the transpiled circuit has a lower `size` and `depth` than the original circuit._\n", + "\n", + "\n", + "The table below gives properties of the transpiled circuit for H$_{2}$ and LiH (with `seed=0`, corresponding to the worst-case and also most common performance of the transpiler).\n", + "\n", + "\n", + "| Molecule: H$_2$ | Total Gates | Depth | CNOT Count |\n", + "|--------------------------------------|-------------|---------------|--------------------|\n", + "| Input circuit | 150 | 83 | 56 |\n", + "| `tket` circuit optimization (Aer backend) | 95 | 57 | 52 |\n", + "\n", + "\n", + "| Molecule: LiH | Total Gates | Depth | CNOT Count |\n", + "|--------------------------------------|-------------|---------------|--------------------|\n", + "| Input circuit | 13700 | 9342 | 8064 |\n", + "| `tket` circuit optimization (Aer backend) | 7411 | 4416 | 5096 |\n", + "\n", + "For both H$_2$ and LiH, circuit optimization using `t|ket〉` reduces the number of gates necessary to prepare the trial state. The depth also decreases, which makes running the circuit more feasible on near-term devices." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 5: Route the circuit onto real hardware" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Even though we've optimized the circuit, there's no guarantee that it can run, as written, on a real backend. This is because the directionaly of the CNOT gates on the backend may not be respected by the circuit. For this reason, we need to re-write the circuit in such as way that the CNOT gates respect the _coupling map_ of the backend. `t|ket〉` knows how to do this, and handles this problem (called circuit \"routing\") when a real backend is put into the `TketPass` object. Routing refers to the process of making quantum circuits hardware compliant by the addition of SWAP gates such that all multi-qubit interactions occur on adjacent physical qubits.\n", + "\n", + "Because we know _a priori_ that the H$_{2}$ and LiH molecules requires at most 12 qubits, we make sure to use an IBMQ backend with no less than 12 qubits." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " ]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Grab only backends that have at least 12 qubits\n", + "IBMQ.backends(filters=lambda x: x.configuration().n_qubits >= 12)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll use the `ibmq_16_melbourne` backend." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "real_backend = IBMQ.get_backend('ibmq_16_melbourne')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To route the variational circuit onto real hardware, we simply need to change the backend." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a Terra PassManager object\n", + "tk_pass_manager = PassManager()\n", + "\n", + "# Set up the TketPass\n", + "tk_pass = TketPass(real_backend)\n", + "\n", + "# Add the TketPass to the PassManager\n", + "tk_pass_manager.append(tk_pass)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, we can transpile the DAG representation of the variational circuit to a backend-compliant circuit using the `tranpsile_dag` function. Here, because the backend has a non-trivial coupling map, the `TketPass` will perform both circuit optimization and optimal routing calculations. We need to add a register containing the ancilla qubits on the architecture that `TketPass` can use in routing." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "blank_qubits = QuantumRegister(len(real_backend.properties().qubits) - var_dag.width())\n", + "var_dag.add_qreg(blank_qubits)\n", + "var_dag_transpiled = transpile_dag(var_dag, pass_manager=tk_pass_manager)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'size': 108,\n", + " 'depth': 69,\n", + " 'width': 4,\n", + " 'bits': 0,\n", + " 'factors': 1,\n", + " 'operations': {'u3': 30, 'cx': 52, 'u1': 12, 'u2': 14}}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "var_dag_transpiled.properties()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can compare these results to Qiskit's own default transpilation by passing in the backend's `coupling_map` to the `transpile_dag` function." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'size': 119,\n", + " 'depth': 89,\n", + " 'width': 14,\n", + " 'bits': 0,\n", + " 'factors': 11,\n", + " 'operations': {'u3': 15, 'cx': 56, 'u1': 14, 'u2': 34}}" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "transpile_dag(var_dag, coupling_map=real_backend.configuration().coupling_map).properties()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The table below shows circuit properties for H$_{2}$ (with `seed=0`).\n", + "\n", + "| Molecule: H$_2$ | Total Gates | Overall Depth | Overall CNOT Count |\n", + "|--------------------------------------|-------------|---------------|--------------------|\n", + "| Input circuit | 150 | 83 | 56 |\n", + "| `tket` circuit optimization (Aer backend) | 95 | 57 | 52 |\n", + "| `Qiskit ` default routing (real backend) | 119 | 89 | 56 |\n", + "| `tket` circuit optimzation + routing (real backend) | 108 | 69 | 52 |\n", + "\n", + "The table below shows circuit properties for LiH (with `seed=0`).\n", + "\n", + "| Molecule: LiH | Total Gates | Overall Depth | Overall CNOT Count |\n", + "|--------------------------------------|-------------|---------------|--------------------|\n", + "| Input circuit | 13700 | 9342 | 8064 |\n", + "| `tket` circuit optimization (Aer backend) | 7411 | 4416 | 5096 |\n", + "| `Qiskit ` default routing (real backend) | 42178 | 23367 | 17977 |\n", + "| `tket` circuit optimzation + routing (real backend) | 19256 | 10022 | 8711 |" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Application II: using QSE to compute excited state energies" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The previous application showed us how to use `t|ket〉` and Terra to optimally route circuits onto real hardware. In the introduction, we observed that in order to use the quantum subspace expansion to compute excited state energies, we need to first come up with an estimate of the ground state. For this, we use VQE.\n", + "\n", + "In this application, we'll instantiate a VQE circuit, run it, and use the estimated ground state as input to `pytket`'s quantum subspace expansion function(s). NOTE: We'll use a simulator backend, and will not run the VQE algorithm on real hardware." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "# Code imports\n", + "\n", + "# From Aqua, we need \n", + "from qiskit_aqua import QuantumInstance\n", + "\n", + "from qiskit_aqua.algorithms.adaptive import VQE\n", + "from qiskit_aqua.components.optimizers import L_BFGS_B\n", + "\n", + "# From pytket, we need QSE functions\n", + "\n", + "from pytket.chemistry import QseMatrices, QSE" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "backend = Aer.get_backend('statevector_simulator')" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "pass_manager = PassManager()\n", + "tk_pass = TketPass(backend)\n", + "pass_manager.append(tk_pass)\n", + "\n", + "quantum_instance = QuantumInstance(backend, pass_manager=pass_manager)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 1: Use VQE to estimate ground state\n", + "\n", + "First, we'll use VQE to estimate the ground state and its energy." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "# Temporary code for Aer on Macbook\n", + "import os\n", + "os.environ['KMP_DUPLICATE_LIB_OK']='True'" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GS Minimum value: -1.1361894540653963\n", + "GS Parameters: [ 5.06008657e-07 5.12457730e-07 -1.04867316e-01]\n" + ] + } + ], + "source": [ + "# Set initial values of parameters\n", + "number_amplitudes = len(var_form._single_excitations)+ len(var_form._double_excitations)\n", + "\n", + "amplitudes_0 = []\n", + "for i in range(number_amplitudes):\n", + " amplitudes_0.append(0.00001)\n", + "\n", + "optimizer = L_BFGS_B()\n", + "optimizer.set_options(maxfun=1000, factr=10, iprint=10)\n", + "\n", + "# setup VQE with operator, variation form, and optimzer\n", + "vqe_algorithm = VQE(operator=qubitOp, operator_mode='matrix', \n", + " var_form=var_form, optimizer=optimizer, initial_point=amplitudes_0)\n", + "\n", + "results = vqe_algorithm.run(quantum_instance)\n", + "\n", + "eigval = results['eigvals'][0]\n", + "gs_energy = eigval.real + molecule.nuclear_repulsion_energy\n", + "\n", + "print(\"GS Minimum value: {}\".format(gs_energy))\n", + "print(\"GS Parameters: {}\".format(results['opt_params']))\n", + "\n", + "# store ground state amplitudes for subsequent steps\n", + "opti_amplitudes = results['opt_params']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 2: Use QSE to find excited states from ground state \n", + "\n", + "We now have the main ingredients to perform a QSE calculation: the molecular Hamiltonian and the optimized parameters to reconstruct the ground state wavefunction. We build our excitation hamiltonian and overlap operators, and measure the elements that compose $H$ and $S$. After we have obtained these arrays, we perform a diagonalization to obtain the excited state energies and vectors.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Excited State Energies: [-1.13618945 -0.47845306 -0.47845306 -0.47845306 -0.1204519 0.5833141\n", + " 0.75596744 0.75596744 0.75596744 0.75596744 0.75596744 0.75596744\n", + " 0.75596744 0.75596744 0.75596744 0.75596744]\n" + ] + } + ], + "source": [ + "qubitOp = ferOp.mapping(map_type='JORDAN_WIGNER', threshold=0.00000001)\n", + "n_qubits = qubitOp.num_qubits\n", + "qubitOp.chop(10**-10)\n", + "\n", + "# Use matrix term helper class\n", + "matrix_terms = QseMatrices(qubitOp, n_qubits)\n", + "\n", + "# Instantiate an instance of the QSE algorithm\n", + "qse_algorithm = QSE(matrix_terms, 'matrix', var_form, opt_init_point=opti_amplitudes)\n", + "\n", + "# Run the algorithm\n", + "energies = qse_algorithm.run(quantum_instance)['eigvals']\n", + "\n", + "# The excited state energies are the energies from above,\n", + "# plus the nuclear repulsion energy.\n", + "print(\"Excited State Energies: \", energies+molecule.nuclear_repulsion_energy)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The calculation provides a refined value of the ground state and a series of excited state energies, whose number depends on the size of the basis set chosen for the molecule, as well as its nature and symmetry. Some of the energies obtained are repeated several times, signaling that some of the states obtained are degenerate. This result can be improved by either increasing the basis set or considering higher-order excitations in the subspace expansion.\n", + "\n", + "The following graph shows us the excited states of LiH at a range of bond distances calculated via our method, compared to values computed using the classical [EOM-CCSD method](https://aip.scitation.org/doi/10.1063/1.464746). To generate this data yourself, you can scan the bond length parameter we set at the start of the calculation.\n", + "\n", + "![alt text](LiH.png \"Title\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the QSE technique, and our simulated VQE ground state, we find the ground state curve has a minimum at a separation of about 1.5 Å, which is in reasonable agreement with experimental data. The calculation also finds a number of excited states. Looking at the first three of these, we find that at the equilibrium distance, these states are 0.11, 0.12 and 0.17 Ha higher in energy than the ground state, which is again in reasonable agreement with experimental data. Note the small kink in one of the excited states energy curve at a distance of approximately 1.2 Å. This indicates that our restriction to single electron excitations is not enough to provide an accurate description at this distance. Overall, the comparison with classically computed EOM-CCSD curves shows that this method reproduces excited state energies with good accuracy at most distances." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/community/aqua/chemistry/README.md b/community/aqua/chemistry/README.md index 52a88b2a7..7b5c4d6b6 100644 --- a/community/aqua/chemistry/README.md +++ b/community/aqua/chemistry/README.md @@ -1,11 +1,11 @@ -# Qiskit Aqua Chemistry Tutorials, Samples and Input Files +# Qiskit Chemistry Tutorials, Samples and Input Files This folder contains some Jupyter Notebook examples showing how to run chemistry experiments using in -Qiskit Aqua Chemistry. There are also Python code files too as well as some hdf5 files containing saved +Qiskit Chemistry. There are also Python code files too as well as some hdf5 files containing saved molecular data that may be used in experiments. These example programs and notebooks show how to use the dictionary equivalent form of -the [input file](#input-files) that can be used more effectively programmatically when your goal is to +the [input file](#input-files) that can be used more effectively programmatically when your goal is to run the content with a range of different values. For example the [energyplot](energyplot.ipynb) notebook alters the interatomic distance of a molecule, over a range of values, and uses the results to plot graphs. @@ -13,6 +13,6 @@ For more detail see the main [index](../index.ipynb#chemistry) ## Input files -The folder [input_files](input_files) contains a number of example input files that can be loaded -and run by the Qiskit Aqua Chemistry [GUI](https://github.com/Qiskit/aqua-chemistry/README.md#gui) or by the -[command line](https://github.com/Qiskit/aqua-chemistry/README.md#command-line) tool. +The folder [input_files](input_files) contains a number of example input files that can be loaded +and run by the Qiskit Chemistry [GUI](https://github.com/Qiskit/qiskit-chemistry/blob/master/README.md#gui) or by the +[command line](https://github.com/Qiskit/qiskit-chemistry/blob/master/README.md#command-line) tool. diff --git a/community/aqua/chemistry/beh2_reductions.ipynb b/community/aqua/chemistry/beh2_reductions.ipynb index df66340e7..af7bc06d4 100644 --- a/community/aqua/chemistry/beh2_reductions.ipynb +++ b/community/aqua/chemistry/beh2_reductions.ipynb @@ -6,9 +6,9 @@ "source": [ "## _*BeH2 plots of various orbital reduction results*_\n", "\n", - "This notebook demonstrates using the Qiskit Aqua Chemistry to plot graphs of the ground state energy of the Beryllium Dihydride (BeH2) molecule over a range of inter-atomic distances using ExactEigensolver. Freeze core reduction is true and different virtual orbital removals are tried as a comparison.\n", + "This notebook demonstrates using the Qiskit Chemistry to plot graphs of the ground state energy of the Beryllium Dihydride (BeH2) molecule over a range of inter-atomic distances using ExactEigensolver. Freeze core reduction is true and different virtual orbital removals are tried as a comparison.\n", "\n", - "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Aqua Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop as well as the orbital reductions.\n", + "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop as well as the orbital reductions.\n", "\n", "This notebook has been written to use the PYSCF chemistry driver. See the PYSCF chemistry driver readme if you need to install the external PySCF library that this driver requires." ] @@ -73,10 +73,10 @@ "source": [ "import numpy as np\n", "import pylab\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "\n", - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", - "aqua_chemistry_dict = {\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", + "qiskit_chemistry_dict = {\n", " 'driver': {'name': 'PYSCF'},\n", " 'PYSCF': {'atom': '', 'basis': 'sto3g'},\n", " 'operator': {'name': 'hamiltonian', 'qubit_mapping': 'parity',\n", @@ -95,11 +95,11 @@ "print('Processing step __', end='')\n", "for i, d in enumerate(pts):\n", " print('\\b\\b{:2d}'.format(i), end='', flush=True)\n", - " aqua_chemistry_dict['PYSCF']['atom'] = molecule.format(d) \n", + " qiskit_chemistry_dict['PYSCF']['atom'] = molecule.format(d) \n", " for j in range(len(reductions)):\n", - " aqua_chemistry_dict['operator']['orbital_reduction'] = reductions[j] \n", - " solver = AquaChemistry()\n", - " result = solver.run(aqua_chemistry_dict)\n", + " qiskit_chemistry_dict['operator']['orbital_reduction'] = reductions[j] \n", + " solver = QiskitChemistry()\n", + " result = solver.run(qiskit_chemistry_dict)\n", " energies[j][i] = result['energy']\n", " distances[i] = d\n", "print(' --- complete')\n", @@ -287,13 +287,13 @@ ], "source": [ "e_nofreeze = np.empty(len(pts))\n", - "aqua_chemistry_dict['operator']['orbital_reduction'] = [] \n", - "aqua_chemistry_dict['operator']['freeze_core'] = False \n", + "qiskit_chemistry_dict['operator']['orbital_reduction'] = [] \n", + "qiskit_chemistry_dict['operator']['freeze_core'] = False \n", "for i, d in enumerate(pts):\n", " print('\\b\\b{:2d}'.format(i), end='', flush=True)\n", - " aqua_chemistry_dict['PYSCF']['atom'] = molecule.format(d) \n", - " solver = AquaChemistry()\n", - " result = solver.run(aqua_chemistry_dict)\n", + " qiskit_chemistry_dict['PYSCF']['atom'] = molecule.format(d) \n", + " solver = QiskitChemistry()\n", + " result = solver.run(qiskit_chemistry_dict)\n", " e_nofreeze[i] = result['energy']\n", "\n", "print(e_nofreeze)" @@ -356,7 +356,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/dictinput.py b/community/aqua/chemistry/dictinput.py index ff88da117..03c2668bd 100644 --- a/community/aqua/chemistry/dictinput.py +++ b/community/aqua/chemistry/dictinput.py @@ -15,7 +15,7 @@ # limitations under the License. # ============================================================================= -import qiskit_aqua_chemistry +import qiskit_chemistry # An example of using a loop to vary inter-atomic distance. A dictionary is # created outside the loop, but inside the loop the 'atom' value is updated @@ -33,8 +33,8 @@ } molecule = 'H .0 .0 -{0}; H .0 .0 {0}' for i in range(21): - d = (0.5 + i*0.5/20)/2 + d = (0.5 + i * 0.5 / 20) / 2 input_dict['PYSCF']['atom'] = molecule.format(d) - solver = qiskit_aqua_chemistry.AquaChemistry() + solver = qiskit_chemistry.QiskitChemistry() result = solver.run(input_dict) - print('{:.4f} : {}'.format(d*2, result['energy'])) + print('{:.4f} : {}'.format(d * 2, result['energy'])) diff --git a/community/aqua/chemistry/energyplot.ipynb b/community/aqua/chemistry/energyplot.ipynb index 992195f4b..1e2e2dbf2 100644 --- a/community/aqua/chemistry/energyplot.ipynb +++ b/community/aqua/chemistry/energyplot.ipynb @@ -8,9 +8,9 @@ "source": [ "## _*LiH plot using ExactEigensolver*_\n", "\n", - "This notebook demonstrates using Qiskit Aqua Chemistry to plot graphs of the ground state energy and dipole moments of a Lithium Hydride (LiH) molecule over a range of inter-atomic distances.\n", + "This notebook demonstrates using Qiskit Chemistry to plot graphs of the ground state energy and dipole moments of a Lithium Hydride (LiH) molecule over a range of inter-atomic distances.\n", "\n", - "This notebook populates a dictionary, which is a progammatic representation of an input file, in order to drive the Qiskit Aqua Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", + "This notebook populates a dictionary, which is a progammatic representation of an input file, in order to drive the Qiskit Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", " \n", "This notebook has been written to use the PYSCF chemistry driver. See the PYSCF chemistry driver readme if you need to install the external PySCF library that this driver requires.\n", " " @@ -42,14 +42,14 @@ "source": [ "import numpy as np\n", "import pylab\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "\n", - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", "# Note: In order to allow this to run reasonably quickly it takes advantage\n", "# of the ability to freeze core orbitals and remove unoccupied virtual\n", "# orbitals to reduce the size of the problem. The result without this\n", "# will be more accurate but it takes rather longer to run.\n", - "aqua_chemistry_dict = {\n", + "qiskit_chemistry_dict = {\n", " 'driver': {'name': 'PYSCF'},\n", " 'PYSCF': {'atom': '', 'basis': 'sto3g'},\n", " 'algorithm': {'name': 'ExactEigensolver'},\n", @@ -68,9 +68,9 @@ "for i in range(steps+1):\n", " print('\\b\\b{:2d}'.format(i), end='', flush=True)\n", " d = start + i*by/steps\n", - " aqua_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", - " solver = AquaChemistry()\n", - " result = solver.run(aqua_chemistry_dict)\n", + " qiskit_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", + " solver = QiskitChemistry()\n", + " result = solver.run(qiskit_chemistry_dict)\n", " distances[i] = d\n", " energies[i] = result['energy']\n", " dipoles[i] = result['total_dipole_moment']\n", @@ -89,7 +89,7 @@ { "data": { "text/plain": [ - "Text(0.5,1,'LiH Ground State Energy')" + "Text(0.5, 1.0, 'LiH Ground State Energy')" ] }, "execution_count": 2, @@ -98,12 +98,14 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, - "metadata": {}, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" } ], @@ -122,7 +124,7 @@ { "data": { "text/plain": [ - "Text(0.5,1,'LiH Dipole Moment')" + "Text(0.5, 1.0, 'LiH Dipole Moment')" ] }, "execution_count": 3, @@ -131,12 +133,14 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, - "metadata": {}, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" } ], @@ -157,9 +161,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Quantum py37", "language": "python", - "name": "python3" + "name": "quantum-dev-37" }, "language_info": { "codemirror_mode": { @@ -171,7 +175,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/h2_basis_sets.ipynb b/community/aqua/chemistry/h2_basis_sets.ipynb index c10fa94a1..1aa7ff17a 100644 --- a/community/aqua/chemistry/h2_basis_sets.ipynb +++ b/community/aqua/chemistry/h2_basis_sets.ipynb @@ -8,9 +8,9 @@ "source": [ "## _*H2 plot with different basis sets used*_\n", "\n", - "This notebook demonstrates using Qiskit Aqua Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances in different basis sets.\n", + "This notebook demonstrates using Qiskit Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances in different basis sets.\n", "\n", - "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Aqua Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", + "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", "\n", "This notebook has been written to use the PSI4 chemistry driver. See the PSI4 chemistry driver readme if you need to install the external Psi4 program that this driver requires." ] @@ -45,10 +45,10 @@ "source": [ "import numpy as np\n", "import pylab\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "\n", - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", - "aqua_chemistry_dict = {\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", + "qiskit_chemistry_dict = {\n", " 'driver': {'name': 'PSI4'},\n", " 'PSI4': '',\n", " 'algorithm': {'name': 'ExactEigensolver'},\n", @@ -79,9 +79,9 @@ " print('\\b\\b{:2d}'.format(i), end='', flush=True)\n", " d = start + i*by/steps\n", " for j in range(len(basis_sets)):\n", - " aqua_chemistry_dict['PSI4'] = psi4_cfg.format(d/2, basis_sets[j]) \n", - " solver = AquaChemistry()\n", - " result = solver.run(aqua_chemistry_dict)\n", + " qiskit_chemistry_dict['PSI4'] = psi4_cfg.format(d/2, basis_sets[j]) \n", + " solver = QiskitChemistry()\n", + " result = solver.run(qiskit_chemistry_dict)\n", " energies[j][i] = result['energy']\n", " distances[i] = d\n", "print(' --- complete')\n", @@ -149,7 +149,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/h2_excited_states.ipynb b/community/aqua/chemistry/h2_excited_states.ipynb index fc837fbf7..909333717 100644 --- a/community/aqua/chemistry/h2_excited_states.ipynb +++ b/community/aqua/chemistry/h2_excited_states.ipynb @@ -8,9 +8,9 @@ "source": [ "## _*H2 excited states from ExactEigensolver*_\n", "\n", - "This notebook demonstrates using Qiskit Aqua Chemistry to plot graphs of the ground state and excited state energies of the Hydrogen (H2) molecule over a range of inter-atomic distances. This notebook utilizes the fact that when two_qubit_reduction is used with the parity mapping on H2 the resultant hamiltionian solely contains the 4 states we are looking for.\n", + "This notebook demonstrates using Qiskit Chemistry to plot graphs of the ground state and excited state energies of the Hydrogen (H2) molecule over a range of inter-atomic distances. This notebook utilizes the fact that when two_qubit_reduction is used with the parity mapping on H2 the resultant hamiltionian solely contains the 4 states we are looking for.\n", "\n", - "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Aqua Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", + "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", "\n", "This notebook has been written to use the PYSCF chemistry driver. See the PYSCF chemistry driver readme if you need to install the external PySCF library that this driver requires." ] @@ -49,10 +49,10 @@ "source": [ "import numpy as np\n", "import pylab\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "\n", - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", - "aqua_chemistry_dict = {\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", + "qiskit_chemistry_dict = {\n", " 'driver': {'name': 'PYSCF'},\n", " 'PYSCF': {'atom': '', 'basis': 'sto3g'},\n", " 'operator': {'name': 'hamiltonian', 'qubit_mapping': 'parity', 'two_qubit_reduction': True},\n", @@ -70,9 +70,9 @@ "for i in range(steps+1):\n", " print('\\b\\b{:2d}'.format(i), end='', flush=True)\n", " d = start + i*by/steps\n", - " aqua_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", - " solver = AquaChemistry()\n", - " result = solver.run(aqua_chemistry_dict)\n", + " qiskit_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", + " solver = QiskitChemistry()\n", + " result = solver.run(qiskit_chemistry_dict)\n", " energies[:, i] = result['energies']\n", " distances[i] = d\n", "print(' --- complete')\n", @@ -188,7 +188,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/h2_iqpe.ipynb b/community/aqua/chemistry/h2_iqpe.ipynb index 0fa8099f1..d055c03b6 100644 --- a/community/aqua/chemistry/h2_iqpe.ipynb +++ b/community/aqua/chemistry/h2_iqpe.ipynb @@ -6,9 +6,9 @@ "source": [ "## _*H2 ground state energy computation using Iterative QPE*_\n", "\n", - "This notebook demonstrates using Qiskit Aqua Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances using IQPE (Iterative Quantum Phase Estimation) algorithm. It is compared to the same energies as computed by the ExactEigensolver\n", + "This notebook demonstrates using Qiskit Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances using IQPE (Iterative Quantum Phase Estimation) algorithm. It is compared to the same energies as computed by the ExactEigensolver\n", "\n", - "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the qiskit_aqua_chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", + "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the qiskit_chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", "\n", "This notebook has been written to use the PYSCF chemistry driver. See the PYSCF chemistry driver readme if you need to install the external PySCF library that this driver requires." ] @@ -22,11 +22,11 @@ "import numpy as np\n", "import pylab\n", "from qiskit import LegacySimulators\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "import time\n", "\n", - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", - "aqua_chemistry_dict = {\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", + "qiskit_chemistry_dict = {\n", " 'driver': {'name': 'PYSCF'},\n", " 'PYSCF': {'atom': '', 'basis': 'sto3g'},\n", " 'operator': {'name': 'hamiltonian', 'transformation': 'full', 'qubit_mapping': 'parity'},\n", @@ -70,11 +70,11 @@ "import multiprocessing as mp\n", "import copy\n", "\n", - "def subrountine(i, aqua_chemistry_dict, d, backend, algorithm):\n", - " solver = AquaChemistry()\n", - " aqua_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", - " aqua_chemistry_dict['algorithm'] = algorithm\n", - " result = solver.run(aqua_chemistry_dict, backend=backend)\n", + "def subrountine(i, qiskit_chemistry_dict, d, backend, algorithm):\n", + " solver = QiskitChemistry()\n", + " qiskit_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", + " qiskit_chemistry_dict['algorithm'] = algorithm\n", + " result = solver.run(qiskit_chemistry_dict, backend=backend)\n", " return i, d, result['energy'], result['hf_energy']" ] }, @@ -119,7 +119,7 @@ " future = executor.submit(\n", " subrountine, \n", " i, \n", - " copy.deepcopy(aqua_chemistry_dict), \n", + " copy.deepcopy(qiskit_chemistry_dict), \n", " d, \n", " backend, \n", " algorithm\n", @@ -210,7 +210,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/h2_mappings.ipynb b/community/aqua/chemistry/h2_mappings.ipynb index 7ff10c7a7..f2ce9eb2c 100644 --- a/community/aqua/chemistry/h2_mappings.ipynb +++ b/community/aqua/chemistry/h2_mappings.ipynb @@ -8,9 +8,9 @@ "source": [ "## _*H2 ground state energy plot using different qubit mappings*_\n", "\n", - "This notebook demonstrates using Qiskit Aqua Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances with different fermionic mappings to quantum qubits.\n", + "This notebook demonstrates using Qiskit Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances with different fermionic mappings to quantum qubits.\n", "\n", - "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Aqua Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", + "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", "\n", "This notebook has been written to use the PYSCF chemistry driver. See the PYSCF chemistry driver readme if you need to install the external PySCF library that this driver requires." ] @@ -69,10 +69,10 @@ "source": [ "import numpy as np\n", "import pylab\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "\n", - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", - "aqua_chemistry_dict = {\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", + "qiskit_chemistry_dict = {\n", " 'problem': {'random_seed': 50},\n", " 'driver': {'name': 'PYSCF'},\n", " 'PYSCF': {'atom': '', 'basis': 'sto3g'},\n", @@ -96,13 +96,13 @@ "for i in range(steps+1):\n", " print('\\b\\b{:2d}'.format(i), end='', flush=True)\n", " d = start + i*by/steps\n", - " aqua_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", + " qiskit_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", " for j in range(len(algorithms)):\n", - " aqua_chemistry_dict['algorithm']['name'] = algorithms[j] \n", + " qiskit_chemistry_dict['algorithm']['name'] = algorithms[j] \n", " for k in range(len(mappings)):\n", - " aqua_chemistry_dict['operator']['qubit_mapping'] = mappings[k] \n", - " solver = AquaChemistry()\n", - " result = solver.run(aqua_chemistry_dict)\n", + " qiskit_chemistry_dict['operator']['qubit_mapping'] = mappings[k] \n", + " solver = QiskitChemistry()\n", + " result = solver.run(qiskit_chemistry_dict)\n", " energies[k][j][i] = result['energy']\n", " hf_energies[i] = result['hf_energy'] # Independent of algorithm & mapping\n", " distances[i] = d\n", @@ -256,7 +256,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/h2_particle_hole.ipynb b/community/aqua/chemistry/h2_particle_hole.ipynb index 7d49ce7ee..e7fa24fdd 100644 --- a/community/aqua/chemistry/h2_particle_hole.ipynb +++ b/community/aqua/chemistry/h2_particle_hole.ipynb @@ -6,9 +6,9 @@ "source": [ "## _*H2 energy plot comparing full to particle hole transformations*_\n", "\n", - "This notebook demonstrates using Qiskit Aqua Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances using VQE and UCCSD with full and particle hole transformations. It is compared to the same energies as computed by the ExactEigensolver\n", + "This notebook demonstrates using Qiskit Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances using VQE and UCCSD with full and particle hole transformations. It is compared to the same energies as computed by the ExactEigensolver\n", "\n", - "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Aqua Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", + "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", "\n", "This notebook has been written to use the PYQUANTE chemistry driver. See the PYQUANTE chemistry driver readme if you need to install the external PyQuante2 library that this driver requires." ] @@ -62,10 +62,10 @@ "source": [ "import numpy as np\n", "import pylab\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "\n", - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", - "aqua_chemistry_dict = {\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", + "qiskit_chemistry_dict = {\n", " 'problem': {'random_seed': 50},\n", " 'driver': {'name': 'PYQUANTE'},\n", " 'PYQUANTE': {'atoms': '', 'basis': 'sto3g'},\n", @@ -92,13 +92,13 @@ "for i in range(steps+1):\n", " print('\\b\\b{:2d}'.format(i), end='', flush=True)\n", " d = start + i*by/steps\n", - " aqua_chemistry_dict['PYQUANTE']['atoms'] = molecule.format(d/2) \n", + " qiskit_chemistry_dict['PYQUANTE']['atoms'] = molecule.format(d/2) \n", " for j in range(len(algorithms)):\n", - " aqua_chemistry_dict['algorithm']['name'] = algorithms[j] \n", + " qiskit_chemistry_dict['algorithm']['name'] = algorithms[j] \n", " for k in range(len(transformations)):\n", - " aqua_chemistry_dict['operator']['transformation'] = transformations[k] \n", - " solver = AquaChemistry()\n", - " result = solver.run(aqua_chemistry_dict)\n", + " qiskit_chemistry_dict['operator']['transformation'] = transformations[k] \n", + " solver = QiskitChemistry()\n", + " result = solver.run(qiskit_chemistry_dict)\n", " energies[k][j][i] = result['energy']\n", " hf_energies[i] = result['hf_energy']\n", " if algorithms[j] == 'VQE':\n", @@ -244,7 +244,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/h2_qpe.ipynb b/community/aqua/chemistry/h2_qpe.ipynb index d12617a95..8a11cca5c 100644 --- a/community/aqua/chemistry/h2_qpe.ipynb +++ b/community/aqua/chemistry/h2_qpe.ipynb @@ -6,7 +6,7 @@ "source": [ "## _*H2 ground state energy computation using Quantum Phase Estimation*_\n", "\n", - "This notebook demonstrates using Qiskit Aqua Chemistry to compute ground state energy of the Hydrogen (H2) molecule using QPE (Quantum Phase Estimation) algorithm. Let's first look at how to carry out such computation programmatically. Afterwards, we will illustrate how the computation can also be carried out using json configuration dictionaries.\n", + "This notebook demonstrates using Qiskit Chemistry to compute ground state energy of the Hydrogen (H2) molecule using QPE (Quantum Phase Estimation) algorithm. Let's first look at how to carry out such computation programmatically. Afterwards, we will illustrate how the computation can also be carried out using json configuration dictionaries.\n", "\n", "This notebook has been written to use the PYSCF chemistry driver. See the PYSCF chemistry driver readme if you need to install the external PySCF library that this driver requires." ] @@ -32,10 +32,10 @@ "from qiskit_aqua.algorithms import ExactEigensolver\n", "from qiskit_aqua.algorithms import QPE\n", "from qiskit_aqua.components.iqfts import Standard\n", - "from qiskit_aqua_chemistry import FermionicOperator\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", - "from qiskit_aqua_chemistry.drivers import ConfigurationManager\n", - "from qiskit_aqua_chemistry.aqua_extensions.components.initial_states import HartreeFock\n", + "from qiskit_chemistry import FermionicOperator\n", + "from qiskit_chemistry import QiskitChemistry\n", + "from qiskit_chemistry.drivers import ConfigurationManager\n", + "from qiskit_chemistry.aqua_extensions.components.initial_states import HartreeFock\n", "import time\n", "\n", "distance = 0.735\n", @@ -76,7 +76,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "The exact ground state energy is: -1.8572750302023788\n" + "The exact ground state energy is: -1.857275030202382\n" ] } ], @@ -103,7 +103,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "The ground state energy as computed by QPE is: -1.8571368753258866\n" + "The ground state energy as computed by QPE is: -1.8571368753258874\n" ] } ], @@ -134,7 +134,7 @@ "source": [ "As can be easily seen, the QPE computed energy is quite close to the groundtruth value we computed earlier.\n", "\n", - "Next we demonstrate how the same computation can be carried out using json dictionaries to drive the qiskit_aqua_chemistry stack. Such a dictionary can of course also be manipulated programmatically. An sibling notebook `h2_iqpe` is also provided, which showcases how the ground state energies over a range of inter-atomic distances can be computed and then plotted as well." + "Next we demonstrate how the same computation can be carried out using json dictionaries to drive the qiskit_chemistry stack. Such a dictionary can of course also be manipulated programmatically. An sibling notebook `h2_iqpe` is also provided, which showcases how the ground state energies over a range of inter-atomic distances can be computed and then plotted as well." ] }, { @@ -145,8 +145,8 @@ "source": [ "molecule = 'H .0 .0 0; H .0 .0 {}'.format(distance)\n", "\n", - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", - "aqua_chemistry_qpe_dict = {\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", + "qiskit_chemistry_qpe_dict = {\n", " 'driver': {'name': 'PYSCF'},\n", " 'PYSCF': {\n", " 'atom': molecule, \n", @@ -164,7 +164,7 @@ " 'backend': {'shots': 100}\n", "}\n", "\n", - "aqua_chemistry_ees_dict = {\n", + "qiskit_chemistry_ees_dict = {\n", " 'driver': {'name': 'PYSCF'},\n", " 'PYSCF': {'atom': molecule, 'basis': 'sto3g'},\n", " 'operator': {'name': 'hamiltonian', 'transformation': 'full', 'qubit_mapping': 'parity'},\n", @@ -190,15 +190,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "The groundtruth total ground state energy is -1.857275030202381.\n", + "The groundtruth total ground state energy is -1.8572750302023797.\n", "The total ground state energy as computed by QPE is -1.857136875325887.\n", "In comparison, the Hartree-Fock ground state energy is -1.8369679912029842.\n" ] } ], "source": [ - "result_qpe = AquaChemistry().run(aqua_chemistry_qpe_dict, backend=backend)\n", - "result_ees = AquaChemistry().run(aqua_chemistry_ees_dict)\n", + "result_qpe = QiskitChemistry().run(qiskit_chemistry_qpe_dict, backend=backend)\n", + "result_ees = QiskitChemistry().run(qiskit_chemistry_ees_dict)\n", "\n", "print('The groundtruth total ground state energy is {}.'.format(\n", " result_ees['energy'] - result_ees['nuclear_repulsion_energy']\n", @@ -214,9 +214,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Quantum py37", "language": "python", - "name": "python3" + "name": "quantum-dev-37" }, "language_info": { "codemirror_mode": { @@ -228,7 +228,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/h2_swaprz.ipynb b/community/aqua/chemistry/h2_swaprz.ipynb index c4558c961..e83b87076 100644 --- a/community/aqua/chemistry/h2_swaprz.ipynb +++ b/community/aqua/chemistry/h2_swaprz.ipynb @@ -6,9 +6,9 @@ "source": [ "## _*H2 energy plot computed using SWAPRZ variational form*_\n", "\n", - "This notebook demonstrates using Qiskit Aqua Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances using VQE and SWAPRZ. It is compared to the same energies as computed by the ExactEigensolver\n", + "This notebook demonstrates using Qiskit Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances using VQE and SWAPRZ. It is compared to the same energies as computed by the ExactEigensolver\n", "\n", - "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Aqua Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", + "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", "\n", "This notebook has been written to use the PYQUANTE chemistry driver. See the PYQUANTE chemistry driver readme if you need to install the external PyQuante2 library that this driver requires." ] @@ -47,10 +47,10 @@ "source": [ "import numpy as np\n", "import pylab\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "\n", - "# Input dictionary to configure qischem for the chemistry problem.\n", - "aqua_chemistry_dict = {\n", + "# Input dictionary to configure qiskit chemistry for the chemistry problem.\n", + "qiskit_chemistry_dict = {\n", " 'problem': {'random_seed': 50},\n", " 'driver': {'name': 'PYQUANTE'},\n", " 'PYQUANTE': {'atoms': '', 'basis': 'sto3g'},\n", @@ -76,11 +76,11 @@ "for i in range(steps+1):\n", " print('\\b\\b{:2d}'.format(i), end='', flush=True)\n", " d = start + i*by/steps\n", - " aqua_chemistry_dict['PYQUANTE']['atoms'] = molecule.format(d/2) \n", + " qiskit_chemistry_dict['PYQUANTE']['atoms'] = molecule.format(d/2) \n", " for j in range(len(algorithms)):\n", - " aqua_chemistry_dict['algorithm']['name'] = algorithms[j] \n", - " solver = AquaChemistry()\n", - " result = solver.run(aqua_chemistry_dict)\n", + " qiskit_chemistry_dict['algorithm']['name'] = algorithms[j] \n", + " solver = QiskitChemistry()\n", + " result = solver.run(qiskit_chemistry_dict)\n", " energies[j][i] = result['energy']\n", " hf_energies[i] = result['hf_energy']\n", " if algorithms[j] == 'VQE':\n", @@ -224,7 +224,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.0" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/h2_uccsd.ipynb b/community/aqua/chemistry/h2_uccsd.ipynb index 7741544c8..d4d5c47f7 100644 --- a/community/aqua/chemistry/h2_uccsd.ipynb +++ b/community/aqua/chemistry/h2_uccsd.ipynb @@ -6,9 +6,9 @@ "source": [ "## _*H2 dissociation curve using VQE with UCCSD*_\n", "\n", - "This notebook demonstrates using Qiskit Aqua Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances using VQE and UCCSD. It is compared to the same energies as computed by the ExactEigensolver\n", + "This notebook demonstrates using Qiskit Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances using VQE and UCCSD. It is compared to the same energies as computed by the ExactEigensolver\n", "\n", - "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Aqua Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", + "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", "\n", "This notebook has been written to use the PYQUANTE chemistry driver. See the PYQUANTE chemistry driver readme if you need to install the external PyQuante2 library that this driver requires." ] @@ -47,10 +47,10 @@ "source": [ "import numpy as np\n", "import pylab\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "\n", - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", - "aqua_chemistry_dict = {\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", + "qiskit_chemistry_dict = {\n", " 'driver': {'name': 'PYQUANTE'},\n", " 'PYQUANTE': {'atoms': '', 'basis': 'sto3g'},\n", " 'operator': {'name': 'hamiltonian', 'qubit_mapping': 'jordan_wigner',\n", @@ -75,11 +75,11 @@ "for i in range(steps+1):\n", " print('\\b\\b{:2d}'.format(i), end='', flush=True)\n", " d = start + i*by/steps\n", - " aqua_chemistry_dict['PYQUANTE']['atoms'] = molecule.format(d/2) \n", + " qiskit_chemistry_dict['PYQUANTE']['atoms'] = molecule.format(d/2) \n", " for j in range(len(algorithms)):\n", - " aqua_chemistry_dict['algorithm']['name'] = algorithms[j] \n", - " solver = AquaChemistry()\n", - " result = solver.run(aqua_chemistry_dict)\n", + " qiskit_chemistry_dict['algorithm']['name'] = algorithms[j] \n", + " solver = QiskitChemistry()\n", + " result = solver.run(qiskit_chemistry_dict)\n", " energies[j][i] = result['energy']\n", " hf_energies[i] = result['hf_energy']\n", " if algorithms[j] == 'VQE':\n", @@ -222,7 +222,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/h2_var_forms.ipynb b/community/aqua/chemistry/h2_var_forms.ipynb index 369217ab2..845277bc7 100644 --- a/community/aqua/chemistry/h2_var_forms.ipynb +++ b/community/aqua/chemistry/h2_var_forms.ipynb @@ -6,9 +6,9 @@ "source": [ "## _*H2 energy with various RY and RYRZ variational forms*_\n", "\n", - "This notebook demonstrates using Qiskit Aqua Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule using VQE with different variation form configurations. The results are compared to the same energy as computed by the ExactEigensolver\n", + "This notebook demonstrates using Qiskit Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule using VQE with different variation form configurations. The results are compared to the same energy as computed by the ExactEigensolver\n", "\n", - "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Aqua Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here. \n", + "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here. \n", "\n", "This notebook has been written to use the PYSCF chemistry driver. See the PYSCF chemistry driver readme if you need to install the external PySCF library that this driver requires." ] @@ -30,10 +30,10 @@ "source": [ "import numpy as np\n", "import pylab\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "\n", - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", - "aqua_chemistry_dict = {\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", + "qiskit_chemistry_dict = {\n", " 'problem': {'random_seed': 50},\n", " 'driver': {'name': 'PYSCF'},\n", " 'PYSCF': {'atom': 'H .0 .0 -0.3625; H .0 .0 0.3625', 'basis': 'sto3g'},\n", @@ -53,8 +53,8 @@ "energy = None\n", "eval_counts = np.empty([len(var_forms), len(entanglements), len(depths)])\n", "\n", - "solver = AquaChemistry()\n", - "result = solver.run(aqua_chemistry_dict)\n", + "solver = QiskitChemistry()\n", + "result = solver.run(qiskit_chemistry_dict)\n", "hf_energy = result['hf_energy']\n", "energy = result['energy']\n", "print('Hartree-Fock energy:', hf_energy)\n", @@ -99,17 +99,17 @@ } ], "source": [ - "aqua_chemistry_dict['algorithm']['name'] = 'VQE' \n", + "qiskit_chemistry_dict['algorithm']['name'] = 'VQE' \n", "print('Processing step __', end='')\n", "for i, d in enumerate(depths):\n", " print('\\b\\b{:2d}'.format(i), end='', flush=True)\n", - " aqua_chemistry_dict['variational_form']['depth'] = d\n", + " qiskit_chemistry_dict['variational_form']['depth'] = d\n", " for j in range(len(entanglements)):\n", - " aqua_chemistry_dict['variational_form']['entanglement'] = entanglements[j] \n", + " qiskit_chemistry_dict['variational_form']['entanglement'] = entanglements[j] \n", " for k in range(len(var_forms)):\n", - " aqua_chemistry_dict['variational_form']['name'] = var_forms[k] \n", - " solver = AquaChemistry()\n", - " result = solver.run(aqua_chemistry_dict)\n", + " qiskit_chemistry_dict['variational_form']['name'] = var_forms[k] \n", + " solver = QiskitChemistry()\n", + " result = solver.run(qiskit_chemistry_dict)\n", " energies[k][j][i] = result['energy']\n", " eval_counts[k][j][i] = result['algorithm_retvals']['eval_count']\n", "print(' --- complete')\n", @@ -216,7 +216,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/h2_vqe_initial_point.ipynb b/community/aqua/chemistry/h2_vqe_initial_point.ipynb index 1ef8f667d..ef3d7c1a1 100644 --- a/community/aqua/chemistry/h2_vqe_initial_point.ipynb +++ b/community/aqua/chemistry/h2_vqe_initial_point.ipynb @@ -6,9 +6,9 @@ "source": [ "## _*Initializing next computation from prior result*_\n", "\n", - "This notebook demonstrates using Qiskit Aqua Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances using VQE and RYRZ. It is compared to the same energies as computed by the ExactEigensolver and we also compare using the previous computed optimal solution as the starting initial point for the next distance.\n", + "This notebook demonstrates using Qiskit Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances using VQE and RYRZ. It is compared to the same energies as computed by the ExactEigensolver and we also compare using the previous computed optimal solution as the starting initial point for the next distance.\n", "\n", - "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Aqua Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", + "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", "\n", "This notebook has been written to use the PYQUANTE chemistry driver. See the PYQUANTE chemistry driver readme if you need to install the external PyQuante2 library that this driver requires." ] @@ -55,10 +55,10 @@ "source": [ "import numpy as np\n", "import pylab\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "\n", - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", - "aqua_chemistry_dict = {\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", + "qiskit_chemistry_dict = {\n", " 'problem': {'random_seed': 50},\n", " 'driver': {'name': 'PYQUANTE'},\n", " 'PYQUANTE': {'atoms': '', 'basis': 'sto3g'},\n", @@ -86,11 +86,11 @@ "for i in range(steps+1):\n", " print('\\b\\b{:2d}'.format(i), end='', flush=True)\n", " d = start + i*by/steps\n", - " aqua_chemistry_dict['PYQUANTE']['atoms'] = molecule.format(d/2) \n", + " qiskit_chemistry_dict['PYQUANTE']['atoms'] = molecule.format(d/2) \n", " for j in range(len(algorithms)):\n", - " aqua_chemistry_dict['algorithm'] = algorithms[j] \n", - " solver = AquaChemistry()\n", - " result = solver.run(aqua_chemistry_dict)\n", + " qiskit_chemistry_dict['algorithm'] = algorithms[j] \n", + " solver = QiskitChemistry()\n", + " result = solver.run(qiskit_chemistry_dict)\n", " energies[j][i] = result['energy']\n", " hf_energies[i] = result['hf_energy']\n", " if algorithms[j]['name'] == 'VQE':\n", @@ -237,7 +237,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/h2_vqe_spsa.ipynb b/community/aqua/chemistry/h2_vqe_spsa.ipynb index 8b4d0b290..699abd2d4 100644 --- a/community/aqua/chemistry/h2_vqe_spsa.ipynb +++ b/community/aqua/chemistry/h2_vqe_spsa.ipynb @@ -6,9 +6,9 @@ "source": [ "## _*H2 ground state energy with VQE and SPSA*_\n", "\n", - "This notebook demonstrates using Qiskit Aqua Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances using VQE with SPSA optimizer. It is compared to the same energies as computed by the ExactEigensolver. SPSA is designed to work well with probabalistic/noisy measurements. And with RYRZ variational form makes this a suitable configuration to run on a near term device.\n", + "This notebook demonstrates using Qiskit Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances using VQE with SPSA optimizer. It is compared to the same energies as computed by the ExactEigensolver. SPSA is designed to work well with probabalistic/noisy measurements. And with RYRZ variational form makes this a suitable configuration to run on a near term device.\n", "\n", - "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the qiskit_aqua_chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", + "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the qiskit_chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", "\n", "This notebook has been written to use the PYSCF chemistry driver. See the PYSCF chemistry driver readme if you need to install the external PySCF library that this driver requires." ] @@ -43,10 +43,10 @@ "source": [ "import numpy as np\n", "import pylab\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "\n", - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", - "aqua_chemistry_dict = {\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", + "qiskit_chemistry_dict = {\n", " 'driver': {'name': 'PYSCF'},\n", " 'PYSCF': {'atom': '', 'basis': 'sto3g'},\n", " 'operator': {'name': 'hamiltonian', 'transformation': 'full', \n", @@ -72,15 +72,15 @@ "for i in range(steps+1):\n", " print('\\b\\b{:2d}'.format(i), end='', flush=True)\n", " d = start + i*by/steps\n", - " aqua_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", + " qiskit_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", " for j in range(len(algorithms)):\n", - " aqua_chemistry_dict['algorithm']['name'] = algorithms[j]\n", + " qiskit_chemistry_dict['algorithm']['name'] = algorithms[j]\n", " if backends[j] is not None:\n", - " aqua_chemistry_dict['backend'] = backends[j]\n", + " qiskit_chemistry_dict['backend'] = backends[j]\n", " else:\n", - " aqua_chemistry_dict.pop('backend')\n", - " solver = AquaChemistry()\n", - " result = solver.run(aqua_chemistry_dict)\n", + " qiskit_chemistry_dict.pop('backend')\n", + " solver = QiskitChemistry()\n", + " result = solver.run(qiskit_chemistry_dict)\n", " energies[j][i] = result['energy']\n", " hf_energies[i] = result['hf_energy']\n", " distances[i] = d\n", diff --git a/community/aqua/chemistry/h2o.ipynb b/community/aqua/chemistry/h2o.ipynb index a52aeffd1..07efda166 100644 --- a/community/aqua/chemistry/h2o.ipynb +++ b/community/aqua/chemistry/h2o.ipynb @@ -4,9 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## _*Qiskit Aqua Chemistry, H2O ground state computation*_\n", + "## _*Qiskit Chemistry, H2O ground state computation*_\n", "\n", - "This notebook demonstrates how to use Qiskit Aqua Chemistry to compute the ground state energy of a water (H2O) molecule using VQE and UCCSD.\n", + "This notebook demonstrates how to use Qiskit Chemistry to compute the ground state energy of a water (H2O) molecule using VQE and UCCSD.\n", "\n", "This notebook has been written to use the PYSCF chemistry driver. See the PYSCF chemistry driver readme if you need to install the external PySCF library that this driver requires." ] @@ -17,10 +17,10 @@ "metadata": {}, "outputs": [], "source": [ - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "\n", - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", - "aqua_chemistry_dict = {\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", + "qiskit_chemistry_dict = {\n", " 'problem': {'random_seed': 50},\n", " 'driver': {'name': 'PYSCF'},\n", " 'PYSCF': {'atom': 'O 0.0 0.0 0.0; H 0.757 0.586 0.0; H -0.757 0.586 0.0', 'basis': 'sto-3g'},\n", @@ -33,7 +33,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "With the above input problem dictionary for water we now create an `AquaChemistry` object and call `run` on it passing in the dictionary to get a result. We use ExactEigensolver first as a reference." + "With the above input problem dictionary for water we now create an `QiskitChemistry` object and call `run` on it passing in the dictionary to get a result. We use ExactEigensolver first as a reference." ] }, { @@ -42,8 +42,8 @@ "metadata": {}, "outputs": [], "source": [ - "solver = AquaChemistry()\n", - "result = solver.run(aqua_chemistry_dict)" + "solver = QiskitChemistry()\n", + "result = solver.run(qiskit_chemistry_dict)" ] }, { @@ -141,13 +141,13 @@ } ], "source": [ - "aqua_chemistry_dict['algorithm']['name'] = 'VQE'\n", - "aqua_chemistry_dict['optimizer'] = {'name': 'COBYLA', 'maxiter': 25000}\n", - "aqua_chemistry_dict['variational_form'] = {'name': 'UCCSD'}\n", - "aqua_chemistry_dict['initial_state'] = {'name': 'HartreeFock'}\n", + "qiskit_chemistry_dict['algorithm']['name'] = 'VQE'\n", + "qiskit_chemistry_dict['optimizer'] = {'name': 'COBYLA', 'maxiter': 25000}\n", + "qiskit_chemistry_dict['variational_form'] = {'name': 'UCCSD'}\n", + "qiskit_chemistry_dict['initial_state'] = {'name': 'HartreeFock'}\n", "\n", - "solver = AquaChemistry()\n", - "result = solver.run(aqua_chemistry_dict)\n", + "solver = QiskitChemistry()\n", + "result = solver.run(qiskit_chemistry_dict)\n", "\n", "print('Ground state energy: {}'.format(result['energy']))\n", "\n", @@ -196,7 +196,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/input_files/gaussian_h2_0.735_sto-3g.txt b/community/aqua/chemistry/input_files/gaussian_h2_0.735_sto-3g.txt index d639e9333..81d5e84d2 100644 --- a/community/aqua/chemistry/input_files/gaussian_h2_0.735_sto-3g.txt +++ b/community/aqua/chemistry/input_files/gaussian_h2_0.735_sto-3g.txt @@ -38,5 +38,6 @@ H 0.0 0.0 0.3675 &end &backend + provider=qiskit.BasicAer name=statevector_simulator &end diff --git a/community/aqua/chemistry/input_files/gaussian_lih_1.6_sto-3g.txt b/community/aqua/chemistry/input_files/gaussian_lih_1.6_sto-3g.txt index 54d8b2409..cb2eb7211 100644 --- a/community/aqua/chemistry/input_files/gaussian_lih_1.6_sto-3g.txt +++ b/community/aqua/chemistry/input_files/gaussian_lih_1.6_sto-3g.txt @@ -44,5 +44,6 @@ H 0.0 0.0 0.8 &end &backend + provider=qiskit.BasicAer name=statevector_simulator &end diff --git a/community/aqua/chemistry/input_files/h2_on_device.txt b/community/aqua/chemistry/input_files/h2_on_device.txt index f9b5f8766..512898bd9 100644 --- a/community/aqua/chemistry/input_files/h2_on_device.txt +++ b/community/aqua/chemistry/input_files/h2_on_device.txt @@ -41,6 +41,7 @@ Hamiltonian, i.e. the ground state energy. &end &backend + provider=qiskit.BasicAer name=qasm_simulator shots=1024 &end diff --git a/community/aqua/chemistry/input_files/hdf5_h2_0.735_sto-3g.txt b/community/aqua/chemistry/input_files/hdf5_h2_0.735_sto-3g.txt index 0dc6571fe..c2b6a594d 100644 --- a/community/aqua/chemistry/input_files/hdf5_h2_0.735_sto-3g.txt +++ b/community/aqua/chemistry/input_files/hdf5_h2_0.735_sto-3g.txt @@ -30,5 +30,6 @@ HDF5 H2 experiment &end &backend + provider=qiskit.BasicAer name=statevector_simulator &end diff --git a/community/aqua/chemistry/input_files/hdf5_lih_1.6_sto-3g.txt b/community/aqua/chemistry/input_files/hdf5_lih_1.6_sto-3g.txt index 76214ecd9..99882238e 100644 --- a/community/aqua/chemistry/input_files/hdf5_lih_1.6_sto-3g.txt +++ b/community/aqua/chemistry/input_files/hdf5_lih_1.6_sto-3g.txt @@ -36,5 +36,6 @@ HDF5 LiH experiment &end &backend + provider=qiskit.BasicAer name=statevector_simulator &end diff --git a/community/aqua/chemistry/input_files/input_file_sample.txt b/community/aqua/chemistry/input_files/input_file_sample.txt index 862dda5d5..7f248282f 100644 --- a/community/aqua/chemistry/input_files/input_file_sample.txt +++ b/community/aqua/chemistry/input_files/input_file_sample.txt @@ -1,4 +1,4 @@ -# Sample input file for Qiskit Aqua Chemistry stack. +# Sample input file for Qiskit Chemistry stack. # # This is a simple sample to show representative sections but not # all fields are shown. Consult the documentation for further @@ -38,7 +38,7 @@ driver installation requirements this will use the HDF5 file driver. # -- Molecule and config in driver specific format # Drivers need an external chemistry program or library to be installed. -# Qiskit Aqua Chemistry provides the interfacing logic but the actual +# Qiskit Chemistry provides the interfacing logic but the actual # program or library it interfaces with needs to be separately installed. # The configuration needed in this section depends on the specific driver. # Please see the particular driver documentation for more information. @@ -94,11 +94,7 @@ driver installation requirements this will use the HDF5 file driver. # device or simulator that wll be used. The BACKEND will default to a QISkit # local simulator without this section. # -# To use non-local device the user also needs to have edited the qiskit -# Qconfig.py.default file from the Qiskit root and placed there Qconfig.py -# with the right values, such as API_Token. See the Qiskit installation -# documentation for more information -# &backend + provider=qiskit.BasicAer name=statevector_simulator &end diff --git a/community/aqua/chemistry/input_files/iqpe_h2.txt b/community/aqua/chemistry/input_files/iqpe_h2.txt index 9b1008218..9fe87ca4d 100644 --- a/community/aqua/chemistry/input_files/iqpe_h2.txt +++ b/community/aqua/chemistry/input_files/iqpe_h2.txt @@ -49,6 +49,7 @@ &end &backend + provider=qiskit.BasicAer name=qasm_simulator shots=100 skip_transpiler=False diff --git a/community/aqua/chemistry/input_files/psi4_h2_0.735_sto-3g.txt b/community/aqua/chemistry/input_files/psi4_h2_0.735_sto-3g.txt index 1d0f6a7b1..6869a2c36 100644 --- a/community/aqua/chemistry/input_files/psi4_h2_0.735_sto-3g.txt +++ b/community/aqua/chemistry/input_files/psi4_h2_0.735_sto-3g.txt @@ -39,5 +39,6 @@ set { &end &backend + provider=qiskit.BasicAer name=statevector_simulator &end diff --git a/community/aqua/chemistry/input_files/psi4_lih_1.6_sto-3g.txt b/community/aqua/chemistry/input_files/psi4_lih_1.6_sto-3g.txt index 80e3759dc..6253a52d5 100644 --- a/community/aqua/chemistry/input_files/psi4_lih_1.6_sto-3g.txt +++ b/community/aqua/chemistry/input_files/psi4_lih_1.6_sto-3g.txt @@ -45,5 +45,6 @@ set { &end &backend + provider=qiskit.BasicAer name=statevector_simulator &end diff --git a/community/aqua/chemistry/input_files/psi4_save_hdf5.txt b/community/aqua/chemistry/input_files/psi4_save_hdf5.txt index a9fc610e4..925a1f9a3 100644 --- a/community/aqua/chemistry/input_files/psi4_save_hdf5.txt +++ b/community/aqua/chemistry/input_files/psi4_save_hdf5.txt @@ -1,4 +1,4 @@ -# Sample input file for Qiskit Aqua Chemistry stack +# Sample input file for Qiskit Chemistry stack # To show how to save an hdf5 file # &name diff --git a/community/aqua/chemistry/input_files/pyquante_h2_0.735_sto-3g.txt b/community/aqua/chemistry/input_files/pyquante_h2_0.735_sto-3g.txt index 813a11099..f3434bef4 100644 --- a/community/aqua/chemistry/input_files/pyquante_h2_0.735_sto-3g.txt +++ b/community/aqua/chemistry/input_files/pyquante_h2_0.735_sto-3g.txt @@ -34,5 +34,6 @@ PyQuante H2 experiment &end &backend + provider=qiskit.BasicAer name=statevector_simulator &end diff --git a/community/aqua/chemistry/input_files/pyquante_lih_1.6_sto-3g.txt b/community/aqua/chemistry/input_files/pyquante_lih_1.6_sto-3g.txt index e3f777adc..0dba669cf 100644 --- a/community/aqua/chemistry/input_files/pyquante_lih_1.6_sto-3g.txt +++ b/community/aqua/chemistry/input_files/pyquante_lih_1.6_sto-3g.txt @@ -40,5 +40,6 @@ PyQuante LiH experiment &end &backend + provider=qiskit.BasicAer name=statevector_simulator &end diff --git a/community/aqua/chemistry/input_files/pyscf_h2_0.735_sto-3g.txt b/community/aqua/chemistry/input_files/pyscf_h2_0.735_sto-3g.txt index f048e0a27..d7ea2b2c2 100644 --- a/community/aqua/chemistry/input_files/pyscf_h2_0.735_sto-3g.txt +++ b/community/aqua/chemistry/input_files/pyscf_h2_0.735_sto-3g.txt @@ -34,5 +34,6 @@ PySCF H2 experiment &end &backend + provider=qiskit.BasicAer name=statevector_simulator &end diff --git a/community/aqua/chemistry/input_files/pyscf_lih_1.6_sto-3g.txt b/community/aqua/chemistry/input_files/pyscf_lih_1.6_sto-3g.txt index a525728f3..dca5b057b 100644 --- a/community/aqua/chemistry/input_files/pyscf_lih_1.6_sto-3g.txt +++ b/community/aqua/chemistry/input_files/pyscf_lih_1.6_sto-3g.txt @@ -40,5 +40,6 @@ PySCF LiH experiment &end &backend + provider=qiskit.BasicAer name=statevector_simulator &end diff --git a/community/aqua/chemistry/input_files/pyscf_minimal.txt b/community/aqua/chemistry/input_files/pyscf_minimal.txt index d6270e5e6..9b9cdffdc 100644 --- a/community/aqua/chemistry/input_files/pyscf_minimal.txt +++ b/community/aqua/chemistry/input_files/pyscf_minimal.txt @@ -1,4 +1,4 @@ -# Sample input file for Qiskit Aqua Chemistry stack +# Sample input file for Qiskit Chemistry stack # This demonstrates the bare minimum configuration. This is to specify a driver # along with the required driver specific configuration # All other sections are optional and being omitted fallback to their default diff --git a/community/aqua/chemistry/input_files/qpe_h2.txt b/community/aqua/chemistry/input_files/qpe_h2.txt index fd091e196..1b032fc96 100644 --- a/community/aqua/chemistry/input_files/qpe_h2.txt +++ b/community/aqua/chemistry/input_files/qpe_h2.txt @@ -53,6 +53,7 @@ &end &backend + provider=qiskit.BasicAer name=qasm_simulator shots=100 skip_transpiler=False diff --git a/community/aqua/chemistry/lih_dissoc.ipynb b/community/aqua/chemistry/lih_dissoc.ipynb index 5ae0afb46..8450bb21a 100644 --- a/community/aqua/chemistry/lih_dissoc.ipynb +++ b/community/aqua/chemistry/lih_dissoc.ipynb @@ -8,9 +8,9 @@ "source": [ "## _*LiH dissociation curve using ExactEigensolver*_\n", "\n", - "This notebook demonstrates using Qiskit Aqua Chemistry to plot graphs of the ground state energy and dipole moments of a Lithium Hydride (LiH) molecule over a range of inter-atomic distances.\n", + "This notebook demonstrates using Qiskit Chemistry to plot graphs of the ground state energy and dipole moments of a Lithium Hydride (LiH) molecule over a range of inter-atomic distances.\n", "\n", - "This notebook populates a dictionary, which is a progammatic representation of an input file, in order to drive the qiskit_aqua_chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", + "This notebook populates a dictionary, which is a progammatic representation of an input file, in order to drive the qiskit_chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", " \n", "This notebook has been written to use the PYSCF chemistry driver. See the PYSCF chemistry driver readme if you need to install the external PySCF library that this driver requires.\n", " " @@ -24,7 +24,7 @@ "source": [ "import numpy as np\n", "import pylab\n", - "from qiskit_aqua_chemistry import AquaChemistry" + "from qiskit_chemistry import QiskitChemistry" ] }, { @@ -33,22 +33,22 @@ "metadata": {}, "outputs": [], "source": [ - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", "# Note: In order to allow this to run reasonably quickly it takes advantage\n", "# of the ability to freeze core orbitals and remove unoccupied virtual\n", "# orbitals to reduce the size of the problem. The result without this\n", "# will be more accurate but it takes rather longer to run.\n", "\n", - "# aqua_chemistry_dict_eigen uses classical approach to produce the reference ground state energy.\n", - "aqua_chemistry_dict_eigen = {\n", + "# qiskit_chemistry_dict_eigen uses classical approach to produce the reference ground state energy.\n", + "qiskit_chemistry_dict_eigen = {\n", " 'driver': {'name': 'PYSCF'},\n", " 'PYSCF': {'atom': '', 'basis': 'sto3g'},\n", " 'algorithm': {'name': 'ExactEigensolver'},\n", " 'operator': {'name':'hamiltonian','freeze_core': True, 'orbital_reduction': [-3, -2], 'qubit_mapping': 'parity', 'two_qubit_reduction': True},\n", "}\n", "\n", - "# aqua_chemistry_dict_vqe uses quantum approach to evaluate the ground state energy.\n", - "aqua_chemistry_dict_vqe = {\n", + "# qiskit_chemistry_dict_vqe uses quantum approach to evaluate the ground state energy.\n", + "qiskit_chemistry_dict_vqe = {\n", " 'driver': {'name': 'PYSCF'},\n", " 'PYSCF': {'atom': '', 'basis': 'sto3g'},\n", " 'algorithm': {'name': 'VQE', 'operator_mode': 'matrix'},\n", @@ -69,7 +69,7 @@ "outputs": [], "source": [ "# choose one of configurations above for experiments\n", - "aqua_chemistry_dict = aqua_chemistry_dict_eigen" + "qiskit_chemistry_dict = qiskit_chemistry_dict_eigen" ] }, { @@ -112,9 +112,9 @@ "print('Processing step __', end='')\n", "for i, d in enumerate(pts):\n", " print('\\b\\b{:2d}'.format(i), end='', flush=True)\n", - " aqua_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", - " solver = AquaChemistry()\n", - " result = solver.run(aqua_chemistry_dict)\n", + " qiskit_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", + " solver = QiskitChemistry()\n", + " result = solver.run(qiskit_chemistry_dict)\n", " distances[i] = d\n", " hf_energies[i] = result['hf_energy']\n", " energies[i] = result['energy']\n", @@ -221,7 +221,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/lih_uccsd.ipynb b/community/aqua/chemistry/lih_uccsd.ipynb index 716c4c0bd..dd4087ad8 100644 --- a/community/aqua/chemistry/lih_uccsd.ipynb +++ b/community/aqua/chemistry/lih_uccsd.ipynb @@ -6,9 +6,9 @@ "source": [ "## _*LiH dissociation curve using VQE with UCCSD variational form*_\n", "\n", - "This notebook demonstrates using Qiskit Aqua Chemistry to plot graphs of the ground state energy of the Lithium Hydride (LiH) molecule over a range of inter-atomic distances using VQE and UCCSD. It is compared to the same energies as computed by the ExactEigensolver\n", + "This notebook demonstrates using Qiskit Chemistry to plot graphs of the ground state energy of the Lithium Hydride (LiH) molecule over a range of inter-atomic distances using VQE and UCCSD. It is compared to the same energies as computed by the ExactEigensolver\n", "\n", - "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Aqua Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", + "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", "\n", "This notebook has been written to use the PYSCF chemistry driver. See the PYSCF chemistry driver readme if you need to install the external PySCF library that this driver requires." ] @@ -47,10 +47,10 @@ "source": [ "import numpy as np\n", "import pylab\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "\n", - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", - "aqua_chemistry_dict = {\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", + "qiskit_chemistry_dict = {\n", " 'driver': {'name': 'PYSCF'},\n", " 'PYSCF': {'atom': '', 'basis': 'sto3g'},\n", " 'operator': {'name': 'hamiltonian', 'qubit_mapping': 'parity',\n", @@ -75,11 +75,11 @@ "print('Processing step __', end='')\n", "for i, d in enumerate(pts):\n", " print('\\b\\b{:2d}'.format(i), end='', flush=True)\n", - " aqua_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", + " qiskit_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", " for j in range(len(algorithms)):\n", - " aqua_chemistry_dict['algorithm']['name'] = algorithms[j] \n", - " solver = AquaChemistry()\n", - " result = solver.run(aqua_chemistry_dict)\n", + " qiskit_chemistry_dict['algorithm']['name'] = algorithms[j] \n", + " solver = QiskitChemistry()\n", + " result = solver.run(qiskit_chemistry_dict)\n", " energies[j][i] = result['energy']\n", " hf_energies[i] = result['hf_energy']\n", " dipoles[j][i] = result['total_dipole_moment'] / 0.393430307\n", @@ -97,7 +97,9 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [ { "data": { @@ -258,7 +260,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/chemistry/nah_uccsd.ipynb b/community/aqua/chemistry/nah_uccsd.ipynb index 5517d41a8..b4b2bbbaf 100644 --- a/community/aqua/chemistry/nah_uccsd.ipynb +++ b/community/aqua/chemistry/nah_uccsd.ipynb @@ -6,9 +6,9 @@ "source": [ "## _*NaH dissociation curve using VQE with UCCSD*_\n", "\n", - "This notebook demonstrates using the Qiskit Aqua Chemistry to plot graphs of the ground state energy of the Sodium Hydride (NaH) molecule over a range of inter-atomic distances using VQE and UCCSD. It is compared to the same energies as computed by the ExactEigensolver\n", + "This notebook demonstrates using the Qiskit Chemistry to plot graphs of the ground state energy of the Sodium Hydride (NaH) molecule over a range of inter-atomic distances using VQE and UCCSD. It is compared to the same energies as computed by the ExactEigensolver\n", "\n", - "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Aqua Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", + "This notebook populates a dictionary, that is a progammatic representation of an input file, in order to drive the Qiskit Chemistry stack. Such a dictionary can be manipulated programmatically and this is indeed the case here where we alter the molecule supplied to the driver in each loop.\n", "\n", "This notebook has been written to use the PYSCF chemistry driver. See the PYSCF chemistry driver readme if you need to install the external PySCF library that this driver requires." ] @@ -59,10 +59,10 @@ "source": [ "import numpy as np\n", "import pylab\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "\n", - "# Input dictionary to configure Qiskit Aqua Chemistry for the chemistry problem.\n", - "aqua_chemistry_dict = {\n", + "# Input dictionary to configure Qiskit Chemistry for the chemistry problem.\n", + "qiskit_chemistry_dict = {\n", " 'driver': {'name': 'PYSCF'},\n", " 'PYSCF': {'atom': '', 'basis': 'sto3g'},\n", " 'operator': {'name': 'hamiltonian', 'qubit_mapping': 'parity',\n", @@ -87,11 +87,11 @@ "print('Processing step __', end='')\n", "for i, d in enumerate(pts):\n", " print('\\b\\b{:2d}'.format(i), end='', flush=True)\n", - " aqua_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", + " qiskit_chemistry_dict['PYSCF']['atom'] = molecule.format(d/2) \n", " for j in range(len(algorithms)):\n", - " aqua_chemistry_dict['algorithm']['name'] = algorithms[j] \n", - " solver = AquaChemistry()\n", - " result = solver.run(aqua_chemistry_dict)\n", + " qiskit_chemistry_dict['algorithm']['name'] = algorithms[j] \n", + " solver = QiskitChemistry()\n", + " result = solver.run(qiskit_chemistry_dict)\n", " energies[j][i] = result['energy']\n", " hf_energies[i] = result['hf_energy']\n", " dipoles[j][i] = result['total_dipole_moment'] / 0.393430307\n", @@ -271,7 +271,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/finance/input_files/portfolio.json b/community/aqua/finance/input_files/portfolio.json index 515c8fdd6..9b7e20629 100644 --- a/community/aqua/finance/input_files/portfolio.json +++ b/community/aqua/finance/input_files/portfolio.json @@ -17,12 +17,13 @@ "entanglement": "full" }, "backend": { + "provider": "qiskit.BasicAer", "name": "statevector_simulator" }, "input": { "aux_ops": [], "name": "EnergyInput", - "qubitop": { + "qubit_op": { "paulis": [ { "coeff": { diff --git a/community/aqua/general/input_files/H2-0.735.json b/community/aqua/general/input_files/H2-0.735.json index f2cf02599..f93007ca8 100644 --- a/community/aqua/general/input_files/H2-0.735.json +++ b/community/aqua/general/input_files/H2-0.735.json @@ -5,6 +5,7 @@ "operator_mode": "matrix" }, "backend": { + "provider": "qiskit.BasicAer", "name": "statevector_simulator", "shots": 1, "skip_transpiler": false @@ -33,7 +34,7 @@ "input": { "aux_ops": [], "name": "EnergyInput", - "qubitop": { + "qubit_op": { "paulis": [ { "coeff": { diff --git a/community/aqua/general/input_files/eoh.json b/community/aqua/general/input_files/eoh.json index 217ce0daf..d76d4c3ee 100644 --- a/community/aqua/general/input_files/eoh.json +++ b/community/aqua/general/input_files/eoh.json @@ -9,6 +9,7 @@ "paulis_grouping": "default" }, "backend": { + "provider": "qiskit.BasicAer", "name": "statevector_simulator", "shots": 1024, "skip_transpiler": false @@ -96,7 +97,7 @@ } ], "name": "EnergyInput", - "qubitop": { + "qubit_op": { "paulis": [ { "coeff": { diff --git a/community/aqua/general/input_files/vqe.json b/community/aqua/general/input_files/vqe.json index ff967f6f7..c9e792e9e 100644 --- a/community/aqua/general/input_files/vqe.json +++ b/community/aqua/general/input_files/vqe.json @@ -5,6 +5,7 @@ "operator_mode": "matrix" }, "backend": { + "provider": "qiskit.BasicAer", "name": "statevector_simulator", "shots": 1024, "skip_transpiler": false @@ -15,7 +16,7 @@ "input": { "aux_ops": [], "name": "EnergyInput", - "qubitop": { + "qubit_op": { "paulis": [ { "coeff": { diff --git a/community/aqua/index.ipynb b/community/aqua/index.ipynb index 6d399c44b..4f74d1ecd 100644 --- a/community/aqua/index.ipynb +++ b/community/aqua/index.ipynb @@ -35,13 +35,13 @@ "The repository here may be viewed for the\n", "[full listing](https://github.com/Qiskit/qiskit-tutorial/tree/master/community/aqua/general).\n", "\n", - "### 2. [Qiskit Aqua Chemistry](chemistry/)\n", + "### 2. [Qiskit Chemistry](chemistry/)\n", "\n", - "This folder contains some Jupyter Notebook examples showing how to run algorithms in Aqua Chemistry along with some Python code files too. There are also some .hdf5 files containing saved molecular data that can be used in experiments, see the main Aqua Chemistry documentation for more information on the HDF5 driver and .hdf5 files. \n", + "This folder contains some Jupyter Notebook examples showing how to run algorithms in Qiskit Chemistry along with some Python code files too. There are also some .hdf5 files containing saved molecular data that can be used in experiments, see the main Qiskit Chemistry documentation for more information on the HDF5 driver and .hdf5 files. \n", "\n", - "The folder [input_files](chemistry/input_files) contains a number of example input files that can be loaded and run by the Aqua Chemistry\n", - "[GUI](https://github.com/Qiskit/aqua-chemistry/blob/master/README.md#gui) or \n", - "[command line](https://github.com/Qiskit/aqua-chemistry/blob/master/README.md#command-line) tool.\n", + "The folder [input_files](chemistry/input_files) contains a number of example input files that can be loaded and run by the Qiskit Chemistry\n", + "[GUI](https://github.com/Qiskit/qiskit-chemistry/blob/master/README.md#gui) or \n", + "[command line](https://github.com/Qiskit/qiskit-chemistry/blob/master/README.md#command-line) tool.\n", "\n", "The following notebooks are noted:\n", "\n", @@ -49,7 +49,7 @@ "* [H2 dissociation curve using VQE with UCCSD](chemistry/h2_uccsd.ipynb)\n", "* [LiH dissociation curve using VQE with UCCSD](chemistry/lih_uccsd.ipynb)\n", "* [NaH dissociation curve using VQE with UCCSD](chemistry/nah_uccsd.ipynb)\n", - "* [Aqua Chemistry, H2O ground state computation](chemistry/h2o.ipynb) Water using VQE and UCCSD\n", + "* [Qiskit Chemistry, H2O ground state computation](chemistry/h2o.ipynb) Water using VQE and UCCSD\n", "* [H2 ground state energy computation using Iterative QPE](chemistry/h2_iqpe.ipynb)\n", "* [H2 ground state energy with VQE and SPSA](chemistry/h2_vqe_spsa.ipynb) Near-term device experiment\n", "\n", @@ -116,7 +116,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/aqua/optimization/input_files/grover.json b/community/aqua/optimization/input_files/grover.json index 4c47cdda8..e8837bd55 100644 --- a/community/aqua/optimization/input_files/grover.json +++ b/community/aqua/optimization/input_files/grover.json @@ -3,6 +3,7 @@ "name": "Grover" }, "backend": { + "provider": "qiskit.BasicAer", "name": "qasm_simulator" }, "oracle": { diff --git a/community/aqua/optimization/input_files/maxcut.json b/community/aqua/optimization/input_files/maxcut.json index e142c49cf..9ca120f25 100644 --- a/community/aqua/optimization/input_files/maxcut.json +++ b/community/aqua/optimization/input_files/maxcut.json @@ -5,6 +5,7 @@ "operator_mode": "matrix" }, "backend": { + "provider": "qiskit.BasicAer", "name": "statevector_simulator", "shots": 1024, "skip_transpiler": false @@ -15,7 +16,7 @@ "input": { "aux_ops": [], "name": "EnergyInput", - "qubitop": { + "qubit_op": { "paulis": [ { "coeff": { diff --git a/community/awards/teach_me_qiskit_2018/README.md b/community/awards/teach_me_qiskit_2018/README.md new file mode 100644 index 000000000..a2ff16767 --- /dev/null +++ b/community/awards/teach_me_qiskit_2018/README.md @@ -0,0 +1,21 @@ +## Teach Me QISKit Award 2018: Top Submissions + +This folder contains the top submissions of the Teach Me QISKit Award 2018. +Most of the tutorials were written and tested with [qiskit-terra](https://github.com/Qiskit/qiskit-terra) +version 0.4.15. + + +Thanks to the awesome community these tutorials are updated to work with the Qiskit 0.6 +- [W State](w_state) by Pierre Decoodt - W states and interesting games using them. +- [State Distribution in Qubit Chains](state_distribution_in_qubit_chains/index.ipynb) by Alexander Yu. Vlasov - state transport in quantum chains. +- [CHSH Game](chsh_game/CHSH%20game-tutorial.ipynb) by Mirko Amico - get used to the quantum weirdness by playing a quantum game. +- [Cryptography with BB84](cryptography/Cryptography.ipynb) by Costantino Carugno - implementation of the famous BB84 protocol. +- [E91 Quantum Key Distribution Protocol](e91_qkd/e91_quantum_key_distribution_protocol.ipynb) by Andrey Kardashin - a tutorial on quantum key distribution based on the protocol by Ekert in 1991. +- [Elementary Arithmetic Operations](elementary_arithmetic_operations/elementary_arithmetic_operations.ipynb) by Carlos Bravo Prieto - addition and modular exponentiation with quantum circuits which are important for Shor's algorithm. +- [Hadamard Action](hadamard_action) by Connor Fieweger - three approaches to show equivalences of circuits. +- [Quantum Cryptography](quantum_cryptography_qkd/Quantum_Cryptography2.ipynb) by A. J. Rasmusson and Richard Barney - quantum key distribution with the BB84 protocol. +- [Quantum Error Correction](quantum_error_correction/error_correction.ipynb) by Andrew Selzler, Yin Li, Frederick Ira Moxley III - qubit errors and how to threat them. +- [Quantum Machine Learning](quantum_machine_learning/QISKIT%20for%20quantum%20machine%20learning.ipynb) by Shan Jin, Xi He, Xiaokai Hou, Li Sun, Dingding Wen, Shaojun Wu and Xiaoting Wang - quantum k-means, linear system of equation, and SVM. + +The others work with Qiskit (0.4.15) from time of submission. +- [Exact Ising Model Simulation](exact_ising_model_simulation/Ising_time_evolution.ipynb) by Alba Cervera-Lierta - how to simulate time evolution at zero time. *The winner* of the Teach Me QISKit Award 2018. See [here](https://www.ibm.com/blogs/research/2018/06/teach-qiskit-winner/) for the announcement. \ No newline at end of file diff --git a/community/teach_me_qiskit_2018/chsh_game/CHSH game-tutorial.ipynb b/community/awards/teach_me_qiskit_2018/chsh_game/CHSH game-tutorial.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/chsh_game/CHSH game-tutorial.ipynb rename to community/awards/teach_me_qiskit_2018/chsh_game/CHSH game-tutorial.ipynb diff --git a/community/teach_me_qiskit_2018/cryptography/Cryptography.ipynb b/community/awards/teach_me_qiskit_2018/cryptography/Cryptography.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/cryptography/Cryptography.ipynb rename to community/awards/teach_me_qiskit_2018/cryptography/Cryptography.ipynb diff --git a/community/teach_me_qiskit_2018/e91_qkd/e91_quantum_key_distribution_protocol.ipynb b/community/awards/teach_me_qiskit_2018/e91_qkd/e91_quantum_key_distribution_protocol.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/e91_qkd/e91_quantum_key_distribution_protocol.ipynb rename to community/awards/teach_me_qiskit_2018/e91_qkd/e91_quantum_key_distribution_protocol.ipynb diff --git a/community/teach_me_qiskit_2018/e91_qkd/images/ABE_circuit.png b/community/awards/teach_me_qiskit_2018/e91_qkd/images/ABE_circuit.png similarity index 100% rename from community/teach_me_qiskit_2018/e91_qkd/images/ABE_circuit.png rename to community/awards/teach_me_qiskit_2018/e91_qkd/images/ABE_circuit.png diff --git a/community/teach_me_qiskit_2018/e91_qkd/images/AB_circuit.png b/community/awards/teach_me_qiskit_2018/e91_qkd/images/AB_circuit.png similarity index 100% rename from community/teach_me_qiskit_2018/e91_qkd/images/AB_circuit.png rename to community/awards/teach_me_qiskit_2018/e91_qkd/images/AB_circuit.png diff --git a/community/teach_me_qiskit_2018/e91_qkd/images/QISKit-c.gif b/community/awards/teach_me_qiskit_2018/e91_qkd/images/QISKit-c.gif similarity index 100% rename from community/teach_me_qiskit_2018/e91_qkd/images/QISKit-c.gif rename to community/awards/teach_me_qiskit_2018/e91_qkd/images/QISKit-c.gif diff --git a/community/teach_me_qiskit_2018/e91_qkd/images/bases.png b/community/awards/teach_me_qiskit_2018/e91_qkd/images/bases.png similarity index 100% rename from community/teach_me_qiskit_2018/e91_qkd/images/bases.png rename to community/awards/teach_me_qiskit_2018/e91_qkd/images/bases.png diff --git a/community/teach_me_qiskit_2018/e91_qkd/images/one-time_pad.png b/community/awards/teach_me_qiskit_2018/e91_qkd/images/one-time_pad.png similarity index 100% rename from community/teach_me_qiskit_2018/e91_qkd/images/one-time_pad.png rename to community/awards/teach_me_qiskit_2018/e91_qkd/images/one-time_pad.png diff --git a/community/teach_me_qiskit_2018/e91_qkd/images/qiskit-heading.gif b/community/awards/teach_me_qiskit_2018/e91_qkd/images/qiskit-heading.gif similarity index 100% rename from community/teach_me_qiskit_2018/e91_qkd/images/qiskit-heading.gif rename to community/awards/teach_me_qiskit_2018/e91_qkd/images/qiskit-heading.gif diff --git a/community/teach_me_qiskit_2018/e91_qkd/images/singlet_device.png b/community/awards/teach_me_qiskit_2018/e91_qkd/images/singlet_device.png similarity index 100% rename from community/teach_me_qiskit_2018/e91_qkd/images/singlet_device.png rename to community/awards/teach_me_qiskit_2018/e91_qkd/images/singlet_device.png diff --git a/community/teach_me_qiskit_2018/e91_qkd/images/singlet_distribution.png b/community/awards/teach_me_qiskit_2018/e91_qkd/images/singlet_distribution.png similarity index 100% rename from community/teach_me_qiskit_2018/e91_qkd/images/singlet_distribution.png rename to community/awards/teach_me_qiskit_2018/e91_qkd/images/singlet_distribution.png diff --git a/community/teach_me_qiskit_2018/e91_qkd/images/step3-4strings.png b/community/awards/teach_me_qiskit_2018/e91_qkd/images/step3-4strings.png similarity index 100% rename from community/teach_me_qiskit_2018/e91_qkd/images/step3-4strings.png rename to community/awards/teach_me_qiskit_2018/e91_qkd/images/step3-4strings.png diff --git a/community/teach_me_qiskit_2018/e91_qkd/images/vectors.png b/community/awards/teach_me_qiskit_2018/e91_qkd/images/vectors.png similarity index 100% rename from community/teach_me_qiskit_2018/e91_qkd/images/vectors.png rename to community/awards/teach_me_qiskit_2018/e91_qkd/images/vectors.png diff --git a/community/teach_me_qiskit_2018/elementary_arithmetic_operations/1+1.png b/community/awards/teach_me_qiskit_2018/elementary_arithmetic_operations/1+1.png similarity index 100% rename from community/teach_me_qiskit_2018/elementary_arithmetic_operations/1+1.png rename to community/awards/teach_me_qiskit_2018/elementary_arithmetic_operations/1+1.png diff --git a/community/teach_me_qiskit_2018/elementary_arithmetic_operations/elementary_arithmetic_operations.ipynb b/community/awards/teach_me_qiskit_2018/elementary_arithmetic_operations/elementary_arithmetic_operations.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/elementary_arithmetic_operations/elementary_arithmetic_operations.ipynb rename to community/awards/teach_me_qiskit_2018/elementary_arithmetic_operations/elementary_arithmetic_operations.ipynb diff --git a/community/teach_me_qiskit_2018/elementary_arithmetic_operations/modular_addition_network1.png b/community/awards/teach_me_qiskit_2018/elementary_arithmetic_operations/modular_addition_network1.png similarity index 100% rename from community/teach_me_qiskit_2018/elementary_arithmetic_operations/modular_addition_network1.png rename to community/awards/teach_me_qiskit_2018/elementary_arithmetic_operations/modular_addition_network1.png diff --git a/community/teach_me_qiskit_2018/elementary_arithmetic_operations/modular_exponentiation_network1.png b/community/awards/teach_me_qiskit_2018/elementary_arithmetic_operations/modular_exponentiation_network1.png similarity index 100% rename from community/teach_me_qiskit_2018/elementary_arithmetic_operations/modular_exponentiation_network1.png rename to community/awards/teach_me_qiskit_2018/elementary_arithmetic_operations/modular_exponentiation_network1.png diff --git a/community/teach_me_qiskit_2018/elementary_arithmetic_operations/modular_multiplication_network1.png b/community/awards/teach_me_qiskit_2018/elementary_arithmetic_operations/modular_multiplication_network1.png similarity index 100% rename from community/teach_me_qiskit_2018/elementary_arithmetic_operations/modular_multiplication_network1.png rename to community/awards/teach_me_qiskit_2018/elementary_arithmetic_operations/modular_multiplication_network1.png diff --git a/community/teach_me_qiskit_2018/elementary_arithmetic_operations/plain_addition_network1.png b/community/awards/teach_me_qiskit_2018/elementary_arithmetic_operations/plain_addition_network1.png similarity index 100% rename from community/teach_me_qiskit_2018/elementary_arithmetic_operations/plain_addition_network1.png rename to community/awards/teach_me_qiskit_2018/elementary_arithmetic_operations/plain_addition_network1.png diff --git a/community/teach_me_qiskit_2018/exact_ising_model_simulation/CH.png b/community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/CH.png similarity index 100% rename from community/teach_me_qiskit_2018/exact_ising_model_simulation/CH.png rename to community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/CH.png diff --git a/community/teach_me_qiskit_2018/exact_ising_model_simulation/CRX b/community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/CRX similarity index 100% rename from community/teach_me_qiskit_2018/exact_ising_model_simulation/CRX rename to community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/CRX diff --git a/community/teach_me_qiskit_2018/exact_ising_model_simulation/Ising_time_evolution.ipynb b/community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/Ising_time_evolution.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/exact_ising_model_simulation/Ising_time_evolution.ipynb rename to community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/Ising_time_evolution.ipynb diff --git a/community/teach_me_qiskit_2018/exact_ising_model_simulation/Magnetization.png b/community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/Magnetization.png similarity index 100% rename from community/teach_me_qiskit_2018/exact_ising_model_simulation/Magnetization.png rename to community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/Magnetization.png diff --git a/community/teach_me_qiskit_2018/exact_ising_model_simulation/Time_Evolution.png b/community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/Time_Evolution.png similarity index 100% rename from community/teach_me_qiskit_2018/exact_ising_model_simulation/Time_Evolution.png rename to community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/Time_Evolution.png diff --git a/community/teach_me_qiskit_2018/exact_ising_model_simulation/Time_evolution_parts.png b/community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/Time_evolution_parts.png similarity index 100% rename from community/teach_me_qiskit_2018/exact_ising_model_simulation/Time_evolution_parts.png rename to community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/Time_evolution_parts.png diff --git a/community/teach_me_qiskit_2018/exact_ising_model_simulation/bog b/community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/bog similarity index 100% rename from community/teach_me_qiskit_2018/exact_ising_model_simulation/bog rename to community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/bog diff --git a/community/teach_me_qiskit_2018/exact_ising_model_simulation/circuit.png b/community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/circuit.png similarity index 100% rename from community/teach_me_qiskit_2018/exact_ising_model_simulation/circuit.png rename to community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/circuit.png diff --git a/community/teach_me_qiskit_2018/exact_ising_model_simulation/fourier.png b/community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/fourier.png similarity index 100% rename from community/teach_me_qiskit_2018/exact_ising_model_simulation/fourier.png rename to community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/fourier.png diff --git a/community/teach_me_qiskit_2018/exact_ising_model_simulation/fswap.png b/community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/fswap.png similarity index 100% rename from community/teach_me_qiskit_2018/exact_ising_model_simulation/fswap.png rename to community/awards/teach_me_qiskit_2018/exact_ising_model_simulation/fswap.png diff --git a/community/teach_me_qiskit_2018/hadamard_action/README.txt b/community/awards/teach_me_qiskit_2018/hadamard_action/README.txt similarity index 100% rename from community/teach_me_qiskit_2018/hadamard_action/README.txt rename to community/awards/teach_me_qiskit_2018/hadamard_action/README.txt diff --git a/community/teach_me_qiskit_2018/hadamard_action/hadamard_action.ipynb b/community/awards/teach_me_qiskit_2018/hadamard_action/hadamard_action.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/hadamard_action/hadamard_action.ipynb rename to community/awards/teach_me_qiskit_2018/hadamard_action/hadamard_action.ipynb diff --git a/community/teach_me_qiskit_2018/hadamard_action/images/hadamard_action.png b/community/awards/teach_me_qiskit_2018/hadamard_action/images/hadamard_action.png similarity index 100% rename from community/teach_me_qiskit_2018/hadamard_action/images/hadamard_action.png rename to community/awards/teach_me_qiskit_2018/hadamard_action/images/hadamard_action.png diff --git a/community/teach_me_qiskit_2018/hadamard_action/images/qiskit-heading.gif b/community/awards/teach_me_qiskit_2018/hadamard_action/images/qiskit-heading.gif similarity index 100% rename from community/teach_me_qiskit_2018/hadamard_action/images/qiskit-heading.gif rename to community/awards/teach_me_qiskit_2018/hadamard_action/images/qiskit-heading.gif diff --git a/community/teach_me_qiskit_2018/index.ipynb b/community/awards/teach_me_qiskit_2018/index.ipynb similarity index 91% rename from community/teach_me_qiskit_2018/index.ipynb rename to community/awards/teach_me_qiskit_2018/index.ipynb index a0244679a..e9b93a7ef 100644 --- a/community/teach_me_qiskit_2018/index.ipynb +++ b/community/awards/teach_me_qiskit_2018/index.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -26,13 +33,6 @@ "The others work with Qiskit (0.4.15) from time of submission.\n", "- [Exact Ising Model Simulation](exact_ising_model_simulation/Ising_time_evolution.ipynb) by Alba Cervera-Lierta - how to simulate time evolution at zero time. *The winner* of the Teach Me QISKit Award 2018. See [here](https://www.ibm.com/blogs/research/2018/06/teach-qiskit-winner/) for the announcement." ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -51,7 +51,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.0" + "version": "3.7.2" } }, "nbformat": 4, diff --git a/community/teach_me_qiskit_2018/quantum_cryptography_qkd/QKD.png b/community/awards/teach_me_qiskit_2018/quantum_cryptography_qkd/QKD.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_cryptography_qkd/QKD.png rename to community/awards/teach_me_qiskit_2018/quantum_cryptography_qkd/QKD.png diff --git a/community/teach_me_qiskit_2018/quantum_cryptography_qkd/QKDnoEve.png b/community/awards/teach_me_qiskit_2018/quantum_cryptography_qkd/QKDnoEve.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_cryptography_qkd/QKDnoEve.png rename to community/awards/teach_me_qiskit_2018/quantum_cryptography_qkd/QKDnoEve.png diff --git a/community/teach_me_qiskit_2018/quantum_cryptography_qkd/Quantum_Cryptography2.ipynb b/community/awards/teach_me_qiskit_2018/quantum_cryptography_qkd/Quantum_Cryptography2.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/quantum_cryptography_qkd/Quantum_Cryptography2.ipynb rename to community/awards/teach_me_qiskit_2018/quantum_cryptography_qkd/Quantum_Cryptography2.ipynb diff --git a/community/teach_me_qiskit_2018/quantum_error_correction/error_correction.ipynb b/community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/quantum_error_correction/error_correction.ipynb rename to community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction.ipynb diff --git a/community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_16_0.png b/community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_16_0.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_16_0.png rename to community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_16_0.png diff --git a/community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_1_0.png b/community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_1_0.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_1_0.png rename to community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_1_0.png diff --git a/community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_27_0.png b/community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_27_0.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_27_0.png rename to community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_27_0.png diff --git a/community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_30_0.png b/community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_30_0.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_30_0.png rename to community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_30_0.png diff --git a/community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_33_0.png b/community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_33_0.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_33_0.png rename to community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_33_0.png diff --git a/community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_36_0.png b/community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_36_0.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_36_0.png rename to community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_36_0.png diff --git a/community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_39_0.png b/community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_39_0.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_39_0.png rename to community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_39_0.png diff --git a/community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_3_0.png b/community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_3_0.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_3_0.png rename to community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_3_0.png diff --git a/community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_40_0.png b/community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_40_0.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_40_0.png rename to community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_40_0.png diff --git a/community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_43_0.png b/community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_43_0.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_43_0.png rename to community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_43_0.png diff --git a/community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_5_0.png b/community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_5_0.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_5_0.png rename to community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_5_0.png diff --git a/community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_7_0.png b/community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_7_0.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_7_0.png rename to community/awards/teach_me_qiskit_2018/quantum_error_correction/error_correction_files/error_correction_7_0.png diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/1_K_Means/Quantum K-Means Algorithm.ipynb b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/1_K_Means/Quantum K-Means Algorithm.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/1_K_Means/Quantum K-Means Algorithm.ipynb rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/1_K_Means/Quantum K-Means Algorithm.ipynb diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/2_HHL/Quantum Algorithm for Linear System of Equations.ipynb b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/2_HHL/Quantum Algorithm for Linear System of Equations.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/2_HHL/Quantum Algorithm for Linear System of Equations.ipynb rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/2_HHL/Quantum Algorithm for Linear System of Equations.ipynb diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/3_SVM/Quantum Support Vector Machine.ipynb b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/3_SVM/Quantum Support Vector Machine.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/3_SVM/Quantum Support Vector Machine.ipynb rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/3_SVM/Quantum Support Vector Machine.ipynb diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/QISKIT for quantum machine learning.ipynb b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/QISKIT for quantum machine learning.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/QISKIT for quantum machine learning.ipynb rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/QISKIT for quantum machine learning.ipynb diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/images/IFFS.jpg b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/IFFS.jpg similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/images/IFFS.jpg rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/IFFS.jpg diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/images/QISKit-c.gif b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/QISKit-c.gif similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/images/QISKit-c.gif rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/QISKit-c.gif diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_1.jpg b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_1.jpg similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_1.jpg rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_1.jpg diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_2.png b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_2.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_2.png rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_2.png diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_3.png b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_3.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_3.png rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_3.png diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_4.png b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_4.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_4.png rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/hhl_4.png diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/images/k_means.png b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/k_means.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/images/k_means.png rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/k_means.png diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/images/k_means_circuit.png b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/k_means_circuit.png similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/images/k_means_circuit.png rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/k_means_circuit.png diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/images/uestc.jpg b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/uestc.jpg similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/images/uestc.jpg rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/images/uestc.jpg diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/requirements.txt b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/requirements.txt similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/requirements.txt rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/requirements.txt diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/utils/__init__.py b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/utils/__init__.py similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/utils/__init__.py rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/utils/__init__.py diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/utils/rerun_version.py b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/utils/rerun_version.py similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/utils/rerun_version.py rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/utils/rerun_version.py diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/utils/version.py b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/utils/version.py similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/utils/version.py rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/utils/version.py diff --git a/community/teach_me_qiskit_2018/quantum_machine_learning/version.ipynb b/community/awards/teach_me_qiskit_2018/quantum_machine_learning/version.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/quantum_machine_learning/version.ipynb rename to community/awards/teach_me_qiskit_2018/quantum_machine_learning/version.ipynb diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_part.png b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_part.png similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_part.png rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_part.png diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_site.png b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_site.png similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_site.png rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_site.png diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_site1.png b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_site1.png similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_site1.png rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_site1.png diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_site_psi.png b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_site_psi.png similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_site_psi.png rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_circs_site_psi.png diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_qubits.png b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_qubits.png similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_qubits.png rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_qubits.png diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_qubits_site.png b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_qubits_site.png similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_qubits_site.png rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_qubits_site.png diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_qubits_site1.png b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_qubits_site1.png similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_qubits_site1.png rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/line_qubits_site1.png diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/lines_quantum_bot.png b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/lines_quantum_bot.png similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/lines_quantum_bot.png rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/lines_quantum_bot.png diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/loop_quantum_bot.png b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/loop_quantum_bot.png similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/loop_quantum_bot.png rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/loop_quantum_bot.png diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qiskit-heading.gif b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qiskit-heading.gif similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qiskit-heading.gif rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qiskit-heading.gif diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qubit-chain-logo.png b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qubit-chain-logo.png similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qubit-chain-logo.png rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qubit-chain-logo.png diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qx_quchain.png b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qx_quchain.png similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qx_quchain.png rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qx_quchain.png diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qx_quchain_t2.png b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qx_quchain_t2.png similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qx_quchain_t2.png rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/images/qx_quchain_t2.png diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/index.ipynb b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/index.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/index.ipynb rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/index.ipynb diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/qubit_chain.ipynb b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/qubit_chain.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/qubit_chain.ipynb rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/qubit_chain.ipynb diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/qubit_chain_mod.ipynb b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/qubit_chain_mod.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/qubit_chain_mod.ipynb rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/qubit_chain_mod.ipynb diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/qubit_chain_mod_many.ipynb b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/qubit_chain_mod_many.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/qubit_chain_mod_many.ipynb rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/qubit_chain_mod_many.ipynb diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/scalar_chain.ipynb b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/scalar_chain.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/scalar_chain.ipynb rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/scalar_chain.ipynb diff --git a/community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/scalar_chain_mod.ipynb b/community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/scalar_chain_mod.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/state_distribution_in_qubit_chains/scalar_chain_mod.ipynb rename to community/awards/teach_me_qiskit_2018/state_distribution_in_qubit_chains/scalar_chain_mod.ipynb diff --git a/community/teach_me_qiskit_2018/w_state/Short Bibliography.pdf b/community/awards/teach_me_qiskit_2018/w_state/Short Bibliography.pdf similarity index 100% rename from community/teach_me_qiskit_2018/w_state/Short Bibliography.pdf rename to community/awards/teach_me_qiskit_2018/w_state/Short Bibliography.pdf diff --git a/community/awards/teach_me_qiskit_2018/w_state/W State 1 - Multi-Qubit Systems.ipynb b/community/awards/teach_me_qiskit_2018/w_state/W State 1 - Multi-Qubit Systems.ipynb new file mode 100644 index 000000000..229868e54 --- /dev/null +++ b/community/awards/teach_me_qiskit_2018/w_state/W State 1 - Multi-Qubit Systems.ipynb @@ -0,0 +1,653 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# W state in multi-qubit systems\n", + "\n", + "The latest version of this notebook is available on https://github.com/qiskit/qiskit-tutorial.\n", + "\n", + "For more information about how to use the IBM Q experience (QX), consult the [tutorials](https://quantumexperience.ng.bluemix.net/qstage/#/tutorial?sectionId=c59b3710b928891a1420190148a72cce&pageIndex=0), or check out the [community](https://quantumexperience.ng.bluemix.net/qstage/#/community).\n", + "\n", + "***\n", + "## Contributors\n", + "\n", + "Pierre Decoodt, Université Libre de Bruxelles" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\decpi\\Anaconda3\\envs\\q7env\\lib\\site-packages\\marshmallow\\schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], + "source": [ + "# useful additional packages \n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "import numpy as np\n", + "import time\n", + "from pprint import pprint\n", + "\n", + "# importing Qiskit\n", + "from qiskit import Aer, IBMQ\n", + "from qiskit.providers.ibmq import least_busy \n", + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister, execute\n", + "\n", + "# import basic plot tools\n", + "from qiskit.tools.visualization import plot_histogram" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "IBMQ.load_accounts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Theoretical background\n", + "\n", + "In addition to the GHZ states, the generalized W states, as proposed by Dür, Vidal and Cirac, in 2000, is a class of interesting examples of multiple qubit entanglement.\n", + "\n", + "A generalized $n$ qubit W state can be written as :\n", + "$$ |W_{n}\\rangle \\; = \\; \\sqrt{\\frac{1}{n}} \\: (\\:|10...0\\rangle \\: + |01...0\\rangle \\: +...+ |00...1\\rangle \\:) $$\n", + "\n", + "Here are presented circuits allowing to deterministically produce respectively a three, a four and a five qubit W state.\n", + "\n", + "A 2016 paper by Firat Diker proposes an algorithm in the form of nested boxes allowing the deterministic construction of W states of any size $n$. The experimental setup proposed by the author is essentially an optical assembly including half-wave plates. The setup includes $n-1$ so-called two-qubit $F$ gates (not to be confounded with the Fredkin's three-qubit gate).\n", + "\n", + "It is possible to construct the equivalent of such a $F$ gate on a superconducting quantum computing system using transmon qubits in ground and excited states. A $F_{k,\\, k+1}$ gate with control qubit $q_{k}$ and target qubit $q_{k+1}$ is obtained here by:\n", + "\n", + " - First a rotation round Y-axis $R_{y}(-\\theta_{k})$ applied on $q_{k+1}$\n", + " - Then a controlled Z-gate $cZ$ in any direction between the two qubits $q_{k}$ and $q_{k+1}$\n", + " - Finally a rotation round Y-axis $R_{y}(\\theta_{k})$ applied on $q_{k+1}$\n", + " \n", + "The matrix representations of a $R_{y}(\\theta)$ rotation and of the $cZ$ gate can be found in the \"Quantum gates and linear algebra\" Jupyter notebook of the Qiskit tutorial. \n", + "\n", + "The value of $\\theta_{k}$ depends on $n$ and $k$ following the relationship:\n", + "\n", + "$$\\theta_{k} = \\arccos \\left(\\sqrt{\\frac{1}{n-k+1}}\\right) $$\n", + "\n", + "Note that this formula for $\\theta$ is different from the one mentioned in the Diker's paper. This is due to the fact that we use here Y-axis rotation matrices instead of $W$ optical gates composed of half-wave plates.\n", + "\n", + "At the beginning, the qubits are placed in the state: $|\\varphi_{0} \\rangle \\, = \\, |10...0 \\rangle$.\n", + "\n", + "This is followed by the application of $n-1$ sucessive $F$ gates. \n", + "\n", + "$$|\\varphi_{1}\\rangle = F_{n-1,\\,n}\\, ... \\, F_{k,\\, k+1}\\, ... \\, F_{2,\\, 3} \\,F_{1,\\, 2}\\,|\\varphi_{0} \\rangle \\,= \\; \\sqrt{\\frac{1}{n}} \\: (\\:|10...0\\rangle \\: + |11...0\\rangle \\: +...+ |11...1\\rangle \\:) $$\n", + "\n", + "Then, $n-1$ $cNOT$ gates are applied. The final circuit is: \n", + "\n", + "$$|W_{n}\\rangle \\,= cNOT_{n,\\, n-1}\\, cNOT_{n-1,\\, n-2}...cNOT_{k,\\, k-1}...cNOT_{2,\\, 1}\\,\\,|\\varphi_{1} \\rangle$$\n", + "\n", + "Let's launch now in the adventure of producing deterministically W states, on simulator or in the real world!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now you will have the opportunity to choose your backend.\n", + "\n", + "(If you run the following cells in sequence, you will end with the local simulator, which is a good choice for a first trial)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Your choice for the backend is: qasm_simulator flag_qx2 is: True\n" + ] + } + ], + "source": [ + "\"Choice of the backend\"\n", + "# using local qasm simulator\n", + "backend = Aer.get_backend('qasm_simulator') \n", + "\n", + "# using IBMQ qasm simulator \n", + "# backend = IBMQ.get_backend('ibmq_qasm_simulator')\n", + "# using real device\n", + "# backend = least_busy(IBMQ.backends(simulator=False))\n", + "\n", + "flag_qx2 = True\n", + "if backend.name() == 'ibmqx4':\n", + " flag_qx2 = False\n", + " \n", + "print(\"Your choice for the backend is: \", backend, \"flag_qx2 is: \", flag_qx2)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Here, two useful routine\n", + "# Define a F_gate\n", + "def F_gate(circ,q,i,j,n,k) :\n", + " theta = np.arccos(np.sqrt(1/(n-k+1)))\n", + " circ.ry(-theta,q[j]) \n", + " circ.cz(q[i],q[j])\n", + " circ.ry(theta,q[j])\n", + " circ.barrier(q[i])\n", + "# Define the cxrv gate which uses reverse CNOT instead of CNOT\n", + "def cxrv(circ,q,i,j) :\n", + " circ.h(q[i])\n", + " circ.h(q[j])\n", + " circ.cx(q[j],q[i])\n", + " circ.h(q[i])\n", + " circ.h(q[j])\n", + " circ.barrier(q[i],q[j])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Three-qubit W state, step 1\n", + "\n", + "In this section, the production of a three qubit W state will be examined step by step.\n", + "\n", + "In this circuit, the starting state is now: $ |\\varphi_{0} \\rangle \\, = \\, |100\\rangle$.\n", + "\n", + "The entire circuit corresponds to: \n", + " \n", + "$$ |W_{3}\\rangle \\,=\\, cNOT_{3,2}\\, \\, cNOT_{2,1}\\, \\, F_{2,3} \\, \n", + "\\, F_{1,2} \\, \\, |\\varphi_{0} \\rangle \\, $$ \n", + "\n", + "Run the following cell to see what happens when we first apply $F_{1,2}$." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start W state 3-qubit (step 1) on qasm_simulator N= 1024 08/01/2019 17:39:52\n", + "end W state 3-qubit (step 1) on qasm_simulator N= 1024 08/01/2019 17:39:52\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 3-qubit W state Step 1\n", + "n = 3\n", + "q = QuantumRegister(n)\n", + "c = ClassicalRegister(n)\n", + "W_states = QuantumCircuit(q,c) \n", + "\n", + "W_states.x(q[2]) #start is |100>\n", + "F_gate(W_states,q,2,1,3,1) # Applying F12\n", + " \n", + "for i in range(3) :\n", + " W_states.measure(q[i] , c[i]) \n", + "\n", + "# circuits = ['W_states']\n", + "\n", + "shots = 1024\n", + "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", + "print('start W state 3-qubit (step 1) on', backend, \"N=\", shots,time_exp)\n", + "result = execute(W_states, backend=backend, shots=shots)\n", + "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", + "print('end W state 3-qubit (step 1) on', backend, \"N=\", shots,time_exp)\n", + "plot_histogram(result.result().get_counts(W_states))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Three-qubit W state: adding step 2\n", + "\n", + "In the previous step you obtained an histogram compatible with the following state:\n", + "\n", + "$$ |\\varphi_{1} \\rangle= F_{1,2}\\, |\\varphi_{0} \\rangle\\,=F_{1,2}\\, \\,|1 0 0 \\rangle=\\frac{1}{\\sqrt{3}} \\: |1 0 0 \\rangle \\: + \\sqrt{\\frac{2}{3}} \\: |1 1 0 \\rangle $$\n", + "\n", + "NB: Depending on the backend, it happens that the order of the qubits is modified, but without consequence for the state finally reached.\n", + "\n", + "We seem far from the ultimate goal.\n", + "\n", + "Run the following circuit to obtain $|\\varphi_{2} \\rangle =F_{2,3}\\, \\, |\\varphi_{1} \\rangle$" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start W state 3-qubit (steps 1 + 2) on qasm_simulator N= 1024 08/01/2019 17:40:00\n", + "end W state 3-qubit (steps 1 + 2) on qasm_simulator N= 1024 08/01/2019 17:40:00\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAccAAAFGCAYAAAAfEFTPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xuc3XV95/HXh8kFgglkYgwzQBJCYJwQOg6ggpZgRbqggl3Iw0vZ5WKRRRTaZV1su1iwtWhRKNQVwUBB0LVsIa5WpESkBeRSNYkhIWNKEpIYcjG3JoGEXIbP/nFOwuTHTDKTTM45M3k9H4955JzfZc7nzPlm3vP7/b6/7zcyE0mS9IaDql2AJEm1xnCUJKnAcJQkqcBwlCSpwHCUJKnAcJQkqcBwlCSpwHCUJKnAcJQkqWBAtQvYX0aMGJGjR4+udhmSpBryq1/9anVmjtzTdv02HEePHs3jjz9e7TIkSTWkvr5+cXe287SqJEkFhqMkSQWGoyRJBYajJEkFhqMkSQWGoyRJBYajJEkFhqMkSQWGoyRJBRUPx4i4MiJeiojXImJ6RJzezf1+NyK2R8Sc/V2jJOnAVtFwjIiPAbcBNwKtwDPAIxGx20FQI2I4cB/w0/1epCTpgFfpI8drgHszc0pmtmXmVcBy4NN72O9u4NvAs/u7QEmSKhaOETEIOBmYVlg1DXjPbva7EjgC+NL+q06SpDdUclaOtwJ1wMrC8pXABzrbISJOBK4HTs3M9ojY7QtExOXA5QANDQ3MmDEDgMbGRoYMGcL8+fMBOOywwxg3bhwzZ84EoK6ujpaWFubNm8err74KQHNzM2vXrmXlylK5Rx11FIMGDWLhwoUADB8+nNGjRzNr1iwABg4cyIknnkhbWxubN28GYMKECaxatYpVq1YBMGbMGCKCRYsWATBixAgaGhqYM6d0GXXw4MGccMIJvPDCC2zZsgWAiRMnsnz5ctasWQPA2LFjyUwWLy4NLD9y5EhGjhzJ3LlzATjkkENobm5m9uzZbNu2DYCWlhaWLFnCunXrABg3bhxbt25l6dKlAIwaNYr6+nra2toAOPTQQ2lqamLWrFm0t7cD0NraysKFC1m/fj0A48ePZ9OmTSxbtowdP+9hw4Yxb948AIYOHcpxxx3HzJkzyUwigtbWVl588UU2btwIQFNTExs2bGD58uV+Tn5Ofk5+ThX5nLorMrPbG++LiGgEXgYmZeZTHZZfD3wiM99e2H4wMAP4SmbeX152AzA5Myfu6fVaW1vTKaskSR3V19dPz8xT9rRdJY8cVwPtlE6RdvQ23nw0CdAATADuiYh7yssOAiIitgMfzMziKVpJkvZZxa45ZuZWYDpwVmHVWZR6rRa9DJwIvKPD1x3A/PLjzvaRJGmfVfLIEeAW4P6I+DnwNHAF0Egp9IiI+wAy86LM3Absck9jRPwW2JKZ3usoSdpvKhqOmflARIwArqN02nQOpdOji8ub7PZ+R0mSKqFiHXIqzQ45kqSi7nbIcWxVSZIKDEdJkgoMR0mSCgzHKnrsscd417vexcknn8ytt976pvX33HMP733ve5k0aRLnnHMOv/71rwFYsmQJjY2NTJo0iUmTJnHNNdfs3Gfy5MmcfvrpnHbaaVxzzTU7R+SQJHWfHXKqpL29nXe+851MnTqVxsZGzjzzTKZMmcLb3/7GQEEbNmxg2LBhADzyyCPcfffdPPjggyxZsoSPf/zjPPPMm2/13LFPZnLxxRfzkY98hAsuuKBi70uSapkdcmrc9OnTOeaYYxg7diyDBg3i/PPP55FHHtllmx3BCLBp0yb2NLZsx322b9/Otm3burWPJGlXhmOVLF++nCOPPHLn88bGxp0DBnd01113cdJJJ3H99dfzla98ZefyJUuWcMYZZ/DhD3+YZ5/ddSavCy64gOOPP563vOUtfOQjH9l/b0KS+inDsUo6O53d2VHeZZddxowZM7jhhhu4+eabgdKo/88//zxPPPEEX/rSl/jUpz7Fhg0bdu7z0EMP0dbWxpYtW3jyySf335uQpH7KcKySxsZGXn755Z3Ply1bxhFHFMdkf8P555/Pww8/DJSmeKmvrwfgHe94B8cccwwLFizYZfuDDz6Yc845502naiVJe2Y4VslJJ53EwoULWbx4MVu3bmXq1KmcffbZu2zTMfCmTZvGscceC8Dq1at39kJdtGgRCxcuZOzYsbzyyiusWLECKF1z/MlPfsJxxx1XoXckSf1HpQceV9mAAQO46aabmDx5Mu3t7Vx44YU0Nzdz44030trayjnnnMOUKVN44oknGDhwIIcffjjf+MY3AHjmmWf48pe/zIABA6irq+Pmm29m+PDh/Pa3v+XCCy9ky5YttLe3M2nSJC699NIqv1NJ6nu8lUOSdMDwVg5JkvaS4ShJUoHhKElSgeEoSVKB4ShJUoHhKPUxezuby/Tp03fO5HL66afzox/9CIClS5dy3nnn8e53v5vTTjuNO+64o6LvR6pF3soh9SH7MpvLpk2bGDRoEAMGDGDFihVMmjSJuXPnsnr1alauXElLSwsbN27k/e9/P/fff/8u31PqL7yVQ+qH9mU2lyFDhjBgQGncjy1btuxcfsQRR9DS0gLA0KFDOf744zsdBF86kDhCjtSHdDaby/Tp09+03V133cXtt9/O1q1b+cEPfrBz+S9/+Uuuuuoqli5dyje/+c2dYbnDkiVLeP755zn55JP335uQ+gCPHKU+ZF9mcwE45ZRTePbZZ3nssce49dZbee2113aue+WVV7j44ou58cYbdzn6lA5EhqPUh+zLbC4dNTU1MWTIENra2gDYtm0bF198MZMnT+bcc8/t/cKlPsbTqntw7beHV7uEmnXTxeuqXcIBp+NsLg0NDUydOpVvfetbu2yzYMGCnTO4dJzNZfHixRx55JEMGDCA3/zmN8yfP5/Ro0eTmVx99dUcf/zxfOYzn6n4e5JqkeEo9SH7MpvLc889x6233srAgQM56KCD+OpXv8qIESN47rnneOCBB5gwYQKTJk0C4Atf+AJnnXVWNd+qVFXeyrEHHjl2zSNHSX2Nt3JIkrSXDEdJkgoMR0k6AOztsINr167lvPPO4+ijj+baa6/dZZ9zzz2Xd73rXTuHJVy1alVF3ksl2CFHkvq59vZ2rr322l2GHTz77LN3GSLwggsu4NJLLwVKww5ed911PPjggwwePJg///M/p62tbeetPx3deeedtLa2Vuy9VIpHjpLUz+3LsIOHHnoop556KoMHD65ozdXmkaMk9XP7Ouzg7nz2s5+lrq6Oc889l8997nOdjtjUF3nkKEn93L4OO9iVO++8k6effpqHH36YZ599lgceeKBX6q0FhqMk9XO9NexgZ98XSrO5TJ48mRkzZux7sTXCcJSkfq7jsINbt25l6tSpnH322btss2DBgp2POw472JXt27ezZs0aoDQ276OPPkpzc3PvF18lXnOUpH5uX4YdBHZOhL1t2zYefvhhHnroIY4++mgmT57Mtm3baG9v54wzzuCiiy6q4rvsXQ4ftwcOH9c1h4+T1Nd0d/g4jxyl/cA/qrrmH1XqC7zmKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoEj5EhSjXBkpa5VemQljxwlSSowHCVJKjAcJUkqMBwlSSowHCVJKqh4OEbElRHxUkS8FhHTI+L03Wx7RkQ8ExFrImJzRPw6Ij5XyXolSQeeit7KEREfA24DrgR+Vv73kYiYkJlLOtnlFeDvgNnAJuC9wJ0RsSkzb69Q2ZKkA0yljxyvAe7NzCmZ2ZaZVwHLgU93tnFmTs/Mf8jMFzLzpcz8DvAo0OXRpiRJ+6pi4RgRg4CTgWmFVdOA93Tze7SWt32id6uTJOkNlTyt+lagDlhZWL4S+MDudoyIpcBISvV+MTPv6GK7y4HLARoaGpgxYwYAjY2NDBkyhPnz5wNw2GGHMW7cOGbOnAlAXV0dLS0tzJs3j1dffRWA5uZm1q5dCzhiRVdWrFjBsmXLgNLPe9iwYcybNw+AoUOHctxxxzFz5kwyk4igtbWVF198kY0bNwLQ1NTEhg0bWL58ObBvn9PKlaVmddRRRzFo0CAWLlwIwPDhwxk9ejSzZs0CYODAgZx44om0tbWxefNmACZMmMCqVatYtWoVAGPGjCEiWLRoEQAjRoygoaGBOXPmADB48GBOOOEEXnjhBbZs2QLAxIkTWb58OWvWrCn/dM7s5Z92/zFjxoya+ZzGjh1LZrJ48WIARo4cyciRI5k7dy4AhxxyCM3NzcyePZtt27YB0NLSwpIlS1i3rjRiy7hx49i6dStLly4FYNSoUdTX19PW1gbAoYceSlNTE7NmzaK9vR2A1tZWFi5cyPr16wEYP348mzZtwt83XVuzZk2vfE7dFZnZy2+hixeKaAReBiZl5lMdll8PfCIz376bfY8B3gKcCvwN8MeZef/uXq+1tTUff/zxfa7b4Zy6VunhnPoS203XbDdds910rbfaTX19/fTMPGVP21XyyHE10A4cUVj+Nt58NLmLzHyp/HB2RIwCbgB2G46SJO2til1zzMytwHTgrMKqs4BnevCtDgIG91ZdkiQVVXpWjluA+yPi58DTwBVAI3AHQETcB5CZF5WfXwW8BMwr7z8J+BzgbRySpP2mouGYmQ9ExAjgOqABmAN8MDMXlzcZXdiljtI1xrHAdmAB8KeUw1SSpP2h4vM5lm/e7/TILzPfV3h+K3BrBcqSJGknx1aVJKnAcJQkqcBwlCSpwHCUJKnAcJQkqcBwlCSpwHCUJKnAcJQkqcBwlCSpwHCUJKnAcJQkqaBH4RgRH42I3+/w/C8iYmlEPBoRDb1fniRJldfTI8cbdjyIiJOAPwf+DhgI3Nx7ZUmSVD09nZVjDG/Mrfifgf+XmTdFxDTg0V6tTJKkKunpkeNrwNDy4zOBx8qP13dYLklSn9bTI8engJsj4mfAKcDk8vLjgd/0ZmGSJFVLT48cPwtspRSKV2TmsvLyc/C0qiSpn+jRkWNmLgXO7WT5n/RaRZIkVVmP73OMiIMjYnJEfD4iDi8vOzYi6nu/PEmSKq9HR44RMZ5SJ5y3AIcD/wj8B/Dp8vPLertASZIqradHjrcC04BRwOYOy38I/F5vFSVJUjX1tLfqe4BTM7M9IjouXwI09lpVkiRV0d6MrTqwk2WjKd3rKElSn9fTcJwGXNPheUbEMOCLwMO9VpUkSVXU09Oq1wD/EhHzgIOBB4DxwErgo71cmyRJVdHT+xyXRcQ7gE8AJ1E68vwW8N3M3LzbnSVJ6iN6euRIOQT/vvwlSVK/s8dwjIjzgX/KzG3lx13KzKm9VpkkSVXSnSPHB4EjgN+WH3clgbreKEqSpGraYzhm5kGdPZYkqb/qUdhFxKSIeFOgRkRdREzqvbIkSaqenh4J/gvQ2QDjh5fXSZLU5/U0HIPStcWiEcCr+16OJEnV161bOSLih+WHCXwnIrZ0WF0HTASe6eXaJEmqiu7e57im/G8A69h1Ro6twM+AKb1YlyRJVdOtcMzMSwEiYhHwtcz0FKokqd/q6fBxX9xfhUiSVCu6M0LO88AZmbkuImbTeYccADLzd3qzOEmSqqE7R44PATs64OxuhBxJkvqF7oyQ88XOHkuS1F85HJwkSQXduea42+uMHXnNUZLUH3R3Vg5Jkg4YPbrmKEnSgcBrjpIkFXifoyRJBd7nKElSgfc5SpJU0KOxVXeIiGOB5vLTtsxc0HslSZJUXT0Kx4gYAdwNnAe8/sbi+BHwycxc0+XOkiT1ET3trXoXMB44HTi4/DUJOAbnc5Qk9RM9Pa36n4AzM/PZDsuejoj/BjzWe2VJklQ9PT1yXAV0NtHxJsBTqpKkfqGn4fiXwK0RceSOBeXHN5fXSZLU5+0xHCNidkQ8Xx4M4I+BdwKLImJRRCwCFgHvBq7uzgtGxJUR8VJEvBYR0yPi9N1se35ETIuIVRGxMSL+LSLO687rSJK0tyo68HhEfAy4DbgS+Fn530ciYkJmLulklzOAx4HrgLXAhcD3I+J9mflUb9UlSVJHlR54/Brg3szc0bP1qog4G/g08GedvPYfFxZ9MSI+BPwBYDhKkvaLvRoEYG9ExCDgZOBrhVXTgPf04FsNBdZ18RqXA5cDNDQ0MGPGDAAaGxsZMmQI8+fPB+Cwww5j3LhxzJw5E4C6ujpaWlqYN28er75a6m/U3NzM2rVrgeE9KO3AsmLFCpYtWwaUft7Dhg1j3rx5AAwdOpTjjjuOmTNnkplEBK2trbz44ots3LgRgKamJjZs2MDy5cuBffucVq5cCcBRRx3FoEGDWLhwIQDDhw9n9OjRzJo1C4CBAwdy4okn0tbWxubNmwGYMGECq1atYtWqVQCMGTOGiGDRokUAjBgxgoaGBubMmQPA4MGDOeGEE3jhhRfYsqU0suLEiRNZvnw5a9bs6Jd2Zi//tPuPGTNm1MznNHbsWDKTxYsXAzBy5EhGjhzJ3LlzATjkkENobm5m9uzZbNu2DYCWlhaWLFnCunWlX0Pjxo1j69atLF26FIBRo0ZRX19PW1sbAIceeihNTU3MmjWL9vZ2AFpbW1m4cCHr168HYPz48WzatAl/33RtzZo1vfI5dVdkdmse49LGpYD7X8AngNHAwI7rM7NuN/s2Ai9TGsT8yQ7L/wK4MDObuvH6nwG+AkzMzMW727a1tTUff/zxPX3LPbr22zbWrtx0cad/owjbze7Ybrpmu+lab7Wb+vr66Zl5yp6262lv1b8CLqbUO/V14H8C36B0G8eV3fwexTSOTpa9SURcAHyVUpDuNhglSdoXPQ3HjwJXZOadQDvwg8y8GrgeOGsP+64u73NEYfnbgJW727EcjPcDF2XmD3tYsyRJPdLTcBwFzC0/fgU4vPz4n4Hf392OmbkVmM6bQ/Qs4Jmu9ouIjwLfAS7JTKfMkiTtdz0NxyVAY/nxfErDyQGcBmzuxv63AJdExGUR0RwRt5W/3x0AEXFfRNy3Y+OI+DjwXeBPgScj4ojyV30P65Ykqdt62lv1+5S64T1H6X7F70XEp4AjKV0P3K3MfKA8s8d1QAMwB/hgh2uIowu7XFGu8dby1w5PAO/rYe2SJHVLj8IxM/+sw+MHI2Ippdsw/j0zf9TN73E7cHsX6963u+eSJFXCPt3nmJnPUTqKlCSp3+jpNUci4qTytcFflr/uj4iT9kdxkiRVQ4/CMSIuBH5B6Xrhj8tfo4CfR8R/6f3yJEmqvJ6eVv1r4AuZeWPHhRHxZ8CXKN1yIUlSn9bT06ojgf/byfJ/pHQzvyRJfV5Pw/Ff6PwWivdRur1CkqQ+b4+nVSPi/A5PHwG+HBGn8EYv1VOB84Eber06SZKqYG8nO945NVQHX6eL+xclSepLujPZcY9v95AkqS8z+CRJKtibQQA+FBFPRsTqiFgVEU9ExAf3R3GSJFVDTwcBuIzS4OMLgM9Tmi3jJeD7EfHJ3i9PkqTK6+kgAJ8HrsnM/91h2d0RMZ1SUP59r1UmSVKV9PS06mhKExsXPQKM2fdyJEmqvr2Z7PisTpb/PrC4k+WSJPU5PT2t+jXg6+VZOJ4BEvhd4L8CV/VybZIkVUVPJzu+MyJ+C/wPSqPiALQBH83MH/R2cZIkVUO3wzEiBlA6ffpkZn5//5UkSVJ1dfuaY2ZuB6YCQ/dfOZIkVV9PO+TMAsbvj0IkSaoVPQ3HG4CbI+IPIuLoiKjv+LUf6pMkqeJ62lv14fK/Uyn1VN0hys/reqMoSZKqqafh+Hv7pQpJkmpIt8IxIoYAXwX+ABgIPAZcnZmr92NtkiRVRXevOX4RuITSadXvURol55v7qSZJkqqqu6dVzwf+KDP/ASAivgs8HRF1mdm+36qTJKkKunvkeDTw1I4nmflzYDvQuD+KkiSpmrobjnXA1sKy7fS8Q48kSTWvu+EWwHciYkuHZQcDUyJi044FmXlebxYnSVI1dDccv93Jsu/0ZiGSJNWKboVjZl66vwuRJKlW9HT4OEmS+j3DUZKkAsNRkqQCw1GSpALDUZKkAsNRkqQCw1GSpALDUZKkAsNRkqQCw1GSpALDUZKkAsNRkqQCw1GSpALDUZKkAsNRkqQCw1GSpALDUZKkAsNRkqQCw1GSpALDUZKkAsNRkqQCw1GSpIKKh2NEXBkRL0XEaxExPSJO3822DRHxfyLi1xHRHhH3VrBUSdIBqqLhGBEfA24DbgRagWeARyJidBe7DAZWA18B/q0iRUqSDniVPnK8Brg3M6dkZltmXgUsBz7d2caZuSgzr87Me4G1FaxTknQAq1g4RsQg4GRgWmHVNOA9lapDkqQ9GVDB13orUAesLCxfCXygN14gIi4HLgdoaGhgxowZADQ2NjJkyBDmz58PwGGHHca4ceOYOXMmAHV1dbS0tDBv3jxeffVVAJqbm1m7di0wvDdK65dWrFjBsmXLgNLPe9iwYcybNw+AoUOHctxxxzFz5kwyk4igtbWVF198kY0bNwLQ1NTEhg0bWL58ObBvn9PKlaVmddRRRzFo0CAWLlwIwPDhwxk9ejSzZs0CYODAgZx44om0tbWxefNmACZMmMCqVatYtWoVAGPGjCEiWLRoEQAjRoygoaGBOXPmADB48GBOOOEEXnjhBbZs2QLAxIkTWb58OWvWrCn/dM7s5Z92/zFjxoya+ZzGjh1LZrJ48WIARo4cyciRI5k7dy4AhxxyCM3NzcyePZtt27YB0NLSwpIlS1i3bh0A48aNY+vWrSxduhSAUaNGUV9fT1tbGwCHHnooTU1NzJo1i/b2dgBaW1tZuHAh69evB2D8+PFs2rQJf990bc2aNb3yOXVXZGYvv4UuXiiiEXgZmJSZT3VYfj3wicx8+x72/xGwOjMv6c7rtba25uOPP74PFZdc+20ba1duunhdtUuoWbabrtluuma76VpvtZv6+vrpmXnKnrar5DXH1UA7cERh+dt489GkJElVU7FwzMytwHTgrMKqsyj1WpUkqSZU8pojwC3A/RHxc+Bp4AqgEbgDICLuA8jMi3bsEBHvKD8cBrxefr41M+dWsnBJ0oGjouGYmQ9ExAjgOqABmAN8MDMXlzfp7H7HmYXn5wKLgbH7q05J0oGt0keOZObtwO1drHtfJ8tif9ckSVJHjq0qSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUoHhKElSgeEoSVKB4ShJUkHFwzEiroyIlyLitYiYHhGn72H7M8rbvRYRCyPiikrVKkk6MFU0HCPiY8BtwI1AK/AM8EhEjO5i+2OAH5e3awW+DHw9Ii6oTMWSpANRpY8crwHuzcwpmdmWmVcBy4FPd7H9FcCyzLyqvP0U4NvA5ypUryTpAFSxcIyIQcDJwLTCqmnAe7rY7bROtn8UOCUiBvZuhZIklURmVuaFIhqBl4EzMvPJDsv/ArgwM5s62effge9k5l92WDYJeAJozMzlhe0vBy4vP20C5vX6G6m+twKrq12E+hzbjfZGf2w3YzJz5J42GlCJSgqKaRydLNvT9p0tJzO/BXxr70urfRHxy8w8pdp1qG+x3WhvHMjtppLXHFcD7cARheVvA1Z2sc+KLrbfDqzp1eokSSqrWDhm5lZgOnBWYdVZlHqjduZZ4AOdbP/LzNzWuxVKklRS6d6qtwCXRMRlEdEcEbcBjcAdABFxX0Tc12H7O4CjIuLW8vaXAZcAX6tw3bWkX5821n5ju9HeOGDbTcU65Ox8wYgrgWuBBmAO8N93dNCJiH8FyMz3ddj+DOBvgROAZcDfZOYdFS1aknRAqXg4SpJU6xxbVZKkAsNRkqQCw1GSpALDsQ+JCD8v9VjHdhMRsbttJZX4y7YPyczXq12D+p7MfD0ihpYf2wNP6gZ7q/YBEXE08EngncACSmPGzgFmZ+a6iAh/6akoIpopzYTTCswHlgC/Ap7KzN+Ut7HtSJ0wHGtceU7Lh4BDgF8AEykNobcWeBL428xcUL0KVYsi4lhKc6GuBJ4G3k5pKMbBlILyrswsznijA1xEjKI0CtmPM3PtbrYb2N9HKTMca1xE3AEcCXwqM1eUl40G/pDSPJhDgMsy8wfVq1K1JiK+CRwF/GFmbiwvGwV8ELiU0vRxV2fm3dWrUrUmIr4OfAb4D+CnwD3ATzNzS4dtRgMfBb7ecXl/YzjWuIh4CvhhZn61PIdlZub2Duu/BxwOfKi8zg9URMSPgV9k5vURUQeQme0d1t8MvBd4f2ZuqlKZqjER8Szwr8C/AxcCp1Oa5OEh4J7MnBERfwV8IjPHV63QCrBDTu37KXBhRAzNzG2ZuT0iBkbEIeX13wCOB95lMKqDR4FLI+Ltmdmeme0RMag86TjA3cAo4N3VK1G1pDzn7lLgpcy8BzgbaAFuoxSSv4iI2ZSuY3+9aoVWiOFY+/6J0jXGJyLiPIBySG4ur19F6bTr81WqT7Xph5T+4n8kIj4JpZlxyrPjQOn//pHAv1WpPtWe9cB9wCyAzNyemb/OzL8B3gOcBrRRum7d7wck97RqDdvRkzAixgM3AadSmhfzZ8AjwATgAmBRZn60epWqFpVv3/gypdNjA4FpwGOUOnX9LvCrzLyoehWqlnXWkzki7gWOzczTq1NV5RiOfUREHExpbssPUDoVdgKlI4O7gfszc3EVy1MNKd/of1D5VOrBwInAJOD9wEnAS8B3gKk7OnlJ5cEiuuy3UL6U8wPgm5n5/YoWVwWGY40qN9SPACMp3caxAHgyMzeUf+ElMDQzV1exTPUR5U45r5fPRByWmeurXZP6lnKHwFMy89mnyzWPAAADNklEQVRq11IJhmMNKp8Ouxv4PeB14GUggFcpnRb7bma+WN72IEfOEez85XUMsLizLvbe8K/O7KndHKjskFObrgaagA9m5ihK9zTeTGlUnHOBWyJiJDiknHbxGWAmcEdEnBsRR+y4jQNK58siYlhEnFP+hSjBHtoNQLndfKhDb+d+zyPHGlS+t/H7mXlLYXkdpXvT7gYWZObZ1ahPtal8j9prwABKvQuXAN8HplIaanB9RFwBXJKZp1avUtUS203nPHKsMRExgNIR4gU7jg4joi4i6sr3qz0JXAEcFREt1axVtaPcVrYBU8o9CcdQ+iPqw5SGGXw8Ij4P/AnevqEy203XPHKsQRFxKvBd4EHglsxcWVh/NKX7jZoy8+UqlKgaExENwMeBuZn5aGFdK3BZef1w4GjbjcB2szuGY40p91I9iNL4lzdSOtXxIPAA8Bvgdyhdd2zOzHdWq07VnnJX+8zM1zrO27ijE05E/DWl69it1apRtcd207kB1S5Auyp3sHkdmBIR/whcQqlDzsXARmAL8HPgs9WqUbUpMzfv+OXWyc3bQygNGHFPNWpT7bLddM4jxxoSEcOAjR0baPlI8mDgLZRGNnk1Mw+oc//avc7aTSfbHAx8DPhehyHkdACz3eye4VhDIuJOSkeFP6d0z9GGTrYZnk5wrA662W4Oz8z/qHhxqlm2m90zHGtERHyCUiecDZQmMv4JpZkVngdeLp/6eAulYb++kJmzq1asakYX7eafKbWbZeV2cwjwD8D/ysw5VStWNcN2s2eGY42IiClAO6UBxs+ndI3xWGAepRndf0ppYIDbMvOAuRFXu2e70d6w3eyZ4VgDyvc2XgsMy8w/7bD8BOBTwGRK1x0PB76dmX9UlUJVU2w32hu2m+4xHGtERAwHRmXmr8tDNG0rdMz5GPA94KTM/FW16lRtsd1ob9hu9sxbOWpEZq4D1pUfb4WdPVUjM9uBYcBrB2pDVedsN9obtps9MxxrWGFQ8aHA9dWqRX2H7UZ7w3azK0+r9hHlWRTanYVDPWG70d6w3RiOkiS9ibNySJJUYDhKklRgOEqSVGA4SpJUYDhKklRgOEqSVPD/AUcFJNSCbwTEAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 3-qubit W state, first and second steps\n", + "n = 3\n", + "q = QuantumRegister(n) \n", + "c = ClassicalRegister(n)\n", + "W_states = QuantumCircuit(q,c) \n", + " \n", + "W_states.x(q[2]) #start is |100>\n", + "F_gate(W_states,q,2,1,3,1) # Applying F12\n", + "F_gate(W_states,q,1,0,3,2) # Applying F23\n", + " \n", + "for i in range(3) :\n", + " W_states.measure(q[i] , c[i]) \n", + "\n", + "shots = 1024\n", + "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", + "print('start W state 3-qubit (steps 1 + 2) on', backend, \"N=\", shots,time_exp)\n", + "result = execute(W_states, backend=backend, shots=shots)\n", + "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", + "print('end W state 3-qubit (steps 1 + 2) on', backend, \"N=\", shots,time_exp)\n", + "plot_histogram(result.result().get_counts(W_states))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Three-qubit W state, full circuit\n", + "\n", + "In the previous step, we got an histogram compatible with the state:\n", + "\n", + "$$ |\\varphi_{2} \\rangle =F_{2,3}\\, \\, |\\varphi_{1} \\rangle=F_{2,3}\\, \\, (\\frac{1}{\\sqrt{3}} \\: |1 0 0 \\rangle \\: + \\sqrt{\\frac{2}{3}} \\: |1 1 0 )= \\frac{1}{\\sqrt{3}} \\: (|1 0 0 \\rangle \\: + |1 1 0 \\:\\rangle + |1 1 1\\rangle) $$\n", + "\n", + "NB: Again, depending on the backend, it happens that the order of the qubits is modified, but without consequence for the state finally reached.\n", + "\n", + "It looks like we are nearing the goal.\n", + "\n", + "Indeed, two $cNOT$ gates will make it possible to create a W state.\n", + "\n", + "Run the following cell to see what happens. Did we succeed?" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start W state 3-qubit on qasm_simulator N= 1024 08/01/2019 17:40:04\n", + "end W state 3-qubit on qasm_simulator N= 1024 08/01/2019 17:40:04\n" + ] + }, + { + "data": { + "image/png": "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fvjhXH755UybNo2IYPr06XzgA6/3a/u7v/s77rnnnlq9NKlPqdqtHNXmrRySpLK+eCuHJEn7BcNRkqQSw1GSpBLDUZKkEsNRkqQSw1GSpBLDUZKkEsNRkqQSw1GSpBLDUZKkEsNRkqQSw1GSpBJn5ZB6wZfuGFbrEvqsaz+1qdYlSHvlkaMkSSWGoyRJJYajJEklhqMkSSWGYw099NBDnHbaaZx88sncfPPNb1j/ne98hzPPPJOzzjqLc889l6eeegqAhx9+mKlTp3LmmWcydepUHn300V3btLW18cUvfpFTTz2Vd73rXTzwwANVez2S1F/YW7VG2tvb+dKXvsScOXNobGxk2rRpnHPOORx//PG72lxwwQV8+tOfBmDu3LlceeWV3HvvvQwfPpzvf//7jBgxgmXLlvFHf/RHLF26FIAbbriBhoYGnnjiCV577TU2bbJnoCR1l+FYIwsWLODYY49lzJgxAMyYMYO5c+fuFo5Dhw7d9Xjr1q1EBAAnnnjiruVNTU288sorbN++nUGDBnH33Xfzq1/9CoCDDjqI4cOHV+HVSFL/YjjWSGtrK+94xzt2PW9sbGTBggVvaHf77bcza9Ys2trauP/++9+w/oEHHuDEE09k0KBBbN68GYBrrrmGX/ziF4wZM4Zrr72WI488svdeiCT1Q15zrJHMfMOynUeGHV1yySUsXLiQmTNncsMNN+y2bvny5Vx99dXceOONAOzYsYN169bxrne9i5/+9KeceuqpXHXVVb3zAiSpHzMca6SxsZHnnntu1/N169Zx9NFHd9p+xowZPPjgg7ueP/fcc3zyk59k1qxZHHvssQDU19czePBg/uAP/gCA8847j8WLF/fSK5Ck/stwrJGTTjqJlpYW1qxZQ1tbG3PmzOGcc87Zrc3TTz+96/G8efM47rjjANi8eTMf//jH+fKXv8zpp5++q01E8MEPfpCf//znADz66KNMmDChCq9GkvoXrznWyMEHH8y1117LhRdeSHt7OxdddBFNTU1cc801NDc3c+655zJ79mweeeQRBgwYwOGHH86tt94KwOzZs3nmmWe4/vrruf766wG47777aGhoYObMmVx22WX86Z/+KUcccQTf+MY3avkyJWm/FHu69tUfNDc35/z582tdhg5QDjzeOQceVy3V19cvyMxT9tbO06qSJJUYjpIklRiOkiSVGI6S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\n", + "text/plain": [ + "
" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 3-qubit W state\n", + "n = 3\n", + "q = QuantumRegister(n) \n", + "c = ClassicalRegister(n)\n", + "\n", + "W_states = QuantumCircuit(q,c) \n", + "\n", + "W_states.x(q[2]) #start is |100>\n", + "F_gate(W_states,q,2,1,3,1) # Applying F12\n", + "F_gate(W_states,q,1,0,3,2) # Applying F23\n", + "\n", + "if flag_qx2 : # option ibmqx2 \n", + " W_states.cx(q[1],q[2]) # cNOT 21\n", + " W_states.cx(q[0],q[1]) # cNOT 32\n", + " \n", + "else : # option ibmqx4 \n", + " cxrv(W_states,q,1,2)\n", + " cxrv(W_states,q,0,1)\n", + "\n", + "for i in range(3) :\n", + " W_states.measure(q[i] , c[i]) \n", + "\n", + "shots = 1024\n", + "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", + "print('start W state 3-qubit on', backend, \"N=\", shots,time_exp)\n", + "result = execute(W_states, backend=backend, shots=shots)\n", + "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", + "print('end W state 3-qubit on', backend, \"N=\", shots,time_exp)\n", + "plot_histogram(result.result().get_counts(W_states))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now you get an histogram compatible with the final state $|W_{3}\\rangle$ through the following steps:\n", + "\n", + "$$ |\\varphi_{3} \\rangle = cNOT_{2,1}\\, \\, |\\varphi_{2} \\rangle =cNOT_{2,1}\\,\\frac{1}{\\sqrt{3}} \\: (|1 0 0 \\rangle \\: + |1 1 0 \\rangle\\: + |1 1 1\\rangle) = \\frac{1}{\\sqrt{3}} \\: (|1 0 0 \\rangle \\: + |0 1 0 \\: + |0 1 1\\rangle) $$\n", + "\n", + "$$ |W_{3} \\rangle = cNOT_{3,2}\\, \\, |\\varphi_{3} \\rangle =cNOT_{3,2}\\,\\frac{1}{\\sqrt{3}} \\: (|1 0 0 \\rangle \\: + |010 \\: \\rangle+ |0 1 1\\rangle) = \\frac{1}{\\sqrt{3}} \\: (|1 0 0 \\rangle \\: + |0 1 0 \\: + |0 0 1\\rangle) $$\n", + "\n", + "Bingo!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Four-qubit W state\n", + "\n", + "In this section, the production of a four-qubit W state will be obtained by extending the previous circuit.\n", + "\n", + "In this circuit, the starting state is now: $ |\\varphi_{0} \\rangle \\, = \\, |1000\\rangle$.\n", + "\n", + "A $F$ gate was added at the beginning of the circuit and a $cNOT$ gate was added before the measurement phase.\n", + "\n", + "The entire circuit corresponds to:\n", + "\n", + "$$ |W_{4}\\rangle \\,=\\, cNOT_{4,3}\\, \\, cNOT_{3,2}\\, \\, cNOT_{2,1}\\, \\, F_{3,4} \\, \\, F_{2,3} \\, \\, F_{1,2} \\, \\,|\\varphi_{0} \\rangle \\, $$ \n", + "\n", + "Run the following circuit and see what happens." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start W state 4-qubit qasm_simulator N= 1024 08/01/2019 17:40:07\n", + "end W state 4-qubit on qasm_simulator N= 1024 08/01/2019 17:40:07\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdAAAAFOCAYAAAA2MUwzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3X181XXdx/HXh3EjQ0AHC0eISNAEQ5ygoAGCSqKWGHVpat50Z6gXyUVddkUiUmllkaKhppfkLSUqXhplEaIiRmCAgIEoISBsKiB3gjoYn+uP72/rbGyw89t2ztnO+/l47ME5v9/3nH1+fLd9zu97a+6OiIiIJKdZugMQERFpjJRARUREYlACFRERiUEJVEREJAYlUBERkRiUQEVERGJQAhUREYlBCVRERCQGJVAREZEYmqc7gHTq0KGDd+3aNd1hiIhIBnn11Ve3uHv+ocpldQLt2rUrc+fOTXcYIiKSQfLy8tbXppyacEVERGJQAhUREYlBCVRERCQGJVAREZEYlEBFRERiUAIVERGJQQlUREQkBiVQERGRGJRARUREYlACFRERiUEJVEREJAYlUBERkRiUQEVERGJQAhUREYlBCVRERCQGJVAREZEYlEBFRERiUAIVERGJQQlUREQkBiVQERGRGJRARUREYlACFRERiUEJVEREJAYlUBHJaHPmzOGUU06hX79+3H777Qecnzp1KgMHDmTQoEFccMEFvP322xXnNm7cyKhRoxgwYAADBw5kw4YNAFx77bWceOKJDBkyhCFDhrBixYqUXY80Hc3THYCISE3Kysq4/vrrmTlzJp07d+bMM89kxIgRHHfccRVlTjjhBObOnUtubi7Tpk1j4sSJTJs2DYCrr76acePGMWzYMD744AOaNfv3PcOkSZMYOXJkyq9Jmg7dgYpIxlq8eDHHHnss3bp1o2XLlowaNYpnn322UpnBgweTm5sLQP/+/SkuLgbg9ddfZ9++fQwbNgyAww8/vKKcSH1QAhWRjFVSUsInP/nJiuedO3empKSkxvKPPPIIZ511FgD/+te/aN++PZdffjmnn346N954I2VlZRVlb775ZgYNGsT48eP5+OOPG+4ipMlSAhWRjOXuBxwzs2rLzpgxg6VLlzJmzBgA9u3bx4IFC/jRj37Ec889x7p165g+fToAEyZMYOHChTz33HNs376dKVOmNNxFSJOlBCoiGatz585s2rSp4nlxcTFHHXXUAeVeeOEFJk+ezPTp02nVqlXFa0844QS6detG8+bNOe+881i+fDkARx11FGZGq1atuOSSS1iyZElqLkiaFCVQEclYJ510EmvXrmX9+vWUlpYyc+ZMRowYUanM8uXLGTduHNOnTyc/P7/Sa7dv386WLVsAmDdvHoWFhQC88847QLjD/eMf/0ivXr1SdEVNQ11GRnfs2LFi9PMll1xScfzFF19k6NChDBkyhHPOOYe1a9em5FrqwqprIskWRUVFPnfu3HSHISIH8de//pXx48dTVlbGpZdeyne/+11uueUWioqKOOecc/jiF7/IypUr6dSpEwBdunSpaKp9/vnnmTBhAu7OiSeeyG233UbLli0ZOXIkW7Zswd3p06cPkydP5vDDD0/nZTYaZWVlnHzyyZVGRt93332VRka/9NJL9OvXr2Jk9Pz58ytGRh999NGVEmq5k08+mUceeYTCwkLuv/9+lixZwtSpU1N2XYny8vIWu3v/Q5XTNBYRyWjDhw9n+PDhlY6NHz++4vFTTz1V42uHDRvG/PnzDzj+9NNP11+AWSZxZDRQMTI6MYEOHjy44nH//v2ZMWPGId/XzNi1axcAO3furLapPtMogYqISK1VNzJ68eLFNZZPHBkN8NFHH3HGGWeQk5PD2LFjOe+88wCYMmUKF110EYcddhht27Zl9uzZDXcR9UQJVEREai3OyOhZs2ZVHFu+fDkFBQWsW7eOkSNH0rt3b4499ljuvvtuHnvsMfr3788dd9zBDTfcwB133NFg11EfNIhIRERqrS4jowEKCgoA6NatG4MGDWL58uVs2bKF1157jf79Q7fjqFGjWLRoUQNfSd0pgYqISK3VZWT09u3bKxat2Lp1KwsXLqSwsJAjjjiCnTt3smbNGiAM/vr0pz+duouKSU24IiJSa82bN+fWW2/ly1/+csXI6F69elUaGT1x4kR2797N1772NeDfI6NXr17NuHHjaNasGfv37+e6666rGHx0++23c8UVV9CsWTOOOOII7rzzznReZq1oGoumsYiISILaTmNRE66IiEgMSqAiIiIxKIGKiIjEoAQqIiISgxKoiIhIDEqgIiIiMWgeaJrMmTOnYoeJyy67jLFjx1Y6P3XqVB5++GGaN29Ox44dufPOOzn6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\n", + "text/plain": [ + "
" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 4-qubit W state\n", + "n = 4\n", + "q = QuantumRegister(n) \n", + "c = ClassicalRegister(n)\n", + "W_states = QuantumCircuit(q,c) \n", + "\n", + "W_states.x(q[3]) #start is |1000>\n", + "F_gate(W_states,q,3,2,4,1) # Applying F12\n", + "F_gate(W_states,q,2,1,4,2) # Applying F23\n", + "F_gate(W_states,q,1,0,4,3) # Applying F34 \n", + "cxrv(W_states,q,2,3) # cNOT 21\n", + "if flag_qx2 : # option ibmqx2 \n", + " W_states.cx(q[1],q[2]) # cNOT 32\n", + " W_states.cx(q[0],q[1]) # cNOT 43\n", + "\n", + "else : # option ibmqx4 \n", + " cxrv(W_states,q,1,2)\n", + " cxrv(W_states,q,0,1)\n", + "\n", + "for i in range(4) :\n", + " W_states.measure(q[i] , c[i]) \n", + "\n", + "# circuits = ['W_states']\n", + "\n", + "shots = 1024\n", + "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", + "print('start W state 4-qubit ', backend, \"N=\", shots,time_exp)\n", + "result = execute(W_states, backend=backend, shots=shots)\n", + "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", + "print('end W state 4-qubit on', backend, \"N=\", shots,time_exp)\n", + "plot_histogram(result.result().get_counts(W_states))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, if you used a simulator, you get an histogram clearly compatible with the state:\n", + "\n", + "$$ |W_{4}\\rangle \\;=\\; \\frac{1}{2} \\: (\\:|1000\\rangle + |0100\\rangle + |0010\\rangle + |0001\\rangle \\:) $$\n", + "\n", + "If you used a real quantum computer, the columns of the histogram compatible with a $|W_{4}\\rangle$ state are not all among the highest one. Errors are spreading..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Five-qubit W state\n", + "\n", + "In this section, a five-qubit W state will be obtained, again by extending the previous circuit.\n", + "\n", + "In this circuit, the starting state is now: $ |\\varphi_{0} \\rangle = |10000\\rangle$.\n", + "\n", + "A $F$ gate was added at the beginning of the circuit and an additionnal $cNOT$ gate was added before the measurement phase.\n", + "\n", + "$$ |W_{5}\\rangle = cNOT_{5,4} cNOT_{4,3} cNOT_{3,2} cNOT_{2,1} F_{4,5} F_{3,4} F_{2,3} F_{1,2} |\\varphi_{0} \\rangle $$\n", + "\n", + "Run the following cell and see what happens." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start W state 5-qubit on qasm_simulator N= 1024 08/01/2019 17:40:10\n", + "end W state 5-qubit on qasm_simulator N= 1024 08/01/2019 17:40:10\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdAAAAFWCAYAAADZtMzFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3XmcVNWZ//HPIzsCSmOL3SIgEdoGkTTiloACSoJmEtxG40/HJRoGneA4JHGiybhMfpoE45YYx2XGn7iOG0aDYVwCiorBCIQItIjTAkI3yCYgW0Pz/P44t7FoupuuQ3dVNXzfr1e9qLp17uXU01X11L1nM3dHRERE0nNAtisgIiLSHCmBioiIRFACFRERiaAEKiIiEkEJVEREJIISqIiISAQlUBERkQhKoCIiIhGUQEVERCK0zHYFsqlLly7evXv3bFdDRERyyF//+tdV7p6/p3L7dQLt3r07U6ZMyXY1REQkh+Tl5S1uSDldwhUREYmgBCoiIhJBCVRERCSCEqiIiEgEJVAREZEISqAiIiIRlEBFREQiKIGKiIhEUAIVERGJoAQqIiISQQlUREQkghKoiIhIBCVQERGRCEqgIiIiEZRARUREIiiBioiIRFACFRERiaAEKiIiEkEJVEREJIISqIiISAQlUBERkQhKoCIiIhGUQEVERCIogTax119/nRNOOIHjjjuOu+++e7fnf/e733HSSScxePBgzjrrLD799NOdzz311FMMGjSIQYMG8dRTT+3cXllZybXXXsvxxx/PiSeeyEsvvZSR15Jpip2I5DJz92zXIWtKSkp8ypQpTXb8qqoqjj/+eCZOnEhhYSGnnXYaDz30EEcfffTOMm+99RbHHXcc7du35+GHH+btt9/m4YcfZu3atQwfPpwpU6ZgZgwbNoypU6dy8MEH84tf/IIdO3bw05/+lB07drB27Vq6dOnSZK8jGxQ7EcmWvLy8me4+aE/ldAbahGbOnMmRRx5Jz549ad26Neeccw6TJ0/epcyQIUNo3749AIMGDaK8vByAKVOmMHToUDp37szBBx/M0KFD+dOf/gTAE088wbXXXgvAAQccsE8mAMVORHKdEmgTqqio4PDDD9/5uLCwkIqKijrLP/7445x++ukAlJeX77ZveXk569atA+C2225j6NChXHbZZXz22WdN9Aqy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\n", + "text/plain": [ + "
" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 5-qubit W state\n", + "n = 5\n", + "q = QuantumRegister(n) \n", + "c = ClassicalRegister(n)\n", + "W_states = QuantumCircuit(q,c) \n", + "\n", + "W_states.x(q[4]) #start is |10000>\n", + "F_gate(W_states,q,4,3,5,1) # Applying F12\n", + "F_gate(W_states,q,3,2,5,2) # Applying F23\n", + "F_gate(W_states,q,2,1,5,3) # Applying F34\n", + "F_gate(W_states,q,1,0,5,4) # Applying F45\n", + "W_states.cx(q[3],q[4]) # cNOT 21\n", + "cxrv(W_states,q,2,3) # cNOT 32\n", + "if flag_qx2 : # option ibmqx2 \n", + " W_states.cx(q[1],q[2]) # cNOT 43\n", + " W_states.cx(q[0],q[1]) # cNOT 54\n", + " \n", + "else : # option ibmqx4 \n", + " cxrv(W_states,q,1,2)\n", + " cxrv(W_states,q,0,1) \n", + " \n", + "for i in range(5) :\n", + " W_states.measure(q[i] , c[i]) \n", + "\n", + "shots = 1024\n", + "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", + "print('start W state 5-qubit on', backend, \"N=\", shots,time_exp)\n", + "result = execute(W_states, backend=backend, shots=shots)\n", + "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", + "print('end W state 5-qubit on', backend, \"N=\", shots,time_exp)\n", + "plot_histogram(result.result().get_counts(W_states))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, if you used the simulator, you see an histogram compatible with the state:\n", + "\n", + "$$|W_{5}\\rangle=\\frac{1}{\\sqrt{5}}\\:(\\:|10000\\rangle + |01000\\rangle + |00100\\rangle +|00010\\rangle\\ +|00001\\rangle)$$\n", + "\n", + "But if you were running the program on one of the available real quantum computers, things are still less clear than in the previous case." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Conclusion:\n", + "\n", + "When the quantum computer simulator is used, the results accurately reflect the expected spectrum of frequency corresponding to a given $n$ value.\n", + "\n", + "For $n = 3$ on a real quantum computer, the results are obviously in accordance with W states.\n", + "\n", + "The errors amplify significantly for higher $n$ values, but the histogram shows the persistence of some frequency peaks compatible with W states creation.\n", + "\n", + "One cause of errors is the increasing number of gates. Even for an ideal quantum computer, where all the qubits are connected together bidirectionally, the number of elementary gates necessary for building the $F$ gates increases linearly with n, just like the number of late $cNOT$ in this model. Another cause of error is the interval between successive values of $\\theta_{k}$. Indeed these intervals decreases significantly for lower $k$ as $n$ increases.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Mathematical appendix :\n", + "\n", + "The operator allowing to deterministically obtain a n-qubit W state from the starting state $\\, |00...0 \\rangle$ can be coined a $W_{n}$ gate.\n", + "\n", + "For a three-qubit W state, the equation in Dirac notation is:\n", + "\n", + "$$W_{3}\\;\\, |000 \\rangle=\\sqrt{\\frac{1}{3}}(|100\\rangle + |010\\rangle + |001\\rangle)$$\n", + "\n", + "which becomes in matrix notation:\n", + "\n", + "$$\\begin{pmatrix}0 & 0 & 0 & 0 & \\;\\;1\\;\\; & 0 & 0 & 0\\\\\\sqrt{\\frac{1}{3}} & -\\sqrt{\\frac{1}{3}} & -\\sqrt{\\frac{1}{6}} & \\sqrt{\\frac{1}{6}} & 0 & 0 & 0 & 0\\\\\\sqrt{\\frac{1}{3}} & \\sqrt{\\frac{1}{3}} & -\\sqrt{\\frac{1}{6}} & -\\sqrt{\\frac{1}{6}} & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & \\;\\;1\\;\\; & 0 & 0\\\\\\sqrt{\\frac{1}{3}} & 0 & \\sqrt{\\frac{2}{3}}\n", + " & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & 0 & \\sqrt{\\frac{1}{2}}\n", + " & -\\sqrt{\\frac{1}{2}}\\\\0 & 0 & 0 & 0 & 0 & 0 & \\sqrt{\\frac{1}{2}} & \\sqrt{\\frac{1}{2}}\\\\0 & \\sqrt{\\frac{1}{3}} & 0 & \\sqrt{\\frac{2}{3}}\n", + " & 0 & 0 & 0 & 0\\end{pmatrix} \\;\n", + " \\begin{pmatrix}1\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\end{pmatrix} = \n", + " \\begin{pmatrix}0\\\\\\sqrt{\\frac{1}{3}}\\\\\\sqrt{\\frac{1}{3}}\\\\0\\\\\\sqrt{\\frac{1}{3}}\\\\0\\\\0\\\\0\\end{pmatrix}$$\n", + " \n", + " One can easily verify that:\n", + " \n", + " $$W_{3}^{\\dagger}W_{3} = I$$\n", + " \n", + " and that there is reversibility:\n", + " \n", + " $$W_{3}^{\\dagger}\\;\\, \\sqrt{\\frac{1}{3}}(|100\\rangle + |010\\rangle + |001\\rangle) = |000 \\rangle$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/community/teach_me_qiskit_2018/w_state/W State 2 - Let's Make a Deal.ipynb b/community/awards/teach_me_qiskit_2018/w_state/W State 2 - Let's Make a Deal.ipynb similarity index 76% rename from community/teach_me_qiskit_2018/w_state/W State 2 - Let's Make a Deal.ipynb rename to community/awards/teach_me_qiskit_2018/w_state/W State 2 - Let's Make a Deal.ipynb index a0cd20d93..8fccbf8be 100644 --- a/community/teach_me_qiskit_2018/w_state/W State 2 - Let's Make a Deal.ipynb +++ b/community/awards/teach_me_qiskit_2018/w_state/W State 2 - Let's Make a Deal.ipynb @@ -27,7 +27,16 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\decpi\\Anaconda3\\envs\\q7env\\lib\\site-packages\\marshmallow\\schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], "source": [ "# useful additional packages \n", "import matplotlib.pyplot as plt\n", @@ -37,8 +46,8 @@ "from pprint import pprint\n", "\n", "# importing Qiskit\n", - "from qiskit import Aer, IBMQ\n", - "from qiskit.backends.ibmq import least_busy\n", + "from qiskit import Aer, IBMQ \n", + "from qiskit.providers.ibmq import least_busy \n", "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister, execute\n", "\n", "# import basic plot tools\n", @@ -104,7 +113,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Your choice for the backend is: qasm_simulator_py flag_qx2 is: True\n" + "Your choice for the backend is: qasm_simulator flag_qx2 is: True\n" ] } ], @@ -117,7 +126,7 @@ "# \"True\" is also better when using the simulator\n", "\n", "# Use the IBM Quantum Experience\n", - "# backend = least_busy(IBMQ.backends(simulator=False))\n", + "#backend = least_busy(IBMQ.backends(filters=lambda x: not x.configuration().simulator)) #\n", "\n", "flag_qx2 = True\n", "if backend == 'ibmqx4':\n", @@ -284,39 +293,90 @@ "l\n", "Game master: Your choice was the left door\n", "███████████████ ███████████████ ███████████████\n", + "███████████████ ███████████████ █ █\n", + "███████████ ██ ███████████████ █ ( ) █\n", + "██████████ ███ █████ ████ █ ( ) █\n", + "█████████ ████ ███ █████████ █ / O O \\ █\n", + "████████ █████ ███ █████████ █ )|( █\n", + "█ ████ ██████ ███ █████████ █ @ █\n", + "██ ██ ███████ ███ █████████ █ = █\n", + "███ ████████ █████ ████ █ Y █\n", + "████ █████████ ███████████████ █ █\n", + "███████████████ ███████████████ ███████████████ \n", + "\n", + "I opened the right door and you see a goat\n", + "You get now an opportunity to change your choice!\n", + "Do you want to switch for the central door?\n", + " Answer by (y/n) + enter\n", + "y\n", + "███████████████ ███████████████ ███████████████\n", + "███████████████ █ █ █ █\n", + "███████████ ██ █ ( ) █ █ ( ) █\n", + "██████████ ███ █ ( ) █ █ ( ) █\n", + "█████████ ████ █ / O O \\ █ █ / O O \\ █\n", + "████████ █████ █ )|( █ █ )|( █\n", + "█ ████ ██████ █ @ █ █ @ █\n", + "██ ██ ███████ █ = █ █ = █\n", + "███ ████████ █ Y █ █ Y █\n", + "████ █████████ █ █ █ █\n", + "███████████████ ███████████████ ███████████████ \n", + "\n", + "Game master: You opened the central door and won a goat! Sorry!\n", + "\n", + "YOUR STATS\n", + "nb of games: 1 total nb won: 0 first choice: left 1 center 0 right 0\n", + "nb sticking: 0 nb won when sticking: 0 nb switching: 1 nb won when switching: 0\n", + "Another game? Answer by (y/n) + enter\n", + "y\n", + "███████████████ ███████████████ ███████████████\n", + "███████████████ ███████████████ ███████████████\n", + "███████████████ ███████████████ ███████████████\n", + "███ █████████ █████ ████ ███ █████\n", + "███ █████████ ███ █████████ ███ ███ ███\n", + "███ █████████ ███ █████████ ███ ███ ███\n", + "███ █████████ ███ █████████ ███ █████\n", + "███ █████████ ███ █████████ ███ ██ ████\n", + "███ ████ █████ ████ ███ ███ ███\n", + "███████████████ ███████████████ ███████████████\n", + "███████████████ ███████████████ ███████████████ \n", + "\n", + "Game master: Your choice? letter l: left door, c: central door, r: right door + enter\n", + "r\n", + "Game master: Your choice was the right door\n", + "███████████████ ███████████████ ███████████████\n", "███████████████ █ █ ███████████████\n", - "███████████ ██ █ ( ) █ ███████████████\n", - "██████████ ███ █ ( ) █ ███ █████\n", - "█████████ ████ █ / O O \\ █ ███ ███ ███\n", - "████████ █████ █ )|( █ ███ ███ ███\n", - "█ ████ ██████ █ @ █ ███ █████\n", - "██ ██ ███████ █ = █ ███ ██ ████\n", - "███ ████████ █ Y █ ███ ███ ███\n", - "████ █████████ █ █ ███████████████\n", + "███████████████ █ ( ) █ ███████████ ██\n", + "███ █████████ █ ( ) █ ██████████ ███\n", + "███ █████████ █ / O O \\ █ █████████ ████\n", + "███ █████████ █ )|( █ ████████ █████\n", + "███ █████████ █ @ █ █ ████ ██████\n", + "███ █████████ █ = █ ██ ██ ███████\n", + "███ ████ █ Y █ ███ ████████\n", + "███████████████ █ █ ████ █████████\n", "███████████████ ███████████████ ███████████████ \n", "\n", "I opened the central door and you see a goat\n", "You get now an opportunity to change your choice!\n", - "Do you want to switch for the right door?\n", + "Do you want to switch for the left door?\n", " Answer by (y/n) + enter\n", - "n\n", + "y\n", "███████████████ ███████████████ ███████████████\n", "█ █ █ █ ███████████████\n", - "█ _______ █ █ ( ) █ ███████████████\n", - "█ / \\ █ █ ( ) █ ███ █████\n", - "█ ° _______ ° █ █ / O O \\ █ ███ ███ ███\n", - "█ / \\ █ █ )|( █ ███ ███ ███\n", - "█ (O) ### (O) █ █ @ █ ███ █████\n", - "█ =+=====+= █ █ = █ ███ ██ ████\n", - "█ || || █ █ Y █ ███ ███ ███\n", - "█ █ █ █ ███████████████\n", + "█ ( ) █ █ ( ) █ ███████████ ██\n", + "█ ( ) █ █ ( ) █ ██████████ ███\n", + "█ / O O \\ █ █ / O O \\ █ █████████ ████\n", + "█ )|( █ █ )|( █ ████████ █████\n", + "█ @ █ █ @ █ █ ████ ██████\n", + "█ = █ █ = █ ██ ██ ███████\n", + "█ Y █ █ Y █ ███ ████████\n", + "█ █ █ █ ████ █████████\n", "███████████████ ███████████████ ███████████████ \n", "\n", - "Game master: You opened the left door and won the car! Congratulations!\n", + "Game master: You opened the left door and won a goat! Sorry!\n", "\n", "YOUR STATS\n", - "nb of games: 2 total nb won: 1 first choice: left 1 center 1 right 0\n", - "nb sticking: 2 nb won when sticking: 1 nb switching: 0 nb won when switching: 0\n", + "nb of games: 2 total nb won: 0 first choice: left 1 center 0 right 1\n", + "nb sticking: 0 nb won when sticking: 0 nb switching: 2 nb won when switching: 0\n", "Another game? Answer by (y/n) + enter\n", "n\n", "Game over\n" @@ -456,8 +516,7 @@ " \n", " \"STATISTICS\"\n", " nb_games = nb_games + 1\n", - " nb_randomnb = nb_randomnb + randomnb\n", - " \n", + "\n", " if Doorfinal == Doorswitch:\n", " nb_switches = nb_switches +1\n", " if c5str[Doorfinal+3] == \"1\":\n", @@ -500,7 +559,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.0" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/teach_me_qiskit_2018/w_state/W State 3 - Monty Hall Problem Solver.ipynb b/community/awards/teach_me_qiskit_2018/w_state/W State 3 - Monty Hall Problem Solver.ipynb similarity index 100% rename from community/teach_me_qiskit_2018/w_state/W State 3 - Monty Hall Problem Solver.ipynb rename to community/awards/teach_me_qiskit_2018/w_state/W State 3 - Monty Hall Problem Solver.ipynb diff --git a/community/awards/teach_me_quantum_2018/README.md b/community/awards/teach_me_quantum_2018/README.md new file mode 100644 index 000000000..e4e4b8c92 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/README.md @@ -0,0 +1,15 @@ +# Teach Me Quantum Award 2018: Top Submissions + +The 'Teach Me Quantum Award' sought out the best lecture materials using Qiskit. For information about the winning submissions, see [here](https://www.ibm.com/blogs/research/2019/01/ibmq-teach-quantum-winners/). + +In this folder you'll find the winning submissions (numbered below) as well as the other high-quality submissions (bullet points below). Note that these materials were prepared using previous versions of Qiskit. We are working to update them, and would appreciate any feedback on which ones to priortize. So don't be shy, and submit [an issue](https://github.com/Qiskit/qiskit-tutorials/issues) to share your comments. + +* [Teach Me Quantum](TeachMeQ/README.ipynb) by Miguel Ramalho. + +* [Quantum Machine Learning](qml_mooc/README.md) by Peter Wittek. + +* [intro2qc](intro2qc/1.Introduction.ipynb) by Mirko Amico. + +* [Introduction to Quantum Computing with QISKit - a pratical guide](basic_intro2qc/QuantumComputingIntroduction.ipynb) by Carla Silva, Vanda Azevedo, Diogo Fernandes, and Inês Dutra. + +* [Bronze: Your First Step to Quantum Programming](bronze/bronze_getting_started.ipynb) by Abuzer Yakaryilmaz, Katrina Kizenbaha and Martins Kalis (QuSoft@Riga). diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/README.ipynb new file mode 100644 index 000000000..539306a4e --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/README.ipynb @@ -0,0 +1,147 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "

Teach Me Quantum

\n", + "\n", + "A university-level course on **Quantum Computing** and **Quantum Information Science** that incorporates [IBM Q Experience](https://quantumexperience.ng.bluemix.net/qx/experience) and [Qiskit](https://www.qiskit.org/). \n", + "This course is adequate for general audiences without prior knowledge on Quantum Mechanics and Quantum Computing (see [prior knowledge](#prior-knowledge)), has an estimated average duration of **10 weeks at 3h/week** (see [duration](#duration)) and is meant to be the entrypoint into the **Quantum World**.\n", + "\n", + "

\n", + "\n", + "This course is **Open-source** and appropriate for both _autodidacticism_ as well as _classroom teaching_ by educators, professors and lecturers in their own classes. Given the dynamic nature of the topic, any open-source contributions and future improvements are welcome.\n", + "\n", + "## Course Overview\n", + "\n", + " * 📁 [Week_0-Hello_Quantum_World](Week_0-Hello_Quantum_World/README.ipynb)\n", + " * 📖 [Slides](Week_0-Hello_Quantum_World/slides.pdf)\n", + " * 📁 [Week_1-Quantum_Tools](Week_1-Quantum_Tools/README.ipynb)\n", + " * 📖 [Slides](Week_1-Quantum_Tools/slides.pdf)\n", + " * 📁 [Exercises](Week_1-Quantum_Tools/exercises/README.ipynb)\n", + " * 📁 [Week_2-Quantum_Information_Science](Week_2-Quantum_Information_Science/README.ipynb)\n", + " * 📖 [Slides](Week_2-Quantum_Information_Science/slides.pdf)\n", + " * 📁 [Exercises](Week_2-Quantum_Information_Science/exercises/README.ipynb)\n", + " * 📁 [Week_3-Quantum_Gates](Week_3-Quantum_Gates/README.ipynb)\n", + " * 📖 [Slides](Week_3-Quantum_Gates/slides.pdf)\n", + " * 📁 [Exercises](Week_3-Quantum_Gates/exercises/README.ipynb)\n", + " * 📁 [Week_4-Quantum_Facts](Week_4-Quantum_Facts/README.ipynb)\n", + " * 📖 [Slides](Week_4-Quantum_Facts/slides.pdf)\n", + " * 📁 [Exercises](Week_4-Quantum_Facts/exercises/README.ipynb)\n", + " * 📁 [Week_5-Quantum_Algorithms](Week_5-Quantum_Algorithms/README.ipynb) (Deutsch's_algorithm)\n", + " * 📖 [Slides](Week_5-Quantum_Algorithms/slides.pdf)\n", + " * 📁 [Exercises](Week_5-Quantum_Algorithms/exercises/README.ipynb)\n", + " * 📁 [Week_6-Quantum_Search](Week_6-Quantum_Search/README.ipynb) (Grover's_algorithm)\n", + " * 📖 [Slides](Week_6-Quantum_Search/slides.pdf)\n", + " * 📁 [Exercises](Week_6-Quantum_Search/exercises/README.ipynb)\n", + " * 📁 [Week_7-Quantum_Factorization](Week_7-Quantum_Factorization/README.ipynb) (Shor's_algorithm)\n", + " * 📖 [Slides](Week_7-Quantum_Factorization/slides.pdf)\n", + " * 📁 [Exercises](Week_7-Quantum_Factorization/exercises/README.ipynb)\n", + " * 📁 [Week_8-High_Level_Quantum_Programming](Week_8-High_Level_Quantum_Programming/README.ipynb) (qiskit-aqua)\n", + " * 📖 [Slides](Week_8-High_Level_Quantum_Programming/slides.pdf)\n", + " * 📁 [Exercises](Week_8-High_Level_Quantum_Programming/exercises/README.ipynb)\n", + " * 📁 [Week_9-State_of_the_Quantum_Art](Week_9-State_of_the_Quantum_Art/README.ipynb)\n", + " * 📖 [Slides](Week_9-State_of_the_Quantum_Art/slides.pdf)\n", + "\n", + "## Prior Knowledge\n", + "Students of this course are expected to be familiar with (this can be done while going through the course):\n", + " * [Python](https://www.python.org/) language\n", + " * [Jupyter](http://jupyter.org/) Notebook environment\n", + " * Some linear algebra: inner and outer products, eigenvalues, norms, transpose, adjoints (complex conjugates), tensor product, ...\n", + "\n", + "## Learning Goals\n", + "After completing this course, students should be able to:\n", + " * Understand the basics of Quantum Mechanics\n", + " * Know how a computing model can be built around Quantum Mechanics\n", + " * Understand the advantages, disadvantages and implications of Quantum Computing\n", + " * Understand Quantum Information Science and how it contrasts with classical information theory\n", + " * Leverage QISKit towards research and development in the _Quantum World_\n", + " * Understand the empirical differences between Quantum Simulators and real Quantum Devices (such as those available in IBMQ)\n", + " * Design, interpret and deploy quantum circuits (simulators and real processors)\n", + " * Know and describe a few of the most common quantum algorithms: Deutsch, Grover, Shor\n", + " * Be able to quickly understand new quantum algorithms based on the same principles: Simon, ...\n", + " * Be able to quickly understand new principles of quantum computing: Adiabatic, ...\n", + " * Understand the impact that the advance of quantum computers can have on the world as we know it\n", + " * Understand High Level applications of near-end quantum algorithms, namely how to use qiskit-aqua for solving real world problems\n", + " * Move on to deeper waters, by exploring according to their heart's desire!\n", + "\n", + "## Duration\n", + " * Estimated average duration of **10 weeks at 3h/week**\n", + " * Duration is flexible depending on level of depth a teacher imposes on each week.\n", + " * Usually 1h theory + 2h practice, except for:\n", + " * week 0 (1h + 0h = 1h)\n", + " * week 1 (1h + 1h = 2h)\n", + " * week 9 (2h + 0h = 2h)\n", + "* Estimated total time: **25h to 30h**.\n", + "\n", + "\n", + "## Customizing Slides\n", + "#### Reusing Slides\n", + "The materials in this course can be adapted to specific classes, contexts, schools,... to the desire of the educators.\n", + "\n", + "The `author`, `date` and `instute` properties of each presentation is defined in the respective `macros.sty` file (this file is an exact copy for each week). If you want to update global settings for all weeks (like the author, update links colors, update code snippets display, ...) you can use the [`sh replicate_macros.sh`](utils/replicate_macros.sh) (linux) | [`replicate_macros.bat`](utils/replicate_macros.bat) (windows) to replicate the changes from a copy of the file for every week's folder (the source file must be in the [utils](utils/) folder, there is already an updated version of [macros.sty](utils/macros.sty) in there).\n", + "\n", + "The constraint for using this materials is to replace the `\\author[]{}` command by the following command: `\\author[LASTNAME]{FIRSTNAME LASTNAME,\\\\ \\scriptsize{based on slides by \\textbf{Miguel Sozinho Ramalho}}}` with the update author info.\n", + "\n", + "#### Animating Slides\n", + "Each `.pdf` file for slides is static, but if you want to include animations you can do so by replacing the `document` class in the first line of the `main.tex` files by `\\documentclass[handout]{beamer}`) and following [these instructions](https://tex.stackexchange.com/a/177060/126771).\n", + "\n", + "\n", + "#### Adding Notes to Slides\n", + "This can also be accomplished by appending the following lines before `\\begin{document}`:\n", + "```tex\n", + "\\usepackage{pgfpages}\n", + "\\setbeameroption{show notes}\n", + "\\setbeameroption{show notes on second screen=right}\n", + "```\n", + "\n", + "#### Compiling LaTeX files\n", + "To achieve this use any LaTeX compiler of your choice, if you have [pdflatex](https://www.tug.org/applications/pdftex/) you can simply do `pdflatex main.tex` on each week's latex folder.\n", + "\n", + "#### Presenting Slides with Notes and/or Animations\n", + "To present the slides with **notes** or with **animations** will only work with an external program, I advise [dannyedel/dspdfviewer](https://github.com/dannyedel/dspdfviewer/releases) which also has dual screen and timer functionality.\n", + "\n", + "---\n", + "\n", + "## Aditional notes\n", + "Each week's slides has a particular theme, that is to help students distinguish between them and strengthen the learning process by fostering association. \n", + "\n", + "## Final remarks\n", + "This was an excelent oportunity to both teach and learn. I have sought to come up with a methodology of how I wanted my quantum education to have been, hopefully this will help others with similar learning tastes. If not, oh well, shift happens...\n", + "\n", + "

\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/README.ipynb new file mode 100644 index 000000000..1f48e35db --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/README.ipynb @@ -0,0 +1,50 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Week 0 - Hello Quantum World\n", + "\n", + " * Motivation\n", + " * Classical vs Quantum Physiscs\n", + " * Nomenclature\n", + " * Superposition Principle\n", + " * Quantum Measurement\n", + " * Why Quantum Computing, anyway?\n", + " \n", + "## Resources\n", + " * [PDF slides](slides.pdf)\n", + " * [slides src](latex/main.tex) Latex files and image resources used in the presentation (useful for PR on slide typos and such)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/beamercolorthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/beamercolorthemematerial.sty new file mode 100755 index 000000000..7fbe50bd2 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/beamercolorthemematerial.sty @@ -0,0 +1,286 @@ +\mode + +% light theme +\newcommand{\useLightTheme}{ +\definecolor{text} {HTML}{000000} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{E0E0E0} +\definecolor{BGgrey02}{HTML}{F5F5F5} +\definecolor{BGgrey03}{HTML}{FAFAFA} +\definecolor{BGgrey04}{HTML}{FFFFFF} +} + + +% dark theme +\newcommand{\useDarkTheme}{ +\definecolor{text} {HTML}{FFFFFF} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{000000} +\definecolor{BGgrey02}{HTML}{212121} +\definecolor{BGgrey03}{HTML}{303030} +\definecolor{BGgrey04}{HTML}{424242} +} + +% PRIMARY -------------------------------------------------------------- +\newcommand{\usePrimary}[3]{ +\definecolor{primary} {HTML}{#1} +\definecolor{primaryD}{HTML}{#2} +\definecolor{textPrimary} {HTML}{#3} +} + +% Primary Red +\newcommand{\usePrimaryRed}{ +\definecolor{primary} {HTML}{F44336} +\definecolor{primaryD}{HTML}{D32F2F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Pink +\newcommand{\usePrimaryPink}{ +\definecolor{primary} {HTML}{E91E63} +\definecolor{primaryD}{HTML}{C2185B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Purple +\newcommand{\usePrimaryPurple}{ +\definecolor{primary} {HTML}{6A1B9A} +\definecolor{primaryD}{HTML}{7B1FA2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Deep Purple +\newcommand{\usePrimaryDeepPurple}{ +\definecolor{primary} {HTML}{673AB7} +\definecolor{primaryD}{HTML}{512DA8} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Indigo +\newcommand{\usePrimaryIndigo}{ +\definecolor{primary} {HTML}{3F51B5} +\definecolor{primaryD}{HTML}{303F9F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Blue +\newcommand{\usePrimaryBlue}{ +\definecolor{primary} {HTML}{2196F3} +\definecolor{primaryD}{HTML}{1976D2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Blue +\newcommand{\usePrimaryLightBlue}{ +\definecolor{primary} {HTML}{03A9F4} +\definecolor{primaryD}{HTML}{0288D1} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Cyan +\newcommand{\usePrimaryCyan}{ +\definecolor{primary} {HTML}{00BCD4} +\definecolor{primaryD}{HTML}{0097A7} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Teal +\newcommand{\usePrimaryTeal}{ +\definecolor{primary} {HTML}{009688} +\definecolor{primaryD}{HTML}{00796B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Green +\newcommand{\usePrimaryGreen}{ +\definecolor{primary} {HTML}{4CAF50} +\definecolor{primaryD}{HTML}{388E3C} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Green +\newcommand{\usePrimaryLightGreen}{ +\definecolor{primary} {HTML}{8BC34A} +\definecolor{primaryD}{HTML}{689F38} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Lime +\newcommand{\usePrimaryLime}{ +\definecolor{primary} {HTML}{CDDC39} +\definecolor{primaryD}{HTML}{AFB42B} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Yellow +\newcommand{\usePrimaryYellow}{ +\definecolor{primary} {HTML}{FFEB3B} +\definecolor{primaryD}{HTML}{FBC02D} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Amber +\newcommand{\usePrimaryAmber}{ +\definecolor{primary} {HTML}{FFC107} +\definecolor{primaryD}{HTML}{FFA000} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Orange +\newcommand{\usePrimaryOrange}{ +\definecolor{primary} {HTML}{FF9800} +\definecolor{primaryD}{HTML}{F57C00} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Deep Orange +\newcommand{\usePrimaryDeepOrange}{ +\definecolor{primary} {HTML}{FF5722} +\definecolor{primaryD}{HTML}{E64A19} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Brown +\newcommand{\usePrimaryBrown}{ +\definecolor{primary} {HTML}{795548} +\definecolor{primaryD}{HTML}{5D4037} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Grey +\newcommand{\usePrimaryGrey}{ +\definecolor{primary} {HTML}{9E9E9E} +\definecolor{primaryD}{HTML}{616161} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Blue Grey +\newcommand{\usePrimaryBlueGrey}{ +\definecolor{primary} {HTML}{607D8B} +\definecolor{primaryD}{HTML}{455A64} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + + +% ACCENT --------------------------------------------------------------- + +\newcommand{\useAccent}[2]{ +\definecolor{accent} {HTML}{#1} +\definecolor{textAccent} {HTML}{#2} +} + +% Accent Red +\newcommand{\useAccentRed}{ +\definecolor{accent} {HTML}{FF1744} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Pink +\newcommand{\useAccentPink}{ +\definecolor{accent} {HTML}{F50057} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Purple +\newcommand{\useAccentPurple}{ +\definecolor{accent} {HTML}{D500F9} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Deep Purple +\newcommand{\useAccentDeepPurple}{ +\definecolor{accent} {HTML}{651FFF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Indigo +\newcommand{\useAccentIndigo}{ +\definecolor{accent} {HTML}{3D5AFE} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Blue +\newcommand{\useAccentBlue}{ +\definecolor{accent} {HTML}{2979FF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Light Blue +\newcommand{\useAccentLightBlue}{ +\definecolor{accent} {HTML}{00B0FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Cyan +\newcommand{\useAccentCyan}{ +\definecolor{accent} {HTML}{00E5FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Teal +\newcommand{\useAccentTeal}{ +\definecolor{accent} {HTML}{1DE9B6} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Green +\newcommand{\useAccentGreen}{ +\definecolor{accent} {HTML}{00E676} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Light Green +\newcommand{\useAccentLightGreen}{ +\definecolor{accent} {HTML}{76FF03} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Lime +\newcommand{\useAccentLime}{ +\definecolor{accent} {HTML}{C6FF00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Yellow +\newcommand{\useAccentYellow}{ +\definecolor{accent} {HTML}{FFEA00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Amber +\newcommand{\useAccentAmber}{ +\definecolor{accent} {HTML}{FFC400} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Orange +\newcommand{\useAccentOrange}{ +\definecolor{accent} {HTML}{FF9100} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Deep Orange +\newcommand{\useAccentDeepOrange}{ +\definecolor{accent} {HTML}{FF3D00} +\definecolor{textAccent} {HTML}{FFFFFF} +} + + + +\useLightTheme +\usePrimaryIndigo +\useAccentPink + +% more color settings +\setbeamercolor{block title}{fg=primary} +\hypersetup{linkcolor=primary} +\setbeamercolor{section in toc}{fg=primary} +\setbeamercolor{subsection in toc}{fg=primary} + + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/beamerinnerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/beamerinnerthemematerial.sty new file mode 100755 index 000000000..48d82d16a --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/beamerinnerthemematerial.sty @@ -0,0 +1,42 @@ +\setbeamercolor{background canvas}{bg=BGgrey03} + +% Title page +\defbeamertemplate*{title page}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t][\paperheight]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, + fuzzy shadow={0mm}{-0.6mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.2mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.2mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, height=0.6\paperheight, flushright upper, valign=bottom, boxsep=0.5cm] + {\usebeamerfont{title} \inserttitle}\\ + {\usebeamerfont{author}\insertauthor}\\ + {\usebeamerfont{author}\insertdate} + \end{tcolorbox} + + %\begin{tcolorbox}[arc=5mm,width=10mm,height=10mm, enhanced, % + %colback=accent, coltext=textAccent, % + %fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!primary}, % top + %fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + %fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + %left=1.5mm, right=1.5mm, top=1.5mm, bottom=1.5mm, boxsep=0mm, % + %boxrule=0mm, enlarge left by=10mm, enlarge top by=-10mm]% + %\includegraphics[width=7mm]{\iconFolder/ic_account_circle_48px} + %\end{tcolorbox} + \end{minipage}% + }% + \vfill +} + +% Items +\setbeamertemplate{enumerate items}[circle] +\setbeamertemplate{itemize items}{\Large $\bullet$} +\setbeamertemplate{sections/subsections in toc}[circle] + +\setbeamercolor{local structure}{fg=accent} + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/beamerouterthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/beamerouterthemematerial.sty new file mode 100755 index 000000000..9338c12a0 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/beamerouterthemematerial.sty @@ -0,0 +1,28 @@ +\mode + +% Frame title +\defbeamertemplate*{frametitle}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, % + left=6mm, right=6mm, top=2.6mm, bottom=2mm,% + fuzzy shadow={0mm}{-0.9mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.8mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.5mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, boxsep=2mm] + \ifx\insertframesubtitle\@empty% + {\usebeamerfont{frametitle} \insertframetitle} + \else% + {\usebeamerfont{frametitle} \insertframetitle} + {\usebeamerfont{framesubtitle} \insertframesubtitle} + \fi + \end{tcolorbox} + \end{minipage}% + }% +} + + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/beamerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/beamerthemematerial.sty new file mode 100755 index 000000000..c34246582 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/beamerthemematerial.sty @@ -0,0 +1,82 @@ +\mode + +% Requirement +\RequirePackage{tikz} +\RequirePackage{xcolor} +\RequirePackage{ifthen} +\RequirePackage[many]{tcolorbox} +\RequirePackage{graphicx} + +% Settings +\useinnertheme{material} +\useoutertheme{material} +\usecolortheme{material} + +\setbeamertemplate{navigation symbols}{} + +\setbeamerfont*{title}{size=\Huge} +\setbeamerfont*{frametitle}{size=\large} + +% tcolorbox settings +\newcommand{\setCardSettings}{% +\tcbset{% +colback=BGgrey04, colbacktitle=primary, coltitle=textPrimary, coltext=text,% +enhanced, sharpish corners=all,% +fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!BGgrey03}, % top +fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall +fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig +left=6mm, right=6mm, top=6mm, bottom=6mm, middle=4mm,% +title filled, boxrule=0mm, % +segmentation code={\path[draw=BGgrey01](segmentation.west) -- (segmentation.east);}% +} +} + +\setCardSettings + +\newenvironment{card}[1][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}% + }{% + \begin{tcolorbox}[colbacktitle=primary, coltitle=textPrimary, title=#1, left=6mm, right=6mm, top=3mm, bottom=4mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% + }% +}{% + \end{tcolorbox}% +} + +\newenvironment{cardTiny}{% + \setCardSettings + \begin{tcolorbox}[colbacktitle=primary, left=4mm, right=4mm, top=2mm, bottom=2mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% +}{% + \end{tcolorbox}% +} + + +\newcommand{\cardImg}[3][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, bottom=0mm, middle=1.5mm, boxsep=0mm, width=#3,]% + \includegraphics[width=\textwidth]{#2} + \end{tcolorbox} + }{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, middle=1.5mm, boxsep=0mm, leftlower=6mm, rightlower=6mm, bottom=6mm, , width=#3,]% + \includegraphics[width=\textwidth]{#2} + \tcblower + #1% + \end{tcolorbox} + }% +} + +\newenvironment{frameImg}[2][width]{% + \setCardSettings + \ifthenelse{\equal{#1}{width}}{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[width=\paperwidth, keepaspectratio=true]{#2}}}% + }{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[height=\paperheight, keepaspectratio=true]{#2}}}% + }% + \begin{frame} +}{% + \end{frame} +} + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/img/cat.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/img/cat.png new file mode 100755 index 000000000..643fd32f2 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/img/cat.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/img/classical_vs_quantum_dimensions.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/img/classical_vs_quantum_dimensions.png new file mode 100755 index 000000000..2740212d2 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/img/classical_vs_quantum_dimensions.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/img/dilbert.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/img/dilbert.png new file mode 100755 index 000000000..054920d51 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/img/dilbert.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/img/hydrogen.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/img/hydrogen.png new file mode 100755 index 000000000..0a26b0374 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/img/hydrogen.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/macros.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/macros.sty new file mode 100755 index 000000000..efa08ae55 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/macros.sty @@ -0,0 +1,127 @@ +\ProvidesPackage{macros}[2018 My own macros] + +% Packages that main.tex will use AND common header commands +\usepackage{multicol} +\usepackage{tikz} % drawings +\usetikzlibrary{positioning, arrows} +\usepackage{animate} % animations +\usepackage{hyperref} +\usepackage{minted} % code snippets +\usepackage{todonotes} +\let\todox\todo +\renewcommand\todo[1]{\todox[inline]{#1}} + +%%%%%%%%%%%%%%%%% DOCUMENT GLOBAL SETTINGS +% example for author reusing these slides: +\author[Ramalho]{Miguel Sozinho Ramalho} +% \author[LASTNAME]{FIRSTNAME LASTNAME,\\ \scriptsize{based on slides by \textbf{Miguel Sozinho Ramalho}}} +\institute[FEUP]{Faculty of Engineering of the University of Porto} +\subject{Quantum Computing} +\date{November, 2018} + + +% Uncomment for notes on slides +% \usepackage{pgfpages} +% \setbeameroption{show notes} +% \setbeameroption{show notes on second screen=right} + +\graphicspath{{img/}} % add the img folder to graphics path + +% Packages that this file uses +\usepackage{braket} % bra-ket notation +\usepackage{xargs} % custom new commands +\usepackage{xspace} % add xspace after new command to auto insert space + + + +% braket shorthands +\newcommandx{\superpos}[3][1=\psi,2=0,3=1]{\ket {#1} = \alpha \ket{#2} + \beta \ket{#3}} +\newcommand{\plusminus}[1][\psi]{\superpos[#1][-][+]} +\newcommand{\pagenumber}{\raggedleft\vfill\scriptsize\insertframenumber/\inserttotalframenumber} +\newcommand{\speedoflight}{3 \times 10^{8} m/s} +\newcommand{\osqrt}{\frac{1}{\sqrt{2}}} +\newcommand{\kz}{\ket{0}} +\newcommand{\ko}{\ket{1}} + +% short shorthands +\newcommand{\qasm}{Qasm\xspace} +\newcommand{\q}{Quantum\xspace} +\newcommand{\qa}{\q Algorithms\xspace} +\newcommand{\qct}{\q Circuit\xspace} +\newcommand{\qcts}{\q Circuits\xspace} +\newcommand{\qc}{\q Computing\xspace} +\newcommand{\qcp}{\q Computation\xspace} +\newcommand{\qec}{\q Error Correction\xspace} +\newcommand{\qft}{\q Fourier Transform\xspace} +\newcommand{\qi}{\q Information\xspace} +\newcommand{\qis}{\q Information Science\xspace} +\newcommand{\qm}{\q Mechanics\xspace} +\newcommand{\qmt}{\q Measurement\xspace} +\newcommand{\qp}{\q Physics\xspace} +\newcommand{\qsp}{\q Superposition\xspace} +\newcommand{\qw}{\q World\xspace} +\newcommand{\mbqc}{Measurement Based \q Computer\xspace} +\newcommand{\aqc}{Adiabatic \q Computation\xspace} + +\newcommand{\cl}{Classical\xspace} +\newcommand{\cc}{Classical Computing\xspace} +\newcommand{\cm}{Classical Mechanics\xspace} +\newcommand{\cp}{Classical Physics\xspace} + +\newcommand{\qk}{Qiskit\xspace} +\newcommand{\qka}{Qiskit Aqua\xspace} +\newcommand{\ibmq}{IBM Q\xspace} +\newcommand{\ibmqe}{IBM Q Experience\xspace} + +\newcommand{\p}{\textbf{P}\xspace} +\newcommand{\np}{\textbf{NP}\xspace} +\newcommand{\bqp}{\textbf{BQP}\xspace} + +\newcommand{\djs}{Deutsch-Jozsa\xspace} +\newcommand{\ds}{Deutsch's\xspace} +\newcommand{\gv}{Grover\xspace} +\newcommand{\gvs}{\gv's\xspace} +\newcommand{\gvsa}{\gv's algorithm\xspace} +\newcommand{\aamp}{Amplitude Amplification\xspace} +\newcommand{\sa}{Shor's algorithm\xspace} + +\newcommand{\phiv}{phase inversion\xspace} +\newcommand{\iatm}{inversion about the mean\xspace} + +\newcommand{\ai}{Artificial Intelligence\xspace} + +%configurable variables +\newcommand{\githubRepo}{https://github.com/msramalho/Teach-Me-Quantum/} +\newcommand{\weeks}{\githubRepo/tree/master/} +\newcommand{\weekZero}{\weeks/Week\%200\%20-\%20Hello\%20Quantum\%20World/} +\newcommand{\weekOne}{\weeks/Week\%201\%20-\%20Quantum\%20Tools/} +\newcommand{\weekTwo}{\weeks/Week\%202\%20-\%20Quantum\%20Information\%20Science/} +\newcommand{\weekThree}{\weeks/Week\%203\%20-\%20Quantum\%20Gates/} +\newcommand{\weekFour}{\weeks/Week\%204\%20-\%20Quantum\%20Facts/} + +%%%%%%%%%%%%%%%%%%%%%%%% quotations +% src: https://tex.stackexchange.com/a/53380/126771 +\newcommand{\@chapapp}{\relax} +\makeatletter +\renewcommand{\@chapapp}{} +\newenvironment{chapquote}[2][2em] + {\setlength{\@tempdima}{#1} + \def\chapquote@author{#2} + \parshape 1 \@tempdima \dimexpr\textwidth-2\@tempdima\relax + \itshape} + {\par\normalfont\hfill--\ \chapquote@author\hspace*{\@tempdima}\par\bigskip} +\makeatother + +%%%%%%%%%%%%%%%%% color on hrefs +\hypersetup{ + colorlinks=true, + linkcolor=primaryD,%blue, + filecolor=primaryD,%cyan, + urlcolor=accent %hrefs +} + +%%%%%%%%%%%%%%%%% minted settings +\setminted[python]{fontsize=\footnotesize} +\setminted[vhdl]{fontsize=\footnotesize} +\definecolor{bgGrey}{rgb}{0.95,0.95,0.95} +\setminted{bgcolor=bgGrey} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/main.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/main.tex new file mode 100755 index 000000000..0a2f3e9fa --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/main.tex @@ -0,0 +1,281 @@ +\documentclass[aspectratio=43]{beamer} +\usepackage[utf8]{inputenc} + +%%%%%%%%%%%%%%%%%%%%%%%% THEME +\usetheme{material} +\useLightTheme +\usePrimaryTeal +\useAccentGreen + +\usepackage{macros} % must come after theme +\title{Hello \qw} +\keywords{\qm,\qc} + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + + +\begin{frame}{Table of contents} + \begin{card} + \tableofcontents + \end{card} +\end{frame} + +\section{Motivation} +\begin{frame}{Motivation} +\begin{card}[Why] + \begin{chapquote}[2pt]{\href{https://en.wikipedia.org/wiki/Seth_Lloyd}{Seth Lloyd}} + ``Classical computation is like a solo voice - one line of pure tones succeeding each other. Quantum computation is like a symphony - many lines of tones interfering with one another.'' + \end{chapquote} +\end{card} + +\pagenumber +\end{frame} + +\begin{frame}{Motivation} +\begin{card}[How] + \qc can be seen as leveraging the phenomena that happen at the atomic and subatomic levels - in the \qw\xspace- to produce computations that, ultimately, surpass \cc. +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{About this course} +\begin{card} + This course is suited for beginners in \qm and \qc. If you are already familiar with the concepts of a given week, you are encouraged to move forward in the course. + + This course brings novelty in that it focuses on \textbf{learning by doing}, and that is why you will also learn about \qk and \ibmqe. + + The author believes both that learning should be fun and that derision is a wonderful attention gripper, so humour will be used as the powerful tool that it is, wisely. +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{About this course - Study plan} +\begin{card} + \begin{itemize} + \item \qm 101 + \item \qk and \ibmqe + \item \qi + \item Designing \qcts + \item \qa (Deutsch, Grover, Shor) + \item \qc applications + \item \q Computers - state of the art + \item Implications and ethical considerations throughout + \end{itemize} +\end{card} +\pagenumber +\end{frame} + +\section{Introduction} +\begin{frame}{Introduction} +\begin{card} + In this first week, we will start by defining what \qc is and how it compares to \cc. Next, a walk-through the novelty that \qm brings and how it compares to \cp. As a starting point to understanding how these quantum properties can be used to tackle problems algorithmically, we will introduce the concepts of \textbf{superposition} and \textbf{measurement}, that of \textbf{entanglement} will be introduced later, at a stage where it makes more sense and is easier to assimilate. +\end{card} +\pagenumber +\end{frame} + + +\section{\qp vs \cp} + +\begin{frame}{\cp} +\begin{card} + \cp (also \cm) describes the world \textit{as we see it}, in its macro level. Some of its properties: + \begin{description} + \item[size] objects with $size \gtrsim 1nm\ (10^{-9}m)$ + \item[speed] objects of $speed \lesssim \speedoflight$ + \end{description} +\end{card} +\pagenumber +\end{frame} + + +\begin{frame}{\qp} +\begin{card} + \qp (also \qm) describes the world \textit{as we see it}, in its micro level. Some of its properties: + \begin{description} + \item[size] objects typically with $size \lesssim 1nm$ + \item[speed] objects of $speed \lesssim \speedoflight$ + \end{description} +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{The kingdoms of \cl and \qm} +\begin{card} + \centering\cardImg{classical_vs_quantum_dimensions.png}{\textwidth} +\end{card} +\pagenumber +\end{frame} + +\section{Principles of \qm} +\subsubsection{\qsp} +\begin{frame}{\qsp} + \begin{card} + A \q state (of a particle) can be seen as being composed by more than one different states, simultaneously. It is not in state A \textbf{or} B, it is in state A \textbf{and} state B, at the same time. This defies classical views of the world, where two things are never true at the same time and requires some mental effort!\\ + The state is, therefore, in a kind of superposition. + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{\qsp - Schrödinger's cat} + \textbf{Thought experiment:} Imagine a cat locked inside a box, along with a poison releasing mechanism. The mechanism has a 50\% chance of having been activated at the time the box is about to be opened. At that moment, we cannot be sure of the cat's living state. Perhaps, we should assume the cat is both dead and alive, at the same time. With each state having the same probability. + \begin{center} + \cardImg{img/cat.png}{0.5\textwidth} + \end{center} + \begin{center} + Two worlds, inside one. + \end{center} +\pagenumber +\end{frame} + + +\begin{frame}{\qsp} + \begin{cardTiny} + Formally, such states are represented using the \textbf{Ket notation} (as defined by \textit{Paul Dirac}). State 0 would be $\ket{0}$. + \end{cardTiny} + \begin{cardTiny} + \begin{multicols}{2} + Consider the electron of a Hydrogen atom, orbiting around the nucleus, with only two (simplification) possible energy states. As this is a \q particle, these energy states are quantized, that is, they take only discrete (quantified) values. + \begin{center} + \includegraphics[width=0.4\textwidth]{hydrogen} + \end{center} + \end{multicols} + \end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}{\qsp} + \begin{card} + When we have no evidence of the electron's state, we assume that it is in a superposition of both positions. This \qsp $\ket{\phi}$ is written as: + \begin{equation*} + \superpos + \end{equation*} + \end{card} + \begin{cardTiny} + $\alpha$ and $\beta$ represent how likely each of the two states is. These are complex numbers such that $|\alpha|^2 + |\beta|^2 = 1$. + \end{cardTiny} + \begin{cardTiny} + \small{ + So, why and how does \qsp actually work?\\ \textbf{We do not know!} (this statement pops up frequently in \q) However, some \href{https://arxiv.org/abs/1707.09483}{interesting experiments} might just be able to answer us soon enough... + } + \end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}{\qsp\space- Plane representation} + \begin{cardTiny} + \begin{multicols}{2} + Another important remark to make is that a superposition can be projected as unit vector onto a 2D plane (even though $\alpha$ and $\beta$ are complex numbers). In essence, this allows us to convert a superposition in the $\ket{0}\ket{1}$ basis, as is $\ket{\psi}$, onto other basis. Basis are orthonormal. + \begin{center} + \input{mathcha/superpos_projection.tex} + \end{center} + \end{multicols} + \end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}{\qsp\space- Vector representation} + \begin{cardTiny} + Moreover, a quantum state $\superpos$ can be seen as a unit vector in the complex bi-dimensional space ($\mathbb{C}^2$) $\begin{bmatrix} \alpha \\ \beta \end{bmatrix}$, such that: + \begin{equation*} + \alpha \ket{0} + \beta \ket{1} = + \begin{bmatrix}\alpha \\ \beta \end{bmatrix}^\intercal + \times + \begin{bmatrix}1 & 0\\ 0 & 1\end{bmatrix} + \end{equation*} + Given the following as the basis vectors (this is the zero-one basis): + \begin{equation*} + \ket{0} = \begin{bmatrix}1 \\ 0\end{bmatrix},\\ + \ket{1} = \begin{bmatrix}0 \\ 1\end{bmatrix} + \end{equation*} + \end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}{\qsp\space- Basis} + \begin{multicols}{2} + As a matter of fact, any linearly independent pair of unit vectors can act as basis. One well known basis is the $\ket{+}\ket{-}$ (plus-minus) basis: + \begin{equation*} + \ket{+} = \begin{bmatrix}\osqrt \\ \osqrt\end{bmatrix},\\ + \ket{-} = \begin{bmatrix}\osqrt \\ -\osqrt\end{bmatrix} + \end{equation*} + This is simply the $\ket{0}\ket{1}$ basis rotated by $\frac{\pi}{4}$($45º$). + \begin{center} + \input{mathcha/plus_minus.tex} + \end{center} + \end{multicols} +\pagenumber +\end{frame} + + + + +\subsubsection{\qmt} +\begin{frame}{\qmt} + \begin{cardTiny} + From a pragmatic perspective, what happens when we open the box and look at the cat? From that moment on, only one state remains, either death \textbf{or} life. And we cannot close the box again and expect a different outcome. + \end{cardTiny} + \begin{cardTiny} + \centering\textit{The cat is out of the box.} + \end{cardTiny} + \begin{cardTiny} + A \textbf{Measurement} causes the system to stabilise, in a non-reversible way. When we perform a measurement on the electron's state (let this process be a technicality, for now), we get $\ket{0}$ \textbf{or} $\ket{1}$. If we repeat the measurement, the result will be the same, \textbf{always}. + \end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}{\qmt} +\begin{cardTiny} +\small{ + To better understand what a measurement is, it is important to understand that it is \textbf{basis-specific}, meaning we could measure on the $\ket{0}\ket{1}$ or on the $\ket{+}\ket{-}$ basis (or another \href{http://mathworld.wolfram.com/LinearlyIndependent.html}{LI}). Example:\\ + You have a qubit in a superposition $\osqrt\alpha+\osqrt\beta$, you measure (zero-one basis) it into a bit and the result is 0 (horizontal). Now, if you convert it to the plus-minus basis you will get $\psi = \osqrt\ket{+} + \osqrt\ket{-}$.\\ + Imagine that the measurement had not happened and was instead performed on the plus-minus basis, the result would be $+$ (since $\ket{+}=\osqrt\ket{0}+\osqrt\ket{1}$). +} +\end{cardTiny} +\begin{cardTiny} + \small{You can now see the impact of choosing a given basis to perform a measurement. We will return to this later, the simple notion of this consideration is what you should absorb now.} +\end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}{\qmt} +\begin{cardTiny} +\small{ + Pragmatically speaking, \qmt requires a few considerations. Firstly, it produces a single output form a state that is stochastic, meaning that doing it once is not enough to be sure of the probability distribution. So, typically, each experiment is executed a large number of times (hundreds and sometimes thousands) so that the confidence in the results meets the expectations.\\ + Furthermore, as you will see when deploying to real quantum devices, current experimental setups are not perfect (and hardly ever will be) so even the simplest of programs may produce buggy results and a \q Scientist should be aware of it.\\As a matter of fact \href{https://quantumexperience.ng.bluemix.net/qx/editor}{\ibmqe}'s devices are usually well described even in the average error (noise) ratios you should expect. +} +\end{cardTiny} +\pagenumber +\end{frame} + +\section{Why \q?} +\begin{frame}{Why \q?} + To end this introductory week to the \qw, there are a few useful considerations to make: + \begin{itemize} + \item \qc is worth our time because it brings the promise of revolutionising the amount of computation within human reach, from tackling currently impossible problems to rendering most encryption standards useless. + \item \qc works because it allows for the massive parallelisation of computations hitherto unattainable with such ease in \cc, because humans are not defining this parallelism, Mother Nature is! That and the \qm at play (some yet to see) give it even more out-of-the-box characteristics adding to its enormous potential. + \end{itemize} +\pagenumber +\end{frame} + +\begin{frameImg}[width]{dilbert} + + +\end{frameImg} + +\section{Where to learn more?} +\begin{frame}{Where to learn more?} +\begin{card} + \begin{itemize} + \item \href{https://www.quantiki.org/wiki/introduction-quantum-theory}{Introduction to Quantum Theory, Quantiki} + \item \href{https://www.khanacademy.org/science/physics/quantum-physics/quantum-numbers-and-orbitals/a/the-quantum-mechanical-model-of-the-atom}{Khan Academy, The quantum mechanical model of the atom} + \item \href{https://www.goodreads.com/book/show/331680.Programming_the_Universe}{Programming the Universe: A Quantum Computer Scientist Takes on the Cosmos} + \item \href{https://www.goodreads.com/book/show/260142.The_Principles_of_Quantum_Mechanics}{The Principles of Quantum Mechanics, \textit{Paul Dirac}} + \end{itemize} +\end{card} +\end{frame} + +\end{document} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/mathcha/plus_minus.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/mathcha/plus_minus.tex new file mode 100755 index 000000000..9ecbf32ca --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/mathcha/plus_minus.tex @@ -0,0 +1,28 @@ + + +\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt + +\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1] +%uncomment if require: \path (0,240.1999969482422); %set diagram left start at 0, and has height of 240.1999969482422 + +%Shape: Axis 2D [id:dp5007372493556268] +\draw (187.65,86.57) -- (354.8,86.57)(271.23,9.59) -- (271.23,162.2) (347.8,81.57) -- (354.8,86.57) -- (347.8,91.57) (266.23,16.59) -- (271.23,9.59) -- (276.23,16.59) ; + +%Shape: Ellipse [id:dp25953493006417205] +\draw (218.02,86.57) .. controls (218.02,58.53) and (241.84,35.81) .. (271.23,35.81) .. controls (300.61,35.81) and (324.43,58.53) .. (324.43,86.57) .. controls (324.43,114.61) and (300.61,137.34) .. (271.23,137.34) .. controls (241.84,137.34) and (218.02,114.61) .. (218.02,86.57) -- cycle ; +%Shape: Axis 2D [id:dp6909779044773345] +\draw (219.93,33.62) -- (322.97,136.77)(325.11,32.4) -- (218.33,139.07) (321.56,128.28) -- (322.97,136.77) -- (314.49,135.35) (316.62,33.81) -- (325.11,32.4) -- (323.69,40.89) ; +%Curve Lines [id:da10382465930858809] +\draw (286.27,72) .. controls (292.68,69.4) and (296.68,86.4) .. (289.27,86) ; + + + +% Text Node +\draw (330.16,147.17) node [align=left] {$\ket{-}$}; +% Text Node +\draw (313.65,16.61) node [align=left] {$\ket{+}$}; +% Text Node +\draw (308,73) node [align=left] {$\frac{\pi}{4}$}; + + +\end{tikzpicture} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/mathcha/superpos_projection.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/mathcha/superpos_projection.tex new file mode 100755 index 000000000..ef4d0614b --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/latex/mathcha/superpos_projection.tex @@ -0,0 +1,38 @@ + + +\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt + +\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1] +%uncomment if require: \path (0,240.1999969482422); %set diagram left start at 0, and has height of 240.1999969482422 + +%Shape: Axis 2D [id:dp5007372493556268] +\draw (187.65,86.57) -- (354.8,86.57)(271.23,9.59) -- (271.23,162.2) (347.8,81.57) -- (354.8,86.57) -- (347.8,91.57) (266.23,16.59) -- (271.23,9.59) -- (276.23,16.59) ; +%Shape: Ellipse [id:dp25953493006417205] +\draw (218.02,86.57) .. controls (218.02,58.53) and (241.84,35.81) .. (271.23,35.81) .. controls (300.61,35.81) and (324.43,58.53) .. (324.43,86.57) .. controls (324.43,114.61) and (300.61,137.34) .. (271.23,137.34) .. controls (241.84,137.34) and (218.02,114.61) .. (218.02,86.57) -- cycle ; +%Straight Lines [id:da7303300795271543] +\draw [color={rgb, 255:red, 0; green, 128; blue, 128 } ,draw opacity=1 ][fill={rgb, 255:red, 0; green, 120; blue, 120 } ,fill opacity=1 ] (271.23,86.57) -- (305.71,50.19) ; +\draw [shift={(307.08,48.74)}, rotate = 493.47] [color={rgb, 255:red, 0; green, 128; blue, 128 } ,draw opacity=1 ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ; + +%Straight Lines [id:da4416217930551922] +\draw [fill={rgb, 255:red, 77; green, 108; blue, 42 } ,fill opacity=1 ] [dash pattern={on 0.84pt off 2.51pt}] (307.08,48.74) -- (307.08,86.21) ; + + +%Straight Lines [id:da8036276031325384] +\draw [fill={rgb, 255:red, 77; green, 108; blue, 42 } ,fill opacity=1 ] [dash pattern={on 0.84pt off 2.51pt}] (307.08,48.74) -- (271.12,49.16) ; + + + +% Text Node +\draw (377.16,96.17) node [align=left] {$\ket{0}$}; +% Text Node +\draw (254.65,14.61) node [align=left]{$\ket{1}$}; +% Text Node +\draw (293.22,93.23) node [align=left] {$\alpha$}; +% Text Node +\draw (263.96,66.78) node [align=left] {$\beta$}; + +% Text Node +\draw (279.6,14.8) -- (385.6,14.8) -- (385.6,32.8) -- (279.6,32.8) -- cycle ; +\draw (332.6,23.8) node [scale=0.8] [align=left] {$\superpos$}; + +\end{tikzpicture} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/slides.pdf b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/slides.pdf new file mode 100755 index 000000000..c733ab7ab Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_0-Hello_Quantum_World/slides.pdf differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/README.ipynb new file mode 100644 index 000000000..0fbb6545c --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/README.ipynb @@ -0,0 +1,56 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Week 1 - Quantum Tools\n", + "\n", + " * Python and Pip\n", + " * Jupyter\n", + " * Google Colaboratory\n", + " * Binder\n", + " * Qiskit (and its composing parts)\n", + " * Community and VSCode extension\n", + " * IBMQ and IBMQ Experience\n", + " \n", + "# Exercises\n", + " * Installing software\n", + " * Creating IBMQ account\n", + " * Local setup by running [this notebook](exercises/IBMQ_setup.ipynb) on your machine. (You can [clone](https://help.github.com/articles/cloning-a-repository/) or download this repo)\n", + " \n", + "## Resources\n", + " * [PDF slides](slides.pdf)\n", + " * [slides src](latex/main.tex) Latex files and image resources used in the presentation (useful for PR on slide typos and such)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/exercises/IBMQ_setup.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/exercises/IBMQ_setup.ipynb new file mode 100644 index 000000000..048be9731 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/exercises/IBMQ_setup.ipynb @@ -0,0 +1,192 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# IBM Q setup\n", + "This tutorial will walk you through the configuration for your IBM Q Experience account so that, in the future, you are able to run your Quantum Programs in both online simulators as well as real Quantum Computers.\n", + "\n", + "We assume you have installed Qiskit if not please look at [qiskit.org](http://www.qiskit.org) or the install [documentation](https://github.com/qiskit/qiskit-tutorial/blob/master/INSTALL.md). \n", + "\n", + "To test this run the following commands" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import qiskit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Execute on a Real Device (IBM Q Experience)\n", + "\n", + "You can use Qiskit to run your circuits on real quantum computers using the IBMQ provider. They are small and noisy but are advancing at a fast pace. In the future, more information will be given regarding this environment, but for now lets go ahead and set it up!\n", + "\n", + "To access IBMQ devices, you'll need an API token. For the public Quantum Experience devices, you can generate an API token [here](https://quantumexperience.ng.bluemix.net/qx/account/advanced) (create an account if you don't already have one). For Q Network devices, login to the q-console, click your hub, group, and project, and expand \"Get Access\" to generate your API token and access url." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import IBMQ # requires qiskit version >= 0.6" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After generating your API token, call:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "IBMQ.save_account(\"MY_TOKEN\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For Q Network users, you'll also need to include your access url:\n", + "\n", + "`IBMQ.save_account('MY_TOKEN', 'URL')`\n", + "\n", + "This will store your IBMQ credentials in a local file. Unless your registration information has changed, you only need to do this once. \n", + "\n", + "You may now (or in any other exercise) load your accounts by calling:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "IBMQ.load_accounts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Which Backends are available right now?\n", + "A backend is either an online Quantum simulator or a Quantum Computer.\n", + "\n", + "This is how you can list them by name:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ibmqx4\n", + "ibmqx5\n", + "ibmqx2\n", + "ibmq_16_melbourne\n", + "ibmq_qasm_simulator\n" + ] + } + ], + "source": [ + "for backend in IBMQ.backends():\n", + " print(backend)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Additionally, you can get all of their configurations, like so:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'local': False, 'name': 'ibmqx4', 'version': '1.2.0', 'description': '5 qubit transmon bowtie chip 3', 'gate_set': 'SU2+CNOT', 'basis_gates': 'u1,u2,u3,cx,id', 'online_date': '2017-09-18T00:00:00.000Z', 'chip_name': 'Raven', 'deleted': False, 'url': 'https://ibm.biz/qiskit-ibmqx4', 'internal_id': '5ae875670f020500393162b3', 'simulator': False, 'allow_q_object': False, 'n_qubits': 5, 'coupling_map': [[1, 0], [2, 0], [2, 1], [3, 2], [3, 4], [4, 2]]}\n" + ] + } + ], + "source": [ + "backend_0 = IBMQ.backends()[0] # retrieve the Backend at index 0\n", + "print(backend_0.configuration())" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Go check its specification at https://ibm.biz/qiskit-ibmqx4\n" + ] + } + ], + "source": [ + "print(\"Go check its specification at %s\" % backend_0.configuration()[\"url\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's it for this week, if you have reached this point your local machine is now ready for the next steps 💪" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/exercises/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/exercises/README.ipynb new file mode 100644 index 000000000..f6524f95a --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/exercises/README.ipynb @@ -0,0 +1,49 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Overview\n", + "\n", + "For this week, there are some boring tasks:\n", + " * Install Python (and pip)\n", + " * Install Jupyter\n", + " * Install QSKit\n", + " * Create an account on IBM Q Experience\n", + " \n", + "As well as some interesting tasks:\n", + " * Checkout the community for QSKit\n", + " * Follow this week's Jupyter Notebook (local setup of IBM Q account)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/exercises/qiskit-heading.gif b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/exercises/qiskit-heading.gif new file mode 100755 index 000000000..97c168a33 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/exercises/qiskit-heading.gif differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/beamercolorthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/beamercolorthemematerial.sty new file mode 100755 index 000000000..7fbe50bd2 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/beamercolorthemematerial.sty @@ -0,0 +1,286 @@ +\mode + +% light theme +\newcommand{\useLightTheme}{ +\definecolor{text} {HTML}{000000} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{E0E0E0} +\definecolor{BGgrey02}{HTML}{F5F5F5} +\definecolor{BGgrey03}{HTML}{FAFAFA} +\definecolor{BGgrey04}{HTML}{FFFFFF} +} + + +% dark theme +\newcommand{\useDarkTheme}{ +\definecolor{text} {HTML}{FFFFFF} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{000000} +\definecolor{BGgrey02}{HTML}{212121} +\definecolor{BGgrey03}{HTML}{303030} +\definecolor{BGgrey04}{HTML}{424242} +} + +% PRIMARY -------------------------------------------------------------- +\newcommand{\usePrimary}[3]{ +\definecolor{primary} {HTML}{#1} +\definecolor{primaryD}{HTML}{#2} +\definecolor{textPrimary} {HTML}{#3} +} + +% Primary Red +\newcommand{\usePrimaryRed}{ +\definecolor{primary} {HTML}{F44336} +\definecolor{primaryD}{HTML}{D32F2F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Pink +\newcommand{\usePrimaryPink}{ +\definecolor{primary} {HTML}{E91E63} +\definecolor{primaryD}{HTML}{C2185B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Purple +\newcommand{\usePrimaryPurple}{ +\definecolor{primary} {HTML}{6A1B9A} +\definecolor{primaryD}{HTML}{7B1FA2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Deep Purple +\newcommand{\usePrimaryDeepPurple}{ +\definecolor{primary} {HTML}{673AB7} +\definecolor{primaryD}{HTML}{512DA8} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Indigo +\newcommand{\usePrimaryIndigo}{ +\definecolor{primary} {HTML}{3F51B5} +\definecolor{primaryD}{HTML}{303F9F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Blue +\newcommand{\usePrimaryBlue}{ +\definecolor{primary} {HTML}{2196F3} +\definecolor{primaryD}{HTML}{1976D2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Blue +\newcommand{\usePrimaryLightBlue}{ +\definecolor{primary} {HTML}{03A9F4} +\definecolor{primaryD}{HTML}{0288D1} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Cyan +\newcommand{\usePrimaryCyan}{ +\definecolor{primary} {HTML}{00BCD4} +\definecolor{primaryD}{HTML}{0097A7} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Teal +\newcommand{\usePrimaryTeal}{ +\definecolor{primary} {HTML}{009688} +\definecolor{primaryD}{HTML}{00796B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Green +\newcommand{\usePrimaryGreen}{ +\definecolor{primary} {HTML}{4CAF50} +\definecolor{primaryD}{HTML}{388E3C} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Green +\newcommand{\usePrimaryLightGreen}{ +\definecolor{primary} {HTML}{8BC34A} +\definecolor{primaryD}{HTML}{689F38} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Lime +\newcommand{\usePrimaryLime}{ +\definecolor{primary} {HTML}{CDDC39} +\definecolor{primaryD}{HTML}{AFB42B} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Yellow +\newcommand{\usePrimaryYellow}{ +\definecolor{primary} {HTML}{FFEB3B} +\definecolor{primaryD}{HTML}{FBC02D} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Amber +\newcommand{\usePrimaryAmber}{ +\definecolor{primary} {HTML}{FFC107} +\definecolor{primaryD}{HTML}{FFA000} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Orange +\newcommand{\usePrimaryOrange}{ +\definecolor{primary} {HTML}{FF9800} +\definecolor{primaryD}{HTML}{F57C00} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Deep Orange +\newcommand{\usePrimaryDeepOrange}{ +\definecolor{primary} {HTML}{FF5722} +\definecolor{primaryD}{HTML}{E64A19} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Brown +\newcommand{\usePrimaryBrown}{ +\definecolor{primary} {HTML}{795548} +\definecolor{primaryD}{HTML}{5D4037} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Grey +\newcommand{\usePrimaryGrey}{ +\definecolor{primary} {HTML}{9E9E9E} +\definecolor{primaryD}{HTML}{616161} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Blue Grey +\newcommand{\usePrimaryBlueGrey}{ +\definecolor{primary} {HTML}{607D8B} +\definecolor{primaryD}{HTML}{455A64} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + + +% ACCENT --------------------------------------------------------------- + +\newcommand{\useAccent}[2]{ +\definecolor{accent} {HTML}{#1} +\definecolor{textAccent} {HTML}{#2} +} + +% Accent Red +\newcommand{\useAccentRed}{ +\definecolor{accent} {HTML}{FF1744} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Pink +\newcommand{\useAccentPink}{ +\definecolor{accent} {HTML}{F50057} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Purple +\newcommand{\useAccentPurple}{ +\definecolor{accent} {HTML}{D500F9} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Deep Purple +\newcommand{\useAccentDeepPurple}{ +\definecolor{accent} {HTML}{651FFF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Indigo +\newcommand{\useAccentIndigo}{ +\definecolor{accent} {HTML}{3D5AFE} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Blue +\newcommand{\useAccentBlue}{ +\definecolor{accent} {HTML}{2979FF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Light Blue +\newcommand{\useAccentLightBlue}{ +\definecolor{accent} {HTML}{00B0FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Cyan +\newcommand{\useAccentCyan}{ +\definecolor{accent} {HTML}{00E5FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Teal +\newcommand{\useAccentTeal}{ +\definecolor{accent} {HTML}{1DE9B6} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Green +\newcommand{\useAccentGreen}{ +\definecolor{accent} {HTML}{00E676} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Light Green +\newcommand{\useAccentLightGreen}{ +\definecolor{accent} {HTML}{76FF03} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Lime +\newcommand{\useAccentLime}{ +\definecolor{accent} {HTML}{C6FF00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Yellow +\newcommand{\useAccentYellow}{ +\definecolor{accent} {HTML}{FFEA00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Amber +\newcommand{\useAccentAmber}{ +\definecolor{accent} {HTML}{FFC400} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Orange +\newcommand{\useAccentOrange}{ +\definecolor{accent} {HTML}{FF9100} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Deep Orange +\newcommand{\useAccentDeepOrange}{ +\definecolor{accent} {HTML}{FF3D00} +\definecolor{textAccent} {HTML}{FFFFFF} +} + + + +\useLightTheme +\usePrimaryIndigo +\useAccentPink + +% more color settings +\setbeamercolor{block title}{fg=primary} +\hypersetup{linkcolor=primary} +\setbeamercolor{section in toc}{fg=primary} +\setbeamercolor{subsection in toc}{fg=primary} + + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/beamerinnerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/beamerinnerthemematerial.sty new file mode 100755 index 000000000..48d82d16a --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/beamerinnerthemematerial.sty @@ -0,0 +1,42 @@ +\setbeamercolor{background canvas}{bg=BGgrey03} + +% Title page +\defbeamertemplate*{title page}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t][\paperheight]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, + fuzzy shadow={0mm}{-0.6mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.2mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.2mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, height=0.6\paperheight, flushright upper, valign=bottom, boxsep=0.5cm] + {\usebeamerfont{title} \inserttitle}\\ + {\usebeamerfont{author}\insertauthor}\\ + {\usebeamerfont{author}\insertdate} + \end{tcolorbox} + + %\begin{tcolorbox}[arc=5mm,width=10mm,height=10mm, enhanced, % + %colback=accent, coltext=textAccent, % + %fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!primary}, % top + %fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + %fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + %left=1.5mm, right=1.5mm, top=1.5mm, bottom=1.5mm, boxsep=0mm, % + %boxrule=0mm, enlarge left by=10mm, enlarge top by=-10mm]% + %\includegraphics[width=7mm]{\iconFolder/ic_account_circle_48px} + %\end{tcolorbox} + \end{minipage}% + }% + \vfill +} + +% Items +\setbeamertemplate{enumerate items}[circle] +\setbeamertemplate{itemize items}{\Large $\bullet$} +\setbeamertemplate{sections/subsections in toc}[circle] + +\setbeamercolor{local structure}{fg=accent} + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/beamerouterthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/beamerouterthemematerial.sty new file mode 100755 index 000000000..9338c12a0 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/beamerouterthemematerial.sty @@ -0,0 +1,28 @@ +\mode + +% Frame title +\defbeamertemplate*{frametitle}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, % + left=6mm, right=6mm, top=2.6mm, bottom=2mm,% + fuzzy shadow={0mm}{-0.9mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.8mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.5mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, boxsep=2mm] + \ifx\insertframesubtitle\@empty% + {\usebeamerfont{frametitle} \insertframetitle} + \else% + {\usebeamerfont{frametitle} \insertframetitle} + {\usebeamerfont{framesubtitle} \insertframesubtitle} + \fi + \end{tcolorbox} + \end{minipage}% + }% +} + + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/beamerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/beamerthemematerial.sty new file mode 100755 index 000000000..c34246582 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/beamerthemematerial.sty @@ -0,0 +1,82 @@ +\mode + +% Requirement +\RequirePackage{tikz} +\RequirePackage{xcolor} +\RequirePackage{ifthen} +\RequirePackage[many]{tcolorbox} +\RequirePackage{graphicx} + +% Settings +\useinnertheme{material} +\useoutertheme{material} +\usecolortheme{material} + +\setbeamertemplate{navigation symbols}{} + +\setbeamerfont*{title}{size=\Huge} +\setbeamerfont*{frametitle}{size=\large} + +% tcolorbox settings +\newcommand{\setCardSettings}{% +\tcbset{% +colback=BGgrey04, colbacktitle=primary, coltitle=textPrimary, coltext=text,% +enhanced, sharpish corners=all,% +fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!BGgrey03}, % top +fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall +fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig +left=6mm, right=6mm, top=6mm, bottom=6mm, middle=4mm,% +title filled, boxrule=0mm, % +segmentation code={\path[draw=BGgrey01](segmentation.west) -- (segmentation.east);}% +} +} + +\setCardSettings + +\newenvironment{card}[1][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}% + }{% + \begin{tcolorbox}[colbacktitle=primary, coltitle=textPrimary, title=#1, left=6mm, right=6mm, top=3mm, bottom=4mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% + }% +}{% + \end{tcolorbox}% +} + +\newenvironment{cardTiny}{% + \setCardSettings + \begin{tcolorbox}[colbacktitle=primary, left=4mm, right=4mm, top=2mm, bottom=2mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% +}{% + \end{tcolorbox}% +} + + +\newcommand{\cardImg}[3][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, bottom=0mm, middle=1.5mm, boxsep=0mm, width=#3,]% + \includegraphics[width=\textwidth]{#2} + \end{tcolorbox} + }{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, middle=1.5mm, boxsep=0mm, leftlower=6mm, rightlower=6mm, bottom=6mm, , width=#3,]% + \includegraphics[width=\textwidth]{#2} + \tcblower + #1% + \end{tcolorbox} + }% +} + +\newenvironment{frameImg}[2][width]{% + \setCardSettings + \ifthenelse{\equal{#1}{width}}{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[width=\paperwidth, keepaspectratio=true]{#2}}}% + }{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[height=\paperheight, keepaspectratio=true]{#2}}}% + }% + \begin{frame} +}{% + \end{frame} +} + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/colab.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/colab.png new file mode 100755 index 000000000..cd16027d6 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/colab.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/ibmq.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/ibmq.png new file mode 100755 index 000000000..37528859b Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/ibmq.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/jupyter.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/jupyter.png new file mode 100755 index 000000000..2b6d871b2 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/jupyter.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/jupyter_notebook.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/jupyter_notebook.png new file mode 100755 index 000000000..6f8019474 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/jupyter_notebook.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/mybinder.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/mybinder.png new file mode 100755 index 000000000..29c63849c Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/mybinder.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/python.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/python.png new file mode 100755 index 000000000..91e0574db Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/python.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/qiskit.jpg b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/qiskit.jpg new file mode 100755 index 000000000..ea8aa9561 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/qiskit.jpg differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/qiskit_elements.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/qiskit_elements.png new file mode 100755 index 000000000..f1c166e6a Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/qiskit_elements.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/slack.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/slack.png new file mode 100755 index 000000000..4112da6a0 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/slack.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/vscode.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/vscode.png new file mode 100755 index 000000000..020acb412 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/img/vscode.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/macros.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/macros.sty new file mode 100755 index 000000000..e8d2b8686 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/macros.sty @@ -0,0 +1,127 @@ +\ProvidesPackage{macros}[2018 My own macros] + +% Packages that main.tex will use AND common header commands +\usepackage{multicol} +\usepackage{tikz} % drawings +\usetikzlibrary{positioning, arrows} +\usepackage{animate} % animations +\usepackage{hyperref} +\usepackage{minted} % code snippets +\usepackage{todonotes} +\let\todox\todo +\renewcommand\todo[1]{\todox[inline]{#1}} + +%%%%%%%%%%%%%%%%% DOCUMENT GLOBAL SETTINGS +% example for author reusing these slides: +\author[Ramalho]{Miguel Sozinho Ramalho} +% \author[LASTNAME]{FIRSTNAME LASTNAME,\\ \scriptsize{based on slides by \textbf{Miguel Sozinho Ramalho}}} +\institute[FEUP]{Faculty of Engineering of the University of Porto} +\subject{Quantum Computing} +\date{November, 2018} + + +% Uncomment for notes on slides +% \usepackage{pgfpages} +% \setbeameroption{show notes} +% \setbeameroption{show notes on second screen=right} + +\graphicspath{{img/}} % add the img folder to graphics path + +% Packages that this file uses +\usepackage{braket} % bra-ket notation +\usepackage{xargs} % custom new commands +\usepackage{xspace} % add xspace after new command to auto insert space + + + +% braket shorthands +\newcommandx{\superpos}[3][1=\textual{\psi},2=0,3=1]{\ket {#1} = \textual{\alpha} \ket{#2} + \textual{\beta} \ket{#3}} +\newcommand{\plusminus}[1][\psi]{\superpos[#1][-][+]} +\newcommand{\pagenumber}{\raggedleft\vfill\scriptsize\insertframenumber/\inserttotalframenumber} +\newcommand{\speedoflight}{3 \times 10^{8} m/s} +\newcommand{\osqrt}{\frac{1}{\sqrt{2}}} +\newcommand{\kz}{\ket{0}} +\newcommand{\ko}{\ket{1}} + +% short shorthands +\newcommand{\qasm}{Qasm\xspace} +\newcommand{\q}{Quantum\xspace} +\newcommand{\qa}{\q Algorithms\xspace} +\newcommand{\qct}{\q Circuit\xspace} +\newcommand{\qcts}{\q Circuits\xspace} +\newcommand{\qc}{\q Computing\xspace} +\newcommand{\qcp}{\q Computation\xspace} +\newcommand{\qec}{\q Error Correction\xspace} +\newcommand{\qft}{\q Fourier Transform\xspace} +\newcommand{\qi}{\q Information\xspace} +\newcommand{\qis}{\q Information Science\xspace} +\newcommand{\qm}{\q Mechanics\xspace} +\newcommand{\qmt}{\q Measurement\xspace} +\newcommand{\qp}{\q Physics\xspace} +\newcommand{\qsp}{\q Superposition\xspace} +\newcommand{\qw}{\q World\xspace} +\newcommand{\mbqc}{Measurement Based \q Computer\xspace} +\newcommand{\aqc}{Adiabatic \q Computation\xspace} + +\newcommand{\cl}{Classical\xspace} +\newcommand{\cc}{Classical Computing\xspace} +\newcommand{\cm}{Classical Mechanics\xspace} +\newcommand{\cp}{Classical Physics\xspace} + +\newcommand{\qk}{Qiskit\xspace} +\newcommand{\qka}{Qiskit Aqua\xspace} +\newcommand{\ibmq}{IBM Q\xspace} +\newcommand{\ibmqe}{IBM Q Experience\xspace} + +\newcommand{\p}{\textbf{P}\xspace} +\newcommand{\np}{\textbf{NP}\xspace} +\newcommand{\bqp}{\textbf{BQP}\xspace} + +\newcommand{\djs}{Deutsch-Jozsa\xspace} +\newcommand{\ds}{Deutsch's\xspace} +\newcommand{\gv}{Grover\xspace} +\newcommand{\gvs}{\gv's\xspace} +\newcommand{\gvsa}{\gv's algorithm\xspace} +\newcommand{\aamp}{Amplitude Amplification\xspace} +\newcommand{\sa}{Shor's algorithm\xspace} + +\newcommand{\phiv}{phase inversion\xspace} +\newcommand{\iatm}{inversion about the mean\xspace} + +\newcommand{\ai}{Artificial Intelligence\xspace} + +%configurable variables +\newcommand{\githubRepo}{https://github.com/msramalho/Teach-Me-Quantum/} +\newcommand{\weeks}{\githubRepo/tree/master/} +\newcommand{\weekZero}{\weeks/Week\%200\%20-\%20Hello\%20Quantum\%20World/} +\newcommand{\weekOne}{\weeks/Week\%201\%20-\%20Quantum\%20Tools/} +\newcommand{\weekTwo}{\weeks/Week\%202\%20-\%20Quantum\%20Information\%20Science/} +\newcommand{\weekThree}{\weeks/Week\%203\%20-\%20Quantum\%20Gates/} +\newcommand{\weekFour}{\weeks/Week\%204\%20-\%20Quantum\%20Facts/} + +%%%%%%%%%%%%%%%%%%%%%%%% quotations +% src: https://tex.stackexchange.com/a/53380/126771 +\newcommand{\@chapapp}{\relax} +\makeatletter +\renewcommand{\@chapapp}{} +\newenvironment{chapquote}[2][2em] + {\setlength{\@tempdima}{#1} + \def\chapquote@author{#2} + \parshape 1 \@tempdima \dimexpr\textwidth-2\@tempdima\relax + \itshape} + {\par\normalfont\hfill--\ \chapquote@author\hspace*{\@tempdima}\par\bigskip} +\makeatother + +%%%%%%%%%%%%%%%%% color on hrefs +\hypersetup{ + colorlinks=true, + linkcolor=primaryD,%blue, + filecolor=primaryD,%cyan, + urlcolor=accent %hrefs +} + +%%%%%%%%%%%%%%%%% minted settings +\setminted[python]{fontsize=\footnotesize} +\setminted[vhdl]{fontsize=\footnotesize} +\definecolor{bgGrey}{rgb}{0.95,0.95,0.95} +\setminted{bgcolor=bgGrey} \ No newline at end of file diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/main.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/main.tex new file mode 100755 index 000000000..c0e8c0459 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/latex/main.tex @@ -0,0 +1,248 @@ +\documentclass[aspectratio=43]{beamer} +\usepackage[utf8]{inputenc} + +%%%%%%%%%%%%%%%%%%%%%%%% THEME +\usetheme{material} +\useLightTheme +\usePrimaryPurple +\useAccentTeal + +\usepackage{macros} % must come after theme + +\title{\q Tools} +\keywords{\qk} + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + + +\begin{frame}{Table of contents} + \begin{card} + \tableofcontents + \end{card} +\end{frame} + +% What is the state of quantum software tools (find others) +% Python and Pip +% Jupyter notebooks (anaconda or lighter installation) +% IBM's qiskit +% Terra and aqua and other: https://medium.com/qiskit/qiskit-and-its-fundamental-elements-bcd7ead80492 +% Tutorial on how to install qiskit +% Mention the community (slack, medium, maybe VsCode extension) +% Example code +% References and additional sources +% https://github.com/Qiskit/qiskit-tutorial + +\section{Introduction} +\begin{frame}{Introduction} + \begin{card} + This week is all about getting to know the \textbf{tools} at our disposal. Some previous knowledge is required of the Python programming language, but other than that we will mention what matters the most about the tools in this course. Deeper and wider knowledge of them will arise with use! + \end{card} +\pagenumber +\end{frame} + + +\section{Python} +\begin{frame}{Python} + \begin{center} + \includegraphics[width=0.5\textwidth]{python.png} + \end{center} + \begin{card} + \href{https://www.python.org/}{Python} is a high-level scripting language that is widely used for prototyping due to its simplicity and abstractions. Most importantly, it has a huge community that builds and shares tools and frameworks that are easily used by Python users. Most of these \textbf{packages} are available at \href{https://pypi.org/}{PyPi} and can be installed easily through \mintinline{bash}{pip install PACKAGE_NAME}. + \end{card} +\pagenumber +\end{frame} + +\section{Jupyter} +\begin{frame}{Jupyter} + \begin{center} + \includegraphics[width=0.2\textwidth]{jupyter} + \end{center} + \begin{cardTiny} + \href{http://jupyter.org/}{Project Jupyter} has produced an amazing tool, the Jupyter Notebooks: a web-based environment that can be used to write code as if it were a book, using markdown, executing code block by block, and viewing the output next to the code that produced it. This makes it easy to document, understand and share code.\\ + We will be using these notebooks for most of the practical exercises. + \end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}{Installing Jupyter Notebooks} + \begin{center} + \includegraphics[width=0.8\textwidth]{jupyter_notebook} + \end{center} + \begin{cardTiny} + \small{ + There are two options for installing Jupyter Notebooks in your computer, both properly described \href{http://jupyter.org/install.html}{here}. After that, head to a console and do \mintinline{bash}{jupyter notebook}. + } + \end{cardTiny} +\pagenumber +\end{frame} + +\section{Google Colaboratory} +\begin{frame}{Google Colaboratory} + \begin{center} + \includegraphics[width=0.3\textwidth]{colab} + \end{center} + \begin{cardTiny} + Although it is still bellow critical mass (for now), there is an online version of Jupyter Notebooks that allows for collaborative and real-time edition of your notebooks (much like Google Docs): \href{https://colab.research.google.com/}{Google Colaboratory}!\\ + Even if it is not directly used in this course, you may find it useful to work with others and, at times, to use Jupyter Notebooks in computers without a local installation of Jupyter Notebooks. + \end{cardTiny} +\pagenumber +\end{frame} + + +\section{Binder} +\begin{frame}{Binder} + \begin{center} + \includegraphics[width=0.7\textwidth]{mybinder} + \end{center} + \begin{cardTiny} + Much like Colaboratory, Binder is a fantastic tool to interact with Jupyter Notebooks online and without any previous setup. This may come in useful in the future. However it is best suited for Notebooks hosted in GitHub, which is not a problem in \href{\githubRepo}{this course}.\\ + Binder is available at \href{https://mybinder.org/}{mybinder.org}! + \end{cardTiny} +\pagenumber +\end{frame} + + +\section{\qk} +\begin{frame}{\qk} + \begin{center} + \includegraphics[width=0.8\textwidth]{qiskit} + \end{center} + \begin{cardTiny} + Quoting, \qk is `an open-source quantum computing framework for leveraging today's quantum processors and conducting research'. It can be used through a python interface (our focus) and it is, no doubt, \textbf{the most important tool of this course}. (You read it like biscuit, but with a Q!) + \end{cardTiny} +\pagenumber +\end{frame} + + +\begin{frame}{The \qk framework} + \begin{center} + \includegraphics[width=0.65\textwidth]{qiskit_elements} + \end{center} + \begin{cardTiny} + \small{ + The \qk framework is subdivided into four tools: + \footnotesize{ + \begin{itemize} + \itemsep0em + \item \qk Terra (\mintinline{bash}{pip install qiskit}) + \item \qk Ignis (part of qiskit package) + \item \qk Aer (part of qiskit package) + \item \qk Aqua (\mintinline{bash}{pip install qiskit-aqua}) + \end{itemize} + } + } + \end{cardTiny} +\pagenumber +\end{frame} + + +\begin{frame}{The \qk framework} + \begin{cardTiny} + \qk can be seen as a \textbf{Full Stack \q Framework}. It allows developers and researchers to both get 'their hands dirty` on low-level quantum gates (Terra) and also to work with all minutiae abstracted, as if it were a classical program (Aqua). + \end{cardTiny} + \begin{cardTiny} + We will mainly focus on \qk Terra. The following four \textit{fundamental slides} are based on \href{https://medium.com/qiskit/qiskit-and-its-fundamental-elements-bcd7ead80492}{this post} and provide the base understanding of each of these elements. + \end{cardTiny} + \begin{cardTiny} + \small{\textbf{Installation Tip:} + If \mintinline{bash}{pip install} fails, try \mintinline{bash}{pip3 install}. To change this behaviour on Linux, visit \href{https://askubuntu.com/a/321000}{this post}. + } + \end{cardTiny} +\pagenumber +\end{frame} + + +\subsection{\qk Terra} +\begin{frameImg}{qiskit_elements} + \begin{card}[\qk Terra] + `Terra, the \textit{earth} element, is the foundation on which the rest of the software lies. Terra provides a bedrock for composing quantum programs at the level of circuits and pulses, to optimize them for the constraints of a particular device, and to manage the execution of batches of experiments on remote-access devices. Terra defines the interfaces for a desirable end-user experience, as well as the efficient handling of layers of optimization, pulse scheduling and backend communication.' + \end{card} +\pagenumber +\end{frameImg} + +\subsection{\qk Aqua} +\begin{frameImg}{qiskit_elements} + \begin{card}[\qk Aqua] + `Aqua, the \textit{water} element, is the element of life. To make quantum computing live up to its expectations, we need to find real-world applications. Aqua is where algorithms for NISQ (Noisy Intermediate-Scale Quantum) computers are built. These algorithms can be used to build applications for quantum computing. Aqua is accessible to domain experts in chemistry, optimization or AI, who want to explore the benefits of using quantum computers as accelerators for specific computational tasks, without needing to worry about how to translate the problem into the language of quantum machines.' + \end{card} +\pagenumber +\end{frameImg} + +\subsection{\qk Ignis} +\begin{frameImg}{qiskit_elements} + \begin{card}[\qk Ignis] + `Ignis, the \textit{fire} element, is dedicated to fighting noise and errors and to forging a new path. This includes better characterization of errors, improving gates, and computing in the presence of noise. Ignis is meant for those who want to design quantum error correction codes, or who wish to study ways to characterize errors through methods such as tomography, or even to find a better way for using gates by exploring dynamical decoupling and optimal control. While we have already released parts of this element as part of libraries in Terra, an official stand-alone release will come soon.' + \end{card} +\pagenumber +\end{frameImg} + +\subsection{\qk Aer} +\begin{frameImg}{qiskit_elements} + \begin{card}[\qk Aer] + \small{`Aer, the \textit{air} element, permeates all Qiskit elements. To really speed up development of quantum computers we need better simulators, emulators and debuggers. At IBM Q, we have built high-quality, high-performance simulators and continue to improve their scalability and features. Aer will help us understand the limits of classical processors by demonstrating to what extent they can mimic quantum computation. Furthermore, we can use Aer to verify that current and near-future quantum computers function correctly. This can be done by stretching the limits of simulation to accommodate 50+ qubits with reasonably high depth, and by simulating the effects of realistic noise on the computation.'} + \end{card} +\pagenumber +\end{frameImg} + +\begin{frameImg}{qiskit_elements} + \begin{card}[\qk Wrap-up] + Each piece fits into the puzzle, and although you may end up working on high-level quantum code, in this course we will walk through all the low-level bases that will shed some more light into the \q beauty!\\ + Many new and potentially unknown terms were used in the definitions of these fundamental elements of \qk, in time some will become clearer and you will begin to see real implementation of these tools in your work. So don't worry if you feel lost, it is just to give you a glimpse of the \qw! + \end{card} +\pagenumber +\end{frameImg} + +\subsection{Community and VSCode extension} +\begin{frame} + \begin{card}[Community] + \qk brings along a growing community, you can interact with it through \href{https://qiskit.slack.com/}{Slack}, \href{https://github.com/Qiskit}{GitHub}, \href{https://medium.com/qiskit}{Medium}, \href{https://www.facebook.com/qiskit/}{Facebook} and more! + \end{card} + \begin{card}[VSCode extension] + \href{https://code.visualstudio.com/}{VSCode} is an open-source code editor that is both light and extremely versatile, being extremely customisable to the code you need to write. \href{https://medium.com/qiskit/qiskit-vscode-extension-a-new-tool-to-enhance-your-quantum-programming-experience-951cc8c1954b}{Recently}, a new extension for \qk has been created which eases the whole process of developing for \qk. Check it on \href{https://github.com/Qiskit/qiskit-vscode}{GitHub}, as it may prove useful for this course and also for your future work. + \end{card} +\pagenumber +\end{frame} + +\section{\ibmqe} +\begin{frame}{\ibmqe} +\begin{card} + Finally, on the list of main tools for this course, \ibmqe. This is a manifestation of all the more sidereal nature of \qk into the palpable world. \ibmq represents IBM's efforts of making \qc have an impact on industry and science.\\ + \ibmqe means IBM's \q Computers are accessible to the every day developer. To us, this means writing some quantum circuits and executing, not only in a simulation environment, but on one of the real \q Computers that IBM has. All you have to do is \href{https://quantumexperience.ng.bluemix.net/qx/signup}{create an account} and you are ready to \href{https://quantumexperience.ng.bluemix.net/qx/editor}{design and execute your circuits}! +\end{card} +\pagenumber +\end{frame} + + +\section{Exercises} +\begin{frame}{Exercises} + For this week, there are some boring tasks: + \begin{itemize} + \item Install Python (and pip) + \item Install Jupyter + \item Install \qk + \item Create an account on \ibmqe + \end{itemize} + As well as some interesting tasks: + \begin{itemize} + \item Checkout the community for \qk + \item Do this week's exercises (local setup of IBMQ account) + \end{itemize} +\pagenumber +\end{frame} + +\section{Where to learn more?} +\begin{frame}{Where to learn more?} +\begin{card} + \begin{itemize} + \item \href{https://medium.com/qiskit/qiskit-and-its-fundamental-elements-bcd7ead80492}{Qiskit and its Fundamental Elements} + \item \href{https://arxiv.org/abs/1801.00862}{Quantum Computing in the NISQ era and beyond, John Preskill} + \item \href{https://docs.python.org/3/tutorial/}{Python tutorial} (plenty other tutorials out there) + \item \href{https://www.datacamp.com/community/tutorials/tutorial-jupyter-notebook}{Jupyter tutorial} + \end{itemize} +\end{card} +\end{frame} +\end{document} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/slides.pdf b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/slides.pdf new file mode 100755 index 000000000..bcddb6326 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_1-Quantum_Tools/slides.pdf differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/README.ipynb new file mode 100644 index 000000000..77cc398ad --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/README.ipynb @@ -0,0 +1,54 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Week 2 - Quantum Information Science\n", + "\n", + " * Quantum Information Science\n", + " * Classical bits/egisters\n", + " * Quantum bits/registers\n", + " * Hands-on on Qskit\n", + " * Visualizing circuits\n", + " * Qasm language\n", + " \n", + "# Exercises\n", + " * [QSKit basics and circuit visualization](exercises/w2_01.ipynb)\n", + " * Run a Qasm specification on IBM Q Experience, and on a Real Processor (see slides for instructions)\n", + " \n", + "## Resources\n", + " * [PDF slides](slides.pdf)\n", + " * [slides src](latex/main.tex) Latex files and image resources used in the presentation (useful for PR on slide typos and such)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/exercises/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/exercises/README.ipynb new file mode 100644 index 000000000..0a8d7d45b --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/exercises/README.ipynb @@ -0,0 +1,41 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercises\n", + " * [QSKit basics and circuit visualization](w2_01.ipynb)\n", + " * Run a Qasm specification on IBM Q Experience, and on a Real Processor (see slides for instructions)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/exercises/w2_01.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/exercises/w2_01.ipynb new file mode 100644 index 000000000..e6d3486ea --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/exercises/w2_01.ipynb @@ -0,0 +1,216 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Classical and Quantum Registers in Qiskit" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import ClassicalRegister\n", + "# Create a Classical Register with 2 bits.\n", + "c = ClassicalRegister(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import QuantumRegister\n", + "# Create a Quantum Register with 2 qubits.\n", + "q = QuantumRegister(2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Quantum Circuits in Qiskit" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import QuantumCircuit\n", + "# Create a Quantum Circuit\n", + "qc = QuantumCircuit(q, c)\n", + "# perform a measurement of our qubits into our bits\n", + "qc.measure(q, c); # ; hides the output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualization\n", + "There are two options:\n", + " * [matplotlib](https://matplotlib.org/) which is a python module (`pip install matplotlib`)\n", + " * LaTeX visualization, which requires some more configuration, check the [official instructions](https://github.com/Qiskit/qiskit-tutorial/blob/master/INSTALL.md#5-visualizing-circuits-with-latex) for configuration. This was an old feature and is therefore less important to us." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Matplotlib" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Jupyter command to activate matplotlib and allow the preview of our circuit\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from qiskit.tools.visualization import matplotlib_circuit_drawer as draw\n", + "draw(qc) # visualize quantum circuit" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Try both and use the one you like best\n", + "from qiskit.tools.visualization import circuit_drawer as draw2\n", + "draw2(qc) # visualize quantum circuit" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# if you want to save it to a file\n", + "from qiskit.tools.visualization import circuit_drawer\n", + "diagram = circuit_drawer(qc, filename=\"my_first_quantum_circuit.png\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "diagram.show() # or even open it on an external program (no need to save first)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Open Quantum Assembly Language (QASM)\n", + "To learn more about this standard, check [the original paper](https://arxiv.org/abs/1707.03429), the [github repo](https://github.com/Qiskit/openqasm), the [language documentation](https://github.com/Qiskit/openqasm/blob/master/spec/qasm2.rst) and the [wikipedia entry](https://en.wikipedia.org/wiki/OpenQASM)." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "OPENQASM 2.0;\n", + "include \"qelib1.inc\";\n", + "qreg q0[2];\n", + "creg c0[2];\n", + "measure q0[0] -> c0[0];\n", + "measure q0[1] -> c0[1];\n", + "\n" + ] + } + ], + "source": [ + "# get the QASM representation of our circuit\n", + "print(qc.qasm())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Suggested exercises\n", + "\n", + "* Change the number of bits in the classical register to a negative number.\n", + "\n", + "`That is your first QiskitError error and they are usually easy to interpret.`\n", + "* Change the number of bits in the quantum register to a positive number not equal to 2 (5 for example) and run the blocks until you get an error, try to understand it.\n", + "\n", + "`This is because you cannot read 5 qubits into 2 bits without losing information!`\n", + "* Now, update the number of bits accordingly and visualize your circuit.\n", + "\n", + "`Guarantee that the changes in the circuit diagram make sense`\n", + "* You can keep on trying to tweek with some settings, for instance, you can *name* your registers, like `c = ClassicalRegister(2, name=\"class\")` and this will reflect in the diagram.\n", + "* Checkout more [configuration options](https://github.com/Qiskit/qiskit-tutorial/blob/master/qiskit/basics/circuit_drawing.ipynb#Visualize%20Circuit) for the layout of your diagrams" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/beamercolorthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/beamercolorthemematerial.sty new file mode 100755 index 000000000..7fbe50bd2 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/beamercolorthemematerial.sty @@ -0,0 +1,286 @@ +\mode + +% light theme +\newcommand{\useLightTheme}{ +\definecolor{text} {HTML}{000000} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{E0E0E0} +\definecolor{BGgrey02}{HTML}{F5F5F5} +\definecolor{BGgrey03}{HTML}{FAFAFA} +\definecolor{BGgrey04}{HTML}{FFFFFF} +} + + +% dark theme +\newcommand{\useDarkTheme}{ +\definecolor{text} {HTML}{FFFFFF} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{000000} +\definecolor{BGgrey02}{HTML}{212121} +\definecolor{BGgrey03}{HTML}{303030} +\definecolor{BGgrey04}{HTML}{424242} +} + +% PRIMARY -------------------------------------------------------------- +\newcommand{\usePrimary}[3]{ +\definecolor{primary} {HTML}{#1} +\definecolor{primaryD}{HTML}{#2} +\definecolor{textPrimary} {HTML}{#3} +} + +% Primary Red +\newcommand{\usePrimaryRed}{ +\definecolor{primary} {HTML}{F44336} +\definecolor{primaryD}{HTML}{D32F2F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Pink +\newcommand{\usePrimaryPink}{ +\definecolor{primary} {HTML}{E91E63} +\definecolor{primaryD}{HTML}{C2185B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Purple +\newcommand{\usePrimaryPurple}{ +\definecolor{primary} {HTML}{6A1B9A} +\definecolor{primaryD}{HTML}{7B1FA2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Deep Purple +\newcommand{\usePrimaryDeepPurple}{ +\definecolor{primary} {HTML}{673AB7} +\definecolor{primaryD}{HTML}{512DA8} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Indigo +\newcommand{\usePrimaryIndigo}{ +\definecolor{primary} {HTML}{3F51B5} +\definecolor{primaryD}{HTML}{303F9F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Blue +\newcommand{\usePrimaryBlue}{ +\definecolor{primary} {HTML}{2196F3} +\definecolor{primaryD}{HTML}{1976D2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Blue +\newcommand{\usePrimaryLightBlue}{ +\definecolor{primary} {HTML}{03A9F4} +\definecolor{primaryD}{HTML}{0288D1} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Cyan +\newcommand{\usePrimaryCyan}{ +\definecolor{primary} {HTML}{00BCD4} +\definecolor{primaryD}{HTML}{0097A7} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Teal +\newcommand{\usePrimaryTeal}{ +\definecolor{primary} {HTML}{009688} +\definecolor{primaryD}{HTML}{00796B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Green +\newcommand{\usePrimaryGreen}{ +\definecolor{primary} {HTML}{4CAF50} +\definecolor{primaryD}{HTML}{388E3C} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Green +\newcommand{\usePrimaryLightGreen}{ +\definecolor{primary} {HTML}{8BC34A} +\definecolor{primaryD}{HTML}{689F38} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Lime +\newcommand{\usePrimaryLime}{ +\definecolor{primary} {HTML}{CDDC39} +\definecolor{primaryD}{HTML}{AFB42B} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Yellow +\newcommand{\usePrimaryYellow}{ +\definecolor{primary} {HTML}{FFEB3B} +\definecolor{primaryD}{HTML}{FBC02D} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Amber +\newcommand{\usePrimaryAmber}{ +\definecolor{primary} {HTML}{FFC107} +\definecolor{primaryD}{HTML}{FFA000} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Orange +\newcommand{\usePrimaryOrange}{ +\definecolor{primary} {HTML}{FF9800} +\definecolor{primaryD}{HTML}{F57C00} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Deep Orange +\newcommand{\usePrimaryDeepOrange}{ +\definecolor{primary} {HTML}{FF5722} +\definecolor{primaryD}{HTML}{E64A19} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Brown +\newcommand{\usePrimaryBrown}{ +\definecolor{primary} {HTML}{795548} +\definecolor{primaryD}{HTML}{5D4037} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Grey +\newcommand{\usePrimaryGrey}{ +\definecolor{primary} {HTML}{9E9E9E} +\definecolor{primaryD}{HTML}{616161} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Blue Grey +\newcommand{\usePrimaryBlueGrey}{ +\definecolor{primary} {HTML}{607D8B} +\definecolor{primaryD}{HTML}{455A64} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + + +% ACCENT --------------------------------------------------------------- + +\newcommand{\useAccent}[2]{ +\definecolor{accent} {HTML}{#1} +\definecolor{textAccent} {HTML}{#2} +} + +% Accent Red +\newcommand{\useAccentRed}{ +\definecolor{accent} {HTML}{FF1744} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Pink +\newcommand{\useAccentPink}{ +\definecolor{accent} {HTML}{F50057} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Purple +\newcommand{\useAccentPurple}{ +\definecolor{accent} {HTML}{D500F9} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Deep Purple +\newcommand{\useAccentDeepPurple}{ +\definecolor{accent} {HTML}{651FFF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Indigo +\newcommand{\useAccentIndigo}{ +\definecolor{accent} {HTML}{3D5AFE} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Blue +\newcommand{\useAccentBlue}{ +\definecolor{accent} {HTML}{2979FF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Light Blue +\newcommand{\useAccentLightBlue}{ +\definecolor{accent} {HTML}{00B0FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Cyan +\newcommand{\useAccentCyan}{ +\definecolor{accent} {HTML}{00E5FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Teal +\newcommand{\useAccentTeal}{ +\definecolor{accent} {HTML}{1DE9B6} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Green +\newcommand{\useAccentGreen}{ +\definecolor{accent} {HTML}{00E676} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Light Green +\newcommand{\useAccentLightGreen}{ +\definecolor{accent} {HTML}{76FF03} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Lime +\newcommand{\useAccentLime}{ +\definecolor{accent} {HTML}{C6FF00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Yellow +\newcommand{\useAccentYellow}{ +\definecolor{accent} {HTML}{FFEA00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Amber +\newcommand{\useAccentAmber}{ +\definecolor{accent} {HTML}{FFC400} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Orange +\newcommand{\useAccentOrange}{ +\definecolor{accent} {HTML}{FF9100} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Deep Orange +\newcommand{\useAccentDeepOrange}{ +\definecolor{accent} {HTML}{FF3D00} +\definecolor{textAccent} {HTML}{FFFFFF} +} + + + +\useLightTheme +\usePrimaryIndigo +\useAccentPink + +% more color settings +\setbeamercolor{block title}{fg=primary} +\hypersetup{linkcolor=primary} +\setbeamercolor{section in toc}{fg=primary} +\setbeamercolor{subsection in toc}{fg=primary} + + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/beamerinnerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/beamerinnerthemematerial.sty new file mode 100755 index 000000000..48d82d16a --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/beamerinnerthemematerial.sty @@ -0,0 +1,42 @@ +\setbeamercolor{background canvas}{bg=BGgrey03} + +% Title page +\defbeamertemplate*{title page}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t][\paperheight]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, + fuzzy shadow={0mm}{-0.6mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.2mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.2mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, height=0.6\paperheight, flushright upper, valign=bottom, boxsep=0.5cm] + {\usebeamerfont{title} \inserttitle}\\ + {\usebeamerfont{author}\insertauthor}\\ + {\usebeamerfont{author}\insertdate} + \end{tcolorbox} + + %\begin{tcolorbox}[arc=5mm,width=10mm,height=10mm, enhanced, % + %colback=accent, coltext=textAccent, % + %fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!primary}, % top + %fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + %fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + %left=1.5mm, right=1.5mm, top=1.5mm, bottom=1.5mm, boxsep=0mm, % + %boxrule=0mm, enlarge left by=10mm, enlarge top by=-10mm]% + %\includegraphics[width=7mm]{\iconFolder/ic_account_circle_48px} + %\end{tcolorbox} + \end{minipage}% + }% + \vfill +} + +% Items +\setbeamertemplate{enumerate items}[circle] +\setbeamertemplate{itemize items}{\Large $\bullet$} +\setbeamertemplate{sections/subsections in toc}[circle] + +\setbeamercolor{local structure}{fg=accent} + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/beamerouterthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/beamerouterthemematerial.sty new file mode 100755 index 000000000..9338c12a0 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/beamerouterthemematerial.sty @@ -0,0 +1,28 @@ +\mode + +% Frame title +\defbeamertemplate*{frametitle}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, % + left=6mm, right=6mm, top=2.6mm, bottom=2mm,% + fuzzy shadow={0mm}{-0.9mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.8mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.5mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, boxsep=2mm] + \ifx\insertframesubtitle\@empty% + {\usebeamerfont{frametitle} \insertframetitle} + \else% + {\usebeamerfont{frametitle} \insertframetitle} + {\usebeamerfont{framesubtitle} \insertframesubtitle} + \fi + \end{tcolorbox} + \end{minipage}% + }% +} + + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/beamerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/beamerthemematerial.sty new file mode 100755 index 000000000..c34246582 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/beamerthemematerial.sty @@ -0,0 +1,82 @@ +\mode + +% Requirement +\RequirePackage{tikz} +\RequirePackage{xcolor} +\RequirePackage{ifthen} +\RequirePackage[many]{tcolorbox} +\RequirePackage{graphicx} + +% Settings +\useinnertheme{material} +\useoutertheme{material} +\usecolortheme{material} + +\setbeamertemplate{navigation symbols}{} + +\setbeamerfont*{title}{size=\Huge} +\setbeamerfont*{frametitle}{size=\large} + +% tcolorbox settings +\newcommand{\setCardSettings}{% +\tcbset{% +colback=BGgrey04, colbacktitle=primary, coltitle=textPrimary, coltext=text,% +enhanced, sharpish corners=all,% +fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!BGgrey03}, % top +fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall +fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig +left=6mm, right=6mm, top=6mm, bottom=6mm, middle=4mm,% +title filled, boxrule=0mm, % +segmentation code={\path[draw=BGgrey01](segmentation.west) -- (segmentation.east);}% +} +} + +\setCardSettings + +\newenvironment{card}[1][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}% + }{% + \begin{tcolorbox}[colbacktitle=primary, coltitle=textPrimary, title=#1, left=6mm, right=6mm, top=3mm, bottom=4mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% + }% +}{% + \end{tcolorbox}% +} + +\newenvironment{cardTiny}{% + \setCardSettings + \begin{tcolorbox}[colbacktitle=primary, left=4mm, right=4mm, top=2mm, bottom=2mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% +}{% + \end{tcolorbox}% +} + + +\newcommand{\cardImg}[3][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, bottom=0mm, middle=1.5mm, boxsep=0mm, width=#3,]% + \includegraphics[width=\textwidth]{#2} + \end{tcolorbox} + }{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, middle=1.5mm, boxsep=0mm, leftlower=6mm, rightlower=6mm, bottom=6mm, , width=#3,]% + \includegraphics[width=\textwidth]{#2} + \tcblower + #1% + \end{tcolorbox} + }% +} + +\newenvironment{frameImg}[2][width]{% + \setCardSettings + \ifthenelse{\equal{#1}{width}}{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[width=\paperwidth, keepaspectratio=true]{#2}}}% + }{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[height=\paperheight, keepaspectratio=true]{#2}}}% + }% + \begin{frame} +}{% + \end{frame} +} + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/img/circuit_01_measurement.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/img/circuit_01_measurement.png new file mode 100755 index 000000000..08ecc8bbb Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/img/circuit_01_measurement.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/img/escudo_heads.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/img/escudo_heads.png new file mode 100755 index 000000000..8a4b33f59 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/img/escudo_heads.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/img/escudo_tails.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/img/escudo_tails.png new file mode 100755 index 000000000..09038c2bf Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/img/escudo_tails.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/img/spinning_coin.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/img/spinning_coin.png new file mode 100755 index 000000000..47018414c Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/img/spinning_coin.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/macros.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/macros.sty new file mode 100755 index 000000000..e8d2b8686 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/macros.sty @@ -0,0 +1,127 @@ +\ProvidesPackage{macros}[2018 My own macros] + +% Packages that main.tex will use AND common header commands +\usepackage{multicol} +\usepackage{tikz} % drawings +\usetikzlibrary{positioning, arrows} +\usepackage{animate} % animations +\usepackage{hyperref} +\usepackage{minted} % code snippets +\usepackage{todonotes} +\let\todox\todo +\renewcommand\todo[1]{\todox[inline]{#1}} + +%%%%%%%%%%%%%%%%% DOCUMENT GLOBAL SETTINGS +% example for author reusing these slides: +\author[Ramalho]{Miguel Sozinho Ramalho} +% \author[LASTNAME]{FIRSTNAME LASTNAME,\\ \scriptsize{based on slides by \textbf{Miguel Sozinho Ramalho}}} +\institute[FEUP]{Faculty of Engineering of the University of Porto} +\subject{Quantum Computing} +\date{November, 2018} + + +% Uncomment for notes on slides +% \usepackage{pgfpages} +% \setbeameroption{show notes} +% \setbeameroption{show notes on second screen=right} + +\graphicspath{{img/}} % add the img folder to graphics path + +% Packages that this file uses +\usepackage{braket} % bra-ket notation +\usepackage{xargs} % custom new commands +\usepackage{xspace} % add xspace after new command to auto insert space + + + +% braket shorthands +\newcommandx{\superpos}[3][1=\textual{\psi},2=0,3=1]{\ket {#1} = \textual{\alpha} \ket{#2} + \textual{\beta} \ket{#3}} +\newcommand{\plusminus}[1][\psi]{\superpos[#1][-][+]} +\newcommand{\pagenumber}{\raggedleft\vfill\scriptsize\insertframenumber/\inserttotalframenumber} +\newcommand{\speedoflight}{3 \times 10^{8} m/s} +\newcommand{\osqrt}{\frac{1}{\sqrt{2}}} +\newcommand{\kz}{\ket{0}} +\newcommand{\ko}{\ket{1}} + +% short shorthands +\newcommand{\qasm}{Qasm\xspace} +\newcommand{\q}{Quantum\xspace} +\newcommand{\qa}{\q Algorithms\xspace} +\newcommand{\qct}{\q Circuit\xspace} +\newcommand{\qcts}{\q Circuits\xspace} +\newcommand{\qc}{\q Computing\xspace} +\newcommand{\qcp}{\q Computation\xspace} +\newcommand{\qec}{\q Error Correction\xspace} +\newcommand{\qft}{\q Fourier Transform\xspace} +\newcommand{\qi}{\q Information\xspace} +\newcommand{\qis}{\q Information Science\xspace} +\newcommand{\qm}{\q Mechanics\xspace} +\newcommand{\qmt}{\q Measurement\xspace} +\newcommand{\qp}{\q Physics\xspace} +\newcommand{\qsp}{\q Superposition\xspace} +\newcommand{\qw}{\q World\xspace} +\newcommand{\mbqc}{Measurement Based \q Computer\xspace} +\newcommand{\aqc}{Adiabatic \q Computation\xspace} + +\newcommand{\cl}{Classical\xspace} +\newcommand{\cc}{Classical Computing\xspace} +\newcommand{\cm}{Classical Mechanics\xspace} +\newcommand{\cp}{Classical Physics\xspace} + +\newcommand{\qk}{Qiskit\xspace} +\newcommand{\qka}{Qiskit Aqua\xspace} +\newcommand{\ibmq}{IBM Q\xspace} +\newcommand{\ibmqe}{IBM Q Experience\xspace} + +\newcommand{\p}{\textbf{P}\xspace} +\newcommand{\np}{\textbf{NP}\xspace} +\newcommand{\bqp}{\textbf{BQP}\xspace} + +\newcommand{\djs}{Deutsch-Jozsa\xspace} +\newcommand{\ds}{Deutsch's\xspace} +\newcommand{\gv}{Grover\xspace} +\newcommand{\gvs}{\gv's\xspace} +\newcommand{\gvsa}{\gv's algorithm\xspace} +\newcommand{\aamp}{Amplitude Amplification\xspace} +\newcommand{\sa}{Shor's algorithm\xspace} + +\newcommand{\phiv}{phase inversion\xspace} +\newcommand{\iatm}{inversion about the mean\xspace} + +\newcommand{\ai}{Artificial Intelligence\xspace} + +%configurable variables +\newcommand{\githubRepo}{https://github.com/msramalho/Teach-Me-Quantum/} +\newcommand{\weeks}{\githubRepo/tree/master/} +\newcommand{\weekZero}{\weeks/Week\%200\%20-\%20Hello\%20Quantum\%20World/} +\newcommand{\weekOne}{\weeks/Week\%201\%20-\%20Quantum\%20Tools/} +\newcommand{\weekTwo}{\weeks/Week\%202\%20-\%20Quantum\%20Information\%20Science/} +\newcommand{\weekThree}{\weeks/Week\%203\%20-\%20Quantum\%20Gates/} +\newcommand{\weekFour}{\weeks/Week\%204\%20-\%20Quantum\%20Facts/} + +%%%%%%%%%%%%%%%%%%%%%%%% quotations +% src: https://tex.stackexchange.com/a/53380/126771 +\newcommand{\@chapapp}{\relax} +\makeatletter +\renewcommand{\@chapapp}{} +\newenvironment{chapquote}[2][2em] + {\setlength{\@tempdima}{#1} + \def\chapquote@author{#2} + \parshape 1 \@tempdima \dimexpr\textwidth-2\@tempdima\relax + \itshape} + {\par\normalfont\hfill--\ \chapquote@author\hspace*{\@tempdima}\par\bigskip} +\makeatother + +%%%%%%%%%%%%%%%%% color on hrefs +\hypersetup{ + colorlinks=true, + linkcolor=primaryD,%blue, + filecolor=primaryD,%cyan, + urlcolor=accent %hrefs +} + +%%%%%%%%%%%%%%%%% minted settings +\setminted[python]{fontsize=\footnotesize} +\setminted[vhdl]{fontsize=\footnotesize} +\definecolor{bgGrey}{rgb}{0.95,0.95,0.95} +\setminted{bgcolor=bgGrey} \ No newline at end of file diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/main.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/main.tex new file mode 100755 index 000000000..f1b7e2fb9 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/latex/main.tex @@ -0,0 +1,362 @@ +\documentclass[aspectratio=43]{beamer} +\usepackage[utf8]{inputenc} + +%%%%%%%%%%%%%%%%%%%%%%%% THEME +\usetheme{material} +\useLightTheme +\usePrimaryDeepOrange +\useAccentCyan + +\usepackage{macros} % must come after theme + +\title{\qis} +\keywords{\qis} + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + + +\begin{frame}{Table of contents} + \begin{card} + \tableofcontents + \end{card} +\end{frame} + + +\section{Introduction} +\begin{frame}{Introduction} + \begin{card} + This week we are going to build the bridge between \textbf{\qm} and \textbf{\qc}, in other words, how the \q laws can be leveraged into the tools we need for, well, computing! This will be done through a parallelism with \cc. \\ + Furthermore, we will also go through our first \textbf{\qk snippets} and finish of by running our first \q circuit on a \textbf{real Quantum Processor}, using \ibmqe. \qasm language will also be briefly mentioned as a tool for this course. + \end{card} +\pagenumber +\end{frame} + +\section{\qis} +\begin{frame}{\qis} + \begin{card} + Is a broad area of studies, it is the \q sibling of typical information science. It is concerned with \textbf{representing}, \textbf{manipulating} and \textbf{maintaining} information in quantum states. It tackles many problems that did not exist, at least in the same form, in \cc, such as \textit{quantum error correction}, \textit{quantum teleportation}, \textit{quantum communication}, ... + \end{card} +\pagenumber +\end{frame} + +\section{Classical bits} +\begin{frame}{Classical bits} + \begin{card} + The simplest unit of information in classical systems, a bit (short for binary unit), which can store either a 0 or a 1 value, thus binary. + \end{card} + \begin{card} + There is quite an interesting metaphor for explaining the difference between bits and their quantum equivalent, based on the concept of coin tossing, from which we will start! + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{Coin tossing for bits} + \begin{multicols}{2} + [ + \begin{cardTiny} + When you toss a coin, the result will either be tails or heads - 0 or 1 (please try not to think of the cases of a vertical landing until you can do it). This is a binary and deterministic state. + \end{cardTiny} + ] + \begin{center} + \includegraphics[width=0.2\textwidth]{escudo_tails} + \\Tails = 0 + \end{center} + \begin{center} + \includegraphics[width=0.2\textwidth]{escudo_heads} + \\Heads = 1 + \end{center} + \end{multicols} + \begin{cardTiny} + \textbf{classical register:} is an array of n independent bits. A 1-bit register is simply a bit and can be in 1 out of $2^1 = 2$ possible states, whereas an 8-bit register can be in 1 out of $2^8 = 256$ states. + \end{cardTiny} +\pagenumber +\end{frame} + +\section{\q bits} +\subsection{qubits} +% https://twitter.com/drtaliagershon?lang=en +% include qiskit snippets of both code parts +\begin{frame}{qubit} + \begin{card} + Assuming you have a quantum state (isolated from interference) that has not been measured. If we refer back to the 2 possible states from Week 0, we know our state is a combination of both 0 and 1, remember? \begin{equation*} + \superpos + \end{equation*} + But what does this mean, exactly? Well, that our system is not in just one of the states (assuming $\alpha \neq 0 \wedge \beta \neq 0$), it holds the information of both possible states, at the same time. + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{Coin tossing for qubits} + \begin{card} + And so, instead of heads or tails, we can compare this state to a coin that is still spinning. Such is the essence of the qubit, a simultaneous state of 0 and 1 (described according to the probability distribution of $\alpha$ and $\beta$). Notice that the state is not hidden according to the probabilities, but rather comprised of both possibilities! + \end{card} + \begin{center} + \includegraphics[width=0.2\textwidth]{spinning_coin} + \\$\superpos$ + \end{center} +\pagenumber +\end{frame} + +\begin{frame}{qubit} + \begin{card} + Unlike a bit, we now have a single quantum state with two simultaneous states. Why does this matter? Because this uncertainty contains in itself much more than a deterministic bit, so that when we perform operations, they are applied to all possible states and not just the one. + \end{card} + \begin{cardTiny} + \textbf{\q register:} is an array of n qubits. A 1-bit quantum register is simply a qubit and can hold $2^1 = 2$ possible states, whereas an 8-qubit quantum register can hold $2^8 = 256$ states, not just 1 of them like classical registers, all of them!! + \end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}{Coin tossing metaphor} + \begin{cardTiny} + If we have one coin, the state \textbf{can be} 0 or 1. + \end{cardTiny} + \begin{center} + \includegraphics[width=0.2\textwidth]{escudo_tails}\\ + \includegraphics[width=0.1\textwidth]{escudo_tails} + \includegraphics[width=0.1\textwidth]{escudo_tails}\\ + \includegraphics[width=0.1\textwidth]{escudo_tails} + \includegraphics[width=0.1\textwidth]{escudo_tails} + \includegraphics[width=0.1\textwidth]{escudo_tails}\\... + \end{center} +\pagenumber +\end{frame} + +\begin{frame}{Coin tossing metaphor} + \begin{cardTiny} + If we have two coins,the state \textbf{can be} 00 or 01 or 10 or 11. + \end{cardTiny} + \begin{center} + \includegraphics[width=0.1\textwidth]{escudo_tails}\\ + \includegraphics[width=0.2\textwidth]{escudo_tails} + \includegraphics[width=0.2\textwidth]{escudo_tails}\\ + \includegraphics[width=0.1\textwidth]{escudo_tails} + \includegraphics[width=0.1\textwidth]{escudo_tails} + \includegraphics[width=0.1\textwidth]{escudo_tails}\\... + \end{center} +\pagenumber +\end{frame} + +\begin{frame}{Coin tossing metaphor} + \begin{cardTiny} + If we have three coins,the state \textbf{can be} 000 or 001 or 010 or 011 or 100 or 101 or 110 or 111. + \end{cardTiny} + \begin{center} + \includegraphics[width=0.1\textwidth]{escudo_tails}\\ + \includegraphics[width=0.1\textwidth]{escudo_tails} + \includegraphics[width=0.1\textwidth]{escudo_tails}\\ + \includegraphics[width=0.2\textwidth]{escudo_tails} + \includegraphics[width=0.2\textwidth]{escudo_tails} + \includegraphics[width=0.2\textwidth]{escudo_tails}\\... + \end{center} +\pagenumber +\end{frame} + +\begin{frame}{Coin tossing metaphor} + \begin{card} + Essentially if we have \textbf{n} coins, we can have 1 of the \textbf{$2^n$} possible states.\\ + For n=4 ($2^4=16$ possible states), 1010 would be: + \end{card} + \begin{center} + \includegraphics[width=0.2\textwidth]{escudo_heads} + \includegraphics[width=0.2\textwidth]{escudo_tails} + \includegraphics[width=0.2\textwidth]{escudo_heads} + \includegraphics[width=0.2\textwidth]{escudo_tails} + \end{center} +\pagenumber +\end{frame} + +%%%%%Qubit coins +\begin{frame}{Coin tossing metaphor} + \begin{cardTiny} + If we have one spinning coin, the state \textbf{is} 0 and 1. + \end{cardTiny} + \begin{center} + \includegraphics[width=0.2\textwidth]{spinning_coin}\\ + \includegraphics[width=0.1\textwidth]{spinning_coin} + \includegraphics[width=0.1\textwidth]{spinning_coin}\\ + \includegraphics[width=0.1\textwidth]{spinning_coin} + \includegraphics[width=0.1\textwidth]{spinning_coin} + \includegraphics[width=0.1\textwidth]{spinning_coin}\\... + \end{center} +\pagenumber +\end{frame} + +\begin{frame}{Coin tossing metaphor} + \begin{cardTiny} + If we have two (independent) spinning coins, the state \textbf{is} 00 and 01 and 10 and 11. + \end{cardTiny} + \begin{center} + \includegraphics[width=0.1\textwidth]{spinning_coin}\\ + \includegraphics[width=0.2\textwidth]{spinning_coin} + \includegraphics[width=0.2\textwidth]{spinning_coin}\\ + \includegraphics[width=0.1\textwidth]{spinning_coin} + \includegraphics[width=0.1\textwidth]{spinning_coin} + \includegraphics[width=0.1\textwidth]{spinning_coin}\\... + \end{center} +\pagenumber +\end{frame} + +\begin{frame}{Coin tossing metaphor} + \begin{cardTiny} + If we have three (independent) spinning coins, the state \textbf{is} 000 and 001 and 010 and 011 and 100 and 101 and 110 and 111. + \end{cardTiny} + \begin{center} + \includegraphics[width=0.1\textwidth]{spinning_coin}\\ + \includegraphics[width=0.1\textwidth]{spinning_coin} + \includegraphics[width=0.1\textwidth]{spinning_coin}\\ + \includegraphics[width=0.2\textwidth]{spinning_coin} + \includegraphics[width=0.2\textwidth]{spinning_coin} + \includegraphics[width=0.2\textwidth]{spinning_coin}\\... + \end{center} +\pagenumber +\end{frame} + +\begin{frame}{Coin tossing metaphor} + \begin{card} + Essentially if we have \textbf{n} (independent) spinning coins, we can have \textbf{$2^n$} possible states simultaneously.\\ + For $n=4$ our state holds $2^4=16$ possibilities. The information we can have grows \textbf{exponentially} with the number of spinning coins or, let me unveil the curtain, qubits! Such is the power of the qubit, and this "supercharged" version of the bit will help us understand why \qc really tips the scales. + \end{card} +\pagenumber +\end{frame} + +\subsection{qudits} +\begin{frame}{qudits} + \begin{card}[Curiosity*] + As the bits also have higher order units (\href{https://en.wikipedia.org/wiki/Ternary_numeral_system}{trit} for a ternary state, ...) so does the qubit have its d-order equivalent: the \textbf{qudit} (quantum d-git).\\ + For the initial case of the hydrogen atom, we could simply consider it as having 3 possible orbits, thus $\ket{0}$, $\ket{1}$ and $\ket{2}$ (a qudit with $d=3$ is actually a qutrit - quantum trit).\\ + Nevertheless, we will not spend much time with these units as their use is not so straightforward, and once you master qubits, it is easier to extrapolate to other arities than the other way around! + \end{card} +\pagenumber +\end{frame} + +\section{Hands-on} +\begin{frame}[fragile]{Hands-on - Registers} +Let us now write some python that will follow us through many lessons to come.\\ +Here's how to create a \href{https://qiskit.org/documentation/_autodoc/qiskit._classicalregister.html?highlight=classicalregister#module-qiskit._classicalregister}{ClassicalRegister} on \qk: +\begin{cardTiny} +\begin{minted}{python} +from qiskit import ClassicalRegister +# Create a Classical Register with 2 bits. +c = ClassicalRegister(2) +\end{minted} +\end{cardTiny} +%%%%%%% +Likewise for \href{https://qiskit.org/documentation/_autodoc/qiskit._quantumregister.html?highlight=quantumregister#module-qiskit._quantumregister}{QuantumRegister}: +\begin{cardTiny} +\begin{minted}{python} +from qiskit import QuantumRegister +# Create a Quantum Register with 2 qubits. +q = QuantumRegister(2) +\end{minted} +\end{cardTiny} +For our purpose, classical registers will serve only to save the results of measurements on qubits. +\end{frame} + +\begin{frame}[fragile]{Hands-on - Quantum Circuit} +To connect our classical and quantum registers in a \href{https://qiskit.org/documentation/_autodoc/qiskit._quantumcircuit.html#qiskit._quantumcircuit.QuantumCircuit}{QuantumCircuit} we do: +\begin{cardTiny} +\begin{minted}{python} +from qiskit import QuantumCircuit +# Create a Quantum Circuit +qc = QuantumCircuit(q, c) +# perform a measurement of our qubits into our bits +qc.measure(q, c) +\end{minted} +\end{cardTiny} +What we can do so far is quite limited, but these are the building blocks we need. In the next lesson we will take a look at the operations that can happen before we measure a quantum circuit! +\end{frame} + + +\begin{frame}[fragile]{Hands-on - Quantum Circuit Visualization} +Here is the code for visualizing our mighty complex circuit: +\begin{cardTiny} +\begin{minted}{python} +from qiskit.tools.visualization + import matplotlib_circuit_drawer as draw +draw(qc) # visualize our quantum circuit +\end{minted} +\end{cardTiny} +\begin{center} + \includegraphics[width=0.25\textwidth]{circuit_01_measurement} +\end{center} +\small{ + You will notice that both qubits ($q0_0$ and $q0_1$) are initially in state $\ket{0}$ meaning that $\beta=0$ in $\superpos$ (what do you think $\alpha=$?). This is by design and how most experiments begin. The symbol connecting the qubit to each bit is the universal symbol for quantum measurement. +} +\end{frame} + +\section{\qasm} +\begin{frame}[fragile]{\qasm} + \begin{cardTiny} + \small{ + \qasm derives from `Open Quantum Assembly Language' and reads `kazm'. This is a rather recent invention, coming of of a \href{https://arxiv.org/abs/1707.03429}{2017 paper}. It is a descriptive language that maps a quantum circuit as text instructions. It has since became a standard and, although we will not be going deeper into it, it is good to understand the overall structure of these documents, here is the example for the above circuit (q0 was changed into q, and c0 to c due to some \qasm interpreters): + } + \end{cardTiny} + \begin{cardTiny} + \begin{minted}{vhdl} % since qasm is not yet supported +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[2]; +creg c[2]; +x q[0]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; + \end{minted} + \end{cardTiny} +\end{frame} +%https://quantumexperience.ng.bluemix.net/qx/editor + +\begin{frame}[fragile]{QASM + \ibmqe exercise} +\small{ + \href{https://quantumexperience.ng.bluemix.net/qx/experience}{\ibmqe} supports QASM in their online editor, and you can literally use a GUI and check the \qasm equivalent (and vice versa). Your task is to go to the \href{https://quantumexperience.ng.bluemix.net/qx/editor}{editor} and do the following: + \begin{itemize} + \itemsep0em + \item Login into \ibmqe + \item Click on "New" for a new experiment + \item Name it as you like (eg. "qasm\_test") + \item Choose ibmqx2 or ibmqx4 (look for available) + \item Click on "Switch to \qasm editor" + \item Paste the above \qasm code and see the visual result + \item Press "Simulate" and see the result (should be $00$ with $1.000$ frequency, this means that out of all the repetitions of the experiment, $100\%$ resulted in $00$). + \item Go ahead and press "Run" and, just for this once, ignore if there is a cached version and choose "New Execution"! + \end{itemize} + You just executed instructions on a \q Computer, you will receive an email with the results (may be more queued jobs ahead of you). +} +\end{frame} + +\begin{frame}{\qk exercise} + \begin{card} + The code provided here has been written to a \href{\weekTwo/exercises/w2_01.ipynb}{Jupyter Notebook} that you are encouraged to execute on your machine, as that exercise will help you understand \qk from the beginning. There is also a code sample for generating the \qasm instructions and, at the end of the notebook, there are more suggested exercises. This, along with the previous slide on testing \ibmqe are your tasks for the week. Feel free, of course, to take some extra steps and trying out new stuff on your version of the notebook! + \end{card} +\pagenumber +\end{frame} + + + +% \section{Computational Complexity} +% % https://en.wikipedia.org/wiki/BQP +% % https://www.quantiki.org/wiki/bqp +% \begin{frame}{Frame Title} +% \begin{card} + +% \end{card} +% \pagenumber +% \end{frame} + + +\section{Where to learn more?} +\begin{frame}{Where to learn more?} +\begin{card} + \begin{itemize} + \item \href{https://github.com/Qiskit/openqasm/blob/master/spec/qasm2.rst}{\qasm documentation} + \item \href{https://hackernoon.com/quantum-computing-explained-a114999299ca}{General article on Hackernoon} to widen your view + \item \href{https://www.youtube.com/watch?v=g_IaVepNDT4}{Veritaserum video on qubits} + \item \href{http://www.smbc-comics.com/comic/the-talk-3}{Eye-opening and funny commic on \qc} + \end{itemize} +\end{card} +\end{frame} +\end{document} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/slides.pdf b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/slides.pdf new file mode 100755 index 000000000..38d17e9b3 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_2-Quantum_Information_Science/slides.pdf differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/README.ipynb new file mode 100644 index 000000000..34988414e --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/README.ipynb @@ -0,0 +1,56 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Week 3 - Quantum Gates\n", + "\n", + " * Algebra reminders: Conjugate Transpose, Hermitian, Unitary operators\n", + " * Quantum Gates\n", + " * one qubit gates: Hadamard, Pauli gates (X, Y, Z)\n", + " * \\>1 qubit gates: Controlled gates, CNOT\n", + " * Preview of other gates\n", + " * Qiskit examples\n", + " * Circuit representation of gates\n", + "\n", + "# Exercises\n", + " * Pen and paper exercises for testing unitary transformations [slides](slides.pdf)\n", + " * [Jupyter notebook with exercises](exercises/w3_01.ipynb): implementing gates, visualizing, executing locally and in remote machines, implement some simple circuits, discussion on practical setups\n", + " * [Jupyter notebook with solutions](exercises/w3_01_s.ipynb)\n", + "\n", + "## Resources\n", + " * [PDF slides](slides.pdf)\n", + " * [slides src](latex/main.tex) Latex files and image resources used in the presentation (useful for PR on slide typos and such)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/exercises/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/exercises/README.ipynb new file mode 100644 index 000000000..0e046deef --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/exercises/README.ipynb @@ -0,0 +1,42 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercises\n", + " * Pen and paper exercises for testing unitary transformations [slides](../slides.pdf)\n", + " * [Jupyter notebook with exercises](w3_01.ipynb): implementing gates, visualizing, executing locally and in remote machines, implement some simple circuits, discussion on practical setups\n", + " * [Jupyter notebook with solutions](w3_01_s.ipynb)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/exercises/reverse_cnot.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/exercises/reverse_cnot.png new file mode 100755 index 000000000..abb23dcda Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/exercises/reverse_cnot.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/exercises/swap_with_cnot.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/exercises/swap_with_cnot.png new file mode 100755 index 000000000..5dbc7454d Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/exercises/swap_with_cnot.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/exercises/w3_01.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/exercises/w3_01.ipynb new file mode 100644 index 000000000..1c6a0498f --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/exercises/w3_01.ipynb @@ -0,0 +1,598 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum Gates in Qiskit\n", + "Start by some typical setup and definition of useful functions, which you are encouraged to look at.\n", + "\n", + "Then, head to the [exercises start](#Exercises-Start-Here) to start coding!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import execute" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Choose the drawer you like best:\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as draw\n", + "#from qiskit.tools.visualization import circuit_drawer as draw" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import IBMQ\n", + "IBMQ.load_accounts() # make sure you have setup your token locally to use this" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Utils for visualizing experimental results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def show_results(D):\n", + " # D is a dictionary with classical bits as keys and count as value\n", + " # example: D = {'000': 497, '001': 527}\n", + " plt.bar(range(len(D)), list(D.values()), align='center')\n", + " plt.xticks(range(len(D)), list(D.keys()))\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Utils for executing circuits" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import Aer\n", + "# See a list of available local simulators\n", + "print(\"Aer backends: \", Aer.backends())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# see a list of available remote backends (these are freely given by IBM)\n", + "print(\"IBMQ Backends: \", IBMQ.backends())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Execute locally" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# execute circuit and either display a histogram of the results\n", + "def execute_locally(qc, draw_circuit=False):\n", + " # Compile and run the Quantum circuit on a simulator backend\n", + " backend_sim = Aer.get_backend('qasm_simulator')\n", + " job_sim = execute(qc, backend_sim)\n", + " result_sim = job_sim.result()\n", + " result_counts = result_sim.get_counts(qc)\n", + " \n", + " # Print the results\n", + " print(\"simulation: \", result_sim, result_counts)\n", + " \n", + " if draw_circuit: # draw the circuit\n", + " draw(qc)\n", + " else: # or show the results\n", + " show_results(result_counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Execute remotely" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit.backends.ibmq import least_busy\n", + "import time\n", + "# Compile and run on a real device backend\n", + "def execute_remotely(qc, draw_circuit=False):\n", + " if draw_circuit: # draw the circuit\n", + " draw(qc)\n", + " try:\n", + " # select least busy available device and execute.\n", + " least_busy_device = least_busy(IBMQ.backends(simulator=False))\n", + " print(\"Running on current least busy device: \", least_busy_device)\n", + "\n", + " # running the job\n", + " job_exp = execute(qc, backend=least_busy_device, shots=1024, max_credits=10)\n", + "\n", + " lapse, interval = 0, 10\n", + " while job_exp.status().name != 'DONE':\n", + " print('Status @ {} seconds'.format(interval * lapse))\n", + " print(job_exp.status())\n", + " time.sleep(interval)\n", + " lapse += 1\n", + " print(job_exp.status())\n", + " exp_result = job_exp.result()\n", + " result_counts = exp_result.get_counts(qc)\n", + "\n", + " # Show the results\n", + " print(\"experiment: \", exp_result, result_counts)\n", + " if not draw_circuit: # show the results\n", + " show_results(result_counts)\n", + " except:\n", + " print(\"All devices are currently unavailable.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Building the circuit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def new_circuit(size):\n", + " # Create a Quantum Register with size qubits\n", + " qr = QuantumRegister(size)\n", + "\n", + " # Create a Classical Register with size bits\n", + " cr = ClassicalRegister(size)\n", + "\n", + " # Create a Quantum Circuit acting on the qr and cr register\n", + " return qr, cr, QuantumCircuit(qr, cr)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "

Exercises Start Here

\n", + "\n", + "Make sure you ran all the above cells in order, as the following exercises use functions defined and imported above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adding Gates" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hadamard\n", + "This gate is required to make superpositions.\n", + "\n", + "**TASK:** Create a new circuit with 2 qubits using `new_circuit` (very useful to reconstruct your circuit in Jupyter)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add a Hadamard on the _least important_ qubit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# H gate on qubit 0\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Perform a measurement on that qubit to the first bit in the register" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# measure the specific qubit\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** check the result using `execute_locally` test both `True` and `False` for the `draw_circuit` option" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result should be something like `COMPLETED {'00': 516, '01': 508}`.\n", + "\n", + "**TASK:** What does this mean?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> That we got our superposition as expected, approximately 50% of the experiments yielded 0 and the other 50% yielded 1." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "### X Gate (Pauli-X)\n", + "This gate is also referred to as a bit-flip.\n", + "\n", + "\n", + "**TASK:** Create a new circuit with 2 qubits using `new_circuit` (very useful to reconstruct your circuit in Jupyter)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add an X gate on the _most important_ qubit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# H gate on qubit 1\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Perform a measurement on that qubit to the first bit in the register" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# measure the specific qubit\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** check the result using `execute_locally` test both `True` and `False` for the `draw_circuit` option" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Free flow\n", + "At this stage you are encouraged to repeat (and tweek as you wish) the above tasks for the Hadamard and X gates, especially on single qubit gates." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "### CNOT (Controlled NOT, Controlled X gate)\n", + "This gate uses a control qubit and a target qubit to \n", + "\n", + "\n", + "**TASK:** Create a new circuit with 2 qubits using `new_circuit` (very useful to reconstruct your circuit in Jupyter)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add a CNOT gate with the _least important_ qubit as the control and the other as the target" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# CNOT gate\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Perform a measurement on the qubits" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# measure the specific qubit\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** check the result using `execute_locally` test both `True` and `False` for the `draw_circuit` option" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Since a single CNOT does not seem very powerful, go ahead and add a hadamard gate to the two qubits (before the CNOT gate) and redo the experiment (you can try this by using a single Hadamard on each qubit as well)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# H gate on 2 qubits\n", + "\n", + "# CNOT gate\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# measure\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Free flow: Changing the direction of a CNOT gate\n", + "Check this [application of the CNOT](https://github.com/Qiskit/ibmqx-user-guides/blob/master/rst/full-user-guide/004-Quantum_Algorithms/061-Basic_Circuit_Identities_and_Larger_Circuits.rst#changing-the-direction-of-a-cnot-gate) and try to replicate it using Qiskit!\n", + "\n", + "Try to replicate it using the unitary transformations as well, pen and paper is better suited for this.\n", + "\n", + "![diagram of the problem](reverse_cnot.png)\n", + "\n", + "A CNOT equals Hadamards on both qubits an oposite CNOT and two new Hadamards!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Free flow: Swapping the states of qubits with a CNOT gate\n", + "Check this [application of the CNOT](https://github.com/Qiskit/ibmqx-user-guides/blob/master/rst/full-user-guide/004-Quantum_Algorithms/061-Basic_Circuit_Identities_and_Larger_Circuits.rst#swapping-the-states-of-qubits) and try to replicate it using Qiskit! \n", + "\n", + "Try to replicate it using the unitary transformations as well, pen and paper is better suited for this.\n", + "\n", + "![diagram of the problem](swap_with_cnot.png)\n", + "\n", + "Three CNOT gates allow 2 qubits to swap their original values, can you do this with 2 classical bits??" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Executing on a remote device\n", + "If you do this, you may have to wait for some time (usually a few minutes), depending on the current demand of the devices\n", + "\n", + "**TASK:** Create a circuit that simply measures 5 qubits and run it on a remote device using `execute_remotely`!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# measure\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# execute_remotely(circuit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Comment on the results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> \n", + "**Important:** Once you get the results, you may see that, in fact, most of the iterations resulted in `00000`, but you will also see that there will be a few hits on other bit configurations (typically mostly composed of `0`s, like `00001` or `00010`) this is due to **experimental error** on the quantum device and is a concern to take into account when deploying into real devices!!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/exercises/w3_01_s.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/exercises/w3_01_s.ipynb new file mode 100644 index 000000000..07133c48d --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/exercises/w3_01_s.ipynb @@ -0,0 +1,746 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum Gates in Qiskit\n", + "Start by some typical setup and definition of useful functions, which you are encouraged to look at.\n", + "\n", + "Then, head to the [exercises start](#Exercises-Start-Here) to start coding!" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import execute" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Choose the drawer you like best:\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as draw\n", + "#from qiskit.tools.visualization import circuit_drawer as draw" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import IBMQ\n", + "IBMQ.load_accounts() # make sure you have setup your token locally to use this" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Utils for visualizing experimental results" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def show_results(D):\n", + " # D is a dictionary with classical bits as keys and count as value\n", + " # example: D = {'000': 497, '001': 527}\n", + " plt.bar(range(len(D)), list(D.values()), align='center')\n", + " plt.xticks(range(len(D)), list(D.keys()))\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Utils for executing circuits" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Aer backends: [, , , , , ]\n" + ] + } + ], + "source": [ + "from qiskit import Aer\n", + "# See a list of available local simulators\n", + "print(\"Aer backends: \", Aer.backends())" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "IBMQ Backends: [, , , , ]\n" + ] + } + ], + "source": [ + "# see a list of available remote backends (these are freely given by IBM)\n", + "print(\"IBMQ Backends: \", IBMQ.backends())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Execute locally" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# execute circuit and either display a histogram of the results\n", + "def execute_locally(qc, draw_circuit=False):\n", + " # Compile and run the Quantum circuit on a simulator backend\n", + " backend_sim = Aer.get_backend('qasm_simulator')\n", + " job_sim = execute(qc, backend_sim)\n", + " result_sim = job_sim.result()\n", + " result_counts = result_sim.get_counts(qc)\n", + " \n", + " # Print the results\n", + " print(\"simulation: \", result_sim, result_counts)\n", + " \n", + " if draw_circuit: # draw the circuit\n", + " draw(qc)\n", + " else: # or show the results\n", + " show_results(result_counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Execute remotely" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit.backends.ibmq import least_busy\n", + "import time\n", + "# Compile and run on a real device backend\n", + "def execute_remotely(qc, draw_circuit=False):\n", + " if draw_circuit: # draw the circuit\n", + " draw(qc)\n", + " try:\n", + " # select least busy available device and execute.\n", + " least_busy_device = least_busy(IBMQ.backends(simulator=False))\n", + " print(\"Running on current least busy device: \", least_busy_device)\n", + "\n", + " # running the job\n", + " job_exp = execute(qc, backend=least_busy_device, shots=1024, max_credits=10)\n", + "\n", + " lapse, interval = 0, 10\n", + " while job_exp.status().name != 'DONE':\n", + " print('Status @ {} seconds'.format(interval * lapse))\n", + " print(job_exp.status())\n", + " time.sleep(interval)\n", + " lapse += 1\n", + " print(job_exp.status())\n", + " exp_result = job_exp.result()\n", + " result_counts = exp_result.get_counts(qc)\n", + "\n", + " # Show the results\n", + " print(\"experiment: \", exp_result, result_counts)\n", + " if not draw_circuit: # show the results\n", + " show_results(result_counts)\n", + " except:\n", + " print(\"All devices are currently unavailable.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Building the circuit" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "def new_circuit(size):\n", + " # Create a Quantum Register with size qubits\n", + " qr = QuantumRegister(size)\n", + "\n", + " # Create a Classical Register with size bits\n", + " cr = ClassicalRegister(size)\n", + "\n", + " # Create a Quantum Circuit acting on the qr and cr register\n", + " return qr, cr, QuantumCircuit(qr, cr)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "

Exercises Start Here

\n", + "\n", + "Make sure you ran all the above cells in order, as the following exercises use functions defined and imported above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adding Gates" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hadamard\n", + "This gate is required to make superpositions.\n", + "\n", + "**TASK:** Create a new circuit with 2 qubits using `new_circuit` (very useful to reconstruct your circuit in Jupyter)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "qr, cr, circuit = new_circuit(2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add a Hadamard on the _least important_ qubit" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# H gate on qubit 0\n", + "circuit.h(qr[0]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Perform a measurement on that qubit to the first bit in the register" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "# measure the specific qubit\n", + "circuit.measure(qr[0], cr[0]); # ; hides the output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** check the result using `execute_locally` test both `True` and `False` for the `draw_circuit` option" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "simulation: COMPLETED {'00': 515, '01': 509}\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Try both commands:\n", + "execute_locally(circuit,draw_circuit=True)\n", + "# execute_locally(circuit,draw_circuit=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result should be something like `COMPLETED {'00': 516, '01': 508}`.\n", + "\n", + "**TASK:** What does this mean?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> That we got our superposition as expected, approximately 50% of the experiments yielded 0 and the other 50% yielded 1." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "### X Gate (Pauli-X)\n", + "This gate is also referred to as a bit-flip.\n", + "\n", + "\n", + "**TASK:** Create a new circuit with 2 qubits using `new_circuit` (very useful to reconstruct your circuit in Jupyter)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "qr, cr, circuit = new_circuit(2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add an X gate on the _most important_ qubit" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# H gate on qubit 1\n", + "circuit.x(qr[1]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Perform a measurement on that qubit to the first bit in the register" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# measure the specific qubit\n", + "circuit.measure(qr[1], cr[0]); # ; hides the output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** check the result using `execute_locally` test both `True` and `False` for the `draw_circuit` option" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "simulation: COMPLETED {'01': 1024}\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Try both commands:\n", + "execute_locally(circuit,draw_circuit=True)\n", + "# execute_circuit(circuit,draw_circuit=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Free flow\n", + "At this stage you are encouraged to repeat (and tweek as you wish) the above tasks for the Hadamard and X gates, especially on single qubit gates." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "### CNOT (Controlled NOT, Controlled X gate)\n", + "This gate uses a control qubit and a target qubit to \n", + "\n", + "\n", + "**TASK:** Create a new circuit with 2 qubits using `new_circuit` (very useful to reconstruct your circuit in Jupyter)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "qr, cr, circuit = new_circuit(2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add a CNOT gate with the _least important_ qubit as the control and the other as the target" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# CNOT gate\n", + "circuit.cx(qr[0], qr[1]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Perform a measurement on the qubits" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "# measure the specific qubit\n", + "circuit.measure(qr, cr); # ; hides the output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** check the result using `execute_locally` test both `True` and `False` for the `draw_circuit` option" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "simulation: COMPLETED {'00': 1024}\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Try both commands:\n", + "execute_locally(circuit,draw_circuit=True)\n", + "# execute_circuit(circuit,draw_circuit=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Since a single CNOT does not seem very powerful, go ahead and add a hadamard gate to the two qubits (before the CNOT gate) and redo the experiment (you can try this by using a single Hadamard on each qubit as well)." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "qr, cr, circuit = new_circuit(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "# H gate on 2 qubits\n", + "circuit.h(qr);\n", + "# CNOT gate\n", + "circuit.cx(qr[0], qr[1]);" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "# measure\n", + "circuit.measure(qr, cr); # ; hides the output" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "simulation: COMPLETED {'00': 272, '01': 254, '10': 265, '11': 233}\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Try both commands:\n", + "execute_locally(circuit,draw_circuit=True)\n", + "# execute_circuit(circuit,draw_circuit=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Free flow: Changing the direction of a CNOT gate\n", + "Check this [application of the CNOT](https://github.com/Qiskit/ibmqx-user-guides/blob/master/rst/full-user-guide/004-Quantum_Algorithms/061-Basic_Circuit_Identities_and_Larger_Circuits.rst#changing-the-direction-of-a-cnot-gate) and try to replicate it using Qiskit!\n", + "\n", + " Try to replicate it using the unitary transformations as well, pen and paper is better suited for this.\n", + "\n", + "![diagram of the problem](reverse_cnot.png)\n", + "\n", + "A CNOT equals Hadamards on both qubits an oposite CNOT and two new Hadamards!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Free flow: Swapping the states of qubits with a CNOT gate\n", + "Check this [application of the CNOT](https://github.com/Qiskit/ibmqx-user-guides/blob/master/rst/full-user-guide/004-Quantum_Algorithms/061-Basic_Circuit_Identities_and_Larger_Circuits.rst#swapping-the-states-of-qubits) and try to replicate it using Qiskit!\n", + "\n", + " Try to replicate it using the unitary transformations as well, pen and paper is better suited for this.\n", + " \n", + "![diagram of the problem](swap_with_cnot.png)\n", + "\n", + "Three CNOT gates allow 2 qubits to swap their original values, can you do this with 2 classical bits??" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Executing on a remote device\n", + "If you do this, you may have to wait for some time (usually a few minutes), depending on the current demand of the devices\n", + "\n", + "**TASK:** Create a circuit that simply measures 5 qubits and run it on a remote device using `execute_remotely`!" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "qr, cr, circuit = new_circuit(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "circuit.measure(qr, cr);" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running on current least busy device: ibmq_16_melbourne\n", + "Status @ 0 seconds\n", + "JobStatus.INITIALIZING\n", + "Status @ 10 seconds\n", + "JobStatus.RUNNING\n", + "Status @ 20 seconds\n", + "JobStatus.RUNNING\n", + "JobStatus.DONE\n", + "experiment: COMPLETED {'00000': 661, '00001': 170, '00010': 6, '00011': 1, '00100': 3, '01000': 114, '01001': 38, '01010': 2, '01011': 2, '10000': 15, '10001': 7, '11000': 5}\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "execute_remotely(circuit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Comment on the results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> \n", + "**Important:** Once you get the results, you may see that, in fact, most of the iterations resulted in `00000`, but you will also see that there will be a few hits on other bit configurations (typically mostly composed of `0`s, like `00001` or `00010`) this is due to **experimental error** on the quantum device and is a concern to take into account when deploying into real devices!!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/beamercolorthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/beamercolorthemematerial.sty new file mode 100755 index 000000000..7fbe50bd2 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/beamercolorthemematerial.sty @@ -0,0 +1,286 @@ +\mode + +% light theme +\newcommand{\useLightTheme}{ +\definecolor{text} {HTML}{000000} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{E0E0E0} +\definecolor{BGgrey02}{HTML}{F5F5F5} +\definecolor{BGgrey03}{HTML}{FAFAFA} +\definecolor{BGgrey04}{HTML}{FFFFFF} +} + + +% dark theme +\newcommand{\useDarkTheme}{ +\definecolor{text} {HTML}{FFFFFF} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{000000} +\definecolor{BGgrey02}{HTML}{212121} +\definecolor{BGgrey03}{HTML}{303030} +\definecolor{BGgrey04}{HTML}{424242} +} + +% PRIMARY -------------------------------------------------------------- +\newcommand{\usePrimary}[3]{ +\definecolor{primary} {HTML}{#1} +\definecolor{primaryD}{HTML}{#2} +\definecolor{textPrimary} {HTML}{#3} +} + +% Primary Red +\newcommand{\usePrimaryRed}{ +\definecolor{primary} {HTML}{F44336} +\definecolor{primaryD}{HTML}{D32F2F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Pink +\newcommand{\usePrimaryPink}{ +\definecolor{primary} {HTML}{E91E63} +\definecolor{primaryD}{HTML}{C2185B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Purple +\newcommand{\usePrimaryPurple}{ +\definecolor{primary} {HTML}{6A1B9A} +\definecolor{primaryD}{HTML}{7B1FA2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Deep Purple +\newcommand{\usePrimaryDeepPurple}{ +\definecolor{primary} {HTML}{673AB7} +\definecolor{primaryD}{HTML}{512DA8} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Indigo +\newcommand{\usePrimaryIndigo}{ +\definecolor{primary} {HTML}{3F51B5} +\definecolor{primaryD}{HTML}{303F9F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Blue +\newcommand{\usePrimaryBlue}{ +\definecolor{primary} {HTML}{2196F3} +\definecolor{primaryD}{HTML}{1976D2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Blue +\newcommand{\usePrimaryLightBlue}{ +\definecolor{primary} {HTML}{03A9F4} +\definecolor{primaryD}{HTML}{0288D1} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Cyan +\newcommand{\usePrimaryCyan}{ +\definecolor{primary} {HTML}{00BCD4} +\definecolor{primaryD}{HTML}{0097A7} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Teal +\newcommand{\usePrimaryTeal}{ +\definecolor{primary} {HTML}{009688} +\definecolor{primaryD}{HTML}{00796B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Green +\newcommand{\usePrimaryGreen}{ +\definecolor{primary} {HTML}{4CAF50} +\definecolor{primaryD}{HTML}{388E3C} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Green +\newcommand{\usePrimaryLightGreen}{ +\definecolor{primary} {HTML}{8BC34A} +\definecolor{primaryD}{HTML}{689F38} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Lime +\newcommand{\usePrimaryLime}{ +\definecolor{primary} {HTML}{CDDC39} +\definecolor{primaryD}{HTML}{AFB42B} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Yellow +\newcommand{\usePrimaryYellow}{ +\definecolor{primary} {HTML}{FFEB3B} +\definecolor{primaryD}{HTML}{FBC02D} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Amber +\newcommand{\usePrimaryAmber}{ +\definecolor{primary} {HTML}{FFC107} +\definecolor{primaryD}{HTML}{FFA000} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Orange +\newcommand{\usePrimaryOrange}{ +\definecolor{primary} {HTML}{FF9800} +\definecolor{primaryD}{HTML}{F57C00} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Deep Orange +\newcommand{\usePrimaryDeepOrange}{ +\definecolor{primary} {HTML}{FF5722} +\definecolor{primaryD}{HTML}{E64A19} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Brown +\newcommand{\usePrimaryBrown}{ +\definecolor{primary} {HTML}{795548} +\definecolor{primaryD}{HTML}{5D4037} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Grey +\newcommand{\usePrimaryGrey}{ +\definecolor{primary} {HTML}{9E9E9E} +\definecolor{primaryD}{HTML}{616161} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Blue Grey +\newcommand{\usePrimaryBlueGrey}{ +\definecolor{primary} {HTML}{607D8B} +\definecolor{primaryD}{HTML}{455A64} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + + +% ACCENT --------------------------------------------------------------- + +\newcommand{\useAccent}[2]{ +\definecolor{accent} {HTML}{#1} +\definecolor{textAccent} {HTML}{#2} +} + +% Accent Red +\newcommand{\useAccentRed}{ +\definecolor{accent} {HTML}{FF1744} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Pink +\newcommand{\useAccentPink}{ +\definecolor{accent} {HTML}{F50057} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Purple +\newcommand{\useAccentPurple}{ +\definecolor{accent} {HTML}{D500F9} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Deep Purple +\newcommand{\useAccentDeepPurple}{ +\definecolor{accent} {HTML}{651FFF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Indigo +\newcommand{\useAccentIndigo}{ +\definecolor{accent} {HTML}{3D5AFE} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Blue +\newcommand{\useAccentBlue}{ +\definecolor{accent} {HTML}{2979FF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Light Blue +\newcommand{\useAccentLightBlue}{ +\definecolor{accent} {HTML}{00B0FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Cyan +\newcommand{\useAccentCyan}{ +\definecolor{accent} {HTML}{00E5FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Teal +\newcommand{\useAccentTeal}{ +\definecolor{accent} {HTML}{1DE9B6} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Green +\newcommand{\useAccentGreen}{ +\definecolor{accent} {HTML}{00E676} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Light Green +\newcommand{\useAccentLightGreen}{ +\definecolor{accent} {HTML}{76FF03} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Lime +\newcommand{\useAccentLime}{ +\definecolor{accent} {HTML}{C6FF00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Yellow +\newcommand{\useAccentYellow}{ +\definecolor{accent} {HTML}{FFEA00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Amber +\newcommand{\useAccentAmber}{ +\definecolor{accent} {HTML}{FFC400} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Orange +\newcommand{\useAccentOrange}{ +\definecolor{accent} {HTML}{FF9100} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Deep Orange +\newcommand{\useAccentDeepOrange}{ +\definecolor{accent} {HTML}{FF3D00} +\definecolor{textAccent} {HTML}{FFFFFF} +} + + + +\useLightTheme +\usePrimaryIndigo +\useAccentPink + +% more color settings +\setbeamercolor{block title}{fg=primary} +\hypersetup{linkcolor=primary} +\setbeamercolor{section in toc}{fg=primary} +\setbeamercolor{subsection in toc}{fg=primary} + + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/beamerinnerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/beamerinnerthemematerial.sty new file mode 100755 index 000000000..48d82d16a --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/beamerinnerthemematerial.sty @@ -0,0 +1,42 @@ +\setbeamercolor{background canvas}{bg=BGgrey03} + +% Title page +\defbeamertemplate*{title page}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t][\paperheight]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, + fuzzy shadow={0mm}{-0.6mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.2mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.2mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, height=0.6\paperheight, flushright upper, valign=bottom, boxsep=0.5cm] + {\usebeamerfont{title} \inserttitle}\\ + {\usebeamerfont{author}\insertauthor}\\ + {\usebeamerfont{author}\insertdate} + \end{tcolorbox} + + %\begin{tcolorbox}[arc=5mm,width=10mm,height=10mm, enhanced, % + %colback=accent, coltext=textAccent, % + %fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!primary}, % top + %fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + %fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + %left=1.5mm, right=1.5mm, top=1.5mm, bottom=1.5mm, boxsep=0mm, % + %boxrule=0mm, enlarge left by=10mm, enlarge top by=-10mm]% + %\includegraphics[width=7mm]{\iconFolder/ic_account_circle_48px} + %\end{tcolorbox} + \end{minipage}% + }% + \vfill +} + +% Items +\setbeamertemplate{enumerate items}[circle] +\setbeamertemplate{itemize items}{\Large $\bullet$} +\setbeamertemplate{sections/subsections in toc}[circle] + +\setbeamercolor{local structure}{fg=accent} + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/beamerouterthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/beamerouterthemematerial.sty new file mode 100755 index 000000000..9338c12a0 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/beamerouterthemematerial.sty @@ -0,0 +1,28 @@ +\mode + +% Frame title +\defbeamertemplate*{frametitle}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, % + left=6mm, right=6mm, top=2.6mm, bottom=2mm,% + fuzzy shadow={0mm}{-0.9mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.8mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.5mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, boxsep=2mm] + \ifx\insertframesubtitle\@empty% + {\usebeamerfont{frametitle} \insertframetitle} + \else% + {\usebeamerfont{frametitle} \insertframetitle} + {\usebeamerfont{framesubtitle} \insertframesubtitle} + \fi + \end{tcolorbox} + \end{minipage}% + }% +} + + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/beamerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/beamerthemematerial.sty new file mode 100755 index 000000000..c34246582 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/beamerthemematerial.sty @@ -0,0 +1,82 @@ +\mode + +% Requirement +\RequirePackage{tikz} +\RequirePackage{xcolor} +\RequirePackage{ifthen} +\RequirePackage[many]{tcolorbox} +\RequirePackage{graphicx} + +% Settings +\useinnertheme{material} +\useoutertheme{material} +\usecolortheme{material} + +\setbeamertemplate{navigation symbols}{} + +\setbeamerfont*{title}{size=\Huge} +\setbeamerfont*{frametitle}{size=\large} + +% tcolorbox settings +\newcommand{\setCardSettings}{% +\tcbset{% +colback=BGgrey04, colbacktitle=primary, coltitle=textPrimary, coltext=text,% +enhanced, sharpish corners=all,% +fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!BGgrey03}, % top +fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall +fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig +left=6mm, right=6mm, top=6mm, bottom=6mm, middle=4mm,% +title filled, boxrule=0mm, % +segmentation code={\path[draw=BGgrey01](segmentation.west) -- (segmentation.east);}% +} +} + +\setCardSettings + +\newenvironment{card}[1][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}% + }{% + \begin{tcolorbox}[colbacktitle=primary, coltitle=textPrimary, title=#1, left=6mm, right=6mm, top=3mm, bottom=4mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% + }% +}{% + \end{tcolorbox}% +} + +\newenvironment{cardTiny}{% + \setCardSettings + \begin{tcolorbox}[colbacktitle=primary, left=4mm, right=4mm, top=2mm, bottom=2mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% +}{% + \end{tcolorbox}% +} + + +\newcommand{\cardImg}[3][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, bottom=0mm, middle=1.5mm, boxsep=0mm, width=#3,]% + \includegraphics[width=\textwidth]{#2} + \end{tcolorbox} + }{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, middle=1.5mm, boxsep=0mm, leftlower=6mm, rightlower=6mm, bottom=6mm, , width=#3,]% + \includegraphics[width=\textwidth]{#2} + \tcblower + #1% + \end{tcolorbox} + }% +} + +\newenvironment{frameImg}[2][width]{% + \setCardSettings + \ifthenelse{\equal{#1}{width}}{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[width=\paperwidth, keepaspectratio=true]{#2}}}% + }{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[height=\paperheight, keepaspectratio=true]{#2}}}% + }% + \begin{frame} +}{% + \end{frame} +} + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/img/cnot.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/img/cnot.png new file mode 100755 index 000000000..99796dce4 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/img/cnot.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/macros.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/macros.sty new file mode 100755 index 000000000..e8d2b8686 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/macros.sty @@ -0,0 +1,127 @@ +\ProvidesPackage{macros}[2018 My own macros] + +% Packages that main.tex will use AND common header commands +\usepackage{multicol} +\usepackage{tikz} % drawings +\usetikzlibrary{positioning, arrows} +\usepackage{animate} % animations +\usepackage{hyperref} +\usepackage{minted} % code snippets +\usepackage{todonotes} +\let\todox\todo +\renewcommand\todo[1]{\todox[inline]{#1}} + +%%%%%%%%%%%%%%%%% DOCUMENT GLOBAL SETTINGS +% example for author reusing these slides: +\author[Ramalho]{Miguel Sozinho Ramalho} +% \author[LASTNAME]{FIRSTNAME LASTNAME,\\ \scriptsize{based on slides by \textbf{Miguel Sozinho Ramalho}}} +\institute[FEUP]{Faculty of Engineering of the University of Porto} +\subject{Quantum Computing} +\date{November, 2018} + + +% Uncomment for notes on slides +% \usepackage{pgfpages} +% \setbeameroption{show notes} +% \setbeameroption{show notes on second screen=right} + +\graphicspath{{img/}} % add the img folder to graphics path + +% Packages that this file uses +\usepackage{braket} % bra-ket notation +\usepackage{xargs} % custom new commands +\usepackage{xspace} % add xspace after new command to auto insert space + + + +% braket shorthands +\newcommandx{\superpos}[3][1=\textual{\psi},2=0,3=1]{\ket {#1} = \textual{\alpha} \ket{#2} + \textual{\beta} \ket{#3}} +\newcommand{\plusminus}[1][\psi]{\superpos[#1][-][+]} +\newcommand{\pagenumber}{\raggedleft\vfill\scriptsize\insertframenumber/\inserttotalframenumber} +\newcommand{\speedoflight}{3 \times 10^{8} m/s} +\newcommand{\osqrt}{\frac{1}{\sqrt{2}}} +\newcommand{\kz}{\ket{0}} +\newcommand{\ko}{\ket{1}} + +% short shorthands +\newcommand{\qasm}{Qasm\xspace} +\newcommand{\q}{Quantum\xspace} +\newcommand{\qa}{\q Algorithms\xspace} +\newcommand{\qct}{\q Circuit\xspace} +\newcommand{\qcts}{\q Circuits\xspace} +\newcommand{\qc}{\q Computing\xspace} +\newcommand{\qcp}{\q Computation\xspace} +\newcommand{\qec}{\q Error Correction\xspace} +\newcommand{\qft}{\q Fourier Transform\xspace} +\newcommand{\qi}{\q Information\xspace} +\newcommand{\qis}{\q Information Science\xspace} +\newcommand{\qm}{\q Mechanics\xspace} +\newcommand{\qmt}{\q Measurement\xspace} +\newcommand{\qp}{\q Physics\xspace} +\newcommand{\qsp}{\q Superposition\xspace} +\newcommand{\qw}{\q World\xspace} +\newcommand{\mbqc}{Measurement Based \q Computer\xspace} +\newcommand{\aqc}{Adiabatic \q Computation\xspace} + +\newcommand{\cl}{Classical\xspace} +\newcommand{\cc}{Classical Computing\xspace} +\newcommand{\cm}{Classical Mechanics\xspace} +\newcommand{\cp}{Classical Physics\xspace} + +\newcommand{\qk}{Qiskit\xspace} +\newcommand{\qka}{Qiskit Aqua\xspace} +\newcommand{\ibmq}{IBM Q\xspace} +\newcommand{\ibmqe}{IBM Q Experience\xspace} + +\newcommand{\p}{\textbf{P}\xspace} +\newcommand{\np}{\textbf{NP}\xspace} +\newcommand{\bqp}{\textbf{BQP}\xspace} + +\newcommand{\djs}{Deutsch-Jozsa\xspace} +\newcommand{\ds}{Deutsch's\xspace} +\newcommand{\gv}{Grover\xspace} +\newcommand{\gvs}{\gv's\xspace} +\newcommand{\gvsa}{\gv's algorithm\xspace} +\newcommand{\aamp}{Amplitude Amplification\xspace} +\newcommand{\sa}{Shor's algorithm\xspace} + +\newcommand{\phiv}{phase inversion\xspace} +\newcommand{\iatm}{inversion about the mean\xspace} + +\newcommand{\ai}{Artificial Intelligence\xspace} + +%configurable variables +\newcommand{\githubRepo}{https://github.com/msramalho/Teach-Me-Quantum/} +\newcommand{\weeks}{\githubRepo/tree/master/} +\newcommand{\weekZero}{\weeks/Week\%200\%20-\%20Hello\%20Quantum\%20World/} +\newcommand{\weekOne}{\weeks/Week\%201\%20-\%20Quantum\%20Tools/} +\newcommand{\weekTwo}{\weeks/Week\%202\%20-\%20Quantum\%20Information\%20Science/} +\newcommand{\weekThree}{\weeks/Week\%203\%20-\%20Quantum\%20Gates/} +\newcommand{\weekFour}{\weeks/Week\%204\%20-\%20Quantum\%20Facts/} + +%%%%%%%%%%%%%%%%%%%%%%%% quotations +% src: https://tex.stackexchange.com/a/53380/126771 +\newcommand{\@chapapp}{\relax} +\makeatletter +\renewcommand{\@chapapp}{} +\newenvironment{chapquote}[2][2em] + {\setlength{\@tempdima}{#1} + \def\chapquote@author{#2} + \parshape 1 \@tempdima \dimexpr\textwidth-2\@tempdima\relax + \itshape} + {\par\normalfont\hfill--\ \chapquote@author\hspace*{\@tempdima}\par\bigskip} +\makeatother + +%%%%%%%%%%%%%%%%% color on hrefs +\hypersetup{ + colorlinks=true, + linkcolor=primaryD,%blue, + filecolor=primaryD,%cyan, + urlcolor=accent %hrefs +} + +%%%%%%%%%%%%%%%%% minted settings +\setminted[python]{fontsize=\footnotesize} +\setminted[vhdl]{fontsize=\footnotesize} +\definecolor{bgGrey}{rgb}{0.95,0.95,0.95} +\setminted{bgcolor=bgGrey} \ No newline at end of file diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/main.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/main.tex new file mode 100755 index 000000000..b3269d2a3 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/main.tex @@ -0,0 +1,318 @@ +\documentclass[aspectratio=43]{beamer} +\usepackage[utf8]{inputenc} + +%%%%%%%%%%%%%%%%%%%%%%%% THEME +\usetheme{material} +\useLightTheme +\usePrimaryBrown +\useAccentAmber + +\usepackage{macros} % must come after theme + +\title{\q Gates} +\keywords{\qcts} + + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + + +\begin{frame}{Table of contents} + \begin{card} + \tableofcontents + \end{card} +\end{frame} + + +\section{Introduction} +\begin{frame}{Introduction} + \begin{card} + This week is focused on recalling some linear algebra notions that are very useful for designing quantum circuits. We will briefly recall the concept of Hermitian and Unitary operators.\\ Afterwards, we will go through some important one-qubit gates and their \qk representation, moving on to 2-qubit gates.\\Lastly, we will have exercises to practice these topics and make them feel more natural, as they are the backbone of what's to come! + \end{card} +\pagenumber +\end{frame} + +\section{Conjugate Transpose} +\begin{frame}{Conjugate Transpose $A^\dag$} +\begin{card} + The Conjugate Transpose of a complex matrix $A$ (denoted $A^\dag$) is the transpose of $A$ ($A^T$) after we take the complex conjugate of each element of $A$. + Here's an example: + \begin{equation*} + \begin{bmatrix}1 + i & -1\\ 1 & -1 - i\end{bmatrix}^\dag + = + \begin{bmatrix}1 - i & 1\\ -1 & -1 + i\end{bmatrix} + \end{equation*} +\end{card} +\begin{cardTiny} + Recall that the complex conjugate of $a+bi$ is simply $a-bi$ (geometrically, it is the reflection of the complex number over the real axis in the complex plane). +\end{cardTiny} +\pagenumber +\end{frame} + + +\section{Hermitian Matrix} +\begin{frame}{Hermitian Matrix $A = A^\dag$} +\begin{card} + Hermitian refers to complex matrices ($H \in \mathbb{C}^2$) that equal their complex conjugate: $A = A^\dag$.\\ + These are matrices whose eigenvalues are always real numbers ($\lambda \in \mathbb{R}$). +\end{card} +\begin{card} + Try to verify the following example: + \begin{equation*} + A = \begin{bmatrix}1 & 2+i & 3\\2-i & 5 & i\\3 & -i & 1\end{bmatrix} + \end{equation*} + \begin{equation*} + A^\dag = A \Rightarrow\text{ A is Hermitian} + \end{equation*} +\end{card} +\pagenumber +\end{frame} + +\section{Unitary Operators} +\begin{frame}{Unitary Operators} + \begin{card} + A Linear Transformation ($T$) allows the conversion from a vector space ($V$) to another ($W$) $T : W \rightarrow V$ such that: + \begin{itemize} + \item $T(v1+v2)=T(v1)+T(v2)$ : $v1, v2 \in V$ + \item $T(\gamma \times v)=\gamma \times T(v)$ for any scalar $\gamma$ + \end{itemize} + \end{card} + + \begin{cardTiny} + A Unitary Operator is a Linear Operator (an operator that performs a linear transformation), with the additional constraint that it is unitary: $AA^\dag=A^\dag A = I$.\\ + These means we can apply a unitary operator to a vector space, apply its inverse and get the original vector space. We care about them because this is exactly how quantum gates operate, with a reversibility property! + \end{cardTiny} +\pagenumber +\end{frame} + + +\section{\q Gates} +\begin{frame}{\q Gates} +\begin{card} + A quantum gate is an analogy of classic gates and is also a useful paradigm to think about qubit manipulation.\\ Also known as quantum logic gates, they have the following properties: + \begin{itemize} + \item Reversible, unlike some classical gates (for example the OR gate) + \item Represented by Unitary matrices + \item Each gate is only applied to the same number of qubits (one-qubit gates, two-qubit gates, ...) + \end{itemize} + We will see some of the more common gates and how to use them in \qk, but more will come into play as your quantum knowledge increases. +\end{card} +\pagenumber +\end{frame} + + + +\subsection{Hadamard} +\begin{frame}{Hadamard} +\begin{cardTiny} + The Hadamard gate is applied to a single qubit. If your qubit is in a state $\ket{0}$, after the Hadamard, it will be in a superposition of $\osqrt\ket{0}+\osqrt\ket{1}$. If it is in $\ket{1}$ it will end up in $\osqrt\ket{0}-\osqrt\ket{1}$. It is essential to create a \textbf{superposition} from $\ket{0}$. Try to verify this using the vector version of the qubit and the following unitary operator: + \begin{equation*} + H=\osqrt\begin{bmatrix}1 & 1\\1 & -1\end{bmatrix} + \end{equation*} + Also, try to check that $HH^\dag=H^\dag H = I$. +\end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}[fragile]{Hadamard in \qk} +\begin{card} + After you have created your QuantumCircuit \mintinline{python}{circuit} + \begin{minted}{python} +# Create a Quantum Register with 2 qubits +qr = QuantumRegister(2) # 1 would suffice + +# Create a Quantum Circuit from the qr and cr registers +circuit = QuantumCircuit(qr, cr) + +# H gate on qubit 0 +circuit.h(qr[0]) + \end{minted} + \begin{center} + \input{matcha/hadamard.tex} + \end{center} + You will have the chance to test it on this week's exercises. +\end{card} +\end{frame} + + +\subsection{X Gate} +\begin{frame}{X Gate} +\begin{card} + The X gate (also known as Pauli-X) is applied to a single qubit. It can be seen as the equivalent of the NOT gate in classical circuitry, with respect to the zero-one basis. It maps $\ket{0}$ to $\ket{1}$ and $\ket{1}$ to $\ket{0}$. Try to verify this using the vector version of the qubit and the following unitary operator: + \begin{equation*} + X=\begin{bmatrix}0 & 1\\1 & 0\end{bmatrix} + \end{equation*} + Also, try to check that $XX^\dag=X^\dag X = I$. +\end{card} +\pagenumber +\end{frame} + +\begin{frame}[fragile]{X Gate in \qk} +\begin{card} + After you have created your QuantumCircuit \mintinline{python}{circuit} + \begin{minted}{python} +# X gate on qubit 1 +circuit.x(qr[1]) + \end{minted} + \begin{center} + \input{matcha/pauliX.tex} + \end{center} + You will have the chance to test it on this week's exercises. +\end{card} +\end{frame} + + + +\subsection{Y Gate} +\begin{frame}{Y Gate} +\begin{card} + The Y gate (also known as Pauli-Y) is applied to a single qubit. It is usually called the phase-flip because it maps $\ket{0}$ to $i\ket{1}$ and $\ket{1}$ to $-i\ket{0}$. Try to verify this using the vector version of the qubit and the following unitary operator: + \begin{equation*} + Y=\begin{bmatrix}0 & -i\\i & 0\end{bmatrix} + \end{equation*} + Also, try to check that $YY^\dag=Y^\dag Y = I$. +\end{card} +\pagenumber +\end{frame} + +\begin{frame}[fragile]{Y Gate in \qk} +\begin{card} + After you have created your QuantumCircuit \mintinline{python}{circuit} + \begin{minted}{python} +# Y gate on qubit 1 +circuit.y(qr[1]) + \end{minted} + \begin{center} + \input{matcha/pauliY.tex} + \end{center} + You will have the chance to test it on this week's exercises. +\end{card} +\end{frame} + + + +\subsection{Z Gate} +\begin{frame}{Z Gate} +\begin{card} + The Z gate (also known as Pauli-Z or phase-flip) is applied to a single qubit. It is usually called the phase-flip because it leaves the state $\ket{0}$ unchanged and maps $\ket{1}$ to $-\ket{1}$. Try to verify this using the vector version of the qubit and the following unitary operator: + \begin{equation*} + Z=\begin{bmatrix}1 & 0\\0 & -1\end{bmatrix} + \end{equation*} + Also, try to check that $ZZ^\dag=Z^\dag Z = I$. +\end{card} +\pagenumber +\end{frame} + +\begin{frame}[fragile]{Z Gate in \qk} +\begin{card} + After you have created your QuantumCircuit \mintinline{python}{circuit} + \begin{minted}{python} +# Z gate on qubit 1 +circuit.z(qr[1]) + \end{minted} + \begin{center} + \input{matcha/pauliZ.tex} + \end{center} + You will have the chance to test it on this week's exercises. +\end{card} +\begin{cardTiny} + \textbf{Curiosity*: } The squared matrices of Pauli gates (X, Y, Z) is the identity itself: $X^2 = Y^2 = Z^2 = I$ +\end{cardTiny} +\end{frame} + + + +\subsection{Controlled gates} +\begin{frame}{Controlled gates} +\begin{card} + Controlled gates are an extension of lower order gates. Usually, they perform the same operation, but use one or more extra qubits that are used to control/ascertain whether the original operation should be applied.\\ + For instance, controlled gates for 2 qubits add a \textbf{control} qubit and, if it is $\ket{1}$, the original gate is applied to the other qubit; if the control qubit is $\ket{0}$ the other qubit remains the same (typically).\\ + \begin{equation*} + CNOT = \left\{\begin{matrix} + \text{control qubit is } \ket{0} \Rightarrow \text{leave target qubit} \\ + \text{control qubit is } \ket{1} \Rightarrow \text{apply gate to target} + \end{matrix}\right. + \end{equation*} + Given two qubits, it flips the second iff the first is $\ket{1}$. +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{Controlled Not (CNOT)} +\begin{card} + One example of this is the CNOT gate, one of the most important 2-qubit gates. It is a controlled gate derived from the X gate, so it is also know as CX gate. Its unitary operator is: + \begin{equation*} + \begin{bmatrix}1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 1\\ 0 & 0 & 1 & 0\end{bmatrix} + \end{equation*} +\end{card} +\pagenumber +\end{frame} + +\begin{frame}[fragile]{CNOT Gate in \qk} +\begin{card} + After you have created your QuantumCircuit \mintinline{python}{circuit} with at least 2 qubits. + \begin{minted}{python} +# CNOT gate on qubits 0 and 1 +# qubit 0 is the control qubit +# qubit 1 is the target qubit +circuit.cx(qr[0], qr[1]) + \end{minted} + \begin{center} + \includegraphics[width=0.2\textwidth]{cnot} + \end{center} + You will have the chance to test it on this week's exercises. +\end{card} +\end{frame} + + +\subsection{More Gates} % swap, CCNOT, CSWAP, XX +\begin{frame}{More Gates} +\begin{cardTiny} + As you dive deeper into the \qw, more gates will present themselves, you may even create your own (just remember their properties and do check if no one has come up with it yet).\\ + To spike your interest, here are a few more names you will eventually come across for quantum gates: + \begin{itemize} + \item SWAP + \item Phase shift family + \item CCNOT (AKA Toffoli) + \item CSWAP (\textbf{C} usually stands for `Controlled') + \item XX (not the band, no) + \item Deutsch + \end{itemize} +\end{cardTiny} +\pagenumber +\end{frame} + +\section{Exercises} +\begin{frame}{Exercises} +\begin{card}[Hands-on] + This week you will start writing your first quantum gates, run simple circuits on a simulator and plot the measurements. Do all of that in a real quantum device (and learn about real world concerns you should take).\\ + When you feel ready, move on to the \href{\weekThree/exercises/w3_01.ipynb}{exercises} and, if you feel stuck, you may look at the \href{\weekThree/exercises/w3_01_s.ipynb}{solutions}. +\end{card} +\pagenumber +\end{frame} + +% \section{Universal \q Gates} +% \begin{frame}{FRAME} +% \begin{card} + +% \end{card} +% \pagenumber +% \end{frame} + + + + +\section{Where to learn more?} +\begin{frame}{Where to learn more?} +\begin{card} + \begin{itemize} + \item \href{https://www.khanacademy.org/math/linear-algebra}{Khan Academy on Linear Algebra} + \item \href{https://towardsdatascience.com/demystifying-quantum-gates-one-qubit-at-a-time-54404ed80640}{Medium article on common \q Gates} + \item \href{https://www.quantiki.org/wiki/quantum-gates}{Quantiki entry on \q Gates} + \end{itemize} +\end{card} +\end{frame} +\end{document} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/matcha/hadamard.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/matcha/hadamard.tex new file mode 100755 index 000000000..ff40b4aab --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/matcha/hadamard.tex @@ -0,0 +1,19 @@ + + +\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt + +\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1] +%uncomment if require: \path (0,300); %set diagram left start at 0, and has height of 300 + +%Straight Lines [id:da09620307218751756] +\draw (101.3,111.2) -- (191.3,111.2) ; + + +%Shape: Rectangle [id:dp7033845205148042] +\draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (131.3,95.7) -- (161.3,95.7) -- (161.3,126.7) -- (131.3,126.7) -- cycle ; + +% Text Node +\draw (146,111) node [align=left] {H}; + + +\end{tikzpicture} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/matcha/pauliX.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/matcha/pauliX.tex new file mode 100755 index 000000000..99d2fcaaf --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/matcha/pauliX.tex @@ -0,0 +1,19 @@ + + +\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt + +\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1] +%uncomment if require: \path (0,300); %set diagram left start at 0, and has height of 300 + +%Straight Lines [id:da09620307218751756] +\draw (101.3,111.2) -- (191.3,111.2) ; + + +%Shape: Rectangle [id:dp7033845205148042] +\draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (131.3,95.7) -- (161.3,95.7) -- (161.3,126.7) -- (131.3,126.7) -- cycle ; + +% Text Node +\draw (146,111) node [align=left] {X}; + + +\end{tikzpicture} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/matcha/pauliY.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/matcha/pauliY.tex new file mode 100755 index 000000000..c35599338 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/matcha/pauliY.tex @@ -0,0 +1,19 @@ + + +\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt + +\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1] +%uncomment if require: \path (0,300); %set diagram left start at 0, and has height of 300 + +%Straight Lines [id:da09620307218751756] +\draw (101.3,111.2) -- (191.3,111.2) ; + + +%Shape: Rectangle [id:dp7033845205148042] +\draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (131.3,95.7) -- (161.3,95.7) -- (161.3,126.7) -- (131.3,126.7) -- cycle ; + +% Text Node +\draw (146,111) node [align=left] {Y}; + + +\end{tikzpicture} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/matcha/pauliZ.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/matcha/pauliZ.tex new file mode 100755 index 000000000..d7410bc1e --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/latex/matcha/pauliZ.tex @@ -0,0 +1,19 @@ + + +\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt + +\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1] +%uncomment if require: \path (0,300); %set diagram left start at 0, and has height of 300 + +%Straight Lines [id:da09620307218751756] +\draw (101.3,111.2) -- (191.3,111.2) ; + + +%Shape: Rectangle [id:dp7033845205148042] +\draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (131.3,95.7) -- (161.3,95.7) -- (161.3,126.7) -- (131.3,126.7) -- cycle ; + +% Text Node +\draw (146,111) node [align=left] {Z}; + + +\end{tikzpicture} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/slides.pdf b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/slides.pdf new file mode 100755 index 000000000..886728c33 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_3-Quantum_Gates/slides.pdf differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/README.ipynb new file mode 100644 index 000000000..65826ab36 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/README.ipynb @@ -0,0 +1,55 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Week 4 - Quantum Facts\n", + "\n", + " * Universal Classical Gates\n", + " * Universal Quantum Gates\n", + " * How unitary transformations allow for cyclic basis conversion\n", + " * Entanglement\n", + " * Big O Notation\n", + " * BQP\n", + "\n", + "# Exercises\n", + " * Pen and paper exercises for basis conversion using single qubit gates [slides](slides.pdf)\n", + " * [Jupyter notebook with exercises](exercises/w4_01.ipynb): implementing and understanding entanglement, observing entanglement in lab settings\n", + " * [Jupyter notebook with solutions](exercises/w4_01_s.ipynb)\n", + "\n", + "## Resources\n", + " * [PDF slides](slides.pdf)\n", + " * [slides src](latex/main.tex) Latex files and image resources used in the presentation (useful for PR on slide typos and such)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/exercises/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/exercises/README.ipynb new file mode 100644 index 000000000..f3fad80cd --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/exercises/README.ipynb @@ -0,0 +1,42 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercises\n", + " * Pen and paper exercises for basis conversion using single qubit gates [../slides](slides.pdf)\n", + " * [Jupyter notebook with exercises](w4_01.ipynb): implementing and understanding entanglement, observing entanglement in lab settings\n", + " * [Jupyter notebook with solutions](w4_01_s.ipynb)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/exercises/w4_01.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/exercises/w4_01.ipynb new file mode 100644 index 000000000..eecf6d628 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/exercises/w4_01.ipynb @@ -0,0 +1,599 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum Facts in Qiskit\n", + "Here some useful topics will be covered and others recalled to make you more familiar with quantum terms and concepts.\n", + "\n", + "Start by some typical setup and definition of useful functions, which you are encouraged to look at.\n", + "\n", + "Then, head to the [exercises start](#Exercises-Start-Here) to start coding!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import execute" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Choose the drawer you like best:\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as draw\n", + "#from qiskit.tools.visualization import circuit_drawer as draw" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import IBMQ\n", + "IBMQ.load_accounts() # make sure you have setup your token locally to use this" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Utils for visualizing experimental results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def show_results(D):\n", + " # D is a dictionary with classical bits as keys and count as value\n", + " # example: D = {'000': 497, '001': 527}\n", + " plt.bar(range(len(D)), list(D.values()), align='center')\n", + " plt.xticks(range(len(D)), list(D.keys()))\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Utils for executing circuits" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import Aer\n", + "# See a list of available local simulators\n", + "print(\"Aer backends: \", Aer.backends())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# see a list of available remote backends (these are freely given by IBM)\n", + "print(\"IBMQ Backends: \", IBMQ.backends())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Execute locally" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# execute circuit and either display a histogram of the results\n", + "def execute_locally(qc, draw_circuit=False):\n", + " # Compile and run the Quantum circuit on a simulator backend\n", + " backend_sim = Aer.get_backend('qasm_simulator')\n", + " job_sim = execute(qc, backend_sim)\n", + " result_sim = job_sim.result()\n", + " result_counts = result_sim.get_counts(qc)\n", + " \n", + " # Print the results\n", + " print(\"simulation: \", result_sim, result_counts)\n", + " \n", + " if draw_circuit: # draw the circuit\n", + " draw(qc)\n", + " else: # or show the results\n", + " show_results(result_counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Execute remotely" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit.backends.ibmq import least_busy\n", + "import time\n", + "# Compile and run on a real device backend\n", + "def execute_remotely(qc, draw_circuit=False):\n", + " if draw_circuit: # draw the circuit\n", + " draw(qc)\n", + " try:\n", + " # select least busy available device and execute.\n", + " least_busy_device = least_busy(IBMQ.backends(simulator=False))\n", + " print(\"Running on current least busy device: \", least_busy_device)\n", + "\n", + " # running the job\n", + " job_exp = execute(qc, backend=least_busy_device, shots=1024, max_credits=10)\n", + "\n", + " lapse, interval = 0, 10\n", + " while job_exp.status().name != 'DONE':\n", + " print('Status @ {} seconds'.format(interval * lapse))\n", + " print(job_exp.status())\n", + " time.sleep(interval)\n", + " lapse += 1\n", + " print(job_exp.status())\n", + " exp_result = job_exp.result()\n", + " result_counts = exp_result.get_counts(qc)\n", + "\n", + " # Show the results\n", + " print(\"experiment: \", exp_result, result_counts)\n", + " if not draw_circuit: # show the results\n", + " show_results(result_counts)\n", + " except:\n", + " print(\"All devices are currently unavailable.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Building the circuit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def new_circuit(size):\n", + " # Create a Quantum Register with size qubits\n", + " qr = QuantumRegister(size)\n", + "\n", + " # Create a Classical Register with size bits\n", + " cr = ClassicalRegister(size)\n", + "\n", + " # Create a Quantum Circuit acting on the qr and cr register\n", + " return qr, cr, QuantumCircuit(qr, cr)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "

Exercises Start Here

\n", + "\n", + "Make sure you ran all the above cells in order, as the following exercises use functions defined and imported above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating Entanglement\n", + "Although, you have already entangled qubits on the previous week, you were not aware of it.\n", + "\n", + "Naturally, we will redo some of those tasks and focus on interpreting their results." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hadamard + CNOT\n", + "\n", + "**TASK:** Create a new circuit with 2 qubits using `new_circuit` (very useful to reconstruct your circuit in Jupyter)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create the circuit\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add a Hadamard on qubit 0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# H gate on qubit 0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add a CX (CNOT) gate on control qubit 0 and target qubit 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Perform a measurement" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# measure the qubits\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** check the result using `execute_locally` test both `True` and `False` for the `draw_circuit` option" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result should be something like `COMPLETED {'00': 506, '11': 518}`.\n", + "\n", + "**TASK:** What does this mean?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Bell state in IBMQ\n", + "**TASK:** Get the QASM specification for your code and use it on [IBMQ QASM editor](https://quantumexperience.ng.bluemix.net/qx/qasm)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "### More entanglement\n", + "**TASK:** Repeat the previous circuit, but add a bit-flip on the target qubit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create the circuit\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add a Hadamard on qubit 0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# H gate on qubit 0\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add an X gate on qubit 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# X gate on qubit 1\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add a CX (CNOT) gate on control qubit 0 and target qubit 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Perform a measurement" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# measure the qubits\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** check the result using `execute_locally` test both `True` and `False` for the `draw_circuit` option" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Observe the results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Quantum measurement in different basis\n", + "Given any of our previous circuits, we are going to measure them on both the zero-one basis as well as on the plus-minus basis." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Reconstruct one of the previous circuits (do not apply the measurement yet)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create the circuit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add a Hadamard after each qubit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** perform the measurement now and execute" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Why is this measurement different from the previous one?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Free flow\n", + "Take a look at the following explanation of Entanglement, taken from the [qiskit-tutorial](https://github.com/Qiskit/qiskit-tutorial/blob/master/community/terra/qis_intro/entanglement_introduction.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Entanglement\n", + "\n", + "The core idea behind the second Principle is *entanglement*. Upon reading the Principle, one might be inclined to think that entanglement is simply strong correlation between two entitities -- but entanglement goes well beyond mere perfect (classical) correlation. If you and I read the same paper, we will have learned the same information. If a third person comes along and reads the same paper they also will have learned this information. All three persons in this case are perfectly correlated, and they will remain correlated even if they are separated from each other. \n", + "\n", + "The situation with quantum entanglement is a bit more subtle. In the quantum world, you and I could read the same quantum paper, and yet we will not learn what information is actually contained in the paper until we get together and share our information. However, when we are together, we find that we can unlock more information from the paper than we initially thought possible. Thus, quantum entanglement goes much further than perfect correlation.\n", + "\n", + "To demonstrate this, we will define the controlled-NOT (CNOT) gate and the composition of two systems. The convention we use Qiskit is to label states by writing the first qubit's name in the rightmost position, thereby allowing us to easily convert from binary to decimal. As a result, we define the tensor product between operators $q_0$ and $q_1$ by $q_1\\otimes q_0$. \n", + "\n", + "Taking $q_0$ as the control and $q_1$ as the target, the CNOT with this representation is given by\n", + "\n", + "$$ CNOT =\\begin{pmatrix} 1 & 0 & 0 & 0\\\\ 0 & 0 & 0 & 1\\\\0& 0& 1 & 0\\\\0 & 1 & 0 & 0 \\end{pmatrix},$$\n", + "\n", + "which is non-standard in the quantum community, but more easily connects to classical computing, where the least significant bit (LSB) is typically on the right. An entangled state of the two qubits can be made via an $H$ gate on the control qubit, followed by the CNOT gate. This generates a particular maximally entangled two-qubit state known as a Bell state, named after John Stewart Bell ([learn more about Bell and his contributions to quantum physics and entanglement](https://en.wikipedia.org/wiki/John_Stewart_Bell)). \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Entanglement on a real device\n", + "**TASK:** Create a simple entanglement and execute it on a real device." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "execute_remotely(circuit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Comment on the results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/exercises/w4_01_s.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/exercises/w4_01_s.ipynb new file mode 100644 index 000000000..3b56ddfa9 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/exercises/w4_01_s.ipynb @@ -0,0 +1,789 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum Facts in Qiskit\n", + "Here some useful topics will be covered and others recalled to make you more familiar with quantum terms and concepts.\n", + "\n", + "Start by some typical setup and definition of useful functions, which you are encouraged to look at.\n", + "\n", + "Then, head to the [exercises start](#Exercises-Start-Here) to start coding!" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import execute" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Choose the drawer you like best:\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as draw\n", + "#from qiskit.tools.visualization import circuit_drawer as draw" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import IBMQ\n", + "IBMQ.load_accounts() # make sure you have setup your token locally to use this" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Utils for visualizing experimental results" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def show_results(D):\n", + " # D is a dictionary with classical bits as keys and count as value\n", + " # example: D = {'000': 497, '001': 527}\n", + " plt.bar(range(len(D)), list(D.values()), align='center')\n", + " plt.xticks(range(len(D)), list(D.keys()))\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Utils for executing circuits" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Aer backends: [, , , , , ]\n" + ] + } + ], + "source": [ + "from qiskit import Aer\n", + "# See a list of available local simulators\n", + "print(\"Aer backends: \", Aer.backends())" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "IBMQ Backends: [, , , , ]\n" + ] + } + ], + "source": [ + "# see a list of available remote backends (these are freely given by IBM)\n", + "print(\"IBMQ Backends: \", IBMQ.backends())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Execute locally" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# execute circuit and either display a histogram of the results\n", + "def execute_locally(qc, draw_circuit=False):\n", + " # Compile and run the Quantum circuit on a simulator backend\n", + " backend_sim = Aer.get_backend('qasm_simulator')\n", + " job_sim = execute(qc, backend_sim)\n", + " result_sim = job_sim.result()\n", + " result_counts = result_sim.get_counts(qc)\n", + " \n", + " # Print the results\n", + " print(\"simulation: \", result_sim, result_counts)\n", + " \n", + " if draw_circuit: # draw the circuit\n", + " draw(qc)\n", + " else: # or show the results\n", + " show_results(result_counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Execute remotely" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit.backends.ibmq import least_busy\n", + "import time\n", + "# Compile and run on a real device backend\n", + "def execute_remotely(qc, draw_circuit=False):\n", + " if draw_circuit: # draw the circuit\n", + " draw(qc)\n", + " try:\n", + " # select least busy available device and execute.\n", + " least_busy_device = least_busy(IBMQ.backends(simulator=False))\n", + " print(\"Running on current least busy device: \", least_busy_device)\n", + "\n", + " # running the job\n", + " job_exp = execute(qc, backend=least_busy_device, shots=1024, max_credits=10)\n", + "\n", + " lapse, interval = 0, 10\n", + " while job_exp.status().name != 'DONE':\n", + " print('Status @ {} seconds'.format(interval * lapse))\n", + " print(job_exp.status())\n", + " time.sleep(interval)\n", + " lapse += 1\n", + " print(job_exp.status())\n", + " exp_result = job_exp.result()\n", + " result_counts = exp_result.get_counts(qc)\n", + "\n", + " # Show the results\n", + " print(\"experiment: \", exp_result, result_counts)\n", + " if not draw_circuit: # show the results\n", + " show_results(result_counts)\n", + " except:\n", + " print(\"All devices are currently unavailable.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Building the circuit" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "def new_circuit(size):\n", + " # Create a Quantum Register with size qubits\n", + " qr = QuantumRegister(size)\n", + "\n", + " # Create a Classical Register with size bits\n", + " cr = ClassicalRegister(size)\n", + "\n", + " # Create a Quantum Circuit acting on the qr and cr register\n", + " return qr, cr, QuantumCircuit(qr, cr)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "

Exercises Start Here

\n", + "\n", + "Make sure you ran all the above cells in order, as the following exercises use functions defined and imported above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating Entanglement\n", + "Although, you have already entangled qubits on the previous week, you were not aware of it.\n", + "\n", + "Naturally, we will redo some of those tasks and focus on interpreting their results." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hadamard + CNOT\n", + "\n", + "**TASK:** Create a new circuit with 2 qubits using `new_circuit` (very useful to reconstruct your circuit in Jupyter)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "qr, cr, circuit = new_circuit(2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add a Hadamard on qubit 0" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# H gate on qubit 0\n", + "circuit.h(qr[0]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add a CX (CNOT) gate on control qubit 0 and target qubit 1" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "circuit.cx(qr[0], qr[1]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Perform a measurement" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# measure the qubits\n", + "circuit.measure(qr, cr);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** check the result using `execute_locally` test both `True` and `False` for the `draw_circuit` option" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "simulation: COMPLETED {'00': 504, '11': 520}\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Try both commands:\n", + "execute_locally(circuit,draw_circuit=True)\n", + "# execute_locally(circuit,draw_circuit=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result should be something like `COMPLETED {'00': 506, '11': 518}`.\n", + "\n", + "**TASK:** What does this mean?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> Given two qubits, we could end up with the measurements `00`, `01`, `10` and `11` (4 possibilities)\n", + "> \n", + "> However, we got only `00` and `11` (2 cases)! This is due to the fact that our qubits are **entangled**!\n", + ">\n", + "> The state of qubit 1 is correlated to that of qubit 0 (control bit). Correlation means the implication is true in both directions.\n", + ">\n", + "> By making them entangled, we have ensured that `00` and `11` are the only possible states: if qubit 0 measures to 1 the other qubit, according to our circuit, could never have been 0, as it will be flipped from a starting state of 0.\n", + ">\n", + "> Furthermore, we could apply the gates, take both qubits elsewhere (apart from each other) without destroying any superposition, perform the measurements and the result would not change... curious, right?\n", + ">\n", + "> This particular disposition of entangled qubits describes what is known as a [Bell state](https://en.wikipedia.org/wiki/Bell_state). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Bell state in IBMQ\n", + "**TASK:** Get the QASM specification for your code and use it on [IBMQ QASM editor](https://quantumexperience.ng.bluemix.net/qx/qasm)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "OPENQASM 2.0;\n", + "include \"qelib1.inc\";\n", + "qreg q0[2];\n", + "creg c0[2];\n", + "h q0[0];\n", + "cx q0[0],q0[1];\n", + "measure q0[0] -> c0[0];\n", + "measure q0[1] -> c0[1];\n", + "\n" + ] + } + ], + "source": [ + "print(circuit.qasm())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> You will probably get an error for trying to execute this QASM, like:\n", + ">\n", + "> `Error in line 6: CX gate between q2[0], q2[1] is not allowed in this topology`\n", + ">\n", + "> To sort it, simply apply the Hadamard to `q2[1]` and change the CNOT to `cx q2[1] q2[0]`:\n", + "```qasm\n", + "OPENQASM 2.0;\n", + "include \"qelib1.inc\";\n", + "qreg q2[2];\n", + "creg c2[2];\n", + "h q2[1];\n", + "cx q2[1],q2[0];\n", + "measure q2[0] -> c2[0];\n", + "measure q2[1] -> c2[1];\n", + "```\n", + "> This is exactly the same circuit, but the norm seems to prefer this orientation rather than our original one (With the control qubit on the CNOT underneath the target qubit)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "### More entanglement\n", + "**TASK:** Repeat the previous circuit, but add a bit-flip on the target qubit" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# create the circuit\n", + "qr, cr, circuit = new_circuit(2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add a Hadamard on qubit 0" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# H gate on qubit 0\n", + "circuit.h(qr[0]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add an X gate on qubit 1" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# X gate on qubit 1\n", + "circuit.x(qr[1]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add a CX (CNOT) gate on control qubit 0 and target qubit 1" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "circuit.cx(qr[0], qr[1]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Perform a measurement" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "# measure the qubits\n", + "circuit.measure(qr, cr);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** check the result using `execute_locally` test both `True` and `False` for the `draw_circuit` option" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "simulation: COMPLETED {'01': 513, '10': 511}\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Try both commands:\n", + "execute_locally(circuit,draw_circuit=True)\n", + "# execute_locally(circuit,draw_circuit=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Observe the results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> The same phenomena happened, however the states now were `01` and `10`, only 2 out of 4 possibilities!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Quantum measurement in different basis\n", + "Given any of our previous circuits, we are going to measure them on both the zero-one basis as well as on the plus-minus basis." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Reconstruct one of the previous circuits (do not apply the measurement yet)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "# create the circuit\n", + "qr, cr, circuit = new_circuit(2)\n", + "circuit.h(qr[0])\n", + "circuit.cx(qr[0], qr[1]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Add a Hadamard after each qubit" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "circuit.h(qr);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** perform the measurement now and execute" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "simulation: COMPLETED {'00': 517, '11': 507}\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "circuit.measure(qr, cr)\n", + "execute_locally(circuit,draw_circuit=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Why is this measurement different from the previous one?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> Since we applied the Hadamard gate on our qubits, their superposition was shifted accordingly, meaning the $\\alpha$ and $\\beta$ on the superposition were rotated by 45º. Once we measure, now, the result should be interpreted in the plus-minus basis, meaning that 1 is |+> and 0 is |->." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Free flow\n", + "Take a look at the following explanation of Entanglement, taken from the [qiskit-tutorial](https://github.com/Qiskit/qiskit-tutorial/blob/master/community/terra/qis_intro/entanglement_introduction.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Entanglement\n", + "\n", + "The core idea behind the second Principle is *entanglement*. Upon reading the Principle, one might be inclined to think that entanglement is simply strong correlation between two entitities -- but entanglement goes well beyond mere perfect (classical) correlation. If you and I read the same paper, we will have learned the same information. If a third person comes along and reads the same paper they also will have learned this information. All three persons in this case are perfectly correlated, and they will remain correlated even if they are separated from each other. \n", + "\n", + "The situation with quantum entanglement is a bit more subtle. In the quantum world, you and I could read the same quantum paper, and yet we will not learn what information is actually contained in the paper until we get together and share our information. However, when we are together, we find that we can unlock more information from the paper than we initially thought possible. Thus, quantum entanglement goes much further than perfect correlation.\n", + "\n", + "To demonstrate this, we will define the controlled-NOT (CNOT) gate and the composition of two systems. The convention we use Qiskit is to label states by writing the first qubit's name in the rightmost position, thereby allowing us to easily convert from binary to decimal. As a result, we define the tensor product between operators $q_0$ and $q_1$ by $q_1\\otimes q_0$. \n", + "\n", + "Taking $q_0$ as the control and $q_1$ as the target, the CNOT with this representation is given by\n", + "\n", + "$$ CNOT =\\begin{pmatrix} 1 & 0 & 0 & 0\\\\ 0 & 0 & 0 & 1\\\\0& 0& 1 & 0\\\\0 & 1 & 0 & 0 \\end{pmatrix},$$\n", + "\n", + "which is non-standard in the quantum community, but more easily connects to classical computing, where the least significant bit (LSB) is typically on the right. An entangled state of the two qubits can be made via an $H$ gate on the control qubit, followed by the CNOT gate. This generates a particular maximally entangled two-qubit state known as a Bell state, named after John Stewart Bell ([learn more about Bell and his contributions to quantum physics and entanglement](https://en.wikipedia.org/wiki/John_Stewart_Bell)). \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Entanglement on a real device\n", + "**TASK:** Create a simple entanglement and execute it on a real device." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "qr, cr, circuit = new_circuit(2)\n", + "circuit.h(qr[0])\n", + "circuit.cx(qr[0], qr[1])\n", + "circuit.h(qr)\n", + "circuit.measure(qr, cr);" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running on current least busy device: ibmq_16_melbourne\n", + "Status @ 0 seconds\n", + "JobStatus.INITIALIZING\n", + "Status @ 10 seconds\n", + "JobStatus.QUEUED\n", + "Status @ 20 seconds\n", + "JobStatus.QUEUED\n", + "Status @ 30 seconds\n", + "JobStatus.QUEUED\n", + "Status @ 40 seconds\n", + "JobStatus.QUEUED\n", + "Status @ 50 seconds\n", + "JobStatus.RUNNING\n", + "Status @ 60 seconds\n", + "JobStatus.RUNNING\n", + "JobStatus.DONE\n", + "experiment: COMPLETED {'00': 455, '01': 41, '10': 51, '11': 477}\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAADTpJREFUeJzt3X+o3fV9x/Hna0ltx340aq4iSVyEhlH/qZWLZPjPpu3wx1iy0YBlzCCB/GNZh4M12z9jsD/0nzmEIQuNGMfWKm4locq6EBXpmK7X6awuK7kTay4J5nb+2Ip0w/W9P+4n211yknNu7jk5ycfnAy7n+/2cz73nky+XZ758c843qSokSf36iWkvQJI0WYZekjpn6CWpc4Zekjpn6CWpc4Zekjo3UuiTvJnku0leSTLXxq5IcijJ0fZ4eRtPkoeSzCd5NcmNk/wDSJLObSVn9L9UVTdU1Wzb3wMcrqotwOG2D3A7sKV97QYeHtdiJUkrt5pLN9uA/W17P7B92fhjteQFYF2Sa1bxOpKkVVg74rwC/jZJAX9WVXuBq6vqBEBVnUhyVZu7ATi27HsX2tiJs/3w9evX1+bNm1e6dkn6SHvppZd+UFUzw+aNGvqbq+p4i/mhJP9yjrkZMHbGfRaS7Gbp0g7XXnstc3NzIy5FkgSQ5PujzBvp0k1VHW+PJ4FvADcBb5+6JNMeT7bpC8CmZd++ETg+4GfurarZqpqdmRn6F5Ik6TwNDX2Sn0ryM6e2gV8GXgMOAjvbtJ3AgbZ9ELi7vftmK/D+qUs8kqQLb5RLN1cD30hyav5fVtXfJPkO8ESSXcBbwI42/2ngDmAe+AC4Z+yrliSNbGjoq+oN4DMDxv8NuHXAeAH3jmV1kqRV85OxktQ5Qy9JnTP0ktQ5Qy9JnTP0ktS5UT8ZK0kTsXnPU9NewlS9ef+dE38Nz+glqXOGXpI6Z+glqXOGXpI6Z+glqXOGXpI6Z+glqXOGXpI6d8l/YMoPW0z+wxaSLm2e0UtS5wy9JHXO0EtS5wy9JHXO0EtS5wy9JHXO0EtS5wy9JHXO0EtS5wy9JHXO0EtS5wy9JHXO0EtS5wy9JHXO0EtS5wy9JHXO0EtS5wy9JHXO0EtS5wy9JHVu5NAnWZPk5STfbPvXJXkxydEkjye5rI1/vO3Pt+c3T2bpkqRRrOSM/svAkWX7DwAPVtUW4F1gVxvfBbxbVZ8CHmzzJElTMlLok2wE7gS+2vYD3AI82absB7a37W1tn/b8rW2+JGkKRj2j/xPgd4Eft/0rgfeq6sO2vwBsaNsbgGMA7fn32/z/J8nuJHNJ5hYXF89z+ZKkYYaGPsmvACer6qXlwwOm1gjP/d9A1d6qmq2q2ZmZmZEWK0laubUjzLkZ+NUkdwCfAH6WpTP8dUnWtrP2jcDxNn8B2AQsJFkLfBJ4Z+wrlySNZOgZfVX9XlVtrKrNwF3AM1X1G8CzwBfatJ3AgbZ9sO3Tnn+mqs44o5ckXRireR/9V4D7ksyzdA1+XxvfB1zZxu8D9qxuiZKk1Rjl0s3/qqrngOfa9hvATQPm/AjYMYa1SZLGwE/GSlLnDL0kdc7QS1LnDL0kdc7QS1LnDL0kdc7QS1LnDL0kdc7QS1LnDL0kdc7QS1LnDL0kdc7QS1LnDL0kdc7QS1LnDL0kdc7QS1LnDL0kdc7QS1LnDL0kdc7QS1LnDL0kdc7QS1LnDL0kdc7QS1LnDL0kdc7QS1LnDL0kdc7QS1LnDL0kdc7QS1LnDL0kdc7QS1LnDL0kdW5o6JN8Isk/JPmnJK8n+cM2fl2SF5McTfJ4ksva+Mfb/nx7fvNk/wiSpHMZ5Yz+P4FbquozwA3AbUm2Ag8AD1bVFuBdYFebvwt4t6o+BTzY5kmSpmRo6GvJD9vux9pXAbcAT7bx/cD2tr2t7dOevzVJxrZiSdKKjHSNPsmaJK8AJ4FDwL8C71XVh23KArChbW8AjgG0598HrhznoiVJoxsp9FX131V1A7ARuAn49KBp7XHQ2XudPpBkd5K5JHOLi4ujrleStEIretdNVb0HPAdsBdYlWdue2ggcb9sLwCaA9vwngXcG/Ky9VTVbVbMzMzPnt3pJ0lCjvOtmJsm6tv2TwOeAI8CzwBfatJ3AgbZ9sO3Tnn+mqs44o5ckXRhrh0/hGmB/kjUs/cXwRFV9M8k/A19P8kfAy8C+Nn8f8OdJ5lk6k79rAuuWJI1oaOir6lXgswPG32Dpev3p4z8CdoxldZKkVfOTsZLUOUMvSZ0z9JLUOUMvSZ0z9JLUOUMvSZ0z9JLUOUMvSZ0z9JLUOUMvSZ0z9JLUOUMvSZ0z9JLUOUMvSZ0z9JLUOUMvSZ0z9JLUOUMvSZ0z9JLUOUMvSZ0z9JLUOUMvSZ0z9JLUOUMvSZ0z9JLUOUMvSZ0z9JLUOUMvSZ0z9JLUOUMvSZ0z9JLUOUMvSZ0z9JLUOUMvSZ0bGvokm5I8m+RIkteTfLmNX5HkUJKj7fHyNp4kDyWZT/Jqkhsn/YeQJJ3dKGf0HwK/U1WfBrYC9ya5HtgDHK6qLcDhtg9wO7Clfe0GHh77qiVJIxsa+qo6UVX/2Lb/AzgCbAC2AfvbtP3A9ra9DXislrwArEtyzdhXLkkayYqu0SfZDHwWeBG4uqpOwNJfBsBVbdoG4Niyb1toY5KkKRg59El+Gvgr4Ler6t/PNXXAWA34ebuTzCWZW1xcHHUZkqQVGin0ST7GUuT/oqr+ug2/feqSTHs82cYXgE3Lvn0jcPz0n1lVe6tqtqpmZ2Zmznf9kqQhRnnXTYB9wJGq+uNlTx0EdrbtncCBZeN3t3ffbAXeP3WJR5J04a0dYc7NwG8C303yShv7feB+4Ikku4C3gB3tuaeBO4B54APgnrGuWJK0IkNDX1XfZvB1d4BbB8wv4N5VrkuSNCZ+MlaSOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOjc09EkeSXIyyWvLxq5IcijJ0fZ4eRtPkoeSzCd5NcmNk1y8JGm4Uc7oHwVuO21sD3C4qrYAh9s+wO3Alva1G3h4PMuUJJ2voaGvqueBd04b3gbsb9v7ge3Lxh+rJS8A65JcM67FSpJW7nyv0V9dVScA2uNVbXwDcGzZvIU2doYku5PMJZlbXFw8z2VIkoYZ9z/GZsBYDZpYVXuraraqZmdmZsa8DEnSKecb+rdPXZJpjyfb+AKwadm8jcDx81+eJGm1zjf0B4GdbXsncGDZ+N3t3TdbgfdPXeKRJE3H2mETknwN+EVgfZIF4A+A+4EnkuwC3gJ2tOlPA3cA88AHwD0TWLMkaQWGhr6qvniWp24dMLeAe1e7KEnS+PjJWEnqnKGXpM4ZeknqnKGXpM4ZeknqnKGXpM4ZeknqnKGXpM4ZeknqnKGXpM4ZeknqnKGXpM4ZeknqnKGXpM4ZeknqnKGXpM4N/Y9HJJ3d5j1PTXsJU/fm/XdOewkawjN6SeqcoZekzhl6Seqc1+g/4j7q15i9vqyPAs/oJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzhl6SOmfoJalzEwl9ktuSfC/JfJI9k3gNSdJoxh76JGuAPwVuB64Hvpjk+nG/jiRpNJM4o78JmK+qN6rqv4CvA9sm8DqSpBFMIvQbgGPL9hfamCRpCibxP0xlwFidMSnZDexuuz9M8r0JrOVCWA/8YFovngem9cpj4/FbPY/h6lzKx+/nRpk0idAvAJuW7W8Ejp8+qar2Ansn8PoXVJK5qpqd9jouVR6/1fMYrs5H4fhN4tLNd4AtSa5LchlwF3BwAq8jSRrB2M/oq+rDJF8CvgWsAR6pqtfH/TqSpNFM4tINVfU08PQkfvZF6JK//DRlHr/V8xiuTvfHL1Vn/DupJKkj3gJBkjpn6Fdo0O0d2j88v5jkaJLH2z9Ca4CzHL8vtf1Ksn7aa7xYJXkkyckkry0buyLJofa7dyjJ5dNc48XsLMdvR5LXk/w4SbfvvDH0K3CO2zs8ADxYVVuAd4Fd01vlxescx+/vgM8B35/i8i4FjwK3nTa2BzjcfvcOt30N9ihnHr/XgF8Hnr/gq7mADP3KnO32DrcAT7Y5+4HtU1rfxW7g8auql6vqzeku7eJXVc8D75w2vI2l3znwd++cBh2/qjpSVZfqhzVHZuhX5my3d3ivqj48bUxn8vYY43d1VZ0AaI9XTXk9uggZ+pUZdHuHNQPGfCvTYCPdHkPSeBn6lRl0e4e3gHVJ1i4bO+OWDwJGvD2GVuTtJNcAtMeTU16PLkKGfmXOdnuHZ4EvtDk7gQNTWt/FzttjjN9Bln7nwN89nYWhX4F2Hf7U7R2OAE+02zt8BbgvyTxwJbBvequ8eJ3t+CX5rSQLLJ3hv5rkq9Nc58UqydeAvwd+PslCkl3A/cDnkxwFPt/2NcCg45fk19rv3i8ATyX51nRXORl+MlaSOucZvSR1ztBLUucMvSR1ztBLUucMvSR1ztBLUucMvSR1ztBLUuf+B23dJgNucajQAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "execute_remotely(circuit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Comment on the results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> \n", + "**Important:** Once you get the results, you may see that, in fact, most of the iterations resulted in `00` and `11`. The remaining options `01` and `10` are due to the immense difficulty with which quantum entanglement is preserved in nowadays labs' conditions. Nonetheless, these are still extraordinary results!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/beamercolorthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/beamercolorthemematerial.sty new file mode 100755 index 000000000..7fbe50bd2 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/beamercolorthemematerial.sty @@ -0,0 +1,286 @@ +\mode + +% light theme +\newcommand{\useLightTheme}{ +\definecolor{text} {HTML}{000000} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{E0E0E0} +\definecolor{BGgrey02}{HTML}{F5F5F5} +\definecolor{BGgrey03}{HTML}{FAFAFA} +\definecolor{BGgrey04}{HTML}{FFFFFF} +} + + +% dark theme +\newcommand{\useDarkTheme}{ +\definecolor{text} {HTML}{FFFFFF} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{000000} +\definecolor{BGgrey02}{HTML}{212121} +\definecolor{BGgrey03}{HTML}{303030} +\definecolor{BGgrey04}{HTML}{424242} +} + +% PRIMARY -------------------------------------------------------------- +\newcommand{\usePrimary}[3]{ +\definecolor{primary} {HTML}{#1} +\definecolor{primaryD}{HTML}{#2} +\definecolor{textPrimary} {HTML}{#3} +} + +% Primary Red +\newcommand{\usePrimaryRed}{ +\definecolor{primary} {HTML}{F44336} +\definecolor{primaryD}{HTML}{D32F2F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Pink +\newcommand{\usePrimaryPink}{ +\definecolor{primary} {HTML}{E91E63} +\definecolor{primaryD}{HTML}{C2185B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Purple +\newcommand{\usePrimaryPurple}{ +\definecolor{primary} {HTML}{6A1B9A} +\definecolor{primaryD}{HTML}{7B1FA2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Deep Purple +\newcommand{\usePrimaryDeepPurple}{ +\definecolor{primary} {HTML}{673AB7} +\definecolor{primaryD}{HTML}{512DA8} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Indigo +\newcommand{\usePrimaryIndigo}{ +\definecolor{primary} {HTML}{3F51B5} +\definecolor{primaryD}{HTML}{303F9F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Blue +\newcommand{\usePrimaryBlue}{ +\definecolor{primary} {HTML}{2196F3} +\definecolor{primaryD}{HTML}{1976D2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Blue +\newcommand{\usePrimaryLightBlue}{ +\definecolor{primary} {HTML}{03A9F4} +\definecolor{primaryD}{HTML}{0288D1} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Cyan +\newcommand{\usePrimaryCyan}{ +\definecolor{primary} {HTML}{00BCD4} +\definecolor{primaryD}{HTML}{0097A7} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Teal +\newcommand{\usePrimaryTeal}{ +\definecolor{primary} {HTML}{009688} +\definecolor{primaryD}{HTML}{00796B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Green +\newcommand{\usePrimaryGreen}{ +\definecolor{primary} {HTML}{4CAF50} +\definecolor{primaryD}{HTML}{388E3C} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Green +\newcommand{\usePrimaryLightGreen}{ +\definecolor{primary} {HTML}{8BC34A} +\definecolor{primaryD}{HTML}{689F38} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Lime +\newcommand{\usePrimaryLime}{ +\definecolor{primary} {HTML}{CDDC39} +\definecolor{primaryD}{HTML}{AFB42B} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Yellow +\newcommand{\usePrimaryYellow}{ +\definecolor{primary} {HTML}{FFEB3B} +\definecolor{primaryD}{HTML}{FBC02D} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Amber +\newcommand{\usePrimaryAmber}{ +\definecolor{primary} {HTML}{FFC107} +\definecolor{primaryD}{HTML}{FFA000} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Orange +\newcommand{\usePrimaryOrange}{ +\definecolor{primary} {HTML}{FF9800} +\definecolor{primaryD}{HTML}{F57C00} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Deep Orange +\newcommand{\usePrimaryDeepOrange}{ +\definecolor{primary} {HTML}{FF5722} +\definecolor{primaryD}{HTML}{E64A19} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Brown +\newcommand{\usePrimaryBrown}{ +\definecolor{primary} {HTML}{795548} +\definecolor{primaryD}{HTML}{5D4037} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Grey +\newcommand{\usePrimaryGrey}{ +\definecolor{primary} {HTML}{9E9E9E} +\definecolor{primaryD}{HTML}{616161} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Blue Grey +\newcommand{\usePrimaryBlueGrey}{ +\definecolor{primary} {HTML}{607D8B} +\definecolor{primaryD}{HTML}{455A64} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + + +% ACCENT --------------------------------------------------------------- + +\newcommand{\useAccent}[2]{ +\definecolor{accent} {HTML}{#1} +\definecolor{textAccent} {HTML}{#2} +} + +% Accent Red +\newcommand{\useAccentRed}{ +\definecolor{accent} {HTML}{FF1744} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Pink +\newcommand{\useAccentPink}{ +\definecolor{accent} {HTML}{F50057} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Purple +\newcommand{\useAccentPurple}{ +\definecolor{accent} {HTML}{D500F9} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Deep Purple +\newcommand{\useAccentDeepPurple}{ +\definecolor{accent} {HTML}{651FFF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Indigo +\newcommand{\useAccentIndigo}{ +\definecolor{accent} {HTML}{3D5AFE} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Blue +\newcommand{\useAccentBlue}{ +\definecolor{accent} {HTML}{2979FF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Light Blue +\newcommand{\useAccentLightBlue}{ +\definecolor{accent} {HTML}{00B0FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Cyan +\newcommand{\useAccentCyan}{ +\definecolor{accent} {HTML}{00E5FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Teal +\newcommand{\useAccentTeal}{ +\definecolor{accent} {HTML}{1DE9B6} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Green +\newcommand{\useAccentGreen}{ +\definecolor{accent} {HTML}{00E676} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Light Green +\newcommand{\useAccentLightGreen}{ +\definecolor{accent} {HTML}{76FF03} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Lime +\newcommand{\useAccentLime}{ +\definecolor{accent} {HTML}{C6FF00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Yellow +\newcommand{\useAccentYellow}{ +\definecolor{accent} {HTML}{FFEA00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Amber +\newcommand{\useAccentAmber}{ +\definecolor{accent} {HTML}{FFC400} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Orange +\newcommand{\useAccentOrange}{ +\definecolor{accent} {HTML}{FF9100} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Deep Orange +\newcommand{\useAccentDeepOrange}{ +\definecolor{accent} {HTML}{FF3D00} +\definecolor{textAccent} {HTML}{FFFFFF} +} + + + +\useLightTheme +\usePrimaryIndigo +\useAccentPink + +% more color settings +\setbeamercolor{block title}{fg=primary} +\hypersetup{linkcolor=primary} +\setbeamercolor{section in toc}{fg=primary} +\setbeamercolor{subsection in toc}{fg=primary} + + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/beamerinnerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/beamerinnerthemematerial.sty new file mode 100755 index 000000000..48d82d16a --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/beamerinnerthemematerial.sty @@ -0,0 +1,42 @@ +\setbeamercolor{background canvas}{bg=BGgrey03} + +% Title page +\defbeamertemplate*{title page}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t][\paperheight]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, + fuzzy shadow={0mm}{-0.6mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.2mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.2mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, height=0.6\paperheight, flushright upper, valign=bottom, boxsep=0.5cm] + {\usebeamerfont{title} \inserttitle}\\ + {\usebeamerfont{author}\insertauthor}\\ + {\usebeamerfont{author}\insertdate} + \end{tcolorbox} + + %\begin{tcolorbox}[arc=5mm,width=10mm,height=10mm, enhanced, % + %colback=accent, coltext=textAccent, % + %fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!primary}, % top + %fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + %fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + %left=1.5mm, right=1.5mm, top=1.5mm, bottom=1.5mm, boxsep=0mm, % + %boxrule=0mm, enlarge left by=10mm, enlarge top by=-10mm]% + %\includegraphics[width=7mm]{\iconFolder/ic_account_circle_48px} + %\end{tcolorbox} + \end{minipage}% + }% + \vfill +} + +% Items +\setbeamertemplate{enumerate items}[circle] +\setbeamertemplate{itemize items}{\Large $\bullet$} +\setbeamertemplate{sections/subsections in toc}[circle] + +\setbeamercolor{local structure}{fg=accent} + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/beamerouterthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/beamerouterthemematerial.sty new file mode 100755 index 000000000..9338c12a0 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/beamerouterthemematerial.sty @@ -0,0 +1,28 @@ +\mode + +% Frame title +\defbeamertemplate*{frametitle}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, % + left=6mm, right=6mm, top=2.6mm, bottom=2mm,% + fuzzy shadow={0mm}{-0.9mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.8mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.5mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, boxsep=2mm] + \ifx\insertframesubtitle\@empty% + {\usebeamerfont{frametitle} \insertframetitle} + \else% + {\usebeamerfont{frametitle} \insertframetitle} + {\usebeamerfont{framesubtitle} \insertframesubtitle} + \fi + \end{tcolorbox} + \end{minipage}% + }% +} + + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/beamerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/beamerthemematerial.sty new file mode 100755 index 000000000..c34246582 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/beamerthemematerial.sty @@ -0,0 +1,82 @@ +\mode + +% Requirement +\RequirePackage{tikz} +\RequirePackage{xcolor} +\RequirePackage{ifthen} +\RequirePackage[many]{tcolorbox} +\RequirePackage{graphicx} + +% Settings +\useinnertheme{material} +\useoutertheme{material} +\usecolortheme{material} + +\setbeamertemplate{navigation symbols}{} + +\setbeamerfont*{title}{size=\Huge} +\setbeamerfont*{frametitle}{size=\large} + +% tcolorbox settings +\newcommand{\setCardSettings}{% +\tcbset{% +colback=BGgrey04, colbacktitle=primary, coltitle=textPrimary, coltext=text,% +enhanced, sharpish corners=all,% +fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!BGgrey03}, % top +fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall +fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig +left=6mm, right=6mm, top=6mm, bottom=6mm, middle=4mm,% +title filled, boxrule=0mm, % +segmentation code={\path[draw=BGgrey01](segmentation.west) -- (segmentation.east);}% +} +} + +\setCardSettings + +\newenvironment{card}[1][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}% + }{% + \begin{tcolorbox}[colbacktitle=primary, coltitle=textPrimary, title=#1, left=6mm, right=6mm, top=3mm, bottom=4mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% + }% +}{% + \end{tcolorbox}% +} + +\newenvironment{cardTiny}{% + \setCardSettings + \begin{tcolorbox}[colbacktitle=primary, left=4mm, right=4mm, top=2mm, bottom=2mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% +}{% + \end{tcolorbox}% +} + + +\newcommand{\cardImg}[3][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, bottom=0mm, middle=1.5mm, boxsep=0mm, width=#3,]% + \includegraphics[width=\textwidth]{#2} + \end{tcolorbox} + }{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, middle=1.5mm, boxsep=0mm, leftlower=6mm, rightlower=6mm, bottom=6mm, , width=#3,]% + \includegraphics[width=\textwidth]{#2} + \tcblower + #1% + \end{tcolorbox} + }% +} + +\newenvironment{frameImg}[2][width]{% + \setCardSettings + \ifthenelse{\equal{#1}{width}}{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[width=\paperwidth, keepaspectratio=true]{#2}}}% + }{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[height=\paperheight, keepaspectratio=true]{#2}}}% + }% + \begin{frame} +}{% + \end{frame} +} + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/img/basis_cycle.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/img/basis_cycle.png new file mode 100755 index 000000000..8e3116830 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/img/basis_cycle.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/img/bqp.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/img/bqp.png new file mode 100755 index 000000000..002e27fe6 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/img/bqp.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/img/deutsch.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/img/deutsch.png new file mode 100755 index 000000000..872f0dff7 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/img/deutsch.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/img/toffoli.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/img/toffoli.png new file mode 100755 index 000000000..b9b6f169c Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/img/toffoli.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/macros.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/macros.sty new file mode 100755 index 000000000..e8d2b8686 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/macros.sty @@ -0,0 +1,127 @@ +\ProvidesPackage{macros}[2018 My own macros] + +% Packages that main.tex will use AND common header commands +\usepackage{multicol} +\usepackage{tikz} % drawings +\usetikzlibrary{positioning, arrows} +\usepackage{animate} % animations +\usepackage{hyperref} +\usepackage{minted} % code snippets +\usepackage{todonotes} +\let\todox\todo +\renewcommand\todo[1]{\todox[inline]{#1}} + +%%%%%%%%%%%%%%%%% DOCUMENT GLOBAL SETTINGS +% example for author reusing these slides: +\author[Ramalho]{Miguel Sozinho Ramalho} +% \author[LASTNAME]{FIRSTNAME LASTNAME,\\ \scriptsize{based on slides by \textbf{Miguel Sozinho Ramalho}}} +\institute[FEUP]{Faculty of Engineering of the University of Porto} +\subject{Quantum Computing} +\date{November, 2018} + + +% Uncomment for notes on slides +% \usepackage{pgfpages} +% \setbeameroption{show notes} +% \setbeameroption{show notes on second screen=right} + +\graphicspath{{img/}} % add the img folder to graphics path + +% Packages that this file uses +\usepackage{braket} % bra-ket notation +\usepackage{xargs} % custom new commands +\usepackage{xspace} % add xspace after new command to auto insert space + + + +% braket shorthands +\newcommandx{\superpos}[3][1=\textual{\psi},2=0,3=1]{\ket {#1} = \textual{\alpha} \ket{#2} + \textual{\beta} \ket{#3}} +\newcommand{\plusminus}[1][\psi]{\superpos[#1][-][+]} +\newcommand{\pagenumber}{\raggedleft\vfill\scriptsize\insertframenumber/\inserttotalframenumber} +\newcommand{\speedoflight}{3 \times 10^{8} m/s} +\newcommand{\osqrt}{\frac{1}{\sqrt{2}}} +\newcommand{\kz}{\ket{0}} +\newcommand{\ko}{\ket{1}} + +% short shorthands +\newcommand{\qasm}{Qasm\xspace} +\newcommand{\q}{Quantum\xspace} +\newcommand{\qa}{\q Algorithms\xspace} +\newcommand{\qct}{\q Circuit\xspace} +\newcommand{\qcts}{\q Circuits\xspace} +\newcommand{\qc}{\q Computing\xspace} +\newcommand{\qcp}{\q Computation\xspace} +\newcommand{\qec}{\q Error Correction\xspace} +\newcommand{\qft}{\q Fourier Transform\xspace} +\newcommand{\qi}{\q Information\xspace} +\newcommand{\qis}{\q Information Science\xspace} +\newcommand{\qm}{\q Mechanics\xspace} +\newcommand{\qmt}{\q Measurement\xspace} +\newcommand{\qp}{\q Physics\xspace} +\newcommand{\qsp}{\q Superposition\xspace} +\newcommand{\qw}{\q World\xspace} +\newcommand{\mbqc}{Measurement Based \q Computer\xspace} +\newcommand{\aqc}{Adiabatic \q Computation\xspace} + +\newcommand{\cl}{Classical\xspace} +\newcommand{\cc}{Classical Computing\xspace} +\newcommand{\cm}{Classical Mechanics\xspace} +\newcommand{\cp}{Classical Physics\xspace} + +\newcommand{\qk}{Qiskit\xspace} +\newcommand{\qka}{Qiskit Aqua\xspace} +\newcommand{\ibmq}{IBM Q\xspace} +\newcommand{\ibmqe}{IBM Q Experience\xspace} + +\newcommand{\p}{\textbf{P}\xspace} +\newcommand{\np}{\textbf{NP}\xspace} +\newcommand{\bqp}{\textbf{BQP}\xspace} + +\newcommand{\djs}{Deutsch-Jozsa\xspace} +\newcommand{\ds}{Deutsch's\xspace} +\newcommand{\gv}{Grover\xspace} +\newcommand{\gvs}{\gv's\xspace} +\newcommand{\gvsa}{\gv's algorithm\xspace} +\newcommand{\aamp}{Amplitude Amplification\xspace} +\newcommand{\sa}{Shor's algorithm\xspace} + +\newcommand{\phiv}{phase inversion\xspace} +\newcommand{\iatm}{inversion about the mean\xspace} + +\newcommand{\ai}{Artificial Intelligence\xspace} + +%configurable variables +\newcommand{\githubRepo}{https://github.com/msramalho/Teach-Me-Quantum/} +\newcommand{\weeks}{\githubRepo/tree/master/} +\newcommand{\weekZero}{\weeks/Week\%200\%20-\%20Hello\%20Quantum\%20World/} +\newcommand{\weekOne}{\weeks/Week\%201\%20-\%20Quantum\%20Tools/} +\newcommand{\weekTwo}{\weeks/Week\%202\%20-\%20Quantum\%20Information\%20Science/} +\newcommand{\weekThree}{\weeks/Week\%203\%20-\%20Quantum\%20Gates/} +\newcommand{\weekFour}{\weeks/Week\%204\%20-\%20Quantum\%20Facts/} + +%%%%%%%%%%%%%%%%%%%%%%%% quotations +% src: https://tex.stackexchange.com/a/53380/126771 +\newcommand{\@chapapp}{\relax} +\makeatletter +\renewcommand{\@chapapp}{} +\newenvironment{chapquote}[2][2em] + {\setlength{\@tempdima}{#1} + \def\chapquote@author{#2} + \parshape 1 \@tempdima \dimexpr\textwidth-2\@tempdima\relax + \itshape} + {\par\normalfont\hfill--\ \chapquote@author\hspace*{\@tempdima}\par\bigskip} +\makeatother + +%%%%%%%%%%%%%%%%% color on hrefs +\hypersetup{ + colorlinks=true, + linkcolor=primaryD,%blue, + filecolor=primaryD,%cyan, + urlcolor=accent %hrefs +} + +%%%%%%%%%%%%%%%%% minted settings +\setminted[python]{fontsize=\footnotesize} +\setminted[vhdl]{fontsize=\footnotesize} +\definecolor{bgGrey}{rgb}{0.95,0.95,0.95} +\setminted{bgcolor=bgGrey} \ No newline at end of file diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/main.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/main.tex new file mode 100755 index 000000000..917fdc403 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/latex/main.tex @@ -0,0 +1,204 @@ +\documentclass[aspectratio=43]{beamer} +\usepackage[utf8]{inputenc} + +%%%%%%%%%%%%%%%%%%%%%%%% THEME +\usetheme{material} +\useLightTheme +\usePrimaryPink +\useAccentIndigo + +\usepackage{macros} % must come after theme + +\title{\q Facts} +\keywords{\qc} + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + + +\begin{frame}{Table of contents} + \begin{card} + \tableofcontents + \end{card} +\end{frame} + + +\section{Introduction} +\begin{frame}{Introduction} + \begin{card} + This is an atypical week. Firstly, because it touches on various topics. Secondly, because these topics are \textit{typically} mentioned earlier when learning about quantum, but the author believes it ought to be easier to understand them at this point, some are also prerequisites for the upcoming content.\\ + So, some more considerations will be made on \textbf{\qcts}, namely universal gates, a new example of the consequences of unitary operators.\\ \textbf{Entanglement} will be explained, at last.\\ Finally, introductory notes on \textbf{Big O notation}.\\ + Thus: \q Facts! + \end{card} +\pagenumber +\end{frame} + +\section{Universal Gates} +\begin{frame}{Classical Universal Gates} +\begin{card} + In \cc, any calculation is achievable through some simple sets of gates, for instance the set \{AND, NOT\} allows to derive any other operator. Moreover, there are singleton sets that also permit this, such as the \{NAND\} set (as a classical exercise you can try to simulate an OR using only NANDs). +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{\q Universal Gates} +\begin{card} + After \qc (actually reversible computation came first) was initially thought of, and with the development of quantum gates, such simple sets were also procured. And they exist! Although they require some more complex considerations. We will not be proving this, as it is too theoretic and there are plenty of good explanations for it online, yet we will take a glimpse at what gates we would need. +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{\q Universal Gates} +\begin{cardTiny} +Firstly, it is \textbf{not} possible to do so using only single qubit operators (some we already know, others are here for completeness purposes): + \begin{multicols}{2} +% $X = \begin{bmatrix}0 & 1\\ 1 & 0 \end{bmatrix}$ +% $Y = \begin{bmatrix}0 & -i\\ i & 0 \end{bmatrix}$ +% $Z = \begin{bmatrix}1 & 0\\ 0 & -1 \end{bmatrix}$ +% $I = \begin{bmatrix}1 & 0\\ 0 & 1 \end{bmatrix}$ +$T = \begin{bmatrix}1 & 0\\ 0 & \epsilon^{i\pi/4} \end{bmatrix}$ +$S = \begin{bmatrix}1 & 0\\ 0 & i \end{bmatrix}$ +$H = \begin{bmatrix}\osqrt & \osqrt \\ \osqrt & -\osqrt \end{bmatrix}$ + \end{multicols} + \begin{equation*} + \text{*Given: }\epsilon^{ix} = \cos(x) + i\sin(x) + \end{equation*} +The first way of achieving the Universal Gate set is to take these single qubit gates and including the \textbf{CNOT} gate! +\end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}{\q Universal Gates} +\begin{card} +The \textbf{Toffoli} (CCNOT) gate is one of the most eloquent gates that can perform any \textbf{Boolean} operation (universal for Boolean reversible computation). However, alone it is \textbf{not enough} for quantum universality. But, if we add to it the ability to \textbf{generate superposition}, with the \textbf{Hadamard} gate, they form a set of size two that is capable of quantum universal computation $\{Toffoli, H\}$. (There is another such pair $\{U_{qubit}, \sqrt{SWAP}\}$ which are gates you can research on your own). +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{\q Universal Gates} +% \begin{cardTiny} +% \small{Here's the Deutsch gate in extended form, you can probably see why it is hard to implement:}\\ +% \includegraphics[width=0.7\textwidth]{deutsch} +% \end{cardTiny} +\begin{cardTiny} +\small{The Toffoli gate transformation maps 3 qubits and is therefore of size $2^3=8$. It is essentially an identity matrix, except for the intersection of the last two columns and two lines, which matches the X gate: \begin{bmatrix}0 & 1\\1 & 0\end{bmatrix} (Can you understand why?)} +\end{cardTiny} +\begin{cardTiny} + \begin{multicols}{2} + \small{This is the Toffoli gate in, you may notice some similarity with the CNOT gate, recall that this is also called CCNOT. The black circles actually represent both the control bits.} + \begin{center} + \includegraphics[width=0.3\textwidth]{toffoli} + \end{center} + \end{multicols} +\end{cardTiny} +\pagenumber +\end{frame} + + + +\section{Gates and Basis} +\begin{frame}{Gates and Basis} + \begin{center} + \includegraphics[width=0.6\textwidth]{basis_cycle} + \end{center} + \begin{cardTiny} + \small{The above diagram is a useful shorthand for quantum states conversion using quantum gates, and it also depicts the consequences of reversible computation. Literally, you can have a qubit in any of the four states $\ket{0},\ket{1},\ket{-}\ket{+}$ and obtain any other from it by performing simple one qubit gates.\\ + \textbf{Exercise:} Start with $\ket{0} = \begin{bmatrix}1 \\ 0\end{bmatrix}$ and obtain each of the other states by chaining the respective operations on this cycle.} + \end{cardTiny} +\pagenumber +\end{frame} + + +\section{Entanglement} +\begin{frame}{Entanglement} +\begin{card} + Entanglement is a curious phenomenon on a quantum level. It describes the state of a system in which the quantum state of two or more particles cannot be considered independently from each other. There is a correlation between their quantum properties. Pragmatically, if two qubits are entangled then measuring one will produce the measurement on the other to be the constant, when the experiment is repeated many times - they are entangled.\\ This property holds over long distances despite the uncertainty over the question we begin to be accustomed to: \textbf{Why?} +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{Entanglement possibilities} +\begin{cardTiny} + This property carries both potential and controversy, as even Albert Einstein contested its possibility. Its existence is, however, unquestionable. We will not get into the paradoxical views and debate over different interpretations for it. +\end{cardTiny} +\begin{cardTiny} + We will make use of it, and we actually already have, with the CNOT gate! Think about it: The state of a qubit \textbf{controls} the flipping of the other. In classical computing that would mean they are dependant, but in quantum terms they are entangled, \textbf{not just dependant}, because if we apply this gate to qubits in superposition, we get a non-deterministic result that is deterministically correlated.\\ + \small{This week's exercises will help understand entanglement.} +\end{cardTiny} +\pagenumber +\end{frame} + +\section{Big O notation} +\begin{frame}{Big O notation} +\begin{card} +Lastly, on this factual menu, there comes a topic that most computer scientists already know, if this is your case, do not skip this slides, as some new concepts are introduced. +\end{card} +\begin{card} +Big O notation is used to describe the limiting behaviour of an algorithm (worst-case scenarios), essentially giving an estimate of the complexity (which reflects how the execution time evolves with the size of the input). +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{Big O notation} +\begin{card} +The notation is as follows: $O(COMPLEXITY)$.\\ +\begin{itemize} + \item Assume you have a classical loop over an array of size $N$. The complexity of this algorithm in the Big O notation, would be $O(N)$. + \item If you were to compute the square values of each cell in an $N\times N$ matrix, its complexity would be $O(N^2)$ + \item A typical \href{https://en.wikipedia.org/wiki/Binary_search_algorithm}{binary search} has a complexity of $O(log_2(N))$ +\end{itemize} +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{Big O notation} +\begin{card} + Computational problems are described by the most efficient algorithm that can solve them.\\ \p (polynomial) problems are classified as \textit{easy/efficiently solvable/tractable}, since the amount of time it takes to solve increasingly larger instances evolves polynomially.\\ + \np (nondeterministic polynomial time) problems, on the other hand, are not considered \textit{efficiently solvable}. This means that as the size of the problem instances increases linearly, the time (sometimes space) required grows exponentially. Nondeterministic implies not solvable on a deterministic \href{https://en.wikipedia.org/wiki/Turing_machine}{Turing Machines}. +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{Big O notation - \q impact} +\begin{card}[BQP] + When we enter the \qw, and according to some advances we will study over this course, a new class of problems emerges: \bqp - bounded-error quantum polynomial time. This is a class of problems that is solvable in polynomial time in a \textbf{quantum computer} (with an error probability $\leq \frac{1}{3}$). +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{Big O notation - \q impact} +\begin{card}[NP vs BQP] + The problem with this class is that it reflects the power of quantum computing, as some classical problems that belong to the \np class can be solved in \bqp. What is unclear is how far can quantum computers go, is \bqp a subset of \np or the other way around? do they match? Answering such questions would put a definite stamp on the power of \qc when compared with \cc. +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{Big O notation - \q impact} +\begin{center} + \includegraphics[width=0.8\textwidth]{bqp} +\end{center} +\pagenumber +\end{frame} + +\begin{frame}{Exercises} +\begin{card} +When you are ready, you can head over to the \href{\weekFour/exercises/w4_01.ipynb}{exercises}, where the aforementioned concepts will be revised and where you will also learn some new concepts, such as \textbf{bell state}. Once you have finished, the \href{\weekFour/exercises/w4_01_s.ipynb}{solutions} contain detailed detailed explanation of what you should understand about the code you are developing! +\end{card} +\pagenumber +\end{frame} + +\section{Where to learn more?} +\begin{frame}{Where to learn more?} +\begin{card} + \begin{itemize} + \item \href{http://www.drchinese.com/David/EPR.pdf}{The original Einstein–Podolsky–Rosen (EPR) paper} + \item Medium article: \href{https://medium.com/quantum1net/einstein-and-entanglement-8c9f12e7f47b}{Einstein and entanglement} + \item \href{https://en.wikipedia.org/wiki/Big_O_notation#Orders_of_common_functions}{Common computational complexities} with examples + \item \href{https://en.wikipedia.org/wiki/P_versus_NP_problem}{P=NP?} major unsolved mathematical problem + \end{itemize} +\end{card} +\end{frame} +\end{document} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/slides.pdf b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/slides.pdf new file mode 100755 index 000000000..3999950a6 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_4-Quantum_Facts/slides.pdf differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/README.ipynb new file mode 100644 index 000000000..17bd989b1 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/README.ipynb @@ -0,0 +1,56 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Week 5 - Quantum Algorithms (Introdution)\n", + "\n", + " * Quantum Oracles\n", + " * Quantum Reversible Computation\n", + " * Deutsch-Jozsa Problem Formulation\n", + " * Deutsch's Problem Formulation\n", + " * Deutsch's Algorithm\n", + " * Deutsch-Jozsa Algorithm\n", + " * Deutsch/Deutsch-Jozsa in Qiskit\n", + "\n", + "# Exercises\n", + " * Pen and paper verificatio of the math in the description of Deutsch's Algorithm [slides](slides.pdf)\n", + " * [Jupyter notebook with exercises](exercises/w5_01.ipynb): implementing Deutsch's Algorithm in Qiskit\n", + " * [Jupyter notebook with solutions](exercises/w5_01_s.ipynb)\n", + "\n", + "## Resources\n", + " * [PDF slides](slides.pdf)\n", + " * [slides src](latex/main.tex) Latex files and image resources used in the presentation (useful for PR on slide typos and such)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/exercises/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/exercises/README.ipynb new file mode 100644 index 000000000..f7e1efa94 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/exercises/README.ipynb @@ -0,0 +1,43 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Exercises\n", + " * Pen and paper verificatio of the math in the description of Deutsch's Algorithm [slides](../slides.pdf)\n", + " * [Jupyter notebook with exercises](w5_01.ipynb): implementing Deutsch's Algorithm in Qiskit\n", + " * [Jupyter notebook with solutions](w5_01_s.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/exercises/deutsch_algorithm.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/exercises/deutsch_algorithm.png new file mode 100755 index 000000000..99556fa80 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/exercises/deutsch_algorithm.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/exercises/oracle.jpg b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/exercises/oracle.jpg new file mode 100755 index 000000000..07a345586 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/exercises/oracle.jpg differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/exercises/w5_01.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/exercises/w5_01.ipynb new file mode 100644 index 000000000..5c33ecbd6 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/exercises/w5_01.ipynb @@ -0,0 +1,584 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum Algorithms (Intro) in Qiskit (Deutsch's)\n", + "A real algorithm, one of the first ever created, will be implemented in Qiskit.\n", + "\n", + "Start by some typical setup and definition of useful functions, which you are encouraged to look at.\n", + "\n", + "Then, head to the [exercises start](#Exercises-Start-Here) to start coding!\n", + "\n", + "![Matrix Oracle](oracle.jpg)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import execute" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Choose the drawer you like best:\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as draw\n", + "#from qiskit.tools.visualization import circuit_drawer as draw" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import IBMQ\n", + "IBMQ.load_accounts() # make sure you have setup your token locally to use this" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Utils for visualizing experimental results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def show_results(D):\n", + " # D is a dictionary with classical bits as keys and count as value\n", + " # example: D = {'000': 497, '001': 527}\n", + " plt.bar(range(len(D)), list(D.values()), align='center')\n", + " plt.xticks(range(len(D)), list(D.keys()))\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Utils for executing circuits" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import Aer\n", + "# See a list of available local simulators\n", + "print(\"Aer backends: \", Aer.backends())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# see a list of available remote backends (these are freely given by IBM)\n", + "print(\"IBMQ Backends: \", IBMQ.backends())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Execute locally" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# execute circuit and either display a histogram of the results\n", + "def execute_locally(qc, draw_circuit=False, show_results=False):\n", + " # Compile and run the Quantum circuit on a simulator backend\n", + " backend_sim = Aer.get_backend('qasm_simulator')\n", + " job_sim = execute(qc, backend_sim)\n", + " result_sim = job_sim.result()\n", + " result_counts = result_sim.get_counts(qc)\n", + " \n", + " if draw_circuit or show_results: # Print the results\n", + " print(\"simulation: \", result_sim, result_counts)\n", + " \n", + " if draw_circuit: # draw the circuit\n", + " draw(qc)\n", + " elif show_results: # or show the results\n", + " show_results(result_counts)\n", + " return result_counts" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Execute remotely" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit.backends.ibmq import least_busy\n", + "import time\n", + "# Compile and run on a real device backend\n", + "def execute_remotely(qc, draw_circuit=False, show_results=False):\n", + " if draw_circuit: # draw the circuit\n", + " draw(qc)\n", + " try:\n", + " # select least busy available device and execute.\n", + " least_busy_device = least_busy(IBMQ.backends(simulator=False))\n", + " print(\"Running on current least busy device: \", least_busy_device)\n", + "\n", + " # running the job\n", + " job_exp = execute(qc, backend=least_busy_device, shots=1024, max_credits=10)\n", + "\n", + " lapse, interval = 0, 10\n", + " while job_exp.status().name != 'DONE':\n", + " print('Status @ {} seconds'.format(interval * lapse))\n", + " print(job_exp.status())\n", + " time.sleep(interval)\n", + " lapse += 1\n", + " print(job_exp.status())\n", + " exp_result = job_exp.result()\n", + " result_counts = exp_result.get_counts(qc)\n", + "\n", + " # Show the results\n", + " print(\"experiment: \", exp_result, result_counts)\n", + " if show_results: # show the results\n", + " show_results(result_counts)\n", + " return result_counts\n", + " except:\n", + " print(\"All devices are currently unavailable.\")\n", + " return {}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Building the circuit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def new_circuit(size):\n", + " # Create a Quantum Register with size qubits\n", + " qr = QuantumRegister(size)\n", + "\n", + " # Create a Classical Register with size bits\n", + " cr = ClassicalRegister(size)\n", + "\n", + " # Create a Quantum Circuit acting on the qr and cr register\n", + " return qr, cr, QuantumCircuit(qr, cr)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Our secret Oracles" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ERROR_MESSAGE = \"Looks like your Deutsch has a bug\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def quantum_oracle_1(qr, cr, circuit):\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def quantum_oracle_2(qr, cr, circuit):\n", + " circuit.cx(qr[0], qr[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def quantum_oracle_3(qr, cr, circuit):\n", + " circuit.cx(qr[0], qr[1])\n", + " circuit.cx(qr[1], qr[0])\n", + " circuit.cx(qr[0], qr[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def quantum_oracle_4(qr, cr, circuit):\n", + " circuit.z(qr[1])\n", + " circuit.cx(qr[0], qr[1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "

Exercises Start Here

\n", + "\n", + "Make sure you ran all the above cells in order, as the following exercises use functions defined and imported above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Understanding Deutsch's Algorithm\n", + "If you need go back to the slides, or check other sources, but it is quite important that you get a good grasp on why the algorithm works. Hopefully, these exercises will help achieve that. \n", + "\n", + "Firstly, let us look at our goal circuit:\n", + "![deutsch's circuit](deutsch_algorithm.png)\n", + "The XOR symbol is meaningful but not realistic, that is actually a measurement, as you may have guessed!!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Your Task\n", + "I have defined 4 mysterious **oracles:** `quantum_oracle_1` through `quantum_oracle_4`. (For 2 qubits)\n", + "\n", + "You need to find, without looking at their implementation, whether they are **balanced** or **constant** by designing a quantum circuit, just follow the next steps:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Create a new circuit with 2 qubits using `new_circuit` (very useful to reconstruct your circuit in Jupyter)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Make the necessary modifications on the input qubits (before the Hadamards)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Implement the Hadamards on both qubits" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Call our oracle 1: `quantum_oracle_1(CLASSICAL_REGISTER, QUANTUM_REGISTER, YOUR_CURRENT_CIRCUIT)`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Implement the Hadamard on qubit 0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Perform a measurement" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** check the result using `execute_locally` test both `True` and `False` for the `draw_circuit` and `show_results` (4 different combinations) option and save the results!\n", + "\n", + "(This function has been updated and now returns a dictionary like: `{'00': 524, '11': 500}`)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Now implement a decision mechanism that will print either `\"CONSTANT\"` or `\"BALANCED\"`, according to what type of oracle `quantum_oracle_1` is!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Take your code and isolate it into a function `get_deutsch_verdict` that has a dictionary with the execution results and returns either `\"CONSTANT\"` or `\"BALANCED\"`, accordingly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def get_deutsch_verdict(res):\n", + " return \"CONSTANT\" or \"BALANCED\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Call your function with your previous results and print its return value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(get_deutsch_verdict(results))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Isolate your code into a function\n", + "**TASK:** Create a function called `deutsch` which receives a `black_box` as an argument and returns either `\"CONSTANT\"` or `\"BALANCED\"` (a stub has already been created for you)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def deutsch(black_box):\n", + " # ...\n", + " black_box(circuit)\n", + " #...\n", + " return \"CONSTANT\" or \"BALANCED\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Call `deutsch(quantum_oracle_1)` and a `'CONSTANT'` value should appear:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Now that you are confident of your implementation, call it for the following cases to make sure it is! If you have a bug an `AssertionError` will appear" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test case 1: `quantum_oracle_1`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "assert deutsch(quantum_oracle_1) == 'CONSTANT', ERROR_MESSAGE" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test case 2: `quantum_oracle_2`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "assert deutsch(quantum_oracle_2) == 'BALANCED', \"Looks like your Deutsch has a bug\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test case 3: `quantum_oracle_3`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "assert deutsch(quantum_oracle_3) == 'BALANCED', \"Looks like your Deutsch has a bug\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test case 4: `quantum_oracle_4`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "assert deutsch(quantum_oracle_4) == 'CONSTANT', \"Looks like your Deutsch has a bug\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Free Flow\n", + "On your own, try to implement `deutsch_jozsa` which is able to handle multiple qubits (this can your homework for the week!). " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/exercises/w5_01_s.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/exercises/w5_01_s.ipynb new file mode 100644 index 000000000..5fd6c9258 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/exercises/w5_01_s.ipynb @@ -0,0 +1,682 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum Algorithms (Intro) in Qiskit (Deutsch's)\n", + "A real algorithm, one of the first ever created, will be implemented in Qiskit.\n", + "\n", + "Start by some typical setup and definition of useful functions, which you are encouraged to look at.\n", + "\n", + "Then, head to the [exercises start](#Exercises-Start-Here) to start coding!\n", + "\n", + "![Matrix Oracle](oracle.jpg)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import execute" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Choose the drawer you like best:\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as draw\n", + "#from qiskit.tools.visualization import circuit_drawer as draw" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import IBMQ\n", + "IBMQ.load_accounts() # make sure you have setup your token locally to use this" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Utils for visualizing experimental results" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def show_results(D):\n", + " # D is a dictionary with classical bits as keys and count as value\n", + " # example: D = {'000': 497, '001': 527}\n", + " plt.bar(range(len(D)), list(D.values()), align='center')\n", + " plt.xticks(range(len(D)), list(D.keys()))\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Utils for executing circuits" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Aer backends: [, , , , , ]\n" + ] + } + ], + "source": [ + "from qiskit import Aer\n", + "# See a list of available local simulators\n", + "print(\"Aer backends: \", Aer.backends())" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "IBMQ Backends: [, , , , ]\n" + ] + } + ], + "source": [ + "# see a list of available remote backends (these are freely given by IBM)\n", + "print(\"IBMQ Backends: \", IBMQ.backends())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Execute locally" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# execute circuit and either display a histogram of the results\n", + "def execute_locally(qc, draw_circuit=False, show_results=False):\n", + " # Compile and run the Quantum circuit on a simulator backend\n", + " backend_sim = Aer.get_backend('qasm_simulator')\n", + " job_sim = execute(qc, backend_sim)\n", + " result_sim = job_sim.result()\n", + " result_counts = result_sim.get_counts(qc)\n", + " \n", + " if draw_circuit or show_results: # Print the results\n", + " print(\"simulation: \", result_sim, result_counts)\n", + " \n", + " if draw_circuit: # draw the circuit\n", + " draw(qc)\n", + " elif show_results: # or show the results\n", + " show_results(result_counts)\n", + " return result_counts" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Execute remotely" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit.backends.ibmq import least_busy\n", + "import time\n", + "# Compile and run on a real device backend\n", + "def execute_remotely(qc, draw_circuit=False, show_results=False):\n", + " if draw_circuit: # draw the circuit\n", + " draw(qc)\n", + " try:\n", + " # select least busy available device and execute.\n", + " least_busy_device = least_busy(IBMQ.backends(simulator=False))\n", + " print(\"Running on current least busy device: \", least_busy_device)\n", + "\n", + " # running the job\n", + " job_exp = execute(qc, backend=least_busy_device, shots=1024, max_credits=10)\n", + "\n", + " lapse, interval = 0, 10\n", + " while job_exp.status().name != 'DONE':\n", + " print('Status @ {} seconds'.format(interval * lapse))\n", + " print(job_exp.status())\n", + " time.sleep(interval)\n", + " lapse += 1\n", + " print(job_exp.status())\n", + " exp_result = job_exp.result()\n", + " result_counts = exp_result.get_counts(qc)\n", + "\n", + " # Show the results\n", + " print(\"experiment: \", exp_result, result_counts)\n", + " if show_results: # show the results\n", + " show_results(result_counts)\n", + " return result_counts\n", + " except:\n", + " print(\"All devices are currently unavailable.\")\n", + " return {}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Building the circuit" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "def new_circuit(size):\n", + " # Create a Quantum Register with size qubits\n", + " qr = QuantumRegister(size)\n", + "\n", + " # Create a Classical Register with size bits\n", + " cr = ClassicalRegister(size)\n", + "\n", + " # Create a Quantum Circuit acting on the qr and cr register\n", + " return qr, cr, QuantumCircuit(qr, cr)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Our secret Oracles" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "ERROR_MESSAGE = \"Looks like your Deutsch has a bug\"" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def quantum_oracle_1(qr, cr, circuit):\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def quantum_oracle_2(qr, cr, circuit):\n", + " circuit.cx(qr[0], qr[1])" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "def quantum_oracle_3(qr, cr, circuit):\n", + " circuit.cx(qr[0], qr[1])\n", + " circuit.cx(qr[1], qr[0])\n", + " circuit.cx(qr[0], qr[1])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "def quantum_oracle_4(qr, cr, circuit):\n", + " circuit.z(qr[1])\n", + " circuit.cx(qr[0], qr[1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "

Exercises Start Here

\n", + "\n", + "Make sure you ran all the above cells in order, as the following exercises use functions defined and imported above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Understanding Deutsch's Algorithm\n", + "If you need go back to the slides, or check other sources, but it is quite important that you get a good grasp on why the algorithm works. Hopefully, these exercises will help achieve that. \n", + "\n", + "Firstly, let us look at our goal circuit:\n", + "![deutsch's circuit](deutsch_algorithm.png)\n", + "The XOR symbol is meaningful but not realistic, that is actually a measurement, as you may have guessed!!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Your Task\n", + "I have defined 4 mysterious **oracles:** `quantum_oracle_1` through `quantum_oracle_4`. (For 2 qubits)\n", + "\n", + "You need to find, without looking at their implementation, whether they are **balanced** or **constant** by designing a quantum circuit, just follow the next steps:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Create a new circuit with 2 qubits using `new_circuit` (very useful to reconstruct your circuit in Jupyter)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "qr, cr, circuit = new_circuit(2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Make the necessary modifications on the input qubits (before the Hadamards)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# X gate on qubit 1 (bit flip)\n", + "circuit.x(qr[1]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Implement the Hadamards on both qubits" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "circuit.h(qr);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Call our oracle 1: `quantum_oracle_1(CLASSICAL_REGISTER, QUANTUM_REGISTER, YOUR_CURRENT_CIRCUIT)`" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "quantum_oracle_1(qr, cr, circuit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Implement the Hadamard on qubit 0" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "circuit.h(qr[0]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Perform a measurement" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "# measure the specific qubit\n", + "circuit.measure(qr[0], cr[0]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** check the result using `execute_locally` test both `True` and `False` for the `draw_circuit` and `show_results` (4 different combinations) option and save the results!\n", + "\n", + "(This function has been updated and now returns a dictionary like: `{'00': 524, '11': 500}`)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "simulation: COMPLETED {'00': 1024}\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Try both commands:\n", + "# results = execute_locally(circuit, draw_circuit=False, show_results=False) # silent mode\n", + "results = execute_locally(circuit, draw_circuit=True, show_results=False)\n", + "# results = execute_locally(circuit, draw_circuit=False, show_results=True)\n", + "# results = execute_locally(circuit, draw_circuit=True, show_results=True) # this will be the same as True, False" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Now implement a decision mechanism that will print either `\"CONSTANT\"` or `\"BALANCED\"`, according to what type of oracle `quantum_oracle_1` is!" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CONSTANT\n" + ] + } + ], + "source": [ + "if '00' in results:\n", + " print(\"CONSTANT\")\n", + "elif '10' in results:\n", + " print(\"BALANCED\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Take your code and isolate it into a function `get_deutsch_verdict` that has a dictionary with the execution results and returns either `\"CONSTANT\"` or `\"BALANCED\"`, accordingly." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "def get_deutsch_verdict(res): # should be improved for error handling\n", + " if '00' in res:\n", + " return \"CONSTANT\"\n", + " elif '01' in res:\n", + " return \"BALANCED\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Call your function with your previous results and print its return value:" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CONSTANT\n" + ] + } + ], + "source": [ + "print(get_deutsch_verdict(results))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Isolate your code into a function\n", + "**TASK:** Create a function called `deutsch` which receives a `black_box` as an argument and returns either `\"CONSTANT\"` or `\"BALANCED\"` (a stub has already been created for you)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "def deutsch(black_box):\n", + " qr, cr, circuit = new_circuit(2)\n", + " circuit.x(qr[1]) # X gate on qubit 1 (bit flip)\n", + " circuit.h(qr) # Hadamard on both qubits\n", + " \n", + " black_box(qr, cr, circuit)\n", + " \n", + " circuit.h(qr[0]) # Hadamard on interesting qubit\n", + " circuit.measure(qr[0], cr[0]) # measure the specific qubit\n", + " \n", + " results = execute_locally(circuit, draw_circuit=False, show_results=False) # silent mode\n", + " return get_deutsch_verdict(results)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Call `deutsch(quantum_oracle_1)` and a `'CONSTANT'` value should appear:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'CONSTANT'" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "deutsch(quantum_oracle_1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**TASK:** Now that you are confident of your implementation, call it for the following cases to make sure it is! If you have a bug an `AssertionError` will appear" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test case 1: `quantum_oracle_1`" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "assert deutsch(quantum_oracle_1) == 'CONSTANT', ERROR_MESSAGE" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test case 2: `quantum_oracle_2`" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "assert deutsch(quantum_oracle_2) == 'BALANCED', \"Looks like your Deutsch has a bug\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test case 3: `quantum_oracle_3`" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "assert deutsch(quantum_oracle_3) == 'BALANCED', \"Looks like your Deutsch has a bug\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Test case 4: `quantum_oracle_4`" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "assert deutsch(quantum_oracle_4) == 'CONSTANT', \"Looks like your Deutsch has a bug\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Free Flow\n", + "On your own, try to implement `deutsch_jozsa` which is able to handle multiple qubits (this can your homework for the week!). " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/beamercolorthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/beamercolorthemematerial.sty new file mode 100755 index 000000000..7fbe50bd2 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/beamercolorthemematerial.sty @@ -0,0 +1,286 @@ +\mode + +% light theme +\newcommand{\useLightTheme}{ +\definecolor{text} {HTML}{000000} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{E0E0E0} +\definecolor{BGgrey02}{HTML}{F5F5F5} +\definecolor{BGgrey03}{HTML}{FAFAFA} +\definecolor{BGgrey04}{HTML}{FFFFFF} +} + + +% dark theme +\newcommand{\useDarkTheme}{ +\definecolor{text} {HTML}{FFFFFF} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{000000} +\definecolor{BGgrey02}{HTML}{212121} +\definecolor{BGgrey03}{HTML}{303030} +\definecolor{BGgrey04}{HTML}{424242} +} + +% PRIMARY -------------------------------------------------------------- +\newcommand{\usePrimary}[3]{ +\definecolor{primary} {HTML}{#1} +\definecolor{primaryD}{HTML}{#2} +\definecolor{textPrimary} {HTML}{#3} +} + +% Primary Red +\newcommand{\usePrimaryRed}{ +\definecolor{primary} {HTML}{F44336} +\definecolor{primaryD}{HTML}{D32F2F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Pink +\newcommand{\usePrimaryPink}{ +\definecolor{primary} {HTML}{E91E63} +\definecolor{primaryD}{HTML}{C2185B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Purple +\newcommand{\usePrimaryPurple}{ +\definecolor{primary} {HTML}{6A1B9A} +\definecolor{primaryD}{HTML}{7B1FA2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Deep Purple +\newcommand{\usePrimaryDeepPurple}{ +\definecolor{primary} {HTML}{673AB7} +\definecolor{primaryD}{HTML}{512DA8} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Indigo +\newcommand{\usePrimaryIndigo}{ +\definecolor{primary} {HTML}{3F51B5} +\definecolor{primaryD}{HTML}{303F9F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Blue +\newcommand{\usePrimaryBlue}{ +\definecolor{primary} {HTML}{2196F3} +\definecolor{primaryD}{HTML}{1976D2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Blue +\newcommand{\usePrimaryLightBlue}{ +\definecolor{primary} {HTML}{03A9F4} +\definecolor{primaryD}{HTML}{0288D1} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Cyan +\newcommand{\usePrimaryCyan}{ +\definecolor{primary} {HTML}{00BCD4} +\definecolor{primaryD}{HTML}{0097A7} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Teal +\newcommand{\usePrimaryTeal}{ +\definecolor{primary} {HTML}{009688} +\definecolor{primaryD}{HTML}{00796B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Green +\newcommand{\usePrimaryGreen}{ +\definecolor{primary} {HTML}{4CAF50} +\definecolor{primaryD}{HTML}{388E3C} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Green +\newcommand{\usePrimaryLightGreen}{ +\definecolor{primary} {HTML}{8BC34A} +\definecolor{primaryD}{HTML}{689F38} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Lime +\newcommand{\usePrimaryLime}{ +\definecolor{primary} {HTML}{CDDC39} +\definecolor{primaryD}{HTML}{AFB42B} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Yellow +\newcommand{\usePrimaryYellow}{ +\definecolor{primary} {HTML}{FFEB3B} +\definecolor{primaryD}{HTML}{FBC02D} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Amber +\newcommand{\usePrimaryAmber}{ +\definecolor{primary} {HTML}{FFC107} +\definecolor{primaryD}{HTML}{FFA000} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Orange +\newcommand{\usePrimaryOrange}{ +\definecolor{primary} {HTML}{FF9800} +\definecolor{primaryD}{HTML}{F57C00} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Deep Orange +\newcommand{\usePrimaryDeepOrange}{ +\definecolor{primary} {HTML}{FF5722} +\definecolor{primaryD}{HTML}{E64A19} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Brown +\newcommand{\usePrimaryBrown}{ +\definecolor{primary} {HTML}{795548} +\definecolor{primaryD}{HTML}{5D4037} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Grey +\newcommand{\usePrimaryGrey}{ +\definecolor{primary} {HTML}{9E9E9E} +\definecolor{primaryD}{HTML}{616161} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Blue Grey +\newcommand{\usePrimaryBlueGrey}{ +\definecolor{primary} {HTML}{607D8B} +\definecolor{primaryD}{HTML}{455A64} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + + +% ACCENT --------------------------------------------------------------- + +\newcommand{\useAccent}[2]{ +\definecolor{accent} {HTML}{#1} +\definecolor{textAccent} {HTML}{#2} +} + +% Accent Red +\newcommand{\useAccentRed}{ +\definecolor{accent} {HTML}{FF1744} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Pink +\newcommand{\useAccentPink}{ +\definecolor{accent} {HTML}{F50057} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Purple +\newcommand{\useAccentPurple}{ +\definecolor{accent} {HTML}{D500F9} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Deep Purple +\newcommand{\useAccentDeepPurple}{ +\definecolor{accent} {HTML}{651FFF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Indigo +\newcommand{\useAccentIndigo}{ +\definecolor{accent} {HTML}{3D5AFE} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Blue +\newcommand{\useAccentBlue}{ +\definecolor{accent} {HTML}{2979FF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Light Blue +\newcommand{\useAccentLightBlue}{ +\definecolor{accent} {HTML}{00B0FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Cyan +\newcommand{\useAccentCyan}{ +\definecolor{accent} {HTML}{00E5FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Teal +\newcommand{\useAccentTeal}{ +\definecolor{accent} {HTML}{1DE9B6} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Green +\newcommand{\useAccentGreen}{ +\definecolor{accent} {HTML}{00E676} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Light Green +\newcommand{\useAccentLightGreen}{ +\definecolor{accent} {HTML}{76FF03} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Lime +\newcommand{\useAccentLime}{ +\definecolor{accent} {HTML}{C6FF00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Yellow +\newcommand{\useAccentYellow}{ +\definecolor{accent} {HTML}{FFEA00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Amber +\newcommand{\useAccentAmber}{ +\definecolor{accent} {HTML}{FFC400} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Orange +\newcommand{\useAccentOrange}{ +\definecolor{accent} {HTML}{FF9100} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Deep Orange +\newcommand{\useAccentDeepOrange}{ +\definecolor{accent} {HTML}{FF3D00} +\definecolor{textAccent} {HTML}{FFFFFF} +} + + + +\useLightTheme +\usePrimaryIndigo +\useAccentPink + +% more color settings +\setbeamercolor{block title}{fg=primary} +\hypersetup{linkcolor=primary} +\setbeamercolor{section in toc}{fg=primary} +\setbeamercolor{subsection in toc}{fg=primary} + + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/beamerinnerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/beamerinnerthemematerial.sty new file mode 100755 index 000000000..48d82d16a --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/beamerinnerthemematerial.sty @@ -0,0 +1,42 @@ +\setbeamercolor{background canvas}{bg=BGgrey03} + +% Title page +\defbeamertemplate*{title page}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t][\paperheight]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, + fuzzy shadow={0mm}{-0.6mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.2mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.2mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, height=0.6\paperheight, flushright upper, valign=bottom, boxsep=0.5cm] + {\usebeamerfont{title} \inserttitle}\\ + {\usebeamerfont{author}\insertauthor}\\ + {\usebeamerfont{author}\insertdate} + \end{tcolorbox} + + %\begin{tcolorbox}[arc=5mm,width=10mm,height=10mm, enhanced, % + %colback=accent, coltext=textAccent, % + %fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!primary}, % top + %fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + %fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + %left=1.5mm, right=1.5mm, top=1.5mm, bottom=1.5mm, boxsep=0mm, % + %boxrule=0mm, enlarge left by=10mm, enlarge top by=-10mm]% + %\includegraphics[width=7mm]{\iconFolder/ic_account_circle_48px} + %\end{tcolorbox} + \end{minipage}% + }% + \vfill +} + +% Items +\setbeamertemplate{enumerate items}[circle] +\setbeamertemplate{itemize items}{\Large $\bullet$} +\setbeamertemplate{sections/subsections in toc}[circle] + +\setbeamercolor{local structure}{fg=accent} + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/beamerouterthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/beamerouterthemematerial.sty new file mode 100755 index 000000000..9338c12a0 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/beamerouterthemematerial.sty @@ -0,0 +1,28 @@ +\mode + +% Frame title +\defbeamertemplate*{frametitle}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, % + left=6mm, right=6mm, top=2.6mm, bottom=2mm,% + fuzzy shadow={0mm}{-0.9mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.8mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.5mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, boxsep=2mm] + \ifx\insertframesubtitle\@empty% + {\usebeamerfont{frametitle} \insertframetitle} + \else% + {\usebeamerfont{frametitle} \insertframetitle} + {\usebeamerfont{framesubtitle} \insertframesubtitle} + \fi + \end{tcolorbox} + \end{minipage}% + }% +} + + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/beamerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/beamerthemematerial.sty new file mode 100755 index 000000000..c34246582 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/beamerthemematerial.sty @@ -0,0 +1,82 @@ +\mode + +% Requirement +\RequirePackage{tikz} +\RequirePackage{xcolor} +\RequirePackage{ifthen} +\RequirePackage[many]{tcolorbox} +\RequirePackage{graphicx} + +% Settings +\useinnertheme{material} +\useoutertheme{material} +\usecolortheme{material} + +\setbeamertemplate{navigation symbols}{} + +\setbeamerfont*{title}{size=\Huge} +\setbeamerfont*{frametitle}{size=\large} + +% tcolorbox settings +\newcommand{\setCardSettings}{% +\tcbset{% +colback=BGgrey04, colbacktitle=primary, coltitle=textPrimary, coltext=text,% +enhanced, sharpish corners=all,% +fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!BGgrey03}, % top +fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall +fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig +left=6mm, right=6mm, top=6mm, bottom=6mm, middle=4mm,% +title filled, boxrule=0mm, % +segmentation code={\path[draw=BGgrey01](segmentation.west) -- (segmentation.east);}% +} +} + +\setCardSettings + +\newenvironment{card}[1][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}% + }{% + \begin{tcolorbox}[colbacktitle=primary, coltitle=textPrimary, title=#1, left=6mm, right=6mm, top=3mm, bottom=4mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% + }% +}{% + \end{tcolorbox}% +} + +\newenvironment{cardTiny}{% + \setCardSettings + \begin{tcolorbox}[colbacktitle=primary, left=4mm, right=4mm, top=2mm, bottom=2mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% +}{% + \end{tcolorbox}% +} + + +\newcommand{\cardImg}[3][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, bottom=0mm, middle=1.5mm, boxsep=0mm, width=#3,]% + \includegraphics[width=\textwidth]{#2} + \end{tcolorbox} + }{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, middle=1.5mm, boxsep=0mm, leftlower=6mm, rightlower=6mm, bottom=6mm, , width=#3,]% + \includegraphics[width=\textwidth]{#2} + \tcblower + #1% + \end{tcolorbox} + }% +} + +\newenvironment{frameImg}[2][width]{% + \setCardSettings + \ifthenelse{\equal{#1}{width}}{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[width=\paperwidth, keepaspectratio=true]{#2}}}% + }{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[height=\paperheight, keepaspectratio=true]{#2}}}% + }% + \begin{frame} +}{% + \end{frame} +} + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/classic_black_box.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/classic_black_box.png new file mode 100755 index 000000000..4bb114d9f Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/classic_black_box.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/classic_operator.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/classic_operator.png new file mode 100755 index 000000000..e5b477630 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/classic_operator.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/deutsch_algorithm.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/deutsch_algorithm.png new file mode 100755 index 000000000..99556fa80 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/deutsch_algorithm.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/deutsch_jozsa_algorithm.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/deutsch_jozsa_algorithm.png new file mode 100755 index 000000000..8f1e54614 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/deutsch_jozsa_algorithm.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/dj.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/dj.png new file mode 100755 index 000000000..b6976d64b Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/dj.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/oracle.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/oracle.png new file mode 100755 index 000000000..283d7e23c Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/oracle.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/quantum_black_box.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/quantum_black_box.png new file mode 100755 index 000000000..ccee54652 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/quantum_black_box.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/quantum_operator.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/quantum_operator.png new file mode 100755 index 000000000..beecbdaa1 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/quantum_operator.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/reversible_01.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/reversible_01.png new file mode 100755 index 000000000..ca6520649 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/reversible_01.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/reversible_02.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/reversible_02.png new file mode 100755 index 000000000..a7bd980df Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/reversible_02.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/reversible_03.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/reversible_03.png new file mode 100755 index 000000000..b0bfaed92 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/reversible_03.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/reversible_04.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/reversible_04.png new file mode 100755 index 000000000..c6dc785b7 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/img/reversible_04.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/macros.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/macros.sty new file mode 100755 index 000000000..e8d2b8686 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/macros.sty @@ -0,0 +1,127 @@ +\ProvidesPackage{macros}[2018 My own macros] + +% Packages that main.tex will use AND common header commands +\usepackage{multicol} +\usepackage{tikz} % drawings +\usetikzlibrary{positioning, arrows} +\usepackage{animate} % animations +\usepackage{hyperref} +\usepackage{minted} % code snippets +\usepackage{todonotes} +\let\todox\todo +\renewcommand\todo[1]{\todox[inline]{#1}} + +%%%%%%%%%%%%%%%%% DOCUMENT GLOBAL SETTINGS +% example for author reusing these slides: +\author[Ramalho]{Miguel Sozinho Ramalho} +% \author[LASTNAME]{FIRSTNAME LASTNAME,\\ \scriptsize{based on slides by \textbf{Miguel Sozinho Ramalho}}} +\institute[FEUP]{Faculty of Engineering of the University of Porto} +\subject{Quantum Computing} +\date{November, 2018} + + +% Uncomment for notes on slides +% \usepackage{pgfpages} +% \setbeameroption{show notes} +% \setbeameroption{show notes on second screen=right} + +\graphicspath{{img/}} % add the img folder to graphics path + +% Packages that this file uses +\usepackage{braket} % bra-ket notation +\usepackage{xargs} % custom new commands +\usepackage{xspace} % add xspace after new command to auto insert space + + + +% braket shorthands +\newcommandx{\superpos}[3][1=\textual{\psi},2=0,3=1]{\ket {#1} = \textual{\alpha} \ket{#2} + \textual{\beta} \ket{#3}} +\newcommand{\plusminus}[1][\psi]{\superpos[#1][-][+]} +\newcommand{\pagenumber}{\raggedleft\vfill\scriptsize\insertframenumber/\inserttotalframenumber} +\newcommand{\speedoflight}{3 \times 10^{8} m/s} +\newcommand{\osqrt}{\frac{1}{\sqrt{2}}} +\newcommand{\kz}{\ket{0}} +\newcommand{\ko}{\ket{1}} + +% short shorthands +\newcommand{\qasm}{Qasm\xspace} +\newcommand{\q}{Quantum\xspace} +\newcommand{\qa}{\q Algorithms\xspace} +\newcommand{\qct}{\q Circuit\xspace} +\newcommand{\qcts}{\q Circuits\xspace} +\newcommand{\qc}{\q Computing\xspace} +\newcommand{\qcp}{\q Computation\xspace} +\newcommand{\qec}{\q Error Correction\xspace} +\newcommand{\qft}{\q Fourier Transform\xspace} +\newcommand{\qi}{\q Information\xspace} +\newcommand{\qis}{\q Information Science\xspace} +\newcommand{\qm}{\q Mechanics\xspace} +\newcommand{\qmt}{\q Measurement\xspace} +\newcommand{\qp}{\q Physics\xspace} +\newcommand{\qsp}{\q Superposition\xspace} +\newcommand{\qw}{\q World\xspace} +\newcommand{\mbqc}{Measurement Based \q Computer\xspace} +\newcommand{\aqc}{Adiabatic \q Computation\xspace} + +\newcommand{\cl}{Classical\xspace} +\newcommand{\cc}{Classical Computing\xspace} +\newcommand{\cm}{Classical Mechanics\xspace} +\newcommand{\cp}{Classical Physics\xspace} + +\newcommand{\qk}{Qiskit\xspace} +\newcommand{\qka}{Qiskit Aqua\xspace} +\newcommand{\ibmq}{IBM Q\xspace} +\newcommand{\ibmqe}{IBM Q Experience\xspace} + +\newcommand{\p}{\textbf{P}\xspace} +\newcommand{\np}{\textbf{NP}\xspace} +\newcommand{\bqp}{\textbf{BQP}\xspace} + +\newcommand{\djs}{Deutsch-Jozsa\xspace} +\newcommand{\ds}{Deutsch's\xspace} +\newcommand{\gv}{Grover\xspace} +\newcommand{\gvs}{\gv's\xspace} +\newcommand{\gvsa}{\gv's algorithm\xspace} +\newcommand{\aamp}{Amplitude Amplification\xspace} +\newcommand{\sa}{Shor's algorithm\xspace} + +\newcommand{\phiv}{phase inversion\xspace} +\newcommand{\iatm}{inversion about the mean\xspace} + +\newcommand{\ai}{Artificial Intelligence\xspace} + +%configurable variables +\newcommand{\githubRepo}{https://github.com/msramalho/Teach-Me-Quantum/} +\newcommand{\weeks}{\githubRepo/tree/master/} +\newcommand{\weekZero}{\weeks/Week\%200\%20-\%20Hello\%20Quantum\%20World/} +\newcommand{\weekOne}{\weeks/Week\%201\%20-\%20Quantum\%20Tools/} +\newcommand{\weekTwo}{\weeks/Week\%202\%20-\%20Quantum\%20Information\%20Science/} +\newcommand{\weekThree}{\weeks/Week\%203\%20-\%20Quantum\%20Gates/} +\newcommand{\weekFour}{\weeks/Week\%204\%20-\%20Quantum\%20Facts/} + +%%%%%%%%%%%%%%%%%%%%%%%% quotations +% src: https://tex.stackexchange.com/a/53380/126771 +\newcommand{\@chapapp}{\relax} +\makeatletter +\renewcommand{\@chapapp}{} +\newenvironment{chapquote}[2][2em] + {\setlength{\@tempdima}{#1} + \def\chapquote@author{#2} + \parshape 1 \@tempdima \dimexpr\textwidth-2\@tempdima\relax + \itshape} + {\par\normalfont\hfill--\ \chapquote@author\hspace*{\@tempdima}\par\bigskip} +\makeatother + +%%%%%%%%%%%%%%%%% color on hrefs +\hypersetup{ + colorlinks=true, + linkcolor=primaryD,%blue, + filecolor=primaryD,%cyan, + urlcolor=accent %hrefs +} + +%%%%%%%%%%%%%%%%% minted settings +\setminted[python]{fontsize=\footnotesize} +\setminted[vhdl]{fontsize=\footnotesize} +\definecolor{bgGrey}{rgb}{0.95,0.95,0.95} +\setminted{bgcolor=bgGrey} \ No newline at end of file diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/main.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/main.tex new file mode 100755 index 000000000..d56bb12a7 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/latex/main.tex @@ -0,0 +1,301 @@ +\documentclass[aspectratio=43]{beamer} +\usepackage[utf8]{inputenc} + +%%%%%%%%%%%%%%%%%%%%%%%% THEME +\usetheme{material} +\useLightTheme +\usePrimaryIndigo +\useAccentRed + +\usepackage{macros} % must come after theme + +\title{\q Algorithms} +\keywords{\qc, \q Algorithms} + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + + +\begin{frame}{Table of contents} + \begin{card} + \tableofcontents + \end{card} +\end{frame} + + +\section{Introduction} +\begin{frame}{Introduction} + \begin{card} + Time has come for us to effectively show how a quantum computer might beat a classical one. For this, we will explore the \ds algorithm (and its general case \djs). It does not solve a particularly interesting problem in classical computer science, but it does highlight the \textit{quantum power}, so to speak. Some previous notions on \textbf{\q Oracles} and \textbf{Reversible Computation} are also presented. + \end{card} +\pagenumber +\end{frame} + +\section{\q Oracles} +\begin{frame}{\q Oracles} +\begin{card} + No, we are not about to delve into the \href{https://en.wikipedia.org/wiki/The_Oracle_(The_Matrix)}{Matrix's Oracle}.\\ + \q Oracles are actually a useful abstractions for writing quantum algorithms. An Oracle hides a function that takes a number of qubits as input, performs a transformation, and produces the same number of qubits as output. It can be seen as black box (revirsible): + \begin{center} + \includegraphics[width=0.5\textwidth]{oracle} + \end{center} +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{\q Oracles} +\begin{card} + Some of the reasons for using oracles are: + \begin{itemize} + \item Conceptual simplification of circuits + \item Allows for the comparison between classical and quantum algorithms + \item Eases the visual interpretation of quantum circuits + \end{itemize} +\end{card} +\begin{card} + As we will see, this concept is quite used in the specification of new quantum algorithms, as it allows us to abstract from the unnecessary, following the lines of the computer science \href{https://en.wikipedia.org/wiki/Abstraction_principle_(computer_programming)}{Abstraction Principle}. +\end{card} +\pagenumber +\end{frame} + +\section{\q Reversible Computation} +\begin{frame}{\q Reversible Computation} +\begin{card} + We want quantum computations to be \textbf{reversible}, and that is an intended consequence of the \textbf{unitary} nature of quantum gates. However, we must also be able to extrapolate this notion of \textbf{reversibility to oracles}, so that we can be sure (through a sort of implicit induction) that we do not lose the property of reversibility regardless of the complexity of our circuit. +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{\q Reversible Computation} + Consider a classical circuit for computing a Boolean operator: + \begin{center} + \includegraphics[width=0.35\textwidth]{classic_operator} + \end{center} + \small{If we were to do this in quantum circuits, we would lose all the information about x and, therefore, destroy any chance of reversibility. What we really want is a way we can apply the reverse gate of $U_f$, $U_f^\dag$:} + \begin{center} + \includegraphics[width=0.65\textwidth]{quantum_operator} + \end{center} +\pagenumber +\end{frame} + +\begin{frame}{\q Reversible Computation} + Achieving this is easier than it looks. We already have the tools!\\ + We are already able to compute any function and then reverse it back to the original state, as we only use unitary operators. But doing this means going back to the start. However, if we use some \textit{helper qubits}, we may be on to something... + \begin{center} + \includegraphics[width=0.7\textwidth]{reversible_01} + \end{center} +\pagenumber +\end{frame} + +\begin{frame}{\q Reversible Computation} + Indeed! Have you noticed the CNOT gate's equivalent in logical gates is the exclusive OR (XOR), and it can be used to copy the result of $C(x)$ onto the $y$ qubits, if each of those qubits in $y=\kz$ (0 XOR A = A). + \begin{center} + \includegraphics[width=0.7\textwidth]{reversible_02} + \end{center} +\pagenumber +\end{frame} + + +\begin{frame}{\q Reversible Computation} + This means we can obtain our inductive reversibility notion if we apply the operations we want on our input qubits, save it using as many CNOT gates as the number of qubits in the result, and reverting the qubits we obtained by applying the inverse operations to go back to the original input. The difference being we also have the result! + \begin{center} + \includegraphics[width=0.7\textwidth]{reversible_02} + \end{center} +\pagenumber +\end{frame} + +\begin{frame}{\q Reversible Computation} + In the end, even though we need some extra zeroed qubits, we can abstract our circuit onto a reversible mapping, since we never loose, only gain, information! \textit{et voila}: + \begin{center} + \includegraphics[width=0.7\textwidth]{reversible_04} + \end{center} +\pagenumber +\end{frame} + + +\section{Deutsch-Jozsa Problem Formulation} +\begin{frame}{\djs Problem Formulation} +\begin{card} + Consider a function $f: \{0,1\}^n \rightarrow \{0,1\}$ that maps an array of $n$ bits into either 0 or 1. We do not know the logic behind it. We know that it is either constant or balanced: + \begin{description} + \item[Constant:] its output is always 0 or always 1 + \item[Balanced:] outputs 0 for half the input value and 1 for the other half + \end{description} +\end{card} +\pagenumber +\end{frame} + +\section{Deutsch's Problem Formulation} +\begin{frame}{\ds Problem Formulation} +\begin{card} + For the case that $n=1$ we have $f: \{0,1\} \rightarrow \{0,1\}$ that maps a single bit into either 0 or 1. If we are given a black box, an \textbf{oracle}, that takes as input this two bits and outputs the unknown value: + \begin{center} + \includegraphics[width=0.5\textwidth]{classic_black_box} + \end{center} +\end{card} +\begin{cardTiny} + To answer this question classically, we would always need two function invocations. We could do $f(0)$ and $f(1)$ and see if it is either constant or balanced. +\end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}{Classical Algorithm} +\begin{card} + \begin{center} + \includegraphics[width=0.5\textwidth]{classic_black_box} + \end{center} +\end{card} +\begin{cardTiny} + An alternative would be to check what the value of $f(0)$ XOR $f(1)$ would produce: + \begin{equation*} + \left\{\begin{matrix} + f(0)\text{ XOR } f(1) = 0 \rightarrow constant\\ + f(0)\text{ XOR } f(1) = 1 \rightarrow balanced\\ + \end{matrix}\right. + \end{equation*} + Yet, this would still require two invocations of the black box. +\end{cardTiny} +\pagenumber +\end{frame} + + +\begin{frame}{\q Algorithm} +\begin{card} + Before transforming it into a quantum problem, we need our black box to be an oracle which allows for reversible computation, like so: + \begin{center} + \includegraphics[width=0.5\textwidth]{quantum_black_box} + \end{center} +\end{card} +\pagenumber +\end{frame} + + +\begin{frame}{\ds Algorithm} +Let us imagine the following procedure:\\ +\begin{enumerate} + \item We begin with two qubits, q0 in state $\kz$ and q1 in state $\ko$ ($\ket{01}$). + \item We apply a Hadamard to each qubit, the result is $\frac{1}{2}(\ket{00} - \ket{01} + \ket{10} - \ket{11})$ + \item We now call our oracle, which maps $\ket{a b}$ or $\ket{a}\ket{b}$ (easier to interpret) into $\ket{a}\ket{b\oplus f(a)}$ the result is: +\end{enumerate} +\begin{equation} + \frac{1}{2}(\kz\ket{0\oplus f(0)} - \kz\ket{1\oplus f(0)} + \ko\ket{0\oplus f(1)} - \ko\ket{1\oplus f(1)}) +\end{equation} +\pagenumber +\end{frame} + +\begin{frame}{\ds Algorithm} +Simplifying: +\begin{equation*} + \frac{1}{2}( + \kz [\ket{0\oplus f(0)} - \ket{1\oplus f(0)}] + + + \ko [(\ket{0\oplus f(1)} - \ket{1\oplus f(1)}] + ) +\end{equation*} +We can now use the following equivalence: +\begin{equation*} + \ket{0 \oplus a} - \ket{1 \oplus a} = (-1)^a(\kz - \ko) +\end{equation*} +To replace above and get: +\begin{equation*} + \frac{1}{2}( + \kz [(-1)^{f(0)}(\kz - \ko)] + + + \ko [(-1)^{f(1)}(\kz - \ko)] + ) +\end{equation*} +\pagenumber +\end{frame} + + +\begin{frame}{\ds Algorithm} +Separating back into the 2 qubit shape: +\begin{equation*} + [\osqrt (-1)^{f\kz} \kz + \osqrt (-1)^{f(\kz}\kz][\osqrt \kz - \osqrt \ko] +\end{equation*} +Our second qubit : $(\osqrt \kz - \osqrt \ko)$ can be ignored, and what remains is our first qubit: $(\osqrt (-1)^{f\kz} \kz + \osqrt (-1)^{f(\kz}\kz)$ which contains both $f(0)$ and $f(1)$! both images of $f$ with a single pass over the oracle. This can further be simplified as: +\begin{equation*} + (-1)^{f(0)}(\osqrt \kz + \osqrt (-1)^{f(0) \oplus f(1)} \ko) +\end{equation*} +\pagenumber +\end{frame} + +\begin{frame}{\ds Algorithm} +Lastly, we apply a Hadamard gate on our qubit (go ahead and do this on paper) and we arrive at: +\begin{equation*} + (-1)^{f(0)} \ket{f(0) \oplus f(1)} +\end{equation*} +\begin{cardTiny} + What is the meaning of this? See for yourself! + \begin{itemize} + \item if f is constant ($00$ or $11$) $\rightarrow$ output is $0$ (xor is 0) + \item if f is balanced ($01$ or $10$) $\rightarrow$ output is $\pm 1$ (xor is 1) + \end{itemize} + Which, in fact, means that we can do a\textbf{ single pass} over the oracle gate discover whether it is constant or balanced, an impossible feat in classical computing. +\end{cardTiny} +\pagenumber +\end{frame} + + +\begin{frame}{\ds Algorithm} +All in all, what we did was follow the following circuit: +\begin{center} + \includegraphics[width=0.8\textwidth]{deutsch_algorithm} +\end{center} +\begin{cardTiny} + As you can see it is one of the simplest quantum circuits we could have designed but, nonetheless, it gave us some hard time understanding how and why it worked. Do not fear, for quantum algorithms are usually hard at the beginning as they demand a new way of tackling problems! +\end{cardTiny} +\pagenumber +\end{frame} + +\section{Deutsch-Jozsa Algorithm} +\begin{frame}{\djs Algorithm} +\begin{card} + If we go back to our function $f: \{0,1\}^n \rightarrow \{0,1\}$ it should be known that the solution to the $n=1$ instance is generalizes to answer the same question on an n-dimensional array with... can you guess how many passes over the black box..? \small{(Do note that a classical algorithm would need $2^{n-1}+1$ passes)} + \begin{center} + \includegraphics[width=0.8\textwidth]{deutsch_jozsa_algorithm} + \end{center} +\end{card} +\pagenumber +\end{frame} + +\begin{frame}{\djs Algorithm} +\begin{cardTiny} + \begin{center} + \Large{ONE!} + \end{center} +\end{cardTiny} +\begin{card} + Just one pass. By using n qubits initialized to 0 and 1 to 1, by performing the same operations, but on more qubits, again: + \begin{center} + \includegraphics[width=0.8\textwidth]{deutsch_jozsa_algorithm} + \end{center} +\end{card} +\pagenumber +\end{frame} + + +\section{Implementation Tips} +%https://github.com/Qiskit/ibmqx-user-guides/blob/master/rst/full-user-guide/004-Quantum_Algorithms/080-Deutsch-Jozsa_Algorithm.rst +\begin{frame}{Hands-on} +\begin{card} + Although \qk does not allow for oracles, as it would require quite a challenging approach (remember it should be able to interact with real hardware), we can simply choose a couple of operations instead of a black box and implement our \ds algorithm around them, and that is precisely what you will get to do on this week's exercises! +\end{card} +\pagenumber +\end{frame} + + +\section{Where to learn more?} +\begin{frame}{Where to learn more?} +\begin{card} + \begin{itemize} + \item \href{https://www.youtube.com/watch?v=mGqyzZ-fnnY}{\djs on Youtube} + \item \href{https://www.youtube.com/watch?v=-f_VTELFXxU}{\ds on Youtube} + \item \href{http://rspa.royalsocietypublishing.org/content/439/1907/553}{The original \djs paper} + \end{itemize} +\end{card} +\end{frame} +\end{document} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/slides.pdf b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/slides.pdf new file mode 100755 index 000000000..0ff3e0274 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_5-Quantum_Algorithms/slides.pdf differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/README.ipynb new file mode 100644 index 000000000..aae390012 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/README.ipynb @@ -0,0 +1,53 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Week 6 - Quantum Search (Grover's Algorithm)\n", + "\n", + " * The Search Problem\n", + " * SAT Problem\n", + " * Grover's Algorithm Overview\n", + " * Phase Inversion\n", + " * Inversion about the Mean\n", + " * Quadratic speedup\n", + "\n", + "# Exercises\n", + " * [Jupyter notebook with tutorial](exercises/w6_01.ipynb): implementing Grover's Algorithm and solving a SAT problem of dimension 3, using local and remote (IBMQ) quantum devices\n", + "\n", + "## Resources\n", + " * [PDF slides](slides.pdf)\n", + " * [slides src](latex/main.tex) Latex files and image resources used in the presentation (useful for PR on slide typos and such)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/exercises/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/exercises/README.ipynb new file mode 100644 index 000000000..18c4c6c76 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/exercises/README.ipynb @@ -0,0 +1,40 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercises\n", + " * [Jupyter notebook with tutorial](w6_01.ipynb): implementing Grover's Algorithm and solving a SAT problem of dimension 3, using local and remote (IBMQ) quantum devices\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/exercises/qiskit-heading.gif b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/exercises/qiskit-heading.gif new file mode 100755 index 000000000..97c168a33 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/exercises/qiskit-heading.gif differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/exercises/w6_01.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/exercises/w6_01.ipynb new file mode 100644 index 000000000..47350baa0 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/exercises/w6_01.ipynb @@ -0,0 +1,584 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Grover Search for Combinatorial Problems\n", + "\n", + "This notebook is based on an official notebook by Qiskit team, available at https://github.com/qiskit/qiskit-tutorial under the [Apache License 2.0](https://github.com/Qiskit/qiskit-tutorial/blob/master/LICENSE) license. \n", + "Initially done by Giacomo Nannicini and Rudy Raymond (based on [this paper](https://arxiv.org/abs/1708.03684)).\n", + "\n", + "Your **TASK** is to follow the tutorial, as you implement the Grover algorithm (studied this week) to a real SAT problem!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "Grover search is one of the most popular algorithms used for searching a solution among many possible candidates using Quantum Computers. If there are $N$ possible solutions among which there is exactly one solution (that can be verified by some function evaluation), then Grover search can be used to find the solution with $O(\\sqrt{N})$ function evaluations. This is in contrast to classical computers that require $\\Omega(N)$ function evaluations: the Grover search is a quantum algorithm that provably can be used search the correct solutions quadratically faster than its classical counterparts. \n", + "\n", + "Here, we are going to illustrate the use of Grover search to solve a combinatorial problem called [Exactly-1 3-SAT problem](https://en.wikipedia.org/wiki/Boolean_satisfiability_problem#Exactly-1_3-satisfiability). The Exactly-1 3-SAT problem is a NP-complete problem, namely, it is one of the most difficult problems that are interconnected (meaning that if we solve any one of them, we essentially can solve all of them). Unfortunately, there are many natural problems that are NP-complete, such as, the Traveling Salesman Problem (TSP), the Maximum Cut (MaxCut) and so on. Up to now, there is no classical and quantum algorithm that can efficiently solve such NP-hard problems. \n", + "\n", + "We begin with an example of the Exactly-1 3-SAT problem. Then, we show how to design an evaluation function which is also known as the oracle (or, blackbox) which is essential to Grover search. Finally, we show the circuit of Grover search using the oracle and present their results on simulator and real-device backends." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exactly-1 3-SAT problem\n", + "\n", + "The Exactly-1 3-SAT problem is best explained with the following concrete problem. Let us consider a Boolean function $f$ with three Boolean variables $x_1, x_2, x_3$ as below.\n", + "\n", + "$$\n", + "f(x_1, x_2, x_3) = (x_1 \\vee x_2 \\vee \\neg x_3) \\wedge (\\neg x_1 \\vee \\neg x_2 \\vee \\neg x_3) \\wedge (\\neg x_1 \\vee x_2 \\vee x_3) \n", + "$$\n", + "\n", + "In the above function, the terms on the right-hand side equation which are inside $()$ are called clauses. Each clause has exactly three literals. Namely, the first clause has $x_1$, $x_2$ and $\\neg x_3$ as its literals. The symbol $\\neg$ is the Boolean NOT that negates (or, flips) the value of its succeeding literal. The symbols $\\vee$ and $\\wedge$ are, respectively, the Boolean OR and AND. The Boolean $f$ is satisfiable if there is an assignment of $x_1, x_2, x_3$ that evaluates to $f(x_1, x_2, x_3) = 1$ (or, $f$ evaluates to True). The Exactly-1 3-SAT problem requires us to find an assignment such that $f = 1$ (or, True) and there is *exactly* one literal that evaluates to True in every clause of $f$. \n", + "\n", + "A naive way to find such an assignment is by trying every possible combinations of input values of $f$. Below is the table obtained from trying all possible combinations of $x_1, x_2, x_3$. For ease of explanation, we interchangably use $0$ and False, as well as $1$ and True. \n", + "\n", + "|$x_1$ | $x_2$ | $x_3$ | $f$ | Comment | \n", + "|------|-------|-------|-----|---------|\n", + "| 0 | 0 | 0 | 1 | Not a solution because there are three True literals in the second clause | \n", + "| 0 | 0 | 1 | 0 | Not a solution because $f$ is False | \n", + "| 0 | 1 | 0 | 1 | Not a solution because there are two True literals in the first clause | \n", + "| 0 | 1 | 1 | 1 | Not a solution because there are three True literals in the third clause | \n", + "| 1 | 0 | 0 | 0 | Not a solution because $f$ is False | \n", + "| 1 | 0 | 1 | 1 | **Solution**. BINGO!! | \n", + "| 1 | 1 | 0 | 1 | Not a soluton because there are three True literals in the first clause | \n", + "| 1 | 1 | 1 | 0 | Not a solution because $f$ is False | \n", + "\n", + "\n", + "From the table above, we can see that the assignment $x_1x_2x_3 = 101$ is the solution fo the Exactly-1 3-SAT problem to $f$. In general, the Boolean function $f$ can have many clauses and more Boolean variables. \n", + "\n", + "## A blackbox function to check the assignment of Exactly-1 3-SAT problem\n", + "\n", + "Here, we describe a method to construct a circuit to check the assignment of Exactly-1 3-SAT problem. The circuit can then be used as a blackbox (or, oracle) in Grover search. To design the blackbox, we do not need to know the solution to the problem in advance: it suffices to design a blackbox that checks if the assignment results in $f$ evaluates to True or False. It turns out that we can design such a blackbox efficiently (in fact, any NP-complete problem has the property that although finding the solution is difficult, checking the solution is easy). \n", + "\n", + "For each clause of $f$, we design a sub-circuit that outputs True if and only if there is exactly one True literal in the clause. Combining all sub-circuits for all clauses, we can then obtain the blackbox that outputs True if and only if all clauses are satisfied with exactly one True literal each. \n", + "\n", + "For example, let us consider the clause $(x_1 \\vee \\neg x_2 \\vee x_3)$. It is easy to see that $y$ defined as \n", + "\n", + "$$\n", + "y = x_1 \\oplus \\neg x_2 \\oplus x_3 \\oplus ( x_1 \\wedge \\neg x_2 \\wedge x_3), \n", + "$$\n", + "\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "import numpy as npis True if and only if exactly one of $x_1$, $\\neg x_2$, and $x_3$ is True. Using two working qubits, $y$ can be computed by the following sub-circuit. Below, $x_1x_2x_3$ is renamed as $q_1q_2q_3$, $q_4$ is used as a working qubit, and $q_5$ is used to store the value of $y$. " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-25T17:34:42.934376Z", + "start_time": "2018-09-25T17:34:42.923743Z" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "# importing Qiskit\n", + "from qiskit import Aer, IBMQ\n", + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import available_backends, execute, register, get_backend, compile\n", + "\n", + "from qiskit.tools import visualization\n", + "from qiskit.tools.visualization import circuit_drawer" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-25T17:32:05.667148Z", + "start_time": "2018-09-25T17:32:03.983610Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "q = QuantumRegister(6)\n", + "qc = QuantumCircuit(q)\n", + "qc.x(q[2])\n", + "qc.cx(q[1], q[5])\n", + "qc.cx(q[2], q[5])\n", + "qc.cx(q[3], q[5])\n", + "qc.ccx(q[1], q[2], q[4])\n", + "qc.ccx(q[3], q[4], q[5])\n", + "qc.ccx(q[1], q[2], q[4])\n", + "qc.x(q[2])\n", + "circuit_drawer(qc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the sub-circuit above, the three `ccx` gates on the right are used to compute $( q_1 \\wedge \\neg q_2 \\wedge q_3)$ and write the result to $q_5$, while the three `cx` gates on the left are used to compute $q_1 \\oplus \\neg q_2 \\oplus q_3$ and write the result to $q_5$. Notice that the right-most `ccx` gate is used to reset the value of $q_4$ so that it can be reused in the succeeding sub-circuits. \n", + "\n", + "From the above sub-circuit, we can define a blackbox function to check the solution of the Exactly-1 3-SAT problem as follows." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-25T17:32:05.678916Z", + "start_time": "2018-09-25T17:32:05.669852Z" + } + }, + "outputs": [], + "source": [ + "def black_box_u_f(circuit, f_in, f_out, aux, n, exactly_1_3_sat_formula):\n", + " \"\"\"Circuit that computes the black-box function from f_in to f_out.\n", + "\n", + " Create a circuit that verifies whether a given exactly-1 3-SAT\n", + " formula is satisfied by the input. The exactly-1 version\n", + " requires exactly one literal out of every clause to be satisfied.\n", + " \"\"\"\n", + " num_clauses = len(exactly_1_3_sat_formula)\n", + " for (k, clause) in enumerate(exactly_1_3_sat_formula):\n", + " # This loop ensures aux[k] is 1 if an odd number of literals\n", + " # are true\n", + " for literal in clause:\n", + " if literal > 0:\n", + " circuit.cx(f_in[literal-1], aux[k])\n", + " else:\n", + " circuit.x(f_in[-literal-1])\n", + " circuit.cx(f_in[-literal-1], aux[k])\n", + " # Flip aux[k] if all literals are true, using auxiliary qubit\n", + " # (ancilla) aux[num_clauses]\n", + " circuit.ccx(f_in[0], f_in[1], aux[num_clauses])\n", + " circuit.ccx(f_in[2], aux[num_clauses], aux[k])\n", + " # Flip back to reverse state of negative literals and ancilla\n", + " circuit.ccx(f_in[0], f_in[1], aux[num_clauses])\n", + " for literal in clause:\n", + " if literal < 0:\n", + " circuit.x(f_in[-literal-1])\n", + " # The formula is satisfied if and only if all auxiliary qubits\n", + " # except aux[num_clauses] are 1\n", + " if (num_clauses == 1):\n", + " circuit.cx(aux[0], f_out[0])\n", + " elif (num_clauses == 2):\n", + " circuit.ccx(aux[0], aux[1], f_out[0])\n", + " elif (num_clauses == 3):\n", + " circuit.ccx(aux[0], aux[1], aux[num_clauses])\n", + " circuit.ccx(aux[2], aux[num_clauses], f_out[0])\n", + " circuit.ccx(aux[0], aux[1], aux[num_clauses])\n", + " else:\n", + " raise ValueError('We only allow at most 3 clauses')\n", + " # Flip back any auxiliary qubits to make sure state is consistent\n", + " # for future executions of this routine; same loop as above.\n", + " for (k, clause) in enumerate(exactly_1_3_sat_formula):\n", + " for literal in clause:\n", + " if literal > 0:\n", + " circuit.cx(f_in[literal-1], aux[k])\n", + " else:\n", + " circuit.x(f_in[-literal-1])\n", + " circuit.cx(f_in[-literal-1], aux[k])\n", + " circuit.ccx(f_in[0], f_in[1], aux[num_clauses])\n", + " circuit.ccx(f_in[2], aux[num_clauses], aux[k])\n", + " circuit.ccx(f_in[0], f_in[1], aux[num_clauses])\n", + " for literal in clause:\n", + " if literal < 0:\n", + " circuit.x(f_in[-literal-1])\n", + "# -- end function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Inversion about the mean\n", + "\n", + "Another important procedure in Grover search is to have an operation that perfom the *inversion-about-the-mean* step, namely, it performs the following transformation:\n", + "\n", + "$$\n", + "\\sum_{j=0}^{2^{n}-1} \\alpha_j |j\\rangle \\rightarrow \\sum_{j=0}^{2^{n}-1}\\left(2 \\left( \\sum_{k=0}^{k=2^{n}-1} \\frac{\\alpha_k}{2^n} \\right) - \\alpha_j \\right) |j\\rangle \n", + "$$\n", + "\n", + "The above transformation can be used to amplify the probability amplitude $\\alpha_s$ when s is the solution and $\\alpha_s$ is negative (and small), while $\\alpha_j$ for $j \\neq s$ is positive. Roughly speaking, the value of $\\alpha_s$ increases by twice the mean of the amplitudes, while others are reduced. The inversion-about-the-mean can be realized with the sequence of unitary matrices as below:\n", + "\n", + "$$\n", + "H^{\\otimes n} \\left(2|0\\rangle \\langle 0 | - I \\right) H^{\\otimes n}\n", + "$$\n", + "\n", + "The first and last $H$ are just Hadamard gates applied to each qubit. The operation in the middle requires us to design a sub-circuit that flips the probability amplitude of the component of the quantum state corresponding to the all-zero binary string. The sub-circuit can be realized by the following function, which is a multi-qubit controlled-Z which flips the probability amplitude of the component of the quantum state corresponding to the all-one binary string. Applying X gates to all qubits before and after the function realizes the sub-circuit. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-25T17:32:08.246809Z", + "start_time": "2018-09-25T17:32:08.236159Z" + } + }, + "outputs": [], + "source": [ + "def n_controlled_Z(circuit, controls, target):\n", + " \"\"\"Implement a Z gate with multiple controls\"\"\"\n", + " if (len(controls) > 2):\n", + " raise ValueError('The controlled Z with more than 2 ' +\n", + " 'controls is not implemented')\n", + " elif (len(controls) == 1):\n", + " circuit.h(target)\n", + " circuit.cx(controls[0], target)\n", + " circuit.h(target)\n", + " elif (len(controls) == 2):\n", + " circuit.h(target)\n", + " circuit.ccx(controls[0], controls[1], target)\n", + " circuit.h(target)\n", + "# -- end function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, the inversion-about-the-mean circuit can be realized by the following function:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-25T17:32:09.200728Z", + "start_time": "2018-09-25T17:32:09.196905Z" + } + }, + "outputs": [], + "source": [ + "def inversion_about_mean(circuit, f_in, n):\n", + " \"\"\"Apply inversion about the mean step of Grover's algorithm.\"\"\"\n", + " # Hadamards everywhere\n", + " for j in range(n):\n", + " circuit.h(f_in[j])\n", + " # D matrix: flips the sign of the state |000> only\n", + " for j in range(n):\n", + " circuit.x(f_in[j])\n", + " n_controlled_Z(circuit, [f_in[j] for j in range(n-1)], f_in[n-1])\n", + " for j in range(n):\n", + " circuit.x(f_in[j])\n", + " # Hadamards everywhere again\n", + " for j in range(n):\n", + " circuit.h(f_in[j])\n", + "# -- end function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is a circuit of the inversion about the mean on three qubits." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-25T17:32:11.403205Z", + "start_time": "2018-09-25T17:32:10.138028Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "qr = QuantumRegister(3)\n", + "qInvAvg = QuantumCircuit(qr)\n", + "inversion_about_mean(qInvAvg, qr, 3)\n", + "circuit_drawer(qInvAvg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Grover Search: putting all together\n", + "\n", + "The complete steps of Grover search is as follow.\n", + "\n", + "1. Create the superposition of all possible solutions as the initial state (with working qubits initialized to zero)\n", + "$$ \\sum_{j=0}^{2^{n}-1} \\frac{1}{2^n} |j\\rangle |0\\rangle$$\n", + "2. Repeat for $T$ times:\n", + "\n", + " * Apply the `blackbox` function\n", + " \n", + " * Apply the `inversion-about-the-mean` function\n", + " \n", + "3. Measure to obtain the solution\n", + "\n", + "The code for the above steps is as below:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-25T17:37:05.873175Z", + "start_time": "2018-09-25T17:34:42.936448Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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VVXFzJkzqaqq2qPNL3/5Sw4++GCqq6v5xje+wbe+9S0AOnbsyPe+9z1uvPHG2Od+6KGH6Ny5c4vyiUjrUoHIA9la8U6ZMoUZM2awevVqVq9ezfz581uUc+nSpZSVldG3b186dOjAhAkTmD179h5tZs+ezRe+8AUAxo8fz4IFC3B3OnXqxLHHHkvHjh33et5t27Zx00038Z3vfKdF+eo0t9gCTJs2jbKyMgYOHMhjjz22e/mbb77J+PHjOfLIIykvL2fx4sV5mfPmm29m0KBBDB48mHPPPZft27e3OGe+a8ufdzZypmoTBaK1P5j169czatQoysvLGTRoELfeemuL8mVjxfvKK6+wdetWjjnmGMyM8847j9///vctyrlhwwZ69eq1+35JSQkbNmyot01RURFdu3Zl8+bNDT7v1VdfzWWXXcYBBxzQonzQsmJbVVXFrFmzWLlyJfPnz+crX/kKu3btAuCSSy7h1FNP5W9/+xvPP/885eXleZdzw4YN/OQnP6GyspIVK1awa9cuZs2a1aKc+a4tf97ZyJluny8Q2fhgioqK+PGPf8yLL77IkiVLuO222/Z6zkxkY8W7YcMGSkpKGnzOTMUdojKzjNukeu6556iuruaMM85oUbY6LSm2s2fPZsKECey///706dOHsrIyli5dytatW3nyySeZNGkSAB06dOCggw7Ku5wAtbW1vPvuu9TW1vLOO+/Qo0ePFuXMd235885GznT7fIHIxgfTvXt3PvaxjwHQpUsXysvLW7TyzcaKN9P2TVFSUsL69et336+pqdlrBZTapra2li1btnDIIYfU+5yLFy9m2bJllJaWcuyxx/LSSy9x/PHHNztjS4ptfb+7Zs0aiouLOf/88xk2bBgXXnghb7/9drMzZitnz549ufzyy+nduzfdu3ena9eunHzyyS3Kme/a8uedjZzp9vkCkY0PJtW6detYvnw5I0eObHbGbKx4S0pKqKmpafA5MzVixAhWr17N2rVree+995g1axZjxozZo82YMWO4++67AXjggQc44YQTGixMU6ZMYePGjaxbt45FixYxYMAAFi5c2OyMLSm29S2vra3l2WefZcqUKSxfvpxOnTrFHqpMOucbb7zB7NmzWbt2LRs3buTtt9/mvvvua1HOfNeWP+9s5Ey3zxeIbHwwdbZt28a4ceO45ZZbOPDAA5udMRsr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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\"\"\"\n", + "Grover search implemented in Qiskit.\n", + "\n", + "This module contains the code necessary to run Grover search on 3\n", + "qubits, both with a simulator and with a real quantum computing\n", + "device. This code is the companion for the paper\n", + "\"An introduction to quantum computing, without the physics\",\n", + "Giacomo Nannicini, https://arxiv.org/abs/1708.03684. \n", + "\"\"\"\n", + "\n", + "def input_state(circuit, f_in, f_out, n):\n", + " \"\"\"(n+1)-qubit input state for Grover search.\"\"\"\n", + " for j in range(n):\n", + " circuit.h(f_in[j])\n", + " circuit.x(f_out)\n", + " circuit.h(f_out)\n", + "# -- end function\n", + "\n", + "# Make a quantum program for the n-bit Grover search.\n", + "n = 3\n", + "\n", + "# Exactly-1 3-SAT formula to be satisfied, in conjunctive\n", + "# normal form. We represent literals with integers, positive or\n", + "# negative, to indicate a Boolean variable or its negation.\n", + "exactly_1_3_sat_formula = [[1, 2, -3], [-1, -2, -3], [-1, 2, 3]]\n", + "\n", + "# Define three quantum registers: 'f_in' is the search space (input\n", + "# to the function f), 'f_out' is bit used for the output of function\n", + "# f, aux are the auxiliary bits used by f to perform its\n", + "# computation.\n", + "f_in = QuantumRegister(n)\n", + "f_out = QuantumRegister(1)\n", + "aux = QuantumRegister(len(exactly_1_3_sat_formula) + 1)\n", + "\n", + "# Define classical register for algorithm result\n", + "ans = ClassicalRegister(n)\n", + "\n", + "# Define quantum circuit with above registers\n", + "grover = QuantumCircuit()\n", + "grover.add(f_in)\n", + "grover.add(f_out)\n", + "grover.add(aux)\n", + "grover.add(ans)\n", + "\n", + "input_state(grover, f_in, f_out, n)\n", + "T = 2\n", + "for t in range(T):\n", + " # Apply T full iterations\n", + " black_box_u_f(grover, f_in, f_out, aux, n, exactly_1_3_sat_formula)\n", + " inversion_about_mean(grover, f_in, n)\n", + "\n", + "# Measure the output register in the computational basis\n", + "for j in range(n):\n", + " grover.measure(f_in[j], ans[j])\n", + "\n", + "# Execute circuit\n", + "backend = Aer.get_backend('qasm_simulator')\n", + "job = execute([grover], backend=backend, shots=1000)\n", + "result = job.result()\n", + "\n", + "# Get counts and plot histogram\n", + "counts = result.get_counts(grover)\n", + "visualization.plot_histogram(counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Running the circuit in real devices\n", + "\n", + "We have seen that the simulator can find the solution to the combinatorial problem. We would like to see what happens if we use the real quantum devices that have noise and imperfect gates. \n", + "\n", + "However, due to the restriction on the length of strings that can be sent over the network to the real devices (there are more than sixty thousands charactes of QASM of the circuit), at the moment the above circuit cannot be run on real-device backends. We can see the compiled QASM on real-device `ibmqx5` backend as follows." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "IBMQ.load_accounts()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-25T18:41:39.542516Z", + "start_time": "2018-09-25T18:41:28.052236Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of gates for ibmq_16_melbourne is 1982\n" + ] + } + ], + "source": [ + "# get ibmq_16_rueschlikon configuration and coupling map\n", + "backend = IBMQ.get_backend('ibmq_16_melbourne')\n", + "backend_config = backend.configuration()\n", + "backend_coupling = backend_config['coupling_map']\n", + "\n", + "# compile the circuit for ibmq_16_rueschlikon\n", + "grover_compiled = compile(grover, backend=backend, coupling_map=backend_coupling, seed=1)\n", + "\n", + "grover_compiled_qasm = grover_compiled.experiments[0].header.compiled_circuit_qasm\n", + "print(\"Number of gates for\", backend.name(), \"is\", len(grover_compiled_qasm.split(\"\\n\")) - 4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The number of gates is in the order of thousands which is above the limits of decoherence time of the current near-term quantum computers. It is a challenge to design a quantum circuit for Grover search to solve large optimization problems. \n", + "\n", + "### Free flow\n", + "\n", + "In addition to using too many gates, the circuit in this notebook uses auxiliary qubits. It is left as future work to improve the efficiency of the circuit as to make it possible to run it in the real devices. Below is the original circuit. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-25T18:42:03.016728Z", + "start_time": "2018-09-25T18:41:52.288291Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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S4UQSUlJegcCSCQrK0sI8dFHH2mx8qSkJCHE0qVL7W+iab3dvHmzECI2NtbRhvZYu3atEOL48eNarNxwXnrppfDwcL2jgKmkpqYKIebNm6fFypV7rCtXrrS/iabF6qeffhJC7N+/X9Mmmm7C7NmzhRDZ2dmONrTH22+/7efnp8WajahLly7333+/3lEAUNOvv/4qhNi7d6/egUiqQYMGMTEx9i+v9aV4Ly+v9957z6Em3t7ekydPtnNhrZ8Zc/TujBNNJLyhY7/u3bt37txZo5VDTp06derZs6f9y2ud4REREWPHjnWiYUHbtm0TjkyzqXXluffeex988EH7ly+uSW5u7ssvv+zu7t62bVtVprV57LHHypUrV3ji1hJcu3atT58+QohHH3208Ow348aNq1y5cukDA6AudyFE7969Fy5c6O/vr1Qxi8XSpEmTBQsWbNu27cqVK0KImjVrVqhQQZRauXLlrFar8h2YgpRpYZWfcNFdlSpV9u7d27lzZyHE3r17V69erUyJ+8ADD+zcuTM8PLy4hgsWLKhTp07r1q1dFysMK/+XH5RfFlVlSQBAYZMmTVK+tNazZ09lYrubhIWFxcTEKK+N9YtDAMzEBMXKBJsAAGUKdRsAXIN6C8AQTFCsTLAJAADYw+inPBM8KmP0QwC1mCATTNAfAQCAIZhg4ASgLDBBsTLBJgBAWUPpBgDXoN4CMAQTFCsTbAIAALdkgvOd0Z8ZM8EhAEpg1gw3ROVJSUm5995733///XHjxm3evPmOO+4o5Qr//PPP5cuXv/baaw5N3BoaGrp69ep58+atW7euVatWp06dKmUYAFzAXfnP4MGDExISNm3atHv37hs3buzZsycmJubChQvKLxMWWde6detm51zR99xzj9JEman53LlzN63q/PnzQoiQkBD74/7tt9+Uld95550Ob/SthIeH//LLL3v37n3vvfdGjx49Y8aM/fv3b9iwoVKlSsU1SUxM/OGHH4YOHap6MDCfa9euKZODBwYG1q1bt+SFd+7cqbxo1aqV5pEBgLnMnz9//PjxQojmzZt/+eWX7u7uRS42ZswYDw8PIURsbOx3333n0hABwBTFygSbAABlCnUbAFyDegvAEExQrEywCQAA2MPopzwTPCpj9EMAtZggE0zQHwEAgCGYYOAEoCwwQbEywSYAQFlD6QYA16DeAjAEExQrE2wCAAC3ZILzndGfGTPBIQBKYNYMN0TlSUhIuOuuu/bs2fP999+/++67np6epV/nmDFjbr/99hEjRjjR9sknn9yxY0dGRkbbtm337t1b+mAAaOqfeh0SEtKxY8dmzZoFBAQof1F9fvpatWoJIZTCWtDBgwd9fX0jIyNVeRe1NGnSZNy4cVOnTn3++ecbNmxY8sJLlixxc3MbNGiQa2KDoeX3rBYtWhQ3Ziq8sFQ/UAMA8lu3bt1TTz0lhKhevfq6dev8/f2LWzIyMvLRRx9VXo8fP95ms7koRAAwRbEywSYAQJlC3QYA16DeAjAEExQrE2wCAAD2MMEpz+iPypjgEEAV5sgEo/dHAABgCOYYOAEwPRMUKxNsAgCUNZRuAHAN6i0AQzBBsTLBJgAAcEvmON8Z+pkxcxwCoDgmznD5K8/x48fbtm2blJT022+/denSRZV1fvPNN7/++ut7773n4+Pj3BoaNGjwxx9/VKhQoVOnTn/88YcqUQHQSEmlLTY2VnmhVl3r1auXEGLHjh0F/xgXF3fp0qXOnTvnzx9tRAsWLOjWrVvlypX1DgQGYP+IwWq17tmzx86FAQD5tm/f3q9fv7y8vHLlyq1fv/6WJ+hx48YpL/bt27dmzRrtAwQAIUxRrEywCQBQplC3AcA1qLcADMEExcoEmwAAgD3Mccoz9KMy5jgEKD3TZIKh+yMAADAE0wycAJibCYqVCTYBAMoaSjcAuAb1FoAhmKBYmWATAAC4JdOc74z7zJhpDgFQJHNnuPyVZ82aNR4eHr///nvz5s1VWaHFYnn11VdbtmyZP+O2c6pVq7Z169b77rvv/PnzqgQGQCMlzeOsFEFPT88mTZqo8mZdu3b18fFZuHBhZmZm/h9nzZolhOjZs6cqb6GLbdu2HT9+fMiQIXoHAmOwf3hx+PDhtLQ0IURUVFT58uU1jwwATOHo0aM9evTIyMjw8vJas2ZN3bp1b9mkUaNG+b+KM2HCBKvVqnGMAGCGYmWCTQCAMoW6DQCuQb0FYAgmKFYm2AQAAOxhmlOecR+VMc0hQCmZKROM2x8BAIAhmGngBMDETFCsTLAJAFDWULoBwDWotwAMwQTFygSbAADALZnpfGfQZ8bMdAiAwkyf4fJXnpdffjkuLi4qKkqtFc6ZM+fIkSPTpk1zc3Mr5apCQ0O/+uqrUs4HDUBrnsX9g81mU+anb9iwoa+vrypvFhQU9NJLL02aNOnRRx/98MMPIyIi5syZ8/HHH9euXfuJJ55Q5S10sWDBgsqVKz/44IN6BwJjWLdunZ1LRkdH22w2TYMBAPOpU6fOlStXHG31ww8/aBEMABTHBMXKBJsAAGUKdRsAXIN6C8AQTFCsTLAJAADYwzSnPOM+KmOaQ4BSMlMmGLc/AgAAQzDTwAmAiZmgWJlgEwCgrKF0A4BrUG8BGIIJipUJNgEAgFsy0/nOoM+MmekQAIWZPsMNUXnc3d3VWlVmZuakSZMefvjh9u3bq7VOAJIrdh7no0ePpqamCiFatWql4vtNmDDh2rVrn3zySX6FbdCgwbfffqvWVNGul5aWtnLlyuHDh3t6FrszAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJiAm5tbr169XnvtNb0DAeA6xU49HBsbq7xo2bKliu/n4eHx0UcfPfvssz/++GNaWlrjxo27du2q4oT0rrdq1aq0tLSYmBi9AwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgLV9f388++0zvKAC4VLHzOA8YMKBPnz5CCF9fX9XftW7dunXr1lV9tbpYuHBhmzZtTLM5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgX7HzOHt5eXl5ebkyFJeJjIxMS0tTa20JCQlvv/22WmsDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADyKHYeZxObNWuWims7ceKEimsDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADycNc7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEkxjzMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDRmMcZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgaJ56BwCYRFJS0rlz55566im9AxFCiNTUVCHEjRs39A4EANRns9m++uqrEydO6B2IEEJcv35dUG8BFGPFihWHDh3SOwohhEhOThZCpKWl2d8kJydHCDFr1qw1a9ZoFZYjTp06JYTIy8vTOxAAkNeVK1eEEMOHD3dzc9M7FiGE+P3335WrEwBgMklJSQkJCZJcBxZCnDhxwmaz6R0FAOlIddNKCHH69OmgoCCHmly7di02NlaeTcjKyrp06ZLeUQAAzCYlJUUIMXbsWH9/f71jEUKIPXv2KHcH7Hfp0qXMzExJTtlWq1X8/1Uyhxj6hg7UcvnyZSHE008/rXcgf9u6davyNIL9kpKSkpKSJOmP6enp4v8fqAAAACZz+fJlq9UqyahDCLFt2zZl7AEABV26dCknJ0eeYrVz505Hn35MSko6e/asPJtw5syZkJAQvaMAAKllZGRs3LhRufKvO+Vq/7Vr1/QOBABUpjwtuWDBgq1bt+odixBCJCYmCiGys7P1DgSAXJSLAPPmzfv555/1jkUIIS5cuCAcLFbKRddJkyaVL19eq7AcIclDHQAA80lJSfnjjz/kuRSfl5enPMbmUJOvv/5amYdBd3v37s3NzXWoiQlu6AAluHLlyqlTp+TJ8OvXryclJZVyJZmZmUKIKVOmVKpUSY2gSuvIkSMRERF6RwGg7GIeZ0Ad5cuXt1gsklxOtVqtfn5+FSpU0DsQAFBfhQoVzp496+jlJ41QbwEUycPDo3z58qdPn7548aLesQghhNVq9ff3d6hYlStXLiAg4MCBA0ePHtUuMPvl5OQEBgY6OuUTAJQpFSpU8Pf3/+WXX/QO5G83btxgnAzAlMqXL5+XlyfJdWAhRFZWliQPyAKQSvny5XNzc+UpVjk5OY4Wq9DQ0FOnTsmzCT4+PoxvAQCqU67nbNu2TZLf5UpPT3filO3t7S3PKdvf379ixYr2L2+CGzpQS8WKFf39/eVJ5hs3boSFhTnUJDQ01Gq1SrIJNpuNRykAADCrChUq+Pn5STLqEEKkpqbylTwAhVWoUMHHx0eqYnXHHXc41CQ0NNTo93oAoKwpX778xYsXJSndNpvN0QvmAGAIAQEBwcHBx48fP3PmjN6xCCGExWIJCAgoV66c3oEAkEtQUFBQUNDRo0dPnjypdyxC/H+xCg0Ntb9J+fLl/f39Y2NjPTw8tAvMfsoD856eTI4EAFBZaGhoQkKCJNdzhBB+fn6OXoqvWLHiuXPnrly5olFIDsnIyHD0gTET3NABFDt27JgwYUKTJk0K/jElJeXKlSsrV67UK6qbWCyWw4cPv/zyywX/sn///hUrVthffJQPC3/++ackHxYyMjIcrZxXr15NTU0tuB9Kz2Kx7N69u1mzZl5eXkKI3bt316lTJzAwUMW32Lx5c1ZWloorBKAKLlUA6ujRo4efn1+tWrX0DkQIIWw2W2xsbKNGjfQOBADU98gjj5QrVy4kJETvQIQQwmq17t69u2HDhnoHAkAubm5uffr0CQsLCw4O1jsWIf6/WNWrV8/+JpGRkWlpadqFBABQ3fPPP//888/rHQUAmF/37t09PDxq166tdyB/i4+Pb926td5RAJBOjx49AgICoqKi9A7kbydOnLjrrrscahIbG6tRMAAAM3nrrbeSk5MlmbErIyMjPj5+yZIl7u7udjZp3rx5165dmzdvLsk8zteuXcvJyXGoyTvvvPPOO+9oFI8LuLm5Xb16Ve8ozCApKemZZ55p3ry5/fmvqdTU1GvXrs2ZM8f+JoMHD/7jjz+aNWsmySbEx8e3adPGoSYLFixYsGCBRvEAAADku/vuu/ft23fTlw91lJiYyK9HACjs3nvvPX78uDxfqLlw4UKVKlUcarJixQqNggEAaOTUqVN6hwAA5hcYGNizZ88aNWr4+/vrHYsQQlgsln379jHJF4CbhIaGdu/evVatWn5+fnrHIoQQubm5f/31V9WqVe1v0qFDh/T0dO1CAgCYw4ULF0aOHNmiRQtJHoA8fvz4/fff369fP/ub9O3b9/Lly7fddpt2UTlk375999xzj0NNLl68qFEwrvHmm2+++eabekdhBjNmzIiPj69WrZregfzt4MGDgwcPvu++++xvMnbsWCGEJD9Nl5qaevny5Xnz5tnf5Isvvvjxxx/j4uIKlkRvb295KowQonz58teuXVu1alX+X7KyshISErZv396tWzc7V9KkSROjf1jw8/M7ffp0wf1QetnZ2RcuXIiLi/P19bVaradPn/7rr7+CgoJUfIu0tDR1J4YGoArmcQbUMW3atH379skzVd/169fvvvvu5557Tu9YAEBln376qa+vr6+vr96BCPH/9faee+555pln9I4FgETy8vI+++wzf39/Hx8fvWMRQoi8vLzU1NTu3bvHxMToHQsAAABgbNOnT4+NjZXkOrAQ4saNG7///vuQIUP0DgSAXKZNm7Z//36pilVsbOygQYP0DgQAYDbTp0/Pzs6W5Du6OTk56enpkydPtv8x6C+//PKrr7765ZdfJPkaQ1ZWVm5u7owZM/QOBMbz7bffrlmz5ueff/bw8NA7FiGEyM7OzsjIcGge5x9++OGrr7766aefJNmEGzdu/PHH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vGTJksjISGn5+vXr33//fUpKSsGCBY8ePers7CxbRLX8/Pykhdq1a6tvqfmMzwAAAAAAAFny22+/VaxYsUePHjr2M23atNevXy9evFgvqQAAAAAAAAAAAAAAAAAAAMzYmTNnjh8/PmXKlIzufdZQ5cqVu3XrNmPGjKioKH1lAwAAAAAAAAAAAGB+/m8e50ePHtWqVevMmTNCCEdHx65du06dOrVPnz4xMTHt2rULDAwUGU+V6+vra2trW7hw4W+//fbQoUNCiKZNmx47dszJyckYG6En6fMv29rafraBjY2NtPDZeZyFED4+PgkJCVu3bjVAOgP6/vvvq1atKoSIjIyU5gl6+vRpq1atYmJicuTIcfDgQTc3N7kzft7r16+fPn0qhMibN2+mIdPncc50xmcAAAAAAADNPXny5N9//x0+fLiVlZWOXVWoUKF169b//POPXoIBAAAAAAAAAAAAAAAAAACYsX/++adYsWI//PCD7l2NHj06IiJCukUaAAAAAAAAAAAAAD7rf+ZxjoyMbNy4cWhoqBCiXr16jx492rx587hx41auXLlx48aIiAiVSiWE8PT0/GwvycnJqamp6f+0srJq2LChQSdxHj9+/NatW7du3Vq4cGF99RkeHi4tZDqPc0xMzGcbuLq61qtXb82aNfqKZBwWFhaTJk2SlufNm/f8+fPmzZuHhYVZW1vv3LmzVq1a8sZTw8/PT1qoXbu2hYWF+sbp8zhn9GcMAAAAAACghb1791pZWbVu3VovvXl7e//333+PHz/WS28AAAAAAAAAAAAAAAAAAABmKS0tbf/+/d7e3paWlrr35u7uXq5cub179+reFQAAAAAAAAAAAABz9T9jk7/88svTp0+FED/++OOpU6ecnZ3TW3Tu3Ll06dLScu3atT/by9dff33kyJEjR47s3Llz/PjxBQoUGDt2rKur682bNzN64qSkpIiICK1zN2zYsFOnTp06ddLjbNFJSUnSQlpa2mcbpP88JSUlo0569+7t7+9/584dfaUyDm9v7xo1aggh3r17V61atYCAACHEqlWrmjdvLnc0dTSfmjk5OfnGjRtCCAsLCyXPTA0AAAAAAEzO6dOnPT09CxQooJfeWrVqJfWpl94AAAAAAAAAAAAAAAAAAADM0r1798LCwlq0aKGvDlu1asUFnAAAAAAAAAAAAADUsBRC/Pff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xMTcvn27Q4cOQogdO3ZMnz7901V69+4dFRW1a9cuY2cFDCwiImL06NHlypX7+++/q1WrtmXLlmfPnkVHRwshFixY8OrVqwsXLvTv3//GjRstWrRo2LChv7+/IWKEhob269evSpUq//zzz7fffrt3797g4GBpnqDdu3eHhoaeOHGic+fOJ06c+Oqrr9q1a/fhfNPm58aNG02aNGnSpMmVK1f69Olz7ty5sLCwlStXCiFevXr1/Pnzbdu21a5de+XKleXLlx82bNj79+8NEeP06dOenp7ff//9w4cPhw8ffuXKlbdv337zzTcWFhbx8fGPHz9et25dmTJlZs6cWaZMmSlTpkgTPQMAAAAAkCU7duyoWLFi3759Y2Njp06deuvWrcjIyC5dulSvXj02Nvb+/fsLFy7MkSPH6NGj3dzcli5daogvlktNTV2xYoWbm9uIESPs7e3nz59/7969mJgY6SxEVFTUf//99+effyYkJPz000/u7u5bt26V7tg3S5GRkWPHjnVzc1u0aFHlypU3b9789OnT+Ph4IcTs2bNfv3598eLFn3/++datW61atapfv/6VK1cMESMsLOynn36qVKnSpk2bGjZsuGfPnuDgYGkW6eHDh4eGhp48ebJr166nTp2qV6+et7f3h/NNAwAAAAAAADAJISEhP/74Y9WqVbdt29a0aVNfX9+QkJAbN24IIQ4ePPjy5ctjx4516NDh8OHDdevW7dChQ1BQkCFiBAQEfPfdd19++eXx48c7dep0/Pjxly9f+vr6CiH++++/4ODgffv2NW7ceOvWrVWqVOnbt+/Lly8NEQOAQiQlJc2dO9fV1XXChAmFChVatmxZYGBgXFycq6tr//79w8PDr1279vvvv79+/bp79+7VqlU7ePCgIWJER0f/8ccfbm5u8+fPd3d337hx45MnTxISEoQQTZo0ef369aVLl4YMGXLv3j1vb++vvvrq4sWLhogBAAAAADBvr169GjBgQKVKlTZu3Fi/fv3du3cHBwdLZ+G2bdtmtOv0Hj9+3KVLl1q1ah04cKBt27ZHjhx5+fKldLngpUuXQkJCDhw40LJly927d3t4ePTs2fP58+eGiKEQ58+fr1u3brt27R48ePDrr79evnz5zZs3kydPdnBwkG7qXL9+vZub25w5c1xdXSdOnChN9Kx3vr6+lStX7tmz59u3b8ePH3/9+vXw8HB3d3dbW9u4uLiAgIClS5fmz59//Pjxrq6uCxYsSEpKMkQMAAAAAAAAAAAAuehzHudTp04dOHCgYcOGeuzTyIKCgubMmSOE6N69+8qVKwsXLmxhYVGpUqWtW7e2a9dOCDFhwoQnT558tFbVqlU9PDzWrl0rQ2LAYAIDA+vUqTN//vzu3bs/fPhw69atnTt3/uKLL2xtbaUGhQoV+uqrr2bMmPHgwYPt27cHBwfXrVt3xowZ+o3x77//enh4/PPPP8OHD3/8+PGaNWu8vb2LFStmZWUlhLCwsHB2dv72228XLlz4+PHj5cuXX7lypVq1ahs3btRvDIVYsWKFp6dnQEDA8uXLAwICZs2aVa9evfQvRra1tS1RokTHjh03b94cHBw8ZsyYZcuWValS5dq1a3rMoFKpZsyY8e2338bExGzfvv2///6bPHly7dq18+fPLzWwt7d3cXHp2bPn7t27nz175uPjM3ny5Dp16nxaPAEAAAAAyEhiYqKPj0/Hjh3z589/9uzZixcvjho1qkqVKrly5ZIaODo6li9ffuDAgceOHbt79269evUGDhz47bffvnnzRo8xoqOj27Vr179//4oVK16/fv3EiRODBw92d3fPkSOH1CBnzpyVK1ceOXLkhQsX/Pz8SpUq1aVLly5dupjlFxoFBQXVqVNnzpw50smibdu2de3atWTJknZ2dlKDggULfvnll9OmTXvw4IGvr29oaKh07ki/MS5duuTh4bFp06bhw4c/efJk7dq1bdu2LVasmLW1tdTA2dm5UaNGCxYsePLkyfr1669everh4bFhwwb9xgAAAAAAAABgOBcuXKhevfr27dtHjBjx+PHjVatWtW7dumjRounXjBUpUqRJkyaLFy9+8uTJsmXLLly44OHhsWvXLv3G2LlzZ/Xq1c+fPz99+vSHDx8uWrSocePGRYoUsbCwEEJYWVkVK1asTZs2q1evfvbs2dSpU3fs2FGlSpXTp0/rNwYAhXj79m2TJk1GjBjRqFGje/fuHTx4sF+/fm5ubg4ODlKDPHnyVK9efdy4cf7+/v/++2/u3Lm9vLz69++fnJysxxiPHj2qU6fOjBkzfvjhh4cPH+7YsaNbt26lSpX6cLymTp06f/755927d48fPx4dHV2vXr2JEyea8ReRAgAAAAD07vLly9JNmsOGDXvy5Mm6devatWuXfp2edFPnp9fprV+/Xr8xDh8+XL169WPHjk2bNu3x48dLly5t1qxZkSJFLC0thRCWlpZFixZt1arVihUrXrx4sXTp0sOHD1euXPnAgQP6jaEE0k2dDRo0iIyM3L59++3bt6dOnerp6VmgQAGpgXRTZ48ePXbt2vXs2bOBAwdOmzatevXqAQEBeoyRkpIyZMgQb2/vnDlznj592s/P77fffvPw8MiTJ4/UwMHBoWzZsv379z906FBQUNB33303bNiwhg0bvnr1So8xAAAAAAAAAAAA5KW3eZzT0tKGDRsmhGjcuLG++jS+FStWpKSk2NvbfzS9iKWl5dy5c62srFJSUj47P2zv3r3PnDnDLKUwG8ePH69Vq1ZaWtrNmzeXL19eqFAhNY0tLCw6dOhw9+7d3r17jxkzpl+/fmlpaXqJsWnTpoYNG37xxRcBAQHTp09Pn6rps6ytrfv16xcQENC0adOePXtOmjRJLxkUQqVSDRkypH///l27dg0MDOzXr590V1JGnJycJk6ceOvWrVy5ctWvX3///v16iZGUlNShQ4exY8eOHj369u3bHTp0UN++YMGCCxYs+Pfff9+/f+/p6XnlyhW9xAAAAAAAmLfw8PBGjRpt3rz577//vnTpUr169dS3L1u27Pbt2/ft23fjxo2vvvrq8ePHeonx7Nmz2rVrnz59evfu3cePH69SpYr69jVr1jx58uSKFSv27NnToEGDt2/f6iWGQpw6dapWrVrJyck3btxYvnx5+tdKZaR169Z3797t16/fmDFjfHx89HWyaMuWLQ0bNixWrNiDBw8yPVlkaWnZo0ePgICAli1b9urV648//tBLBgAAAAAAAAAGtXbt2kaNGpUpUyYoKGj69Ok5c+ZU09jGxqZfv34PHjz45ptvOnToMH36dH3FmDp1aseOHb/99ttHjx6NHj3a1tZWTWNHR8fRo0ffu3evTJkyzZs31/uENQBkd+/evRo1aty9e/fEiRPbt28vU6aM+vZ169aVZoFftWpVy5YtY2Ji9BLj/PnztWvXjo2N9ff3X758ubOzs/r2jRs3vn79+i+//DJp0qRu3bqlpKToJQYAAAAAwLxt27atQYMGRYsWvX//vubX6bVq1apXr16///67vmLMmzfPy8urdu3aDx8+HD16tL29vZrGtra2/fr1u3PnTtWqVdu1a7d06VJ9xVCClJSUrl27jhkzZtiwYXfu3OnQoYP0VXMZKVCgwPTp0y9duhQfH//VV19dvHhRLzGio6ObNm36999/z5kz5/Llyw0aNFDf/osvvli+fPmRI0fu37/v6el5//59vcQAAAAAAAAAAACQnd7mcV63bt2tW7eKFy/u5eWlrz6N759//hFC1K9fv0iRIh89VKpUqfr16wshNm3a9OmKXbt2tbW1XbduneEzAgZ3+/bt9u3bV6tW7fLly+7u7hquZWtru2LFinnz5q1atWr8+PG6xzh58qSPj0+bNm3Onj1brFgxDdfKmTPnnj17hg8fPnHixBUrVugeQyH+/PPPRYsWTZ8+fd26deqvOfiQm5vbpUuX6tat26lTp2vXrukeY+DAgfv27duwYcO0adPUTyT9oVq1avn5+RUrVqx169ZPnz7VPQYAAAAAwIylpKR07Njxzp07R48eHTBggOYrtm7d+tKlSwkJCV5eXpGRkTrGiI6Obt26dVRU1MWLF9u1a6f5in379j1x4kRQUFD79u2Tk5N1jKEQ9+7da9euXaVKla5cuVKxYkUN17Kxsfn7778XL168fv36sWPH6h7jzJkzPXv2bNmy5blz54oXL67hWk5OTrt27Ro1atTUqVP//vtv3WMAAAAAAAAAMJwjR4707dv3+++/P336dKbzk6bLnTv3/v37Bw8ePHbsWL1cxrlq1ao//vhj6NChe/fuVT9PzYeKFi169uxZb2/vPn36HD9+XPcYABTizZs3rVq1srOzu3LlSqNGjTRcy8LCYvTo0Xv37r1w4UKPHj1UKpWOMYKCgry9vV1dXf38/KpWrarhWtbW1vPmzVu5cuXWrVuHDx+uYwYAAAAAgNk7d+5cjx49mjdvfv78+RIlSmi4lpOT086dO8eMGfPnn38uWbJE9xhbtmwZPnx4v379Dh06lDdvXg3XKlSo0IkTJ3744YdBgwbt27dP9xgK8csvv+zYsWPNmjWzZs3S/KbO6tWr+/n5lSpVytvb+9GjRzpmSEtL69at25UrV/bv3z9s2DD1E0l/qEmTJleuXLG2tvby8nr79q2OMQAAAAAAAAAAAJRAP/M4x8bGSt+SOmTIEFtbW730aXyPHz9++fKlECKja1ulnwcFBX06VpQvXz5vb+9169alpaUZOidgUO/evWvTpk3RokX37duXL1++rK7+66+/jh07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u3btChUq7N27V7sYrq6uX3/9te4x2rZtmzdvXu1iKISvr2+7du3y5Mmje1c+Pj6xsbHHjh3L6opxcXHHjx/v3r17+ulZHWM8ffr05s2buncFAAAAAAAAQF8iIiLOnj3bs2dPKysr3Xvr1avXvXv3AgICsrri3bt3AwMD9XKxlpWVVffu3U+ePJl+YSoAU7Rnz566deu6u7vr3pU00qHdsNHevXtbt25doEAB3WNI17ofPnxY964AAAAAICOKui5R4ZTzu4qPjz927Fi3bt30dZ3es2fPbty4kdUVpbX0coLOwsKiV69eFy9eDAsL0703WRw8eDApKalXr166d1W4cOGWLVtqd1Pnnj177OzsunbtqnuMihUr1q5dm3tLAQAAAAAAAACAqfufeZwjIyMbN24cGhoqhKhXr96jR482b948bty4lStXbty4MSIiQvriU09Pz4/WHzZsmEqlKlq06C+//JKlJ05KStLl8vTx48dv3bp169athQsX1rqTj4SHh0sLmc7jHBMT89kGrq6u9erVW7Nmjb4iAcZ09erV4ODgNm3a6KW3WrVqFStWbN++fVld8ciRIwkJCfqK0axZM3t7ey1iKISvr2+BAgW+/PJLvfTm7e397t27f//9V4sY1apVc3Fx0VeM//7778mTJ3rpDQAAAAA+8urVqx9//FE6l5WRn376KSQkxGiRFEtpv6t9+/a1aNHC3t5eL715e3sfOXIkMTExS2slJycfOnTI29tbLxlsbGxatmxpuvM437hx4+nTp/o6S+Ph4VGyZEktztIcO3YsLi5OXzGaNm3q6OhouieLAAAAAAAAALN06NChpKQkfZ0GbNWqlY2Nja+vb1ZX9PX1tbOza9asmV5itG3bNjk5+ejRo3rpDYDxSVPM66s05c6du379+lqMUNy/fz8wMFBfMdzd3cuWLctACQAAAADDUdp1iUqmqN/V8ePHY2NjZb9Oz9fX19LSslWrVnqJ0aZNG5VKdejQIb30Zny+vr4VKlQoW7asXnrz9va+f/9+UFCQFjEaNWqUM2dOfcU4ffp0VFSUXnoDAAAAAAAAAACQxf/M4/zLL788ffpUCPHjjz+eOnXK2dk5vUXnzp1Lly4tLdeuXfvDlffs2XPu3DkhxKRJkxwc/h97dx4I1ffHj//M2LcsFdkiSyFFKRTaS4tsLSpttO+b9k2p6JP2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spJeFQOoSEBAgLm5eXBwsESZMWPGjBo1SqLAlStXzM3N169fb+JwAIzCc7UAUO+1aNGiYn5yyJAhEydOlDcPHubChQtCiL/++kun0+lfDfjNN9/IHQpQqJCQECHEiRMndDqd/u3gmzdvljuU8cyFECtXrtRvUpycnDxu3LiGDRs6Ozs/9thjDg4OXbp00W/K3Lt3b9PtHf3/MzMze/TRR7dt25aWljZnzhydTmf4sWlpaQkJCQkJCeXl5aZNtW3bthYtWuh0uueff75nz57Tp0/v0KHDokWLtFqth4eHfl1jpY4ePZqWljZ37lzT5gEglyZNmrz33nu7d+/esWOH0ZUEBAT8/vvvAQEBtra2JswGyGjNmjUFBQVPP/200Zfgq1evvvbaa4899tjgwYNNmw0q5efn9+yzz7777rv//POPcTXodLp58+YlJiauX7/etNmgXgEBAZmZmbNmzTL6ddxBQUFvvfXWE0888cgjj5g2GyCXp556qm/fvs8++2xcXJxxNRQVFU2fPr1Ro0bLly83bTaolJWV1fr16//6668VK1YYXcm+ffu2bdu2bNkyFxcX42pwcnJasWLFnj17vv32W6NjrFu37tdff127dq2dnZ3RlSjfkCFDpkyZsmTJkqtXrxpXQ3l5+dNPP11YWLhmzRrTZkOlVq1apdVqH3/88bKyMuNquH379qJFi8aMGePv72/abIBcxo0bN2rUqIULF96+fdu4GjQazRNPPKHT6T744APTZoNKmZmZffzxx9euXXv11VeNruT48eMbNmxYvHhx27ZtTRcNKjZlypTBgwc///zz+veaGKG0tPTxxx+3srKqSWcbUBRHR8f3339/3759W7duNbqSDRs2/PLLL2vXrrW3tzdhNgBGe/PNN52dnadNm5afn29cDcnJyTNnzuzevfucOXNMmw0AALXr3LnzggULVq9erX9Ho3EWLlwYFRX18ccfmzAYAEBenTp1WrBgwYcffqh/6No4L730UmRk5IYNG0wYDKr24YcfFhcXP/XUU0YvDL527dqSJUsmTZo0bNgw02aDSnXr1m3evHkrV67866+/jK7k+eefj4+Pp7FCvWFhYfHxxx9fuXLlrbfeMrqSwMDAzz///PXXX2/VqpUJs0G99Avd586dGxsba1wNxcXF06dPd3BwePfdd42O8corr7Rp02bGjBn6l2QbITMz84knnmjXrt2iRYuMjqEK69atS0lJmTt3brWepL7X+fPn33nnnVmzZvXo0cO02fAgT0/PV155ZePGjceOHTO6ktdff/3q1asff/yx/hF+oB7YsGFDVFTUiy++aHQNp06d+vDDD1944YXOnTubMBjUa8yYMWPHjl20aNHNmzeNq0Gj0Tz55JPl5eWrVq0ybTaolH5h8K1btxYvXmx0Jb///vu6desWLVrUvn17E2YDZPTyyy97enrOmDEjMzPTuBoyMzMff/zxtm3b1vuxG6AWPFcLAAAAyMtcCDFlypQdO3ZUPOuo0Wj8/Py2b99+9uzZ9PR0IUS7du2aNm1aSwkmTJhgb28fFBQUFhZWSz+iWlq2bBkUFKRfQBYUFHTgwIHw8HAhxOjRoy9cuODq6vqwA7dv396xY8d+/frVXVYAteyVV155/PHHX3zxxdOnTxtx+OHDh5cvX7548eInnnjC1NEA2bRv337nzp0///zz66+/bsTKocTExEmTJrm7u2/fvr024kGlPv/88y5dujz22GPGbW2zevXqPXv2fPnll76+vqaOBrXq1KnTt99+++OPPy5btsyIw+Pj4ydPnuzl5fX111+bPBsgF3Nz8wMHDpiZmU2ePFn/Grdq0Wg0c+fODQ0NPXjwYO1NEUB1Jk2a9NZbb61evXr37t1GHH7+/Pm5c+dOnDixJk+nCCFefvnlJ598cuHChcY9qhoYGLhs2bJFixY99dRTNYmhCtu3b2/ZsuWkSZPu3r1b3WN1Ot0bb7zxyy+//Pe//2WTyrrRqlWrH3744cyZM4sWLTJi/JWamjpx4sQmTZrs2rWrNuIBcvn++++dnJwmTpyYmppa3WN1Ot3LL7985syZPXv28FgjKgwePPijjz7avHnz559/bsTh165de/LJJwcNGsR7DlDBzMxs37599vb2EydOzMjIqO7hWq12wYIF586d27dvX4sWLWojISCLl156aebMmYsWLTpx4oQRhx85cmTp0qULFy6cOXOmybMBME7jxo0PHz58586dmTNnGvEKovz8/Mcee6y4uPjw4cOWlpa1kRAAAFX7+OOPe/XqNX369Fu3bhlx+IYNG7799ttPPvmkb9++Js8GAJDRhg0bevfuPWPGDOMuEB9//PE333yzceNGnnpAhbZt23733Xe//vrrkiVLjLgxnZSUNHHiRDc3t507d9ZCOqjVpk2bunfvPnXqVP0DWdW1Zs2aXbt2ffHFF2xSifpk1KhRK1eu/Pjjj7dt22bE4cHBwc8888yIESNWrlxp6mhQKzMzs/3791taWk6aNMmIPZTLy8vnzZsXHBx84MABZ2dno2PY2dn9+OOPSUlJjz/+eHFxcXUPLyoqmj59enp6+o8//mhjY2N0DFXo3r37V199tW/fPuP+kKOjox977LHOnTtv3rzZ1NFQudWrVw8ePPipp54KDQ014vAtW7Z8+umnH3744dChQ02eDZBL3759P/nkkx07dgQEBBhx+O3bt2fMmNGrVy9eQIh77dq1y9nZeeLEiSkpKdU9VqfTvfLKKydPnty9e3ebNm1qIx7UaNCgQQEBAVu2bNm0aZMRh9+4cePxxx/v37//2rVrTR0NkI2dnV1gYGBycvKMGTOKioqqe3hxcfHjjz+empp6+PBhW1vb2kgIwAg8VwsAAADI6P9/h+esWbMSExNPnz59+fLlvLy8K1euzJkz5+7du/rpzj59+hheY5s2bXQ6nU6n+/333w0pb2Fhob/RGx8fb/hPOXXqlP6n1MauMa6uridPngwKClq7du1rr732ySefhIaGHj9+vHnz5g87JCkp6ZdffnnuuedMHgaAjMzMzHbs2OHn5zdmzJjqLi3duHHj9OnTR48ezQ1F1D/Tpk1btWrVpk2bnn766WrN1F+6dKlPnz6FhYVHjhxp3Lhx7SWE6tjb2wcGBlpbW/fr1+/MmTOGH1hWVrZgwYL33nvvtddeoyeG+zz11FPvvPNOQEDAs88+W1JSYviB586d69OnT1lZ2ZEjRxo2bFh7CYG65+7ufvjw4fDw8H79+t25c8fwA7Oysvz9/f/3v/99/fXXAwcOrL2EUKM1a9ZMnjx59uzZH374YbUe59u7d++wYcO8vb137dplbm5ekwxmZmbffvttz549/f39d+zYUa1jP/nkk6lTp44YMeKTTz6pSQa1cHR0PHLkSEFBQd++fS9dumT4gUVFRU8//fQnn3yyevXqqVOn1l5C3Mff33/9+vXbtm2bOnVqfn6+4QeGhob26dMnLS0tMDCwJo/ZAArk7Ox85MiRtLS0Pn36VOsJmfz8/GnTpn399dfr16/39/evvYRQozfffHPOnDmLFy9+8803tVqt4QceO3ZswIABzZs3379/v5WVVe0lhOq4uLgEBgbevXu3b9++169fN/zA3NzcyZMn79y589NPPx0xYkTtJQRksW3btj59+owbN+6bb76p1oGffvrp1KlThw8fbtyjNQBqT58+fXbs2HH06NGRI0fqXxVvoOjo6P79+4eEhOzfv9/T07P2EgIAoF42NjaHDh1q1KhR//79DVyOq6fRaF555ZU33nhj4cKFixYtqr2EAABZ6C8QjRs37t+//2+//Wb4gRqN5tVXX3399ddffPHFl19+ufYSQo2mTJmyZs2azz///MknnywsLDT8wMuXL/fp0ycvLy8wMNDR0bHWAkJ99Ht62tnZPfLII9XaP6KsrOyll15avnz5q6+++vzzz9deQkAW77777lNPPfXCCy+8++671Vprd/jw4UcffbR169b79u2zsLCovYRQnZYtWx4+fDgqKqpfv363b982/MDs7Oxx48b98MMPX3755aOPPlrDGF27dt29e/fp06eHDBmSlJRk+IF379599NFH//777z179nTq1KmGMVRhzpw5b7755gcffDB//vzS0lLDD/zzzz/79u1rYWERGBhob29fewlxLysrq/3797u5uQ0aNOinn34y/ECtVvv2228vXLhw9uzZb731Vu0lBGSxaNGil156aenSpYsXL9ZoNIYf+Pvvvz/yyCMNGzY8dOhQvd+7H9XStGnTwMDAzMzMPn36hISEGH5gQUHBjBkzvvzyy3Xr1k2YMKHWAkKVXnvttXnz5i1ZsuT1118vLy83/MBffvmlf//+TZs2PXDggLW1de0lBOpely5d9uzZ89dffw0ZMiQxMdHwAxMTEwcPHvznn3/u2bOnS5cutZcQQHXxXC0AAAAgo/+7S07jxo0HDx7cs2fPBg0a6D+5ePGi/otq7eMs4fLlyw9+WFJScvfuXSGEj4+PSX6Kqfj5+b311lsbNmx49dVXu3XrJl34u+++MzMze+aZZ+omG4A6Y2dnd/LkyUmTJs2ZM+fZZ59NSEio8pDw8PApU6a89tpr8+fPDwwMtLS0rIOcQB1bvnz5N998c/DgQQMX1xYUFKxevfrRRx9t2rTphQsX2rdvXwchoS7u7u4XLlxo27btyJEjly9fnpubW+Uh586dGzRo0DfffLNx48YNGzbUQUiozgcffPDll1/u2bOnf//+f/75Z5Xl8/PzV65cOXToUDc3t4sXL7JzBOqlfv36nT17tqSkpG/fvl988UVZWVmVhxw6dKhXr17nz5//8ccfn3322drPCJUxNzffv3//4sWL33nnnQkTJty8ebPKQ5KSkp5//vmnnnpq1KhRf/75p0k2zdeP3aZMmTJ37tzZs2cb8rawiIiIqVOn/uc//5k3b95PP/307xm7dejQ4eLFi02bNh08ePCHH35oyBOYf/zxR79+/Q4ePPjtt98uW7asDkLiXkuWLNm1a9cvv/zSt2/fX3/9tcryRUVF69atGzBggL29/YULF5Q26QqYhI+Pz4ULF+zs7AYOHLhu3bri4uIqDzl+/Hjfvn1//vnn3bt3L1mypA5CQnW+/fbbFStWbNiwYcSIEYY8CZCRkfHqq69OnDixd+/e586dY9N8PMjPz+/cuXNmZmb9+/ffuHGjIW+ZOnbsWO/evU+ePLlv376FCxfWQUigjtna2v7+++/Tpk2bP3/+M888ExcXV+UhkZGR06ZNe/XVV+fMmfPTTz+xaT6gQE888cSxY8dCQ0N79er1v//9r8rNRzQazddff927d++srCz9c0F1EhMAAFVydXXVT/P6+/u/+eabWVlZVR5y6dKloUOHfvHFFx999NEXX3xRByEBAHXPxcXl/PnzPj4+48aNe+ONNwy5QFy+fHno0KGff/75mjVrNm/eXAchoTpLly7dvn37jz/++Mgjj5w8ebLK8oWFhR9++OGjjz7q5OR08eJFb2/vOggJddGvw/T29h4zZszbb7+dk5NT5SHnz59/9NFHv/766w0bNrBzBOolMzOzXbt2vfXWWx9++OHo0aPDwsKqPCQtLW3RokVTp04dOHDg2bNn2TQfD+rTp8/Zs2fLysr69u372WefGbI18I8//tirV6+zZ88eOnToueeeM0mMiRMn/v7775GRkb169dq1a1eVr9DWarU7d+7s1atXXFzcH3/88a96I3tAQMCmTZt27tw5aNCgf/75p8ryubm577zzzsiRIz09PS9cuNCqVas6CIkKTZo0+eeff/r16zd58uRXXnnFkNeahoaGjhw5MiAg4J133tmxY4eZmVkd5ATqmH4KevPmzUOGDLl06VKV5bOyst58801/f3/94k9XV9c6CAl16dKly4ULFxo0aDBw4MCAgICioqIqD/ntt9/69u179OjR77777rXXXquDkFCdrVu3fvDBBxs3bhw+fHhQUFCV5TMzM//zn/9MmDChR48e58+fb9asWR2EBOrY+PHjT5w4ER0d3atXr++++86Qsdt///vfnj17xsTEnDx5cty4cXWTE4DheK4WAAAAkIu5xPcqps5NtY/ztGnT9u7de9+H27ZtKy8v9/HxadOmjUl+iiy2b98+btw4FxcXuYMAMD17e/u9e/d+/PHHP/74Y4cOHV599dWzZ88+OCmp0Wj++OOP559/vkuXLmfPnv3222+/+uorHiZHPfbcc8/98ccf5eXlw4cPHzt27P79+/Py8h4sduvWrbVr17Zv3/7999+fNWvW2bNnPTw86jws1KFFixanT59euHDhhg0b2rZt+8EHH1S6OLWwsPDHH3+cMmXKgAEDsrKyjh8/zg5ckPDiiy/+/vvvxcXFgwcPnjBhwoEDB/Lz8x8sduPGjTVr1rRv3/7DDz987rnn/vrrLxY4oh7r1q3bxYsXR44cuXjx4s6dO3/22WexsbEPFsvIyPjuu+8GDBgwdepUV1fXc+fO8XZ6PIyFhcUnn3yya9euoKCgbt26zZ079/fff39wl3CtVnv+/PnXX3+9ffv2e/fuXbNmzaFDhxwcHEwVw87Obs+ePRs3bjxy5Ii3t/crr7zy999/l5eX31dMP3Z74YUXOnfu/Ndff33zzTdbtmz5t43dPDw8zp49O3PmzBUrVrRv337t2rW3b99+sFheXt7//ve/MWPGDB8+XKfTnTp1au7cuXWfFkKIp59++s8//7SxsdH/c/zwww+VPt8YERGxYcMGb2/vt99+e/r06efOneMlOqjH2rdvf/78+alTp7799tve3t4bNmyIiIh4sFhOTs4PP/ygn7uwtbX966+/nnrqqbpPC1UwMzNbuXLloUOHIiMje/bs+dRTTx07dqzSXcKDgoKWL1/erl27rVu3vv3228ePH2/SpEndB4YqdOrU6cKFCxMmTHjjjTc6duz4ySefREVFPVgsKyvr+++/HzJkyPjx4xs3bvz3339Pnz697tMCdcPOzm737t2bNm06evSot7f34sWLHzZ2O3Xq1IIFCzp37nzmzJlt27Zt3brV2tpalswAqjR69Ojz5897eHg8/vjj/fr127FjR1pa2oPF4uPjN2/e3LVr1wULFgwaNOjixYs9e/as+7QAAKhLs2bNTpw4sWTJks8++6xdu3YrVqyo9AVURUVFP/3004wZM/r27ZuYmPjTTz8tXbqUPWIAoB7TXyD+85//fP755+3atXvvvfekLxB9+vTRXyDefvttLhB4mDlz5pw6dUoIMWLEiNGjR//vf//Lzc19sNjt27cDAgLat2+/YsWKmTNn/vPPP56ennUeFurg4uLyxx9/vPzyyxs3bmzbtu37779/9erVB4sVFhYGBgZOnTq1f//+GRkZP//8MztwoR4zNzf/6KOP9u3bd/PmTT8/v2eeeeb48eMPvhFWp9Ndvnx56dKlbdu23blz54oVK44ePdq4cWNZMkP5unbtevHixdGjR7/66qudO3f+9NNPY2JiHiyWmZn53XffDRw4cMqUKc2bNz937tykSZNMGGPw4MEXL17s0qXLrFmzevbsuW3btuTk5AeLJSUlff31176+vnPmzPHz87t06dKAAQNMGEMVXnnllePHj+fk5AwYMGDy5MmHDx8uKCh4sNi1a9dWrVrVrl27devWvfjii2fOnHFzc6v7tHBycvr555+XL1++bdu2du3aLVu27MqVKw++2bSkpOTnn39++umne/ToERERcfDgwQ8++IDxF+qxpUuX/vTTT0lJSX379p0+ffqRI0cq3Xg3JCRkxYoV7dq1++yzz/7zn/+cOHGCfVHxMO3atTt//vyMGTOWLVvm7e29fv368PDwB4vl5OTs3bt35MiRo0ePtrKyOnPmzDPPPFP3aaEKZmZm77777o8//hgbG9u7d+8nnnji6NGjD1sY/M4777Rt2/arr7568803f/3116ZNm9Z9YKBu6FdtdevWbfbs2T169Ni6devDxm5bt2718/N79tlnu3fvfvHixYEDB9Z9WgCG4LlaAAAAQB66hxs6dKgQwtLSsqioSKKY4Xbu3GlmZjZ16tQTJ07k5uamp6d/+eWXtra2lpaWly9fNsmPMMT48eOHDBliwgr//vtvIURgYKAJ6wSgQGlpaa+++qp+5VPz5s2HDh2qbyfHjh376KOP6rfqcHZ2fuedd3Jzc+UOC9QRjUazffv2Dh06CCFsbGz69ev32GOPWVlZdezYcezYsV5eXkIIa2vrxx577MaNG3KHhWpEREQ8+eSTtra2Qog2bdqMHj26W7duQojp06f379/fzs5OCOHh4bF58+bS0lK5w0IdNBrNtm3b2rZtK4SwtbV95JFHpk6damlp2blz5zFjxugfI7G2tp4+ffqtW7fkDgvUnfPnz48c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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circuit_drawer(grover)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "[1] \"[A fast quantum mechanical algorithm for database search](https://arxiv.org/abs/quant-ph/9605043)\", L. K. Grover, Proceedings of the 28th Annual ACM Symposium on the Theory of Computing (STOC 1996)\n", + "\n", + "[2] \"[Tight bounds on quantum searching](https://arxiv.org/abs/quant-ph/9605034)\", Boyer et al., Fortsch.Phys.46:493-506,1998" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + }, + "latex_envs": { + "bibliofile": "biblio.bib", + "cite_by": "apalike", + "current_citInitial": 1, + "eqLabelWithNumbers": true, + "eqNumInitial": 0 + }, + "nav_menu": {}, + "toc": { + "navigate_menu": true, + "number_sections": true, + "sideBar": true, + "threshold": 6, + "toc_cell": false, + "toc_section_display": "block", + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/beamercolorthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/beamercolorthemematerial.sty new file mode 100755 index 000000000..7fbe50bd2 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/beamercolorthemematerial.sty @@ -0,0 +1,286 @@ +\mode + +% light theme +\newcommand{\useLightTheme}{ +\definecolor{text} {HTML}{000000} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{E0E0E0} +\definecolor{BGgrey02}{HTML}{F5F5F5} +\definecolor{BGgrey03}{HTML}{FAFAFA} +\definecolor{BGgrey04}{HTML}{FFFFFF} +} + + +% dark theme +\newcommand{\useDarkTheme}{ +\definecolor{text} {HTML}{FFFFFF} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{000000} +\definecolor{BGgrey02}{HTML}{212121} +\definecolor{BGgrey03}{HTML}{303030} +\definecolor{BGgrey04}{HTML}{424242} +} + +% PRIMARY -------------------------------------------------------------- +\newcommand{\usePrimary}[3]{ +\definecolor{primary} {HTML}{#1} +\definecolor{primaryD}{HTML}{#2} +\definecolor{textPrimary} {HTML}{#3} +} + +% Primary Red +\newcommand{\usePrimaryRed}{ +\definecolor{primary} {HTML}{F44336} +\definecolor{primaryD}{HTML}{D32F2F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Pink +\newcommand{\usePrimaryPink}{ +\definecolor{primary} {HTML}{E91E63} +\definecolor{primaryD}{HTML}{C2185B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Purple +\newcommand{\usePrimaryPurple}{ +\definecolor{primary} {HTML}{6A1B9A} +\definecolor{primaryD}{HTML}{7B1FA2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Deep Purple +\newcommand{\usePrimaryDeepPurple}{ +\definecolor{primary} {HTML}{673AB7} +\definecolor{primaryD}{HTML}{512DA8} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Indigo +\newcommand{\usePrimaryIndigo}{ +\definecolor{primary} {HTML}{3F51B5} +\definecolor{primaryD}{HTML}{303F9F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Blue +\newcommand{\usePrimaryBlue}{ +\definecolor{primary} {HTML}{2196F3} +\definecolor{primaryD}{HTML}{1976D2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Blue +\newcommand{\usePrimaryLightBlue}{ +\definecolor{primary} {HTML}{03A9F4} +\definecolor{primaryD}{HTML}{0288D1} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Cyan +\newcommand{\usePrimaryCyan}{ +\definecolor{primary} {HTML}{00BCD4} +\definecolor{primaryD}{HTML}{0097A7} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Teal +\newcommand{\usePrimaryTeal}{ +\definecolor{primary} {HTML}{009688} +\definecolor{primaryD}{HTML}{00796B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Green +\newcommand{\usePrimaryGreen}{ +\definecolor{primary} {HTML}{4CAF50} +\definecolor{primaryD}{HTML}{388E3C} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Green +\newcommand{\usePrimaryLightGreen}{ +\definecolor{primary} {HTML}{8BC34A} +\definecolor{primaryD}{HTML}{689F38} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Lime +\newcommand{\usePrimaryLime}{ +\definecolor{primary} {HTML}{CDDC39} +\definecolor{primaryD}{HTML}{AFB42B} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Yellow +\newcommand{\usePrimaryYellow}{ +\definecolor{primary} {HTML}{FFEB3B} +\definecolor{primaryD}{HTML}{FBC02D} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Amber +\newcommand{\usePrimaryAmber}{ +\definecolor{primary} {HTML}{FFC107} +\definecolor{primaryD}{HTML}{FFA000} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Orange +\newcommand{\usePrimaryOrange}{ +\definecolor{primary} {HTML}{FF9800} +\definecolor{primaryD}{HTML}{F57C00} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Deep Orange +\newcommand{\usePrimaryDeepOrange}{ +\definecolor{primary} {HTML}{FF5722} +\definecolor{primaryD}{HTML}{E64A19} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Brown +\newcommand{\usePrimaryBrown}{ +\definecolor{primary} {HTML}{795548} +\definecolor{primaryD}{HTML}{5D4037} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Grey +\newcommand{\usePrimaryGrey}{ +\definecolor{primary} {HTML}{9E9E9E} +\definecolor{primaryD}{HTML}{616161} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Blue Grey +\newcommand{\usePrimaryBlueGrey}{ +\definecolor{primary} {HTML}{607D8B} +\definecolor{primaryD}{HTML}{455A64} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + + +% ACCENT --------------------------------------------------------------- + +\newcommand{\useAccent}[2]{ +\definecolor{accent} {HTML}{#1} +\definecolor{textAccent} {HTML}{#2} +} + +% Accent Red +\newcommand{\useAccentRed}{ +\definecolor{accent} {HTML}{FF1744} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Pink +\newcommand{\useAccentPink}{ +\definecolor{accent} {HTML}{F50057} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Purple +\newcommand{\useAccentPurple}{ +\definecolor{accent} {HTML}{D500F9} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Deep Purple +\newcommand{\useAccentDeepPurple}{ +\definecolor{accent} {HTML}{651FFF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Indigo +\newcommand{\useAccentIndigo}{ +\definecolor{accent} {HTML}{3D5AFE} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Blue +\newcommand{\useAccentBlue}{ +\definecolor{accent} {HTML}{2979FF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Light Blue +\newcommand{\useAccentLightBlue}{ +\definecolor{accent} {HTML}{00B0FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Cyan +\newcommand{\useAccentCyan}{ +\definecolor{accent} {HTML}{00E5FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Teal +\newcommand{\useAccentTeal}{ +\definecolor{accent} {HTML}{1DE9B6} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Green +\newcommand{\useAccentGreen}{ +\definecolor{accent} {HTML}{00E676} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Light Green +\newcommand{\useAccentLightGreen}{ +\definecolor{accent} {HTML}{76FF03} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Lime +\newcommand{\useAccentLime}{ +\definecolor{accent} {HTML}{C6FF00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Yellow +\newcommand{\useAccentYellow}{ +\definecolor{accent} {HTML}{FFEA00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Amber +\newcommand{\useAccentAmber}{ +\definecolor{accent} {HTML}{FFC400} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Orange +\newcommand{\useAccentOrange}{ +\definecolor{accent} {HTML}{FF9100} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Deep Orange +\newcommand{\useAccentDeepOrange}{ +\definecolor{accent} {HTML}{FF3D00} +\definecolor{textAccent} {HTML}{FFFFFF} +} + + + +\useLightTheme +\usePrimaryIndigo +\useAccentPink + +% more color settings +\setbeamercolor{block title}{fg=primary} +\hypersetup{linkcolor=primary} +\setbeamercolor{section in toc}{fg=primary} +\setbeamercolor{subsection in toc}{fg=primary} + + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/beamerinnerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/beamerinnerthemematerial.sty new file mode 100755 index 000000000..48d82d16a --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/beamerinnerthemematerial.sty @@ -0,0 +1,42 @@ +\setbeamercolor{background canvas}{bg=BGgrey03} + +% Title page +\defbeamertemplate*{title page}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t][\paperheight]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, + fuzzy shadow={0mm}{-0.6mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.2mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.2mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, height=0.6\paperheight, flushright upper, valign=bottom, boxsep=0.5cm] + {\usebeamerfont{title} \inserttitle}\\ + {\usebeamerfont{author}\insertauthor}\\ + {\usebeamerfont{author}\insertdate} + \end{tcolorbox} + + %\begin{tcolorbox}[arc=5mm,width=10mm,height=10mm, enhanced, % + %colback=accent, coltext=textAccent, % + %fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!primary}, % top + %fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + %fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + %left=1.5mm, right=1.5mm, top=1.5mm, bottom=1.5mm, boxsep=0mm, % + %boxrule=0mm, enlarge left by=10mm, enlarge top by=-10mm]% + %\includegraphics[width=7mm]{\iconFolder/ic_account_circle_48px} + %\end{tcolorbox} + \end{minipage}% + }% + \vfill +} + +% Items +\setbeamertemplate{enumerate items}[circle] +\setbeamertemplate{itemize items}{\Large $\bullet$} +\setbeamertemplate{sections/subsections in toc}[circle] + +\setbeamercolor{local structure}{fg=accent} + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/beamerouterthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/beamerouterthemematerial.sty new file mode 100755 index 000000000..9338c12a0 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/beamerouterthemematerial.sty @@ -0,0 +1,28 @@ +\mode + +% Frame title +\defbeamertemplate*{frametitle}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, % + left=6mm, right=6mm, top=2.6mm, bottom=2mm,% + fuzzy shadow={0mm}{-0.9mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.8mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.5mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, boxsep=2mm] + \ifx\insertframesubtitle\@empty% + {\usebeamerfont{frametitle} \insertframetitle} + \else% + {\usebeamerfont{frametitle} \insertframetitle} + {\usebeamerfont{framesubtitle} \insertframesubtitle} + \fi + \end{tcolorbox} + \end{minipage}% + }% +} + + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/beamerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/beamerthemematerial.sty new file mode 100755 index 000000000..c34246582 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/beamerthemematerial.sty @@ -0,0 +1,82 @@ +\mode + +% Requirement +\RequirePackage{tikz} +\RequirePackage{xcolor} +\RequirePackage{ifthen} +\RequirePackage[many]{tcolorbox} +\RequirePackage{graphicx} + +% Settings +\useinnertheme{material} +\useoutertheme{material} +\usecolortheme{material} + +\setbeamertemplate{navigation symbols}{} + +\setbeamerfont*{title}{size=\Huge} +\setbeamerfont*{frametitle}{size=\large} + +% tcolorbox settings +\newcommand{\setCardSettings}{% +\tcbset{% +colback=BGgrey04, colbacktitle=primary, coltitle=textPrimary, coltext=text,% +enhanced, sharpish corners=all,% +fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!BGgrey03}, % top +fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall +fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig +left=6mm, right=6mm, top=6mm, bottom=6mm, middle=4mm,% +title filled, boxrule=0mm, % +segmentation code={\path[draw=BGgrey01](segmentation.west) -- (segmentation.east);}% +} +} + +\setCardSettings + +\newenvironment{card}[1][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}% + }{% + \begin{tcolorbox}[colbacktitle=primary, coltitle=textPrimary, title=#1, left=6mm, right=6mm, top=3mm, bottom=4mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% + }% +}{% + \end{tcolorbox}% +} + +\newenvironment{cardTiny}{% + \setCardSettings + \begin{tcolorbox}[colbacktitle=primary, left=4mm, right=4mm, top=2mm, bottom=2mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% +}{% + \end{tcolorbox}% +} + + +\newcommand{\cardImg}[3][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, bottom=0mm, middle=1.5mm, boxsep=0mm, width=#3,]% + \includegraphics[width=\textwidth]{#2} + \end{tcolorbox} + }{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, middle=1.5mm, boxsep=0mm, leftlower=6mm, rightlower=6mm, bottom=6mm, , width=#3,]% + \includegraphics[width=\textwidth]{#2} + \tcblower + #1% + \end{tcolorbox} + }% +} + +\newenvironment{frameImg}[2][width]{% + \setCardSettings + \ifthenelse{\equal{#1}{width}}{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[width=\paperwidth, keepaspectratio=true]{#2}}}% + }{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[height=\paperheight, keepaspectratio=true]{#2}}}% + }% + \begin{frame} +}{% + \end{frame} +} + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/grover_iotm.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/grover_iotm.png new file mode 100755 index 000000000..b48829c29 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/grover_iotm.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/grover_phiv.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/grover_phiv.png new file mode 100755 index 000000000..1cb4b4d80 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/grover_phiv.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/grover_start.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/grover_start.png new file mode 100755 index 000000000..03ecf3329 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/grover_start.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/haystack.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/haystack.png new file mode 100755 index 000000000..e6c71c7e3 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/haystack.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/iatm.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/iatm.png new file mode 100755 index 000000000..febe18a2d Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/iatm.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/phiv.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/phiv.png new file mode 100755 index 000000000..7c16c08f9 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/phiv.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/phiv_before.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/phiv_before.png new file mode 100755 index 000000000..b1b72a4dc Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/img/phiv_before.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/macros.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/macros.sty new file mode 100755 index 000000000..e8d2b8686 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/macros.sty @@ -0,0 +1,127 @@ +\ProvidesPackage{macros}[2018 My own macros] + +% Packages that main.tex will use AND common header commands +\usepackage{multicol} +\usepackage{tikz} % drawings +\usetikzlibrary{positioning, arrows} +\usepackage{animate} % animations +\usepackage{hyperref} +\usepackage{minted} % code snippets +\usepackage{todonotes} +\let\todox\todo +\renewcommand\todo[1]{\todox[inline]{#1}} + +%%%%%%%%%%%%%%%%% DOCUMENT GLOBAL SETTINGS +% example for author reusing these slides: +\author[Ramalho]{Miguel Sozinho Ramalho} +% \author[LASTNAME]{FIRSTNAME LASTNAME,\\ \scriptsize{based on slides by \textbf{Miguel Sozinho Ramalho}}} +\institute[FEUP]{Faculty of Engineering of the University of Porto} +\subject{Quantum Computing} +\date{November, 2018} + + +% Uncomment for notes on slides +% \usepackage{pgfpages} +% \setbeameroption{show notes} +% \setbeameroption{show notes on second screen=right} + +\graphicspath{{img/}} % add the img folder to graphics path + +% Packages that this file uses +\usepackage{braket} % bra-ket notation +\usepackage{xargs} % custom new commands +\usepackage{xspace} % add xspace after new command to auto insert space + + + +% braket shorthands +\newcommandx{\superpos}[3][1=\textual{\psi},2=0,3=1]{\ket {#1} = \textual{\alpha} \ket{#2} + \textual{\beta} \ket{#3}} +\newcommand{\plusminus}[1][\psi]{\superpos[#1][-][+]} +\newcommand{\pagenumber}{\raggedleft\vfill\scriptsize\insertframenumber/\inserttotalframenumber} +\newcommand{\speedoflight}{3 \times 10^{8} m/s} +\newcommand{\osqrt}{\frac{1}{\sqrt{2}}} +\newcommand{\kz}{\ket{0}} +\newcommand{\ko}{\ket{1}} + +% short shorthands +\newcommand{\qasm}{Qasm\xspace} +\newcommand{\q}{Quantum\xspace} +\newcommand{\qa}{\q Algorithms\xspace} +\newcommand{\qct}{\q Circuit\xspace} +\newcommand{\qcts}{\q Circuits\xspace} +\newcommand{\qc}{\q Computing\xspace} +\newcommand{\qcp}{\q Computation\xspace} +\newcommand{\qec}{\q Error Correction\xspace} +\newcommand{\qft}{\q Fourier Transform\xspace} +\newcommand{\qi}{\q Information\xspace} +\newcommand{\qis}{\q Information Science\xspace} +\newcommand{\qm}{\q Mechanics\xspace} +\newcommand{\qmt}{\q Measurement\xspace} +\newcommand{\qp}{\q Physics\xspace} +\newcommand{\qsp}{\q Superposition\xspace} +\newcommand{\qw}{\q World\xspace} +\newcommand{\mbqc}{Measurement Based \q Computer\xspace} +\newcommand{\aqc}{Adiabatic \q Computation\xspace} + +\newcommand{\cl}{Classical\xspace} +\newcommand{\cc}{Classical Computing\xspace} +\newcommand{\cm}{Classical Mechanics\xspace} +\newcommand{\cp}{Classical Physics\xspace} + +\newcommand{\qk}{Qiskit\xspace} +\newcommand{\qka}{Qiskit Aqua\xspace} +\newcommand{\ibmq}{IBM Q\xspace} +\newcommand{\ibmqe}{IBM Q Experience\xspace} + +\newcommand{\p}{\textbf{P}\xspace} +\newcommand{\np}{\textbf{NP}\xspace} +\newcommand{\bqp}{\textbf{BQP}\xspace} + +\newcommand{\djs}{Deutsch-Jozsa\xspace} +\newcommand{\ds}{Deutsch's\xspace} +\newcommand{\gv}{Grover\xspace} +\newcommand{\gvs}{\gv's\xspace} +\newcommand{\gvsa}{\gv's algorithm\xspace} +\newcommand{\aamp}{Amplitude Amplification\xspace} +\newcommand{\sa}{Shor's algorithm\xspace} + +\newcommand{\phiv}{phase inversion\xspace} +\newcommand{\iatm}{inversion about the mean\xspace} + +\newcommand{\ai}{Artificial Intelligence\xspace} + +%configurable variables +\newcommand{\githubRepo}{https://github.com/msramalho/Teach-Me-Quantum/} +\newcommand{\weeks}{\githubRepo/tree/master/} +\newcommand{\weekZero}{\weeks/Week\%200\%20-\%20Hello\%20Quantum\%20World/} +\newcommand{\weekOne}{\weeks/Week\%201\%20-\%20Quantum\%20Tools/} +\newcommand{\weekTwo}{\weeks/Week\%202\%20-\%20Quantum\%20Information\%20Science/} +\newcommand{\weekThree}{\weeks/Week\%203\%20-\%20Quantum\%20Gates/} +\newcommand{\weekFour}{\weeks/Week\%204\%20-\%20Quantum\%20Facts/} + +%%%%%%%%%%%%%%%%%%%%%%%% quotations +% src: https://tex.stackexchange.com/a/53380/126771 +\newcommand{\@chapapp}{\relax} +\makeatletter +\renewcommand{\@chapapp}{} +\newenvironment{chapquote}[2][2em] + {\setlength{\@tempdima}{#1} + \def\chapquote@author{#2} + \parshape 1 \@tempdima \dimexpr\textwidth-2\@tempdima\relax + \itshape} + {\par\normalfont\hfill--\ \chapquote@author\hspace*{\@tempdima}\par\bigskip} +\makeatother + +%%%%%%%%%%%%%%%%% color on hrefs +\hypersetup{ + colorlinks=true, + linkcolor=primaryD,%blue, + filecolor=primaryD,%cyan, + urlcolor=accent %hrefs +} + +%%%%%%%%%%%%%%%%% minted settings +\setminted[python]{fontsize=\footnotesize} +\setminted[vhdl]{fontsize=\footnotesize} +\definecolor{bgGrey}{rgb}{0.95,0.95,0.95} +\setminted{bgcolor=bgGrey} \ No newline at end of file diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/main.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/main.tex new file mode 100755 index 000000000..6d381152f --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/latex/main.tex @@ -0,0 +1,229 @@ +\documentclass[aspectratio=43]{beamer} +\usepackage[utf8]{inputenc} + +%%%%%%%%%%%%%%%%%%%%%%%% THEME +\usetheme{material} +\useLightTheme +\usePrimaryAmber +\useAccentDeepOrange + +\usepackage{macros} % must come after theme + +\title{\q Search} +\keywords{\qc, \q Search, Grover's algorithm} + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + + +\begin{frame}{Table of contents} + \begin{card} + \tableofcontents + \end{card} +\end{frame} + + +\section{Introduction} +\begin{frame}{Introduction} + \begin{card} + This week we will be studying a famous and pragmatic quantum algorithm to perform a search, the \textbf{\gvsa}. We will look through its purpose, how it compares with classical search strategies that solve the same problems. The algorithm will be studied from a more abstract point of view, namely in understanding \textbf{\aamp} (\textbf{\phiv} + \textbf{\iatm}). This week's exercises will focus more on the implementation details. + \end{card} +\pagenumber +\end{frame} + + +\section{The Search Problem} +\begin{frame}{The Search Problem} + \begin{cardTiny} + Let us assume we have a function $f$: + \begin{equation*} + f : \{0, 1, ..., N-1\} \rightarrow \{0,1\} + \end{equation*} + And we want to find those values of $x$ for which $f(x)=1$. To simplify, and also to make the problem harder, let us assume there is only one such $x$: + \begin{center} + \includegraphics[width=0.45\textwidth]{haystack} + \end{center} + \end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}{The Search Problem} + \begin{card} + How would a classical programmer tackle this problem? + \begin{itemize} + \item Sequential search through $x \in [0, N[$ until $f(x)=1$ + \item Random search with $x \in [0, N[$ until $f(x)=1$ + \item ... + \end{itemize} + As you can see, this is quite straightforward, and yields a worst-case scenario of $N$ searches and average $\frac{N}{2}$ (assuming no bias in $f$). + \end{card} +\pagenumber +\end{frame} + +\section{SAT Problem} +\begin{frame}{SAT Problem} + \begin{card} + \small{Besides the most obvious problems, we should also know about the \textbf{SAT problem} (sometimes Boolean satisfiability problem). This problem is about determining values for Boolean variables so that the \textbf{Boolean expression} associated \textbf{evaluates to true}. This is a computationally expensive problem and falls into the \np (actually \href{https://en.wikipedia.org/wiki/NP-completeness}{NP-complete}) category. Many problems, like scheduling, can be converted into a SAT formulation, making use of existing SAT solvers to easily find solutions for novel problems.} + \end{card} + \begin{card} + \small{As such, SAT can be seen as a \textbf{search problem}, where we need to find the precise combination of Boolean values that \textbf{yields true}.} + \end{card} +\pagenumber +\end{frame} + +\section{\gvsa} % overview of steps, comparison of bigO +\begin{frame}{\gvsa} + \begin{card} + Luckily for the world, Dr. \href{https://en.wikipedia.org/wiki/Lov_Grover}{Lov Grover} devised an algorithm that, instead of $N$ steps to find a solution, requires $\sqrt{N}$. This is \href{https://arxiv.org/abs/quant-ph/9711070}{optimal} (no better speed up is possible for this problem). + \end{card} + \begin{card} + The algorithm makes use of two very important phenomena that can be implemented in a quantum computer:\begin{itemize} + \item \textbf{Phase inversion} + \item \textbf{Inversion about the mean} (average) + \item An oracle for our $f$ function + \end{itemize} + \end{card} +\pagenumber +\end{frame} + + +\section{Phase Inversion} +\begin{frame}{Phase Inversion} + \begin{card} + The first phenomena is that of \phiv and will help in finding $x'$ so that $f(x')=1$. Let us imagine a quantum superposition over all possible $x$ values: + \begin{equation*} + \sum_x\alpha_x \ket{x} + \end{equation*} + To which we can, through the use of our oracle, obtain: + \begin{equation*} + \sum_{x\neq x'}\alpha_x \ket{x} - \alpha_{x'}\ket{x'} + \end{equation*} + \end{card} +\pagenumber +\end{frame} +\begin{frame}{Phase Inversion} + \begin{cardTiny} + This will mean that, if we plot $\alpha_x$ for each $x$ value, we will get something like the following abstract diagram - in which the correct value has been inverted (even though we do not know its value) + \begin{multicols}{2} + \begin{center} + \includegraphics[width=0.5\textwidth]{phiv_before} + \end{center} + \begin{center} + \includegraphics[width=0.5\textwidth]{phiv} + \end{center} + \end{multicols} + \end{cardTiny} +\pagenumber +\end{frame} + + +\section{Inversion about the Mean} +\begin{frame}{Inversion about the Mean} + \begin{cardTiny} + The next phase of the algorithm is to take that very distribution of weight and mirror it to the other side of the mean. This can be done in a quantum circuit (more on the exercises). The following is a representation of this transformation (either function is the \iatm of the other): + \begin{center} + \includegraphics[width=0.5\textwidth]{iatm} + \end{center} + \end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}{Inversion about the Mean} + \begin{cardTiny} + Why do we do this, you may ask. To answer this, consider the two steps taken so far: \phiv and then \iatm. The first one, sets our solution to be a bit more recognizable and the second operation further segregates our result from the rest of the possible states. + \end{cardTiny} + \begin{cardTiny} + If we keep on doing this two steps, we will segregate the correct answer from the others further and further. The number of times we need to do it to have a guaranteed high probability of having the right answer is $\sqrt{N}$! + \end{cardTiny} +\pagenumber +\end{frame} + +\section{Why $\sqrt{N}$?} +\begin{frame}{\gvsa (why $\sqrt{N}$?) } + \begin{cardTiny} + Let us assume, we initialize our $n$ qubits to $\ket{0}$, each qubit can be compared to a Boolean value on the n-bit solution we are looking for. We then create a superposition that sets them in a \textbf{uniform superposition} (each state has equal probability): + \begin{equation*} + \sum_{x \in {0,1}^n} \frac{1}{\sqrt{N}}\ket{x} + \end{equation*} + \begin{center} + \includegraphics[width=1\textwidth]{grover_start} + \end{center} + \end{cardTiny} +\pagenumber +\end{frame} + + +\begin{frame}{\gvsa (why $\sqrt{N}$?)} + \begin{cardTiny} + We then create a quantum oracle $O_f$ that will flip the qubits if the result is 1, and apply this gate, this effectively applies a phase inversion: + \begin{center} + \includegraphics[width=1\textwidth]{grover_phiv} + \end{center} + \end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}{\gvsa (why $\sqrt{N}$?)} + \begin{cardTiny} + Finally, we will apply the \iatm ($\mu = \frac{1}{N}\sum_x \alpha_x \ket{x}$): + \begin{equation*} + \sum_x \alpha_x \ket{x} \rightarrow \sum_x (2\mu - \alpha_x) \ket{x} + \end{equation*} + \begin{center} + \includegraphics[width=1\textwidth]{grover_iotm} + \end{center} + \end{cardTiny} +\pagenumber +\end{frame} + +\newcommand{\amp}[2]{\frac{#1}{\sqrt{#2}}} +\begin{frame}{\gvsa ($\sqrt{N}$ because...)} + \begin{card} + If you repeat this mechanism, you will notice the amplitude improves (per step) $\amp{\sqrt{2}}{N}$ every iteration: + \begin{equation*} + \amp{1}{N}, \amp{3}{N}, \amp{5}{N}, ... \amp{1}{2} + \end{equation*} + At the point of $\amp{1}{2}$ we have a guaranteed high probability of the measurement resulting in the solution! How long until we get there? + \begin{equation*} + \frac{\amp{1}{2}}{\amp{\sqrt{2}}{N}} = \frac{\sqrt{N}}{2} = O(\sqrt{N}) + \end{equation*} + \end{card} +\pagenumber +\end{frame} + +\section{\aamp} +\begin{frame}{\aamp} + \begin{cardTiny} + This combination of \phiv and \iatm is called \textbf{\aamp}! + \end{cardTiny} + \begin{cardTiny} + \small{ + It should be noted that the amplitude \textbf{cannot increase forever} and will eventually be so large that the mean becomes negative (after \phiv) and the \iatm step is actually \textbf{harming our result}. That is why one should know when to stop (how many iterations guarantee the minimum desired amplitude).} + \end{cardTiny} + \begin{cardTiny} + There you have it, by executing the \aamp iteration we can solve a classical problem that had a complexity of $O(N)$ in $O(\sqrt{N})$, it is not an exponential growth (as some quantum algorithms are able to do), but in this case that would have some \href{https://en.wikipedia.org/wiki/P_versus_NP_problem}{very disruptive consequences}. + \end{cardTiny} +\pagenumber +\end{frame} + +\section{Hands-on} +\begin{frame}{Hands-on} + \begin{card} + This week's exercises will focus more on understanding the logic at the quantum circuit level, and are based on a Jupyter notebook available at the official \href{https://github.com/Qiskit/qiskit-tutorial}{\qk tutorial repository}. You will get to solve a real SAT problem, of dimension 3, in a real quantum device! + \end{card} +\pagenumber +\end{frame} + +\section{Where to learn more?} +\begin{frame}{Where to learn more?} +\begin{card} + \begin{itemize} + \item \href{https://quantumexperience.ng.bluemix.net/proxy/tutorial/full-user-guide/004-Quantum_Algorithms/070-Grover's_Algorithm.html}{\ibmqe Documentation on \gv} includes circuitry and interesting diagrams. + \item \href{https://arxiv.org/abs/1708.03684}{An Introduction to Quantum Computing, Without the Physics} good paper for understanding more on \gvsa + \end{itemize} +\end{card} +\end{frame} +\end{document} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/slides.pdf b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/slides.pdf new file mode 100755 index 000000000..b8ad858a9 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_6-Quantum_Search/slides.pdf differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/README.ipynb new file mode 100644 index 000000000..918b5d4ab --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/README.ipynb @@ -0,0 +1,55 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Week 7 - Quantum Factorization (Shor's Algorithm)\n", + "\n", + " * The Prime Factorization Problem\n", + " * Cryptography Considerations\n", + " * Grover's Algorithm Overview\n", + " * Shor's Algorithm\n", + " * From Factorization to Period Finding\n", + " * Quantum Fourier Transform\n", + " * From Period to Factors\n", + "\n", + "# Exercises\n", + " * [Jupyter notebook 1 with tutorial](exercises/w7_01.ipynb): understanding the Quantum Fourier Transform on its own (this one is optional as it is very math-heavy for some students)\n", + " * [Jupyter notebook 2 with tutorial](exercises/w7_02.ipynb): understanding Shor's Algorithm step by step\n", + "\n", + "## Resources\n", + " * [PDF slides](slides.pdf)\n", + " * [slides src](latex/main.tex) Latex files and image resources used in the presentation (useful for PR on slide typos and such)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/exercises/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/exercises/README.ipynb new file mode 100644 index 000000000..dd5c4ea95 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/exercises/README.ipynb @@ -0,0 +1,41 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercises\n", + " * [Jupyter notebook 1 with tutorial](w7_01.ipynb): understanding the Quantum Fourier Transform on its own (this one is optional as it is very math-heavy for some students)\n", + " * [Jupyter notebook 2 with tutorial](w7_02.ipynb): understanding Shor's Algorithm step by step\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/exercises/qiskit-heading.gif b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/exercises/qiskit-heading.gif new file mode 100755 index 000000000..97c168a33 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/exercises/qiskit-heading.gif differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/exercises/w7_01.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/exercises/w7_01.ipynb new file mode 100644 index 000000000..7aec2770e --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/exercises/w7_01.ipynb @@ -0,0 +1,381 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## _*Quantum Fourier Transform*_ \n", + "\n", + "This notebook is based on an official notebook by Qiskit team, available at https://github.com/qiskit/qiskit-tutorial under the [Apache License 2.0](https://github.com/Qiskit/qiskit-tutorial/blob/master/LICENSE) license. \n", + "Initially done by Anna Phan.\n", + "\n", + "In this tutorial, we [introduce](#introduction) the quantum fourier transform (QFT), [derive](#circuit) the circuit, QASM and Qiskit code, before [implementing](#implementation) it using the simulator and five qubit device." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction \n", + "\n", + "The Fourier transform occurs in many different versions throughout classical computing, in areas ranging from signal processing to data compression to complexity theory. The quantum Fourier transform (QFT) is the quantum implementation of the discrete Fourier transform over the amplitudes of a wavefunction. It is part of many quantum algorithms, most notably Shor's factoring algorithm and quantum phase estimation. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The discrete Fourier transform acts on a vector $(x_0, ..., x_{N-1})$ and maps it to the vector $(y_0, ..., y_{N-1})$ according to the formula\n", + "$$y_k = \\frac{1}{\\sqrt{N}}\\sum_{j=0}^{N-1}x_j\\omega_N^{jk}$$\n", + "where $\\omega_N^{jk} = e^{2\\pi i \\frac{jk}{N}}$.\n", + "\n", + "Similarly, the quantum Fourier transform acts on a quantum state $\\sum_{i=0}^{N-1} x_i \\vert i \\rangle$ and maps it to the quantum state $\\sum_{i=0}^{N-1} y_i \\vert i \\rangle$ according to the formula\n", + "$$y_k = \\frac{1}{\\sqrt{N}}\\sum_{j=0}^{N-1}x_j\\omega_N^{jk}$$\n", + "with $\\omega_N^{jk}$ defined as above. Note that only the amplitudes of the state were affected by this transformation.\n", + "\n", + "This can also be expressed as the map:\n", + "$$\\vert x \\rangle \\mapsto \\frac{1}{\\sqrt{N}}\\sum_{y=0}^{N-1}\\omega_N^{xy} \\vert y \\rangle$$\n", + "\n", + "Or the unitary matrix:\n", + "$$ U_{QFT} = \\frac{1}{\\sqrt{N}} \\sum_{x=0}^{N-1} \\sum_{y=0}^{N-1} \\omega_N^{xy} \\vert y \\rangle \\langle x \\vert$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Circuit and Code \n", + "\n", + "We've actually already seen the quantum Fourier transform for when $N = 2$, it is the Hadamard operator ($H$):\n", + "$$H = \\frac{1}{\\sqrt{2}}\\begin{bmatrix} 1 & 1 \\\\ 1 & -1 \\end{bmatrix}$$\n", + "Suppose we have the single qubit state $\\alpha \\vert 0 \\rangle + \\beta \\vert 1 \\rangle$, if we apply the $H$ operator to this state, we obtain the new state:\n", + "$$\\frac{1}{\\sqrt{2}}(\\alpha + \\beta) \\vert 0 \\rangle + \\frac{1}{\\sqrt{2}}(\\alpha - \\beta) \\vert 1 \\rangle \n", + "\\equiv \\tilde{\\alpha}\\vert 0 \\rangle + \\tilde{\\beta}\\vert 1 \\rangle$$\n", + "Notice how the Hadamard gate performs the discrete Fourier transform for $N = 2$ on the amplitudes of the state. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So what does the quantum Fourier transform look like for larger N? Let's derive a circuit for $N=2^n$, $QFT_N$ acting on the state $\\vert x \\rangle = \\vert x_1...x_n \\rangle$ where $x_1$ is the most significant bit.\n", + "\n", + "\\begin{aligned}\n", + "QFT_N\\vert x \\rangle & = \\frac{1}{\\sqrt{N}} \\sum_{y=0}^{N-1}\\omega_N^{xy} \\vert y \\rangle \\\\\n", + "& = \\frac{1}{\\sqrt{N}} \\sum_{y=0}^{N-1} e^{2 \\pi i xy / 2^n} \\vert y \\rangle \\:\\text{since}\\: \\omega_N^{xy} = e^{2\\pi i \\frac{xy}{N}} \\:\\text{and}\\: N = 2^n\\\\\n", + "& = \\frac{1}{\\sqrt{N}} \\sum_{y=0}^{N-1} e^{2 \\pi i \\left(\\sum_{k=1}^n y_k/2^k\\right) x} \\vert y_1 ... y_n \\rangle \\:\\text{rewriting in fractional binary notation}\\: y = y_1...y_k, y/2^n = \\sum_{k=1}^n y_k/2^k \\\\\n", + "& = \\frac{1}{\\sqrt{N}} \\sum_{y=0}^{N-1} \\prod_{k=0}^n e^{2 \\pi i x y_k/2^k } \\vert y_1 ... y_n \\rangle \\:\\text{after expanding the exponential of a sum to a product of exponentials} \\\\\n", + "& = \\frac{1}{\\sqrt{N}} \\bigotimes_{k=1}^n \\left(\\vert0\\rangle + e^{2 \\pi i x /2^k } \\vert1\\rangle \\right) \\:\\text{after rearranging the sum and products, and expanding} \\\\\n", + "& = \\frac{1}{\\sqrt{N}} \\left(\\vert0\\rangle + e^{2 \\pi i[0.x_n]} \\vert1\\rangle\\right) \\otimes...\\otimes \\left(\\vert0\\rangle + e^{2 \\pi i[0.x_1.x_2...x_{n-1}.x_n]} \\vert1\\rangle\\right) \\:\\text{as}\\: e^{2 \\pi i x/2^k} = e^{2 \\pi i[0.x_k...x_n]} \n", + "\\end{aligned}\n", + "\n", + "This is a very useful form of the QFT for $N=2^n$ as only the last qubit depends on the the\n", + "values of all the other input qubits and each further bit depends less and less on the input qubits. Furthermore, note that $e^{2 \\pi i.0.x_n}$ is either $+1$ or $-1$, which resembles the Hadamard transform.\n", + "\n", + "For the QFT circuit, together with the Hadamard gate, we will also need the controlled phase rotation gate, as defined in [OpenQASM](https://github.com/Qiskit/openqasm), to implement the dependencies between the bits:\n", + "$$CU_1(\\theta) =\n", + "\\begin{bmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 0 & 0 & e^{i\\theta}\\end{bmatrix}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before we create the circuit code for general $N=2^n$, let's look at $N=8,n=3$:\n", + "$$QFT_8\\vert x_1x_2x_3\\rangle = \\frac{1}{\\sqrt{8}} \\left(\\vert0\\rangle + e^{2 \\pi i[0.x_3]} \\vert1\\rangle\\right) \\otimes \\left(\\vert0\\rangle + e^{2 \\pi i[0.x_2.x_3]} \\vert1\\rangle\\right) \\otimes \\left(\\vert0\\rangle + e^{2 \\pi i[0.x_1.x_2.x_3]} \\vert1\\rangle\\right) $$\n", + "\n", + "The steps to creating the circuit for $\\vert y_1y_2x_3\\rangle = QFT_8\\vert x_1x_2x_3\\rangle$ would be:\n", + "1. Apply a Hadamard to $\\vert x_3 \\rangle$, giving the state $\\frac{1}{\\sqrt{2}}\\left(\\vert0\\rangle + e^{2 \\pi i.0.x_3} \\vert1\\rangle\\right) = \\frac{1}{\\sqrt{2}}\\left(\\vert0\\rangle + (-1)^{x_3} \\vert1\\rangle\\right)$\n", + "2. Apply a Hadamard to $\\vert x_2 \\rangle$, then depending on $k_3$ (before the Hadamard gate) a $CU_1(\\frac{\\pi}{2})$, giving the state $\\frac{1}{\\sqrt{2}}\\left(\\vert0\\rangle + e^{2 \\pi i[0.x_2.x_3]} \\vert1\\rangle\\right)$\n", + "3. Apply a Hadamard to $\\vert x_1 \\rangle$, then $CU_1(\\frac{\\pi}{2})$ depending on $k_2$, and $CU_1(\\frac{\\pi}{4})$ depending on $k_3$.\n", + "4. Measure the bits in reverse order, that is $y_3 = x_1, y_2 = x_2, y_1 = y_3$.\n", + "\n", + "In the Quantum Experience composer (if controlled phase rotation gates were available) this circuit would look like:\n", + "\"Note: Trusted Notebook\" width=\"400 px\" align=\"center\">\n", + "\n", + "In QASM, it is:\n", + "```vhdl\n", + "qreg q[3];\n", + "creg c[3];\n", + "h q[0];\n", + "cu1(pi/2) q[1],q[0];\n", + "h q[1];\n", + "cu1(pi/4) q[2],q[0];\n", + "cu1(pi/2) q[2],q[1];\n", + "h q[2];\n", + "```\n", + "\n", + "In Qiskit, it is:\n", + "```python\n", + "q = QuantumRegister(3)\n", + "c = ClassicalRegister(3)\n", + "\n", + "qft3 = QuantumCircuit(q, c)\n", + "qft3.h(q[0])\n", + "qft3.cu1(math.pi/2.0, q[1], q[0])\n", + "qft3.h(q[1])\n", + "qft3.cu1(math.pi/4.0, q[2], q[0])\n", + "qft3.cu1(math.pi/2.0, q[2], q[1])\n", + "qft3.h(q[2])\n", + "```\n", + "\n", + "For $N=2^n$, this can be generalised, as in the `qft` function in [tools.qi](https://github.com/Qiskit/qiskit-terra/blob/master/qiskit/tools/qi/qi.py):\n", + "```python\n", + "def qft(circ, q, n):\n", + " \"\"\"n-qubit QFT on q in circ.\"\"\"\n", + " for j in range(n):\n", + " for k in range(j):\n", + " circ.cu1(math.pi/float(2**(j-k)), q[j], q[k])\n", + " circ.h(q[j])\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Implementation " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "\n", + "# importing Qiskit\n", + "from qiskit import Aer, IBMQ\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute\n", + "from qiskit.backends.ibmq import least_busy\n", + "\n", + "# useful additional packages \n", + "from qiskit.wrapper.jupyter import *\n", + "from qiskit.tools.visualization import plot_histogram" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "IBMQ.load_accounts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First let's define the QFT function, as well as a function that creates a state from which a QFT will return 1:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def input_state(circ, q, n):\n", + " \"\"\"n-qubit input state for QFT that produces output 1.\"\"\"\n", + " for j in range(n):\n", + " circ.h(q[j])\n", + " circ.u1(math.pi/float(2**(j)), q[j]).inverse()\n", + "\n", + "def qft(circ, q, n):\n", + " \"\"\"n-qubit QFT on q in circ.\"\"\"\n", + " for j in range(n):\n", + " for k in range(j):\n", + " circ.cu1(math.pi/float(2**(j-k)), q[j], q[k])\n", + " circ.h(q[j])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's now implement a QFT on a prepared three qubit input state that should return $001$:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "OPENQASM 2.0;\n", + "include \"qelib1.inc\";\n", + "qreg q0[3];\n", + "creg c0[3];\n", + "h q0[0];\n", + "u1(-3.14159265358979) q0[0];\n", + "h q0[1];\n", + "u1(-1.57079632679490) q0[1];\n", + "h q0[2];\n", + "u1(-0.785398163397448) q0[2];\n", + "h q0[0];\n", + "cu1(1.57079632679490) q0[1],q0[0];\n", + "h q0[1];\n", + "cu1(0.785398163397448) q0[2],q0[0];\n", + "cu1(1.57079632679490) q0[2],q0[1];\n", + "h q0[2];\n", + "measure q0[0] -> c0[0];\n", + "measure q0[1] -> c0[1];\n", + "measure q0[2] -> c0[2];\n", + "\n" + ] + } + ], + "source": [ + "q = QuantumRegister(3)\n", + "c = ClassicalRegister(3)\n", + "qft3 = QuantumCircuit(q, c)\n", + "\n", + "input_state(qft3, q, 3)\n", + "qft(qft3, q, 3)\n", + "for i in range(3):\n", + " qft3.measure(q[i], c[i])\n", + "print(qft3.qasm())" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'001': 1024}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# run on local simulator\n", + "backend = Aer.get_backend(\"qasm_simulator\")\n", + "\n", + "simulate = execute(qft3, backend=backend, shots=1024).result()\n", + "simulate.get_counts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We indeed see that the outcome is always $001$ when we execute the code on the simulator.\n", + "\n", + "\n", + "We then see how the same circuit can be executed on real-device backends." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "07e166bc4b644c2fa533677a2247f577", + "version_major": 2, + "version_minor": 0 + }, + "text/html": [ + "

Failed to display Jupyter Widget of type VBox.

\n", + "

\n", + " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", + " that the widgets JavaScript is still loading. If this message persists, it\n", + " likely means that the widgets JavaScript library is either not installed or\n", + " not enabled. See the Jupyter\n", + " Widgets Documentation for setup instructions.\n", + "

\n", + "

\n", + " If you're reading this message in another frontend (for example, a static\n", + " rendering on GitHub or NBViewer),\n", + " it may mean that your frontend doesn't currently support widgets.\n", + "

\n" + ], + "text/plain": [ + "VBox(children=(HTML(value=\"

Job Status : job is being initialized

\"),))" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%qiskit_job_status\n", + "\n", + "# Use the IBM Quantum Experience\n", + "backend = least_busy(IBMQ.backends(simulator=False))\n", + "shots = 1024\n", + "\n", + "job_exp = execute(qft3, backend=backend, shots=shots)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results = job_exp.result()\n", + "plot_histogram(results.get_counts())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that the highest probability outcome $001$ when we execute the code on `IBMQ device`." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/exercises/w7_02.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/exercises/w7_02.ipynb new file mode 100644 index 000000000..71b0f8e44 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/exercises/w7_02.ipynb @@ -0,0 +1,779 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## _*Shor's Algorithm for Integer Factorization*_ \n", + "\n", + "This notebook is based on an official notebook by Qiskit team, available at https://github.com/qiskit/qiskit-tutorial under the [Apache License 2.0](https://github.com/Qiskit/qiskit-tutorial/blob/master/LICENSE) license. \n", + "Initially done by Anna Phan.\n", + "\n", + "In this tutorial, we first introduce the problem of [integer factorization](#factorization) and describe how [Shor's algorithm](#shorsalgorithm) solves it in detail. We then [implement](#implementation) a version of it in Qiskit.\n", + "\n", + "\n", + "Your **TASK** is to follow the tutorial, as you implement Shor's algorithm (studied this week) to a real, albeit simple, integer factorization task!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Integer Factorization \n", + "\n", + "Integer factorization is the decomposition of an composite integer into a product of smaller integers, for example, the integer $100$ can be factored into $10 \\times 10$. If these factors are restricted to prime numbers, the process is called prime factorization, for example, the prime factorization of $100$ is $2 \\times 2 \\times 5 \\times 5$. \n", + "\n", + "When the integers are very large, no efficient classical integer factorization algorithm is known. The hardest factorization problems are semiprime numbers, the product of two prime numbers. In [2009](https://link.springer.com/chapter/10.1007/978-3-642-14623-7_18), a team of researchers factored a 232 decimal digit semiprime number (768 bits), spending the computational equivalent of more than two thousand years on a single core 2.2 GHz AMD Opteron processor with 2 GB RAM:\n", + "```\n", + "RSA-768 = 12301866845301177551304949583849627207728535695953347921973224521517264005 \n", + " 07263657518745202199786469389956474942774063845925192557326303453731548268 \n", + " 50791702612214291346167042921431160222124047927473779408066535141959745985 \n", + " 6902143413 \n", + " \n", + " = 33478071698956898786044169848212690817704794983713768568912431388982883793 \n", + " 878002287614711652531743087737814467999489 \n", + " × 36746043666799590428244633799627952632279158164343087642676032283815739666 \n", + " 511279233373417143396810270092798736308917 \n", + "```\n", + "The presumed difficulty of this semiprime factorization problem underlines many encryption algorithms, such as [RSA](https://www.google.com/patents/US4405829), which is used in online credit card transactions, amongst other applications.\n", + "***" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Shor's Algorithm \n", + "\n", + "Shor's algorithm, named after mathematician Peter Shor, is a polynomial time quantum algorithm for integer factorization formulated in [1994](http://epubs.siam.org/doi/10.1137/S0097539795293172). It is arguably the most dramatic example of how the paradigm of quantum computing changed our perception of which computational problems should be considered tractable, motivating the study of new quantum algorithms and efforts to design and construct quantum computers. It also has expedited research into new cryptosystems not based on integer factorization. \n", + "\n", + "Shor's algorithm has been experimentally realised by multiple teams for specific composite integers. The composite $15$ was first factored into $3 \\times 5$ in [2001](https://www.nature.com/nature/journal/v414/n6866/full/414883a.html) using seven NMR qubits, and has since been implemented using four photon qubits in 2007 by [two](https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.99.250504) [teams](https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.99.250505), three solid state qubits in [2012](https://www.nature.com/nphys/journal/v8/n10/full/nphys2385.html) and five trapped ion qubits in [2016](http://science.sciencemag.org/content/351/6277/1068). The composite $21$ has also been factored into $3 \\times 7$ in [2012](http://www.nature.com/nphoton/journal/v6/n11/full/nphoton.2012.259.html) using a photon qubit and qutrit (a three level system). Note that these experimental demonstrations rely on significant optimisations of Shor's algorithm based on apriori knowledge of the expected results. In general, [$2 + \\frac{3}{2}\\log_2N$](https://link-springer-com.virtual.anu.edu.au/chapter/10.1007/3-540-49208-9_15) qubits are needed to factor the composite integer $N$, meaning at least $1,154$ qubits would be needed to factor $RSA-768$ above.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-26T17:12:22.738849Z", + "start_time": "2018-09-26T17:12:22.719241Z" + }, + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "HTML('
')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As Peter Shor describes in the video above from [PhysicsWorld](http://physicsworld.com/cws/article/multimedia/2015/sep/30/what-is-shors-factoring-algorithm), Shor’s algorithm is composed of three parts. The first part turns the factoring problem into a period finding problem using number theory, which can be computed on a classical computer. The second part finds the period using the quantum Fourier transform and is responsible for the quantum speedup of the algorithm. The third part uses the period found to calculate the factors.\n", + "\n", + "The following sections go through the algorithm in detail, for those who just want the steps, without the lengthy explanation, refer to the [blue](#stepsone) [boxes](#stepstwo) before jumping down to the [implemention](#implemention). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### From Factorization to Period Finding\n", + "\n", + "The number theory that underlines Shor's algorithm relates to periodic modulo sequences. Let's have a look at an example of such a sequence. Consider the sequence of the powers of two: \n", + "$$1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, ...$$\n", + "Now let's look at the same sequence 'modulo 15', that is, the remainder after fifteen divides each of these powers of two:\n", + "$$1, 2, 4, 8, 1, 2, 4, 8, 1, 2, 4, ...$$\n", + "This is a modulo sequence that repeats every four numbers, that is, a periodic modulo sequence with a period of four.\n", + "\n", + "Reduction of factorization of $N$ to the problem of finding the period of an integer $x$ less than $N$ and greater than $1$ depends on the following result from number theory:\n", + "\n", + "> The function $\\mathcal{F}(a) = x^a \\bmod N$ is a periodic function, where $x$ is an integer coprime to $N$ and $a \\ge 0$.\n", + "\n", + "Note that two numbers are coprime, if the only positive integer that divides both of them is 1. This is equivalent to their greatest common divisor being 1. For example, 8 and 15 are coprime, as they don't share any common factors (other than 1). However, 9 and 15 are not coprime, since they are both divisible by 3 (and 1). \n", + "\n", + "> Since $\\mathcal{F}(a)$ is a periodic function, it has some period $r$. Knowing that $x^0 \\bmod N = 1$, this means that $x^r \\bmod N = 1$ since the function is periodic, and thus $r$ is just the first nonzero power where $x^r = 1 (\\bmod N)$.\n", + "\n", + "Given this information and through the following algebraic manipulation: \n", + "$$ x^r \\equiv 1 \\bmod N $$\n", + "$$ x^r = (x^{r/2})^2 \\equiv 1 \\bmod N $$\n", + "$$ (x^{r/2})^2 - 1 \\equiv 0 \\bmod N $$\n", + "and if $r$ is an even number:\n", + "$$ (x^{r/2} + 1)(x^{r/2} - 1) \\equiv 0 \\bmod N $$\n", + "\n", + "From this, the product $(x^{r/2} + 1)(x^{r/2} - 1)$ is an integer multiple of $N$, the number to be factored. Thus, so long as $(x^{r/2} + 1)$ or $(x^{r/2} - 1)$ is not a multiple of $N$, then at least one of $(x^{r/2} + 1)$ or $(x^{r/2} - 1)$ must have a nontrivial factor in common with $N$. \n", + "\n", + "So computing $\\text{gcd}(x^{r/2} - 1, N)$ and $\\text{gcd}(x^{r/2} + 1, N)$ will obtain a factor of $N$, where $\\text{gcd}$ is the greatest common denominator function, which can be calculated by the polynomial time [Euclidean algorithm](https://en.wikipedia.org/wiki/Euclidean_algorithm). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Classical Steps to Shor's Algorithm\n", + "\n", + "Let's assume for a moment that a period finding machine exists that takes as input coprime integers $x, N$ and outputs the period of $x \\bmod N$, implemented by as a brute force search below. Let's show how to use the machine to find all prime factors of $N$ using the number theory described above. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-26T17:12:26.676176Z", + "start_time": "2018-09-26T17:12:26.670043Z" + } + }, + "outputs": [], + "source": [ + "# Brute force period finding algorithm\n", + "def find_period_classical(x, N):\n", + " n = 1\n", + " t = x\n", + " while t != 1:\n", + " t *= x\n", + " t %= N\n", + " n += 1\n", + " return n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For simplicity, assume that $N$ has only two distinct prime factors: $N = pq$.\n", + "\n", + "
\n", + "
    \n", + "
  1. Pick a random integer $x$ between $1$ and $N$ and compute the greatest common divisor $\\text{gcd}(x,N)$ using Euclid's algorithm.
  2. \n", + "
  3. If $x$ and $N$ have some common prime factors, $\\text{gcd}(x,N)$ will equal $p$ or $q$. Otherwise $\\text{gcd}(x,N) = 1$, meaning $x$ and $N$ are coprime.
  4. \n", + "
  5. Let $r$ be the period of $x \\bmod N$ computed by the period finding machine. Repeat the above steps with different random choices of $x$ until $r$ is even.
  6. \n", + "
  7. Now $p$ and $q$ can be found by computing $\\text{gcd}(x^{r/2} \\pm 1, N)$ as long as $x^{r/2} \\neq \\pm 1$.
  8. \n", + "
\n", + "
\n", + "\n", + "As an example, consider $N = 15$. Let's look at all values of $1 < x < 15$ where $x$ is coprime with $15$:\n", + "\n", + "| $x$ | $x^a \\bmod 15$ | Period $r$ |$\\text{gcd}(x^{r/2}-1,15)$|$\\text{gcd}(x^{r/2}+1,15)$ | \n", + "|:-----:|:----------------------------:|:----------:|:------------------------:|:-------------------------:|\n", + "| 2 | 1,2,4,8,1,2,4,8,1,2,4... | 4 | 3 | 5 |\n", + "| 4 | 1,4,1,4,1,4,1,4,1,4,1... | 2 | 3 | 5 |\n", + "| 7 | 1,7,4,13,1,7,4,13,1,7,4... | 4 | 3 | 5 |\n", + "| 8 | 1,8,4,2,1,8,4,2,1,8,4... | 4 | 3 | 5 |\n", + "| 11 | 1,11,1,11,1,11,1,11,1,11,1...| 2 | 5 | 3 |\n", + "| 13 | 1,13,4,7,1,13,4,7,1,13,4,... | 4 | 3 | 5 |\n", + "| 14 | 1,14,1,14,1,14,1,14,1,14,1,,,| 2 | 1 | 15 |\n", + "\n", + "As can be seen, any value of $x$ except $14$ will return the factors of $15$, that is, $3$ and $5$. $14$ is an example of the special case where $(x^{r/2} + 1)$ or $(x^{r/2} - 1)$ is a multiple of $N$ and thus another $x$ needs to be tried. \n", + "\n", + "In general, it can be shown that this special case occurs infrequently, so on average only two calls to the period finding machine are sufficient to factor $N$. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "For a more interesting example, first let's find larger number N, that is semiprime that is relatively small. Using the [Sieve of Eratosthenes](https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes) [Python implementation](http://archive.oreilly.com/pub/a/python/excerpt/pythonckbk_chap1/index1.html?page=last), let's generate a list of all the prime numbers less than a thousand, randomly select two, and muliply them." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-26T17:12:28.800866Z", + "start_time": "2018-09-26T17:12:28.789601Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "semiprime N = 216773\n" + ] + } + ], + "source": [ + "import random, itertools\n", + "\n", + "# Sieve of Eratosthenes algorithm\n", + "def sieve( ):\n", + " D = { }\n", + " yield 2\n", + " for q in itertools.islice(itertools.count(3), 0, None, 2):\n", + " p = D.pop(q, None)\n", + " if p is None:\n", + " D[q*q] = q\n", + " yield q\n", + " else:\n", + " x = p + q\n", + " while x in D or not (x&1):\n", + " x += p\n", + " D[x] = p\n", + "\n", + "# Creates a list of prime numbers up to the given argument\n", + "def get_primes_sieve(n):\n", + " return list(itertools.takewhile(lambda p: p\n", + "\n", + "Let's first describe the quantum period finding algorithm, and then go through a few of the steps in detail, before going through an example. This algorithm takes two coprime integers, $x$ and $N$, and outputs $r$, the period of $\\mathcal{F}(a) = x^a\\bmod N$.\n", + "\n", + "
\n", + "
    \n", + "
  1. Choose $T = 2^t$ such that $N^2 \\leq T \\le 2N^2$. Initialise two registers of qubits, first an argument register with $t$ qubits and second a function register with $n = log_2 N$ qubits. These registers start in the initial state:\n", + "$$\\vert\\psi_0\\rangle = \\vert 0 \\rangle \\vert 0 \\rangle$$
  2. \n", + "
  3. Apply a Hadamard gate on each of the qubits in the argument register to yield an equally weighted superposition of all integers from $0$ to $T$:\n", + "$$\\vert\\psi_1\\rangle = \\frac{1}{\\sqrt{T}}\\sum_{a=0}^{T-1}\\vert a \\rangle \\vert 0 \\rangle$$
  4. \n", + "
  5. Implement the modular exponentiation function $x^a \\bmod N$ on the function register, giving the state:\n", + "$$\\vert\\psi_2\\rangle = \\frac{1}{\\sqrt{T}}\\sum_{a=0}^{T-1}\\vert a \\rangle \\vert x^a \\bmod N \\rangle$$\n", + "This $\\vert\\psi_2\\rangle$ is highly entangled and exhibits quantum parallism, i.e. the function entangled in parallel all the 0 to $T$ input values with the corresponding values of $x^a \\bmod N$, even though the function was only executed once.
  6. \n", + "
  7. Perform a quantum Fourier transform on the argument register, resulting in the state:\n", + "$$\\vert\\psi_3\\rangle = \\frac{1}{T}\\sum_{a=0}^{T-1}\\sum_{z=0}^{T-1}e^{(2\\pi i)(az/T)}\\vert z \\rangle \\vert x^a \\bmod N \\rangle$$\n", + "where due to the interference, only the terms $\\vert z \\rangle$ with\n", + "$$z = qT/r $$\n", + "have significant amplitude where $q$ is a random integer ranging from $0$ to $r-1$ and $r$ is the period of $\\mathcal{F}(a) = x^a\\bmod N$.
  8. \n", + "
  9. Measure the argument register to obtain classical result $z$. With reasonable probability, the continued fraction approximation of $T / z$ will be an integer multiple of the period $r$. Euclid's algorithm can then be used to find $r$.
  10. \n", + "
\n", + "
\n", + "\n", + "Note how quantum parallelism and constructive interference have been used to detect and measure periodicity of the modular exponentiation function. The fact that interference makes it easier to measure periodicity should not come as a big surprise. After all, physicists routinely use scattering of electromagnetic waves and interference measurements to determine periodicity of physical objects such as crystal lattices. Likewise, Shor's algorithm exploits interference to measure periodicity of arithmetic objects, a computational interferometer of sorts. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Modular Exponentiation\n", + "\n", + "The modular exponentiation, step 3 above, that is the evaluation of $x^a \\bmod N$ for $2^t$ values of $a$ in parallel, is the most demanding part of the algorithm. This can be performed using the following identity for the binary representation of any integer: $x = x_{t-1}2^{t-1} + ... x_12^1+x_02^0$, where $x_t$ are the binary digits of $x$. From this, it follows that:\n", + "\n", + "\\begin{aligned}\n", + "x^a \\bmod N & = x^{2^{(t-1)}a_{t-1}} ... x^{2a_1}x^{a_0} \\bmod N \\\\\n", + "& = x^{2^{(t-1)}a_{t-1}} ... [x^{2a_1}[x^{2a_0} \\bmod N] \\bmod N] ... \\bmod N \\\\\n", + "\\end{aligned}\n", + "\n", + "This means that 1 is first multiplied by $x^1 \\bmod N$ if and only if $a_0 = 1$, then the result is multiplied by $x^2 \\bmod N$ if and only if $a_1 = 1$ and so forth, until finally the result is multiplied by $x^{2^{(s-1)}}\\bmod N$ if and only if $a_{t-1} = 1$. \n", + "\n", + "Therefore, the modular exponentiation consists of $t$ serial multiplications modulo $N$, each of them controlled by the qubit $a_t$. The values $x,x^2,...,x^{2^{(t-1)}} \\bmod N$ can be found efficiently on a classical computer by repeated squaring." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Quantum Fourier Transform\n", + "\n", + "The Fourier transform occurs in many different versions throughout classical computing, in areas ranging from signal processing to data compression to complexity theory. The quantum Fourier transform (QFT), step 4 above, is the quantum implementation of the discrete Fourier transform over the amplitudes of a wavefunction. \n", + "\n", + "The classical discrete Fourier transform acts on a vector $(x_0, ..., x_{N-1})$ and maps it to the vector $(y_0, ..., y_{N-1})$ according to the formula\n", + "$$y_k = \\frac{1}{\\sqrt{N}}\\sum_{j=0}^{N-1}x_j\\omega_N^{jk}$$\n", + "where $\\omega_N^{jk} = e^{2\\pi i \\frac{jk}{N}}$.\n", + "\n", + "Similarly, the quantum Fourier transform acts on a quantum state $\\sum_{i=0}^{N-1} x_i \\vert i \\rangle$ and maps it to the quantum state $\\sum_{i=0}^{N-1} y_i \\vert i \\rangle$ according to the formula\n", + "$$y_k = \\frac{1}{\\sqrt{N}}\\sum_{j=0}^{N-1}x_j\\omega_N^{jk}$$\n", + "with $\\omega_N^{jk}$ defined as above. Note that only the amplitudes of the state were affected by this transformation.\n", + "\n", + "This can also be expressed as the map:\n", + "$$\\vert x \\rangle \\mapsto \\frac{1}{\\sqrt{N}}\\sum_{y=0}^{N-1}\\omega_N^{xy} \\vert y \\rangle$$\n", + "\n", + "Or the unitary matrix:\n", + "$$ U_{QFT} = \\frac{1}{\\sqrt{N}} \\sum_{x=0}^{N-1} \\sum_{y=0}^{N-1} \\omega_N^{xy} \\vert y \\rangle \\langle x \\vert$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As an example, we've actually already seen the quantum Fourier transform for when $N = 2$, it is the Hadamard operator ($H$):\n", + "$$H = \\frac{1}{\\sqrt{2}}\\begin{bmatrix} 1 & 1 \\\\ 1 & -1 \\end{bmatrix}$$\n", + "Suppose we have the single qubit state $\\alpha \\vert 0 \\rangle + \\beta \\vert 1 \\rangle$, if we apply the $H$ operator to this state, we obtain the new state:\n", + "$$\\frac{1}{\\sqrt{2}}(\\alpha + \\beta) \\vert 0 \\rangle + \\frac{1}{\\sqrt{2}}(\\alpha - \\beta) \\vert 1 \\rangle \n", + "\\equiv \\tilde{\\alpha}\\vert 0 \\rangle + \\tilde{\\beta}\\vert 1 \\rangle$$\n", + "Notice how the Hadamard gate performs the discrete Fourier transform for $N = 2$ on the amplitudes of the state. \n", + "\n", + "So what does the quantum Fourier transform look like for larger N? Let's derive a circuit for $N=2^n$, $QFT_N$ acting on the state $\\vert x \\rangle = \\vert x_1...x_n \\rangle$ where $x_1$ is the most significant bit.\n", + "\\begin{aligned}\n", + "QFT_N\\vert x \\rangle & = \\frac{1}{\\sqrt{N}} \\sum_{y=0}^{N-1}\\omega_N^{xy} \\vert y \\rangle \\\\\n", + "& = \\frac{1}{\\sqrt{N}} \\sum_{y=0}^{N-1} e^{2 \\pi i xy / 2^n} \\vert y \\rangle \\:\\text{since}\\: \\omega_N^{xy} = e^{2\\pi i \\frac{xy}{N}} \\:\\text{and}\\: N = 2^n\\\\\n", + "& = \\frac{1}{\\sqrt{N}} \\sum_{y=0}^{N-1} e^{2 \\pi i \\left(\\sum_{k=1}^n y_k/2^k\\right) x} \\vert y_1 ... y_n \\rangle \\:\\text{rewriting in fractional binary notation}\\: y = y_1...y_k, y/2^n = \\sum_{k=1}^n y_k/2^k \\\\\n", + "& = \\frac{1}{\\sqrt{N}} \\sum_{y=0}^{N-1} \\prod_{k=0}^n e^{2 \\pi i x y_k/2^k } \\vert y_1 ... y_n \\rangle \\:\\text{after expanding the exponential of a sum to a product of exponentials} \\\\\n", + "& = \\frac{1}{\\sqrt{N}} \\bigotimes_{k=1}^n \\left(\\vert0\\rangle + e^{2 \\pi i x /2^k } \\vert1\\rangle \\right) \\:\\text{after rearranging the sum and products, and expanding} \\\\\n", + "& = \\frac{1}{\\sqrt{N}} \\left(\\vert0\\rangle + e^{2 \\pi i[0.x_n]} \\vert1\\rangle\\right) \\otimes...\\otimes \\left(\\vert0\\rangle + e^{2 \\pi i[0.x_1.x_2...x_{n-1}.x_n]} \\vert1\\rangle\\right) \\:\\text{as}\\: e^{2 \\pi i x/2^k} = e^{2 \\pi i[0.x_k...x_n]} \n", + "\\end{aligned}\n", + "\n", + "This is a very useful form of the QFT for $N=2^n$ as only the last qubit depends on the the\n", + "values of all the other input qubits and each further bit depends less and less on the input qubits. Furthermore, note that $e^{2 \\pi i.0.x_n}$ is either $+1$ or $-1$, which resembles the Hadamard transform.\n", + "\n", + "Before we create the circuit code for general $N=2^n$, let's look at $N=8,n=3$:\n", + "$$QFT_8\\vert x_1x_2x_3\\rangle = \\frac{1}{\\sqrt{8}} \\left(\\vert0\\rangle + e^{2 \\pi i[0.x_3]} \\vert1\\rangle\\right) \\otimes \\left(\\vert0\\rangle + e^{2 \\pi i[0.x_2.x_3]} \\vert1\\rangle\\right) \\otimes \\left(\\vert0\\rangle + e^{2 \\pi i[0.x_1.x_2.x_3]} \\vert1\\rangle\\right) $$\n", + "\n", + "The steps to creating the circuit for $\\vert y_1y_2x_3\\rangle = QFT_8\\vert x_1x_2x_3\\rangle$, remembering the [controlled phase rotation gate](../tools/quantum_gates_and_linear_algebra.ipynb\n", + ") $CU_1$, would be:\n", + "1. Apply a Hadamard to $\\vert x_3 \\rangle$, giving the state $\\frac{1}{\\sqrt{2}}\\left(\\vert0\\rangle + e^{2 \\pi i.0.x_3} \\vert1\\rangle\\right) = \\frac{1}{\\sqrt{2}}\\left(\\vert0\\rangle + (-1)^{x_3} \\vert1\\rangle\\right)$\n", + "2. Apply a Hadamard to $\\vert x_2 \\rangle$, then depending on $k_3$ (before the Hadamard gate) a $CU_1(\\frac{\\pi}{2})$, giving the state $\\frac{1}{\\sqrt{2}}\\left(\\vert0\\rangle + e^{2 \\pi i[0.x_2.x_3]} \\vert1\\rangle\\right)$.\n", + "3. Apply a Hadamard to $\\vert x_1 \\rangle$, then $CU_1(\\frac{\\pi}{2})$ depending on $k_2$, and $CU_1(\\frac{\\pi}{4})$ depending on $k_3$.\n", + "4. Measure the bits in reverse order, that is $y_3 = x_1, y_2 = x_2, y_1 = y_3$.\n", + "\n", + "In Qiskit, this is:\n", + "```python\n", + "q3 = QuantumRegister(3, 'q3')\n", + "c3 = ClassicalRegister(3, 'c3')\n", + "\n", + "qft3 = QuantumCircuit(q3, c3)\n", + "qft3.h(q[0])\n", + "qft3.cu1(math.pi/2.0, q3[1], q3[0])\n", + "qft3.h(q[1])\n", + "qft3.cu1(math.pi/4.0, q3[2], q3[0])\n", + "qft3.cu1(math.pi/2.0, q3[2], q3[1])\n", + "qft3.h(q[2])\n", + "```\n", + "\n", + "For $N=2^n$, this can be generalised, as in the `qft` function in [tools.qi](https://github.com/Q/qiskit-terra/blob/master/qiskit/tools/qi/qi.py):\n", + "```python\n", + "def qft(circ, q, n):\n", + " \"\"\"n-qubit QFT on q in circ.\"\"\"\n", + " for j in range(n):\n", + " for k in range(j):\n", + " circ.cu1(math.pi/float(2**(j-k)), q[j], q[k])\n", + " circ.h(q[j])\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Example\n", + "\n", + "Let's factorize $N = 21$ with coprime $x=2$, following the [above steps](#stepstwo) of the quantum period finding algorithm, which should return $r = 6$. This example follows one from [this](https://arxiv.org/abs/quant-ph/0303175) tutorial. \n", + "\n", + "1. Choose $T = 2^t$ such that $N^2 \\leq T \\le 2N^2$. For $N = 21$, the smallest value of $t$ is 9, meaning $T = 2^t = 512$. Initialise two registers of qubits, first an argument register with $t = 9$ qubits, and second a function register with $n = log_2 N = 5$ qubits: \n", + "$$\\vert\\psi_0\\rangle = \\vert 0 \\rangle \\vert 0 \\rangle$$\n", + "\n", + "2. Apply a Hadamard gate on each of the qubits in the argument register: \n", + "$$\\vert\\psi_1\\rangle = \\frac{1}{\\sqrt{T}}\\sum_{a=0}^{T-1}\\vert a \\rangle \\vert 0 \\rangle = \\frac{1}{\\sqrt{512}}\\sum_{a=0}^{511}\\vert a \\rangle \\vert 0 \\rangle$$\n", + "\n", + "3. Implement the modular exponentiation function $x^a \\bmod N$ on the function register:\n", + "\\begin{eqnarray}\n", + "\\vert\\psi_2\\rangle \n", + "& = & \\frac{1}{\\sqrt{T}}\\sum_{a=0}^{T-1}\\vert a \\rangle \\vert x^a \\bmod N \\rangle\n", + " = \\frac{1}{\\sqrt{512}}\\sum_{a=0}^{511}\\vert a \\rangle \\vert 2^a \\bmod 21 \\rangle \\\\\n", + "& = & \\frac{1}{\\sqrt{512}} \\bigg( \\;\\; \\vert 0 \\rangle \\vert 1 \\rangle + \\vert 1 \\rangle \\vert 2 \\rangle +\n", + "\\vert 2 \\rangle \\vert 4 \\rangle + \\vert 3 \\rangle \\vert 8 \\rangle + \\;\\; \\vert 4 \\rangle \\vert 16 \\rangle + \\;\\,\n", + "\\vert 5 \\rangle \\vert 11 \\rangle \\, + \\\\\n", + "& & \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\, \\vert 6 \\rangle \\vert 1 \\rangle + \\vert 7 \\rangle \\vert 2 \\rangle + \\vert 8 \\rangle \\vert 4 \\rangle + \\vert 9 \\rangle \\vert 8 \\rangle + \\vert 10 \\rangle \\vert 16 \\rangle + \\vert 11 \\rangle \\vert 11 \\rangle \\, +\\\\\n", + "& & \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\, \\vert 12 \\rangle \\vert 1 \\rangle + \\ldots \\bigg)\\\\\n", + "\\end{eqnarray}\n", + "Notice that the above expression has the following pattern: the states of the second register of each “column” are the same. Therefore we can rearrange the terms in order to collect the second register:\n", + "\\begin{eqnarray}\n", + "\\vert\\psi_2\\rangle \n", + "& = & \\frac{1}{\\sqrt{512}} \\bigg[ \\big(\\,\\vert 0 \\rangle + \\;\\vert 6 \\rangle + \\vert 12 \\rangle \\ldots + \\vert 504 \\rangle + \\vert 510 \\rangle \\big) \\, \\vert 1 \\rangle \\, + \\\\\n", + "& & \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\; \\big(\\,\\vert 1 \\rangle + \\;\\vert 7 \\rangle + \\vert 13 \\rangle \\ldots + \\vert 505 \\rangle + \\vert 511 \\rangle \\big) \\, \\vert 2 \\rangle \\, + \\\\\n", + "& & \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\; \\big(\\,\\vert 2 \\rangle + \\;\\vert 8 \\rangle + \\vert 14 \\rangle \\ldots + \\vert 506 \\rangle + \\big) \\, \\vert 4 \\rangle \\, + \\\\\n", + "& & \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\; \\big(\\,\\vert 3 \\rangle + \\;\\vert 9 \\rangle + \\vert 15 \\rangle \\ldots + \\vert 507 \\rangle + \\big) \\, \\vert 8 \\rangle \\, + \\\\\n", + "& & \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\; \\big(\\,\\vert 4 \\rangle + \\vert 10 \\rangle + \\vert 16 \\rangle \\ldots + \\vert 508 \\rangle + \\big) \\vert 16 \\rangle \\, + \\\\\n", + "& & \\;\\;\\;\\;\\;\\;\\;\\;\\;\\;\\; \\big(\\,\\vert 5 \\rangle + \\vert 11 \\rangle + \\vert 17 \\rangle \\ldots + \\vert 509 \\rangle + \\big) \\vert 11 \\rangle \\, \\bigg]\\\\\n", + "\\end{eqnarray}\n", + "\n", + "4. To simplify following equations, we'll measure the function register before performing a quantum Fourier transform on the argument register. This will yield one of the following numbers with equal probability: $\\{1,2,4,6,8,16,11\\}$. Suppose that the result of the measurement was $2$, then:\n", + "$$\\vert\\psi_3\\rangle = \\frac{1}{\\sqrt{86}}(\\vert 1 \\rangle + \\;\\vert 7 \\rangle + \\vert 13 \\rangle \\ldots + \\vert 505 \\rangle + \\vert 511 \\rangle)\\, \\vert 2 \\rangle $$\n", + "It does not matter what is the result of the measurement; what matters is the periodic pattern. The period of the states of the first register is the solution to the problem and the quantum Fourier transform can reveal the value of the period.\n", + "\n", + "5. Perform a quantum Fourier transform on the argument register:\n", + "$$\n", + "\\vert\\psi_4\\rangle\n", + " = QFT(\\vert\\psi_3\\rangle)\n", + " = QFT(\\frac{1}{\\sqrt{86}}\\sum_{a=0}^{85}\\vert 6a+1 \\rangle)\\vert 2 \\rangle\n", + " = \\frac{1}{\\sqrt{512}}\\sum_{j=0}^{511}\\bigg(\\big[ \\frac{1}{\\sqrt{86}}\\sum_{a=0}^{85} e^{-2 \\pi i \\frac{6ja}{512}} \\big] e^{-2\\pi i\\frac{j}{512}}\\vert j \\rangle \\bigg)\\vert 2 \\rangle\n", + "$$\n", + "\n", + "6. Measure the argument register. The probability of measuring a result $j$ is:\n", + "$$ \\rm{Probability}(j) = \\frac{1}{512 \\times 86} \\bigg\\vert \\sum_{a=0}^{85}e^{-2 \\pi i \\frac{6ja}{512}} \\bigg\\vert^2$$\n", + "This peaks at $j=0,85,171,256,341,427$. Suppose that the result of the measement yielded $j = 85$, then using continued fraction approximation of $\\frac{512}{85}$, we obtain $r=6$, as expected. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Implementation " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-26T17:12:32.454145Z", + "start_time": "2018-09-26T17:12:30.093921Z" + } + }, + "outputs": [], + "source": [ + "from qiskit import Aer\n", + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import execute, register, get_backend, compile\n", + "from qiskit.tools.visualization import plot_histogram, circuit_drawer" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As mentioned [earlier](#shorsalgorithm), many of the experimental demonstrations of Shor's algorithm rely on significant optimisations based on apriori knowledge of the expected results. We will follow the formulation in [this](http://science.sciencemag.org/content/351/6277/1068) paper, which demonstrates a reasonably scalable realisation of Shor's algorithm using $N = 15$. Below is the first figure from the paper, showing various quantum circuits, with the following caption: _Diagrams of Shor’s algorithm for factoring $N = 15$, using a generic textbook approach (**A**) compared with Kitaev’s approach (**B**) for a generic base $a$. (**C**) The actual implementation for factoring $15$ to base $11$, optimized for the corresponding single-input state. Here $q_i$ corresponds to the respective qubit in the computational register. (**D**) Kitaev’s approach to Shor’s algorithm for the bases ${2, 7, 8, 13}$. Here, the optimized map of the first multiplier is identical in all four cases, and the last multiplier is implemented with full modular multipliers, as depicted in (**E**). In all cases, the single QFT qubit is used three times, which, together with the four qubits in the computation register, totals seven effective qubits. (**E**) Circuit diagrams of the modular multipliers of the form $a \\bmod N$ for bases $a = {2, 7, 8, 11, 13}$._\n", + "\n", + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"center\">\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that we cannot run this version of Shor's algorithm on an IBM Quantum Experience device at the moment as we currently lack the ability to do measurement feedforward and qubit resetting. Thus we'll just be building the ciruits to run on the simulators for now. Based on Pinakin Padalia & Amitabh Yadav's implementation, found [here](https://github.com/amitabhyadav/Shor-Algorithm-on-IBM-Quantum-Experience)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we'll construct the $a^1 \\bmod 15$ circuits for $a = 2,7,8,11,13$ as in **E**:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-26T17:12:32.467183Z", + "start_time": "2018-09-26T17:12:32.459175Z" + } + }, + "outputs": [], + "source": [ + "# qc = quantum circuit, qr = quantum register, cr = classical register, a = 2, 7, 8, 11 or 13\n", + "def circuit_amod15(qc,qr,cr,a):\n", + " if a == 2:\n", + " qc.cswap(qr[4],qr[3],qr[2])\n", + " qc.cswap(qr[4],qr[2],qr[1])\n", + " qc.cswap(qr[4],qr[1],qr[0])\n", + " elif a == 7:\n", + " qc.cswap(qr[4],qr[1],qr[0])\n", + " qc.cswap(qr[4],qr[2],qr[1])\n", + " qc.cswap(qr[4],qr[3],qr[2])\n", + " qc.cx(qr[4],qr[3])\n", + " qc.cx(qr[4],qr[2])\n", + " qc.cx(qr[4],qr[1])\n", + " qc.cx(qr[4],qr[0])\n", + " elif a == 8:\n", + " qc.cswap(qr[4],qr[1],qr[0])\n", + " qc.cswap(qr[4],qr[2],qr[1])\n", + " qc.cswap(qr[4],qr[3],qr[2])\n", + " elif a == 11: # this is included for completeness\n", + " qc.cswap(qr[4],qr[2],qr[0])\n", + " qc.cswap(qr[4],qr[3],qr[1])\n", + " qc.cx(qr[4],qr[3])\n", + " qc.cx(qr[4],qr[2])\n", + " qc.cx(qr[4],qr[1])\n", + " qc.cx(qr[4],qr[0])\n", + " elif a == 13:\n", + " qc.cswap(qr[4],qr[3],qr[2])\n", + " qc.cswap(qr[4],qr[2],qr[1])\n", + " qc.cswap(qr[4],qr[1],qr[0])\n", + " qc.cx(qr[4],qr[3])\n", + " qc.cx(qr[4],qr[2])\n", + " qc.cx(qr[4],qr[1])\n", + " qc.cx(qr[4],qr[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we'll build the rest of the period finding circuit as in **D**:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-26T17:12:32.481843Z", + "start_time": "2018-09-26T17:12:32.470502Z" + } + }, + "outputs": [], + "source": [ + "# qc = quantum circuit, qr = quantum register, cr = classical register, a = 2, 7, 8, 11 or 13\n", + "def circuit_aperiod15(qc,qr,cr,a):\n", + " if a == 11:\n", + " circuit_11period15(qc,qr,cr)\n", + " return\n", + " \n", + " # Initialize q[0] to |1> \n", + " qc.x(qr[0])\n", + "\n", + " # Apply a**4 mod 15\n", + " qc.h(qr[4])\n", + " # controlled identity on the remaining 4 qubits, which is equivalent to doing nothing\n", + " qc.h(qr[4])\n", + " # measure\n", + " qc.measure(qr[4],cr[0])\n", + " # reinitialise q[4] to |0>\n", + " qc.reset(qr[4])\n", + "\n", + " # Apply a**2 mod 15\n", + " qc.h(qr[4])\n", + " # controlled unitary\n", + " qc.cx(qr[4],qr[2])\n", + " qc.cx(qr[4],qr[0])\n", + " # feed forward\n", + " if cr[0] == 1:\n", + " qc.u1(math.pi/2.,qr[4])\n", + " qc.h(qr[4])\n", + " # measure\n", + " qc.measure(qr[4],cr[1])\n", + " # reinitialise q[4] to |0>\n", + " qc.reset(qr[4])\n", + "\n", + " # Apply a mod 15\n", + " qc.h(qr[4])\n", + " # controlled unitary.\n", + " circuit_amod15(qc,qr,cr,a)\n", + " # feed forward\n", + " if cr[1] == 1:\n", + " qc.u1(math.pi/2.,qr[4])\n", + " if cr[0] == 1:\n", + " qc.u1(math.pi/4.,qr[4])\n", + " qc.h(qr[4])\n", + " # measure\n", + " qc.measure(qr[4],cr[2])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we build the optimised circuit for $11 \\bmod 15$ as in **C**." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-26T17:12:32.493545Z", + "start_time": "2018-09-26T17:12:32.484582Z" + } + }, + "outputs": [], + "source": [ + "def circuit_11period15(qc,qr,cr):\n", + " # Initialize q[0] to |1> \n", + " qc.x(qr[0])\n", + "\n", + " # Apply a**4 mod 15\n", + " qc.h(qr[4])\n", + " # controlled identity on the remaining 4 qubits, which is equivalent to doing nothing\n", + " qc.h(qr[4])\n", + " # measure\n", + " qc.measure(qr[4],cr[0])\n", + " # reinitialise q[4] to |0>\n", + " qc.reset(qr[4])\n", + "\n", + " # Apply a**2 mod 15\n", + " qc.h(qr[4])\n", + " # controlled identity on the remaining 4 qubits, which is equivalent to doing nothing\n", + " # feed forward\n", + " if cr[0] == 1:\n", + " qc.u1(math.pi/2.,qr[4])\n", + " qc.h(qr[4])\n", + " # measure\n", + " qc.measure(qr[4],cr[1])\n", + " # reinitialise q[4] to |0>\n", + " qc.reset(qr[4])\n", + "\n", + " # Apply 11 mod 15\n", + " qc.h(qr[4])\n", + " # controlled unitary.\n", + " qc.cx(qr[4],qr[3])\n", + " qc.cx(qr[4],qr[1])\n", + " # feed forward\n", + " if cr[1] == 1:\n", + " qc.u1(math.pi/2.,qr[4])\n", + " if cr[0] == 1:\n", + " qc.u1(math.pi/4.,qr[4])\n", + " qc.h(qr[4])\n", + " # measure\n", + " qc.measure(qr[4],cr[2])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's build and run a circuit for $a = 7$, and plot the results:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-26T17:12:32.830902Z", + "start_time": "2018-09-26T17:12:32.495963Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "q = QuantumRegister(5, 'q')\n", + "c = ClassicalRegister(5, 'c')\n", + "\n", + "shor = QuantumCircuit(q, c)\n", + "circuit_aperiod15(shor,q,c,7)\n", + "\n", + "backend = Aer.get_backend('qasm_simulator')\n", + "sim_job = execute([shor], backend)\n", + "sim_result = sim_job.result()\n", + "sim_data = sim_result.get_counts(shor) \n", + "plot_histogram(sim_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see here that the period, $r = 4$, and thus calculate the factors $p = \\text{gcd}(a^{r/2}+1,15) = 3$ and $q = \\text{gcd}(a^{r/2}-1,15) = 5$. Why don't you try seeing what you get for $a = 2, 8, 11, 13$?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "## Free flow\n", + "You could now try to implement this algorithm for large integers and even conceive a code structure that would handle any integer (python is good because you don't have to make integer memory size considerations), and you are encouraged to do so.\n", + "\n", + "The bad news is your code would not be able to run in a quantum simulator (which can simulate quantum properties at an exponential cost) nor in a real quantum device on IBMQX (as the number of qubits would be insufficient).\n", + "\n", + "However, you may write this code and leave it as a legacy for your grandsons and maybe, just maybe, a time will come when they execute it and it works well enough to break nowadays encryption mechanisms like RSA." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/beamercolorthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/beamercolorthemematerial.sty new file mode 100755 index 000000000..7fbe50bd2 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/beamercolorthemematerial.sty @@ -0,0 +1,286 @@ +\mode + +% light theme +\newcommand{\useLightTheme}{ +\definecolor{text} {HTML}{000000} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{E0E0E0} +\definecolor{BGgrey02}{HTML}{F5F5F5} +\definecolor{BGgrey03}{HTML}{FAFAFA} +\definecolor{BGgrey04}{HTML}{FFFFFF} +} + + +% dark theme +\newcommand{\useDarkTheme}{ +\definecolor{text} {HTML}{FFFFFF} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{000000} +\definecolor{BGgrey02}{HTML}{212121} +\definecolor{BGgrey03}{HTML}{303030} +\definecolor{BGgrey04}{HTML}{424242} +} + +% PRIMARY -------------------------------------------------------------- +\newcommand{\usePrimary}[3]{ +\definecolor{primary} {HTML}{#1} +\definecolor{primaryD}{HTML}{#2} +\definecolor{textPrimary} {HTML}{#3} +} + +% Primary Red +\newcommand{\usePrimaryRed}{ +\definecolor{primary} {HTML}{F44336} +\definecolor{primaryD}{HTML}{D32F2F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Pink +\newcommand{\usePrimaryPink}{ +\definecolor{primary} {HTML}{E91E63} +\definecolor{primaryD}{HTML}{C2185B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Purple +\newcommand{\usePrimaryPurple}{ +\definecolor{primary} {HTML}{6A1B9A} +\definecolor{primaryD}{HTML}{7B1FA2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Deep Purple +\newcommand{\usePrimaryDeepPurple}{ +\definecolor{primary} {HTML}{673AB7} +\definecolor{primaryD}{HTML}{512DA8} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Indigo +\newcommand{\usePrimaryIndigo}{ +\definecolor{primary} {HTML}{3F51B5} +\definecolor{primaryD}{HTML}{303F9F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Blue +\newcommand{\usePrimaryBlue}{ +\definecolor{primary} {HTML}{2196F3} +\definecolor{primaryD}{HTML}{1976D2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Blue +\newcommand{\usePrimaryLightBlue}{ +\definecolor{primary} {HTML}{03A9F4} +\definecolor{primaryD}{HTML}{0288D1} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Cyan +\newcommand{\usePrimaryCyan}{ +\definecolor{primary} {HTML}{00BCD4} +\definecolor{primaryD}{HTML}{0097A7} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Teal +\newcommand{\usePrimaryTeal}{ +\definecolor{primary} {HTML}{009688} +\definecolor{primaryD}{HTML}{00796B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Green +\newcommand{\usePrimaryGreen}{ +\definecolor{primary} {HTML}{4CAF50} +\definecolor{primaryD}{HTML}{388E3C} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Green +\newcommand{\usePrimaryLightGreen}{ +\definecolor{primary} {HTML}{8BC34A} +\definecolor{primaryD}{HTML}{689F38} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Lime +\newcommand{\usePrimaryLime}{ +\definecolor{primary} {HTML}{CDDC39} +\definecolor{primaryD}{HTML}{AFB42B} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Yellow +\newcommand{\usePrimaryYellow}{ +\definecolor{primary} {HTML}{FFEB3B} +\definecolor{primaryD}{HTML}{FBC02D} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Amber +\newcommand{\usePrimaryAmber}{ +\definecolor{primary} {HTML}{FFC107} +\definecolor{primaryD}{HTML}{FFA000} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Orange +\newcommand{\usePrimaryOrange}{ +\definecolor{primary} {HTML}{FF9800} +\definecolor{primaryD}{HTML}{F57C00} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Deep Orange +\newcommand{\usePrimaryDeepOrange}{ +\definecolor{primary} {HTML}{FF5722} +\definecolor{primaryD}{HTML}{E64A19} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Brown +\newcommand{\usePrimaryBrown}{ +\definecolor{primary} {HTML}{795548} +\definecolor{primaryD}{HTML}{5D4037} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Grey +\newcommand{\usePrimaryGrey}{ +\definecolor{primary} {HTML}{9E9E9E} +\definecolor{primaryD}{HTML}{616161} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Blue Grey +\newcommand{\usePrimaryBlueGrey}{ +\definecolor{primary} {HTML}{607D8B} +\definecolor{primaryD}{HTML}{455A64} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + + +% ACCENT --------------------------------------------------------------- + +\newcommand{\useAccent}[2]{ +\definecolor{accent} {HTML}{#1} +\definecolor{textAccent} {HTML}{#2} +} + +% Accent Red +\newcommand{\useAccentRed}{ +\definecolor{accent} {HTML}{FF1744} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Pink +\newcommand{\useAccentPink}{ +\definecolor{accent} {HTML}{F50057} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Purple +\newcommand{\useAccentPurple}{ +\definecolor{accent} {HTML}{D500F9} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Deep Purple +\newcommand{\useAccentDeepPurple}{ +\definecolor{accent} {HTML}{651FFF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Indigo +\newcommand{\useAccentIndigo}{ +\definecolor{accent} {HTML}{3D5AFE} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Blue +\newcommand{\useAccentBlue}{ +\definecolor{accent} {HTML}{2979FF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Light Blue +\newcommand{\useAccentLightBlue}{ +\definecolor{accent} {HTML}{00B0FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Cyan +\newcommand{\useAccentCyan}{ +\definecolor{accent} {HTML}{00E5FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Teal +\newcommand{\useAccentTeal}{ +\definecolor{accent} {HTML}{1DE9B6} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Green +\newcommand{\useAccentGreen}{ +\definecolor{accent} {HTML}{00E676} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Light Green +\newcommand{\useAccentLightGreen}{ +\definecolor{accent} {HTML}{76FF03} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Lime +\newcommand{\useAccentLime}{ +\definecolor{accent} {HTML}{C6FF00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Yellow +\newcommand{\useAccentYellow}{ +\definecolor{accent} {HTML}{FFEA00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Amber +\newcommand{\useAccentAmber}{ +\definecolor{accent} {HTML}{FFC400} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Orange +\newcommand{\useAccentOrange}{ +\definecolor{accent} {HTML}{FF9100} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Deep Orange +\newcommand{\useAccentDeepOrange}{ +\definecolor{accent} {HTML}{FF3D00} +\definecolor{textAccent} {HTML}{FFFFFF} +} + + + +\useLightTheme +\usePrimaryIndigo +\useAccentPink + +% more color settings +\setbeamercolor{block title}{fg=primary} +\hypersetup{linkcolor=primary} +\setbeamercolor{section in toc}{fg=primary} +\setbeamercolor{subsection in toc}{fg=primary} + + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/beamerinnerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/beamerinnerthemematerial.sty new file mode 100755 index 000000000..48d82d16a --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/beamerinnerthemematerial.sty @@ -0,0 +1,42 @@ +\setbeamercolor{background canvas}{bg=BGgrey03} + +% Title page +\defbeamertemplate*{title page}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t][\paperheight]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, + fuzzy shadow={0mm}{-0.6mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.2mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.2mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, height=0.6\paperheight, flushright upper, valign=bottom, boxsep=0.5cm] + {\usebeamerfont{title} \inserttitle}\\ + {\usebeamerfont{author}\insertauthor}\\ + {\usebeamerfont{author}\insertdate} + \end{tcolorbox} + + %\begin{tcolorbox}[arc=5mm,width=10mm,height=10mm, enhanced, % + %colback=accent, coltext=textAccent, % + %fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!primary}, % top + %fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + %fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + %left=1.5mm, right=1.5mm, top=1.5mm, bottom=1.5mm, boxsep=0mm, % + %boxrule=0mm, enlarge left by=10mm, enlarge top by=-10mm]% + %\includegraphics[width=7mm]{\iconFolder/ic_account_circle_48px} + %\end{tcolorbox} + \end{minipage}% + }% + \vfill +} + +% Items +\setbeamertemplate{enumerate items}[circle] +\setbeamertemplate{itemize items}{\Large $\bullet$} +\setbeamertemplate{sections/subsections in toc}[circle] + +\setbeamercolor{local structure}{fg=accent} + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/beamerouterthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/beamerouterthemematerial.sty new file mode 100755 index 000000000..9338c12a0 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/beamerouterthemematerial.sty @@ -0,0 +1,28 @@ +\mode + +% Frame title +\defbeamertemplate*{frametitle}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, % + left=6mm, right=6mm, top=2.6mm, bottom=2mm,% + fuzzy shadow={0mm}{-0.9mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.8mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.5mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, boxsep=2mm] + \ifx\insertframesubtitle\@empty% + {\usebeamerfont{frametitle} \insertframetitle} + \else% + {\usebeamerfont{frametitle} \insertframetitle} + {\usebeamerfont{framesubtitle} \insertframesubtitle} + \fi + \end{tcolorbox} + \end{minipage}% + }% +} + + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/beamerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/beamerthemematerial.sty new file mode 100755 index 000000000..c34246582 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/beamerthemematerial.sty @@ -0,0 +1,82 @@ +\mode + +% Requirement +\RequirePackage{tikz} +\RequirePackage{xcolor} +\RequirePackage{ifthen} +\RequirePackage[many]{tcolorbox} +\RequirePackage{graphicx} + +% Settings +\useinnertheme{material} +\useoutertheme{material} +\usecolortheme{material} + +\setbeamertemplate{navigation symbols}{} + +\setbeamerfont*{title}{size=\Huge} +\setbeamerfont*{frametitle}{size=\large} + +% tcolorbox settings +\newcommand{\setCardSettings}{% +\tcbset{% +colback=BGgrey04, colbacktitle=primary, coltitle=textPrimary, coltext=text,% +enhanced, sharpish corners=all,% +fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!BGgrey03}, % top +fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall +fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig +left=6mm, right=6mm, top=6mm, bottom=6mm, middle=4mm,% +title filled, boxrule=0mm, % +segmentation code={\path[draw=BGgrey01](segmentation.west) -- (segmentation.east);}% +} +} + +\setCardSettings + +\newenvironment{card}[1][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}% + }{% + \begin{tcolorbox}[colbacktitle=primary, coltitle=textPrimary, title=#1, left=6mm, right=6mm, top=3mm, bottom=4mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% + }% +}{% + \end{tcolorbox}% +} + +\newenvironment{cardTiny}{% + \setCardSettings + \begin{tcolorbox}[colbacktitle=primary, left=4mm, right=4mm, top=2mm, bottom=2mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% +}{% + \end{tcolorbox}% +} + + +\newcommand{\cardImg}[3][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, bottom=0mm, middle=1.5mm, boxsep=0mm, width=#3,]% + \includegraphics[width=\textwidth]{#2} + \end{tcolorbox} + }{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, middle=1.5mm, boxsep=0mm, leftlower=6mm, rightlower=6mm, bottom=6mm, , width=#3,]% + \includegraphics[width=\textwidth]{#2} + \tcblower + #1% + \end{tcolorbox} + }% +} + +\newenvironment{frameImg}[2][width]{% + \setCardSettings + \ifthenelse{\equal{#1}{width}}{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[width=\paperwidth, keepaspectratio=true]{#2}}}% + }{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[height=\paperheight, keepaspectratio=true]{#2}}}% + }% + \begin{frame} +}{% + \end{frame} +} + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/img/factorization_speed.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/img/factorization_speed.png new file mode 100755 index 000000000..be03213f5 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/img/factorization_speed.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/macros.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/macros.sty new file mode 100755 index 000000000..e8d2b8686 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/macros.sty @@ -0,0 +1,127 @@ +\ProvidesPackage{macros}[2018 My own macros] + +% Packages that main.tex will use AND common header commands +\usepackage{multicol} +\usepackage{tikz} % drawings +\usetikzlibrary{positioning, arrows} +\usepackage{animate} % animations +\usepackage{hyperref} +\usepackage{minted} % code snippets +\usepackage{todonotes} +\let\todox\todo +\renewcommand\todo[1]{\todox[inline]{#1}} + +%%%%%%%%%%%%%%%%% DOCUMENT GLOBAL SETTINGS +% example for author reusing these slides: +\author[Ramalho]{Miguel Sozinho Ramalho} +% \author[LASTNAME]{FIRSTNAME LASTNAME,\\ \scriptsize{based on slides by \textbf{Miguel Sozinho Ramalho}}} +\institute[FEUP]{Faculty of Engineering of the University of Porto} +\subject{Quantum Computing} +\date{November, 2018} + + +% Uncomment for notes on slides +% \usepackage{pgfpages} +% \setbeameroption{show notes} +% \setbeameroption{show notes on second screen=right} + +\graphicspath{{img/}} % add the img folder to graphics path + +% Packages that this file uses +\usepackage{braket} % bra-ket notation +\usepackage{xargs} % custom new commands +\usepackage{xspace} % add xspace after new command to auto insert space + + + +% braket shorthands +\newcommandx{\superpos}[3][1=\textual{\psi},2=0,3=1]{\ket {#1} = \textual{\alpha} \ket{#2} + \textual{\beta} \ket{#3}} +\newcommand{\plusminus}[1][\psi]{\superpos[#1][-][+]} +\newcommand{\pagenumber}{\raggedleft\vfill\scriptsize\insertframenumber/\inserttotalframenumber} +\newcommand{\speedoflight}{3 \times 10^{8} m/s} +\newcommand{\osqrt}{\frac{1}{\sqrt{2}}} +\newcommand{\kz}{\ket{0}} +\newcommand{\ko}{\ket{1}} + +% short shorthands +\newcommand{\qasm}{Qasm\xspace} +\newcommand{\q}{Quantum\xspace} +\newcommand{\qa}{\q Algorithms\xspace} +\newcommand{\qct}{\q Circuit\xspace} +\newcommand{\qcts}{\q Circuits\xspace} +\newcommand{\qc}{\q Computing\xspace} +\newcommand{\qcp}{\q Computation\xspace} +\newcommand{\qec}{\q Error Correction\xspace} +\newcommand{\qft}{\q Fourier Transform\xspace} +\newcommand{\qi}{\q Information\xspace} +\newcommand{\qis}{\q Information Science\xspace} +\newcommand{\qm}{\q Mechanics\xspace} +\newcommand{\qmt}{\q Measurement\xspace} +\newcommand{\qp}{\q Physics\xspace} +\newcommand{\qsp}{\q Superposition\xspace} +\newcommand{\qw}{\q World\xspace} +\newcommand{\mbqc}{Measurement Based \q Computer\xspace} +\newcommand{\aqc}{Adiabatic \q Computation\xspace} + +\newcommand{\cl}{Classical\xspace} +\newcommand{\cc}{Classical Computing\xspace} +\newcommand{\cm}{Classical Mechanics\xspace} +\newcommand{\cp}{Classical Physics\xspace} + +\newcommand{\qk}{Qiskit\xspace} +\newcommand{\qka}{Qiskit Aqua\xspace} +\newcommand{\ibmq}{IBM Q\xspace} +\newcommand{\ibmqe}{IBM Q Experience\xspace} + +\newcommand{\p}{\textbf{P}\xspace} +\newcommand{\np}{\textbf{NP}\xspace} +\newcommand{\bqp}{\textbf{BQP}\xspace} + +\newcommand{\djs}{Deutsch-Jozsa\xspace} +\newcommand{\ds}{Deutsch's\xspace} +\newcommand{\gv}{Grover\xspace} +\newcommand{\gvs}{\gv's\xspace} +\newcommand{\gvsa}{\gv's algorithm\xspace} +\newcommand{\aamp}{Amplitude Amplification\xspace} +\newcommand{\sa}{Shor's algorithm\xspace} + +\newcommand{\phiv}{phase inversion\xspace} +\newcommand{\iatm}{inversion about the mean\xspace} + +\newcommand{\ai}{Artificial Intelligence\xspace} + +%configurable variables +\newcommand{\githubRepo}{https://github.com/msramalho/Teach-Me-Quantum/} +\newcommand{\weeks}{\githubRepo/tree/master/} +\newcommand{\weekZero}{\weeks/Week\%200\%20-\%20Hello\%20Quantum\%20World/} +\newcommand{\weekOne}{\weeks/Week\%201\%20-\%20Quantum\%20Tools/} +\newcommand{\weekTwo}{\weeks/Week\%202\%20-\%20Quantum\%20Information\%20Science/} +\newcommand{\weekThree}{\weeks/Week\%203\%20-\%20Quantum\%20Gates/} +\newcommand{\weekFour}{\weeks/Week\%204\%20-\%20Quantum\%20Facts/} + +%%%%%%%%%%%%%%%%%%%%%%%% quotations +% src: https://tex.stackexchange.com/a/53380/126771 +\newcommand{\@chapapp}{\relax} +\makeatletter +\renewcommand{\@chapapp}{} +\newenvironment{chapquote}[2][2em] + {\setlength{\@tempdima}{#1} + \def\chapquote@author{#2} + \parshape 1 \@tempdima \dimexpr\textwidth-2\@tempdima\relax + \itshape} + {\par\normalfont\hfill--\ \chapquote@author\hspace*{\@tempdima}\par\bigskip} +\makeatother + +%%%%%%%%%%%%%%%%% color on hrefs +\hypersetup{ + colorlinks=true, + linkcolor=primaryD,%blue, + filecolor=primaryD,%cyan, + urlcolor=accent %hrefs +} + +%%%%%%%%%%%%%%%%% minted settings +\setminted[python]{fontsize=\footnotesize} +\setminted[vhdl]{fontsize=\footnotesize} +\definecolor{bgGrey}{rgb}{0.95,0.95,0.95} +\setminted{bgcolor=bgGrey} \ No newline at end of file diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/main.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/main.tex new file mode 100755 index 000000000..e4cb5977b --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/latex/main.tex @@ -0,0 +1,227 @@ +\documentclass[aspectratio=43]{beamer} +\usepackage[utf8]{inputenc} + + +%%%%%%%%%%%%%%%%%%%%%%%% THEME +\usetheme{material} +\useLightTheme +\usePrimaryGreen +\useAccentRed + +\usepackage{macros} % must come after theme + +\title{\q Factorization} +\keywords{\qc, \q Factorization, Shor's algorithm, Cryptography} + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + + +\begin{frame}{Table of contents} + \begin{card} + \tableofcontents + \end{card} +\end{frame} + + +\section{Introduction} +\begin{frame}{Introduction} + \begin{card} + This week is dedicated to studying the quantum algorithm that, arguably, has had the most \textbf{astonishing impact} insofar on the world and it helped raise interest in \qc and reach nowadays \textbf{quantum's critical mass}! + \end{card} + \begin{card} + \textit{Unlike} other quantum algorithms that we have studied, this one is named after its creator: \href{https://en.wikipedia.org/wiki/Peter_Shor}{Peter Shor} (\textbf{\sa}). It brings an \textbf{exponential speed-up} on a very important problem nowadays: \textbf{prime factorization}. + \end{card} +\pagenumber +\end{frame} +\begin{frame}{Introduction} + \begin{card} + So, we will understand \textbf{which} problem \sa solves and \textbf{how} it does so. However, we do not want an \textit{exponential speed-up} in the complexity of this course and so, some of the mathematical concepts will be concealed and you will have a chance to study it both in the week's exercise as well as in the recommended links at the end. + \end{card} +\pagenumber +\end{frame} + + +\section{Prime Factorization problem} +\begin{frame}{Prime Factorization problem} + \begin{card} + Given a number $N$ we would like to find a pair of prime numbers ($p$, $q$) whose product equals $N$: $p\times q=N$. The existence of this pair is \textbf{guaranteed} by the \href{https://en.wikipedia.org/wiki/Fundamental_theorem_of_arithmetic}{fundamental theorem of arithmetic}. + \end{card} + \begin{card} + Algorithms for achieving this already exist, however this problem fits into the \np family and is computationally possible only for small values of $N$, as nowadays \textbf{classical} computers are unable to find it in feasible time. + \end{card} +\pagenumber +\end{frame} + + + +\section{Cryptography considerations} +\begin{frame}{Cryptography considerations} + \begin{card} + The opposite process, finding large primes is relatively easy (\href{https://en.wikipedia.org/wiki/Primality_test}{primality test} or \href{https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes}{Sieve of Eratosthenes}) and multiplying them as well. + \end{card} + \begin{card} + As such, many \href{https://en.wikipedia.org/wiki/Public-key_cryptography}{cryptography} algorithms rely on that easiness and on the factorization hardness to provide a secure means of communication. If this still seems odd, lets just say that the trustworthiness of most requests made from your browser to online servers rely on it, not to mention innumerable encryption mechanisms out there. + \end{card} +\pagenumber +\end{frame} + +\section{\sa} +\begin{frame}{\sa \ Overview} + \begin{cardTiny} + It would be a true hindrance if prime factorization were to become a \textbf{feasible problem}. The world would have to be redefined from scratch and countless consequences on data privacy and safety would arise, of \textbf{unimaginable proportions}. + \end{cardTiny} + \begin{cardTiny} + As a matter of fact, that is what Peter Schor has done (and his name definitely belongs on the algorithm) for the only thing preventing this catastrophic event is that real quantum computers are still a few steps short of allowing for such complex computations. One might say: \textit{thankfully we found the \textbf{theory before the technology} arrived.} + \end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}{\sa Overview} + \begin{card} + Technically speaking, \sa solves prime factorization through the following steps: + + \begin{enumerate} + \item Formulation of prime factorization as a period finding problem + \item Quantum algorithm to solve period finding + \item Conversion of period back into prime factors + \end{enumerate} + + We will go over each of these, but the heart of the speed-up lies in the quantum algorithm in question: \textbf{\qft} + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{\sa Overview} + \begin{card} + \begin{center} + \includegraphics[width=1\textwidth]{factorization_speed} + \end{center} + \end{card} +\pagenumber +\end{frame} + + +\subsection{From Factorization to Period Finding} +\begin{frame}{From Factorization to Period Finding} + \begin{card} + The first trick of this endeavour was to discover that if we want to factorize $N$, we can start by the fact that: + \begin{equation*} + f(a) = x^a \mod N^* + \end{equation*} + is a \textbf{periodic} function, where $x$ is \href{https://en.wikipedia.org/wiki/Coprime_integers}{coprime} with $N$ and $a \geqslant 0$ + \end{card} + \begin{card} + *If necessary, review the \href{https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/what-is-modular-arithmetic}{mod operator}. + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{From Factorization to Period Finding} + \begin{card} + Since $f(a)$ is periodic, it follows that there is a period \textbf{r}: + \begin{equation*} + (x^0 \mod N = 1) \Rightarrow (x^r \mod N = 1) + \end{equation*} + Since $x^0=1$, and considering the periodic nature of $f$, which grows from $a=0$ to $a=r$. + \end{card} + \begin{card} + At this stage, let us focus on how the discovery of \textbf{r} can be achieved \textit{quantumly}. We will go back to this formulation once we know the period. + \end{card} +\pagenumber +\end{frame} + +\subsection{\qft} +\begin{frame}{\qft} + \begin{card} + The secret behind the exponential speed-up lies at this stage of the algorithm - \qft. This is an operation analog to that of the \href{https://en.wikipedia.org/wiki/Discrete_Fourier_transform}{Discrete Fourier Transform}. Unlike the classical version, the \qft can be implemented on $O(n^2)$ (polynomial) gates, whereas the classical version would require $> O(2^n)$ (exponential). + \end{card} + \begin{card} + The \qft can be constructed using only Hadamard ($H$) and phase shift ($R_{\phi}$) gates! + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{\qft} + \begin{card} + We will get to implement it on this week's exercises. Suffice to say, for now, that it achieves the task of uncovering \textbf{r} \textbf{exponentially faster} than in classical systems, by making use of quantum \textbf{superposition} to test multiple values at once. + \end{card} + \begin{card} + It should be noted that the underlying math is advanced and would make little sense to include it here, due to its level of specificity. You are, however, expected to understand the high-level mechanism behind the algorithm and, with time, you may feel the need to study it thoroughly. + \end{card} +\pagenumber +\end{frame} + + +\newcommand{\xrsq}{x^{\frac{r}{2}}} +\newcommand{\pxrsq}{(\xrsq + 1)(\xrsq - 1)} +\subsection{From Period to Factors} +\begin{frame}{From Period to Factors} + \begin{card} + After \textbf{r} is found, we now need to go back to our modular arithmetic and perform the following manipulation: + \begin{equation*}\begin{split} + x^r \equiv 1 \mod N \Leftrightarrow \\ + (\xrsq)^2 \equiv 1 \mod N \Leftrightarrow \\ + (\xrsq)^2 - 1 \equiv 0 \mod N \Leftrightarrow \\ + \pxrsq \equiv 0 \mod N \text{(even $r$)} + \end{split}\end{equation*} + Notice that $\pxrsq$ is a multiple of $N$. So long as at least one of those factors is not a multiple of $N$ then it has a common divisor with $N$. + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{From Period to Factors} + \begin{card} + Thus, we need only compute the \href{https://en.wikipedia.org/wiki/Greatest_common_divisor}{greatest common divisor} (gcd) between $N$ and each of $(\xrsq + 1)$ and $(\xrsq - 1)$: + \begin{equation*} + gcd(N, \xrsq + 1) = PossibleFactor1 + \end{equation*} + \begin{equation*} + gcd(N, \xrsq - 1) = PossibleFactor2 + \end{equation*} + The $gcd$ can be calculated in \textbf{polynomial time} using an algorithm that was described more than 2300 years ago by Euclides, the \href{https://en.wikipedia.org/wiki/Euclidean_algorithm}{euclidean algorithm}. + \end{card} +\pagenumber +\end{frame} + +\section{\sa's considerations} +\begin{frame}{\sa's considerations} + \begin{card} + \sa's power is still limited by today's quantum computers (which can have in the order of 50 to 70 \textit{good quality} qubits) and it can only be used to factor very small numbers (that you could factor by hand). + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{\sa's considerations} + \begin{card} + To make \sa a security threat on today's world, one would need at least a couple thousand \textit{good quality} qubits, which is still a few years away (one can only hope). There is time and plenty of ideas like that of \q Cryptography (the quantum equivalent of typical cryptography) which will prevent many catastrophes to happen, hopefully! + \end{card} +\pagenumber +\end{frame} + +\section{Hands-on} +\begin{frame}{Hands-on} + \begin{card} + In this lesson, you have been given the logic behind \sa and you should have a good grasp of its impact. This week, there will be two practical exercises: one on \qft and another on \sa (which also mentions \qft). Both provide a more in-depth description of the underlying math (don't worry if it is to overwhelming, you can build on that knowledge) and also a walk-through using \qk of the implementation of \sa. + \end{card} +\pagenumber +\end{frame} + + + + +\section{Where to learn more?} +\begin{frame}{Where to learn more?} +\begin{card} + \begin{itemize} + \item \href{https://arxiv.org/abs/quant-ph/9508027}{Original Paper by Peter Shor} + \item \href{https://www.youtube.com/watch?v=hOlOY7NyMfs}{Peter Shor} a very short video of the man, the myth, the legend on his algorithm + \item \href{https://quantumexperience.ng.bluemix.net/proxy/tutorial/full-user-guide/004-Quantum_Algorithms/110-Shor's_algorithm.html}{Tutorial from \ibmqe} on \sa + \item \href{http://www-math.mit.edu/~shor/GRRM-poetry.html}{Shor's poetry on Game of Thrones} (for when you feel tired) + \end{itemize} +\end{card} +\end{frame} +\end{document} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/slides.pdf b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/slides.pdf new file mode 100755 index 000000000..c2fb063c6 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_7-Quantum_Factorization/slides.pdf differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/README.ipynb new file mode 100644 index 000000000..265d84712 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/README.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Week 8 - High Level Quantum Programming (qiskit-aqua)\n", + "\n", + " * Qiskit Aqua\n", + " * Quantum Supremacy\n", + " * Troubleshooting Qiskit Aqua\n", + " * High Level Grover's algorithm\n", + " * AI problems with aqua\n", + " * Optimization problems with aqua (MaxCut, Traveling Salesman)\n", + " * Chemistry with aqua\n", + "\n", + "# Exercises\n", + " * [Jupyter notebook 1 with tutorial](exercises/w8_01.ipynb): Grover's algorithm (High Level Quantum)\n", + " * [Jupyter notebook 2 with tutorial](exercises/w8_02.ipynb): Support Vector Machine for classification of Breast Cancer datapoints (AI)\n", + " * [Jupyter notebook 3 with tutorial](exercises/w8_03.ipynb): Maximum Cut problem (Optimization)\n", + " * [Jupyter notebook 4 with tutorial](exercises/w8_04.ipynb): Traveling Salesman problem (Optimization)\n", + " * [Jupyter notebook 5 with tutorial](exercises/w8_05.ipynb): Ground state oh H2 Molecule (Chemistry)\n", + "\n", + "## Resources\n", + " * [PDF slides](slides.pdf)\n", + " * [slides src](latex/main.tex) Latex files and image resources used in the presentation (useful for PR on slide typos and such)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/0.7_sto-3g.hdf5 b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/0.7_sto-3g.hdf5 new file mode 100755 index 000000000..1e7fc17d0 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/0.7_sto-3g.hdf5 differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/3sat2-3.cnf b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/3sat2-3.cnf new file mode 100755 index 000000000..2d2944119 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/3sat2-3.cnf @@ -0,0 +1,5 @@ +c This is an example DIMACS 3-sat file with unique satisfying solution: 1 2 0 +p cnf 2 3 +1 2 0 +1 -2 0 +-1 2 0 diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/3sat3-5.cnf b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/3sat3-5.cnf new file mode 100755 index 000000000..99ec81eec --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/3sat3-5.cnf @@ -0,0 +1,7 @@ +c This is an example DIMACS 3-sat file with 3 satisfying solutions: 1 -2 3 0, -1 -2 -3 0, 1 2 -3 0 +p cnf 3 5 +-1 -2 -3 0 +1 -2 3 0 +1 2 -3 0 +1 -2 -3 0 +-1 2 3 0 diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/README.ipynb new file mode 100644 index 000000000..6c7a5f67f --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/README.ipynb @@ -0,0 +1,44 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercises\n", + " * [Jupyter notebook 1 with tutorial](w8_01.ipynb): Grover's algorithm (High Level Quantum)\n", + " * [Jupyter notebook 2 with tutorial](w8_02.ipynb): Support Vector Machine for classification of Breast Cancer datapoints (AI)\n", + " * [Jupyter notebook 3 with tutorial](w8_03.ipynb): Maximum Cut problem (Optimization)\n", + " * [Jupyter notebook 4 with tutorial](w8_04.ipynb): Traveling Salesman problem (Optimization)\n", + " * [Jupyter notebook 5 with tutorial](w8_05.ipynb): Ground state oh H2 Molecule (Chemistry)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/grover_output.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/grover_output.png new file mode 100755 index 000000000..77c7d9cea Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/grover_output.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/qiskit-heading.gif b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/qiskit-heading.gif new file mode 100755 index 000000000..97c168a33 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/qiskit-heading.gif differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/qsvm_datasets.py b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/qsvm_datasets.py new file mode 100755 index 000000000..1688b524a --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/qsvm_datasets.py @@ -0,0 +1,559 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 IBM. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================= + +import numpy as np +import scipy +from scipy.linalg import expm +import matplotlib.pyplot as plt +from mpl_toolkits.mplot3d import Axes3D +from sklearn import datasets +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler, MinMaxScaler +from sklearn.decomposition import PCA + + +def ad_hoc_data(training_size, test_size, n, gap, PLOT_DATA): + class_labels = [r'A', r'B'] + if n == 2: + N = 100 + elif n == 3: + N = 20 # courseness of data seperation + + label_train = np.zeros(2*(training_size+test_size)) + sample_train = [] + sampleA = [[0 for x in range(n)] for y in range(training_size+test_size)] + sampleB = [[0 for x in range(n)] for y in range(training_size+test_size)] + + sample_Total = [[[0 for x in range(N)] for y in range(N)] for z in range(N)] + + interactions = np.transpose(np.array([[1, 0], [0, 1], [1, 1]])) + + steps = 2*np.pi/N + + sx = np.array([[0, 1], [1, 0]]) + X = np.asmatrix(sx) + sy = np.array([[0, -1j], [1j, 0]]) + Y = np.asmatrix(sy) + sz = np.array([[1, 0], [0, -1]]) + Z = np.asmatrix(sz) + J = np.array([[1, 0], [0, 1]]) + J = np.asmatrix(J) + H = np.array([[1, 1], [1, -1]])/np.sqrt(2) + H2 = np.kron(H, H) + H3 = np.kron(H, H2) + H = np.asmatrix(H) + H2 = np.asmatrix(H2) + H3 = np.asmatrix(H3) + + f = np.arange(2**n) + + my_array = [[0 for x in range(n)] for y in range(2**n)] + + for arindex in range(len(my_array)): + temp_f = bin(f[arindex])[2:].zfill(n) + for findex in range(n): + my_array[arindex][findex] = int(temp_f[findex]) + + my_array = np.asarray(my_array) + my_array = np.transpose(my_array) + + # Define decision functions + maj = (-1)**(2*my_array.sum(axis=0) > n) + parity = (-1)**(my_array.sum(axis=0)) + dict1 = (-1)**(my_array[0]) + if n == 2: + D = np.diag(parity) + elif n == 3: + D = np.diag(maj) + + Basis = np.random.random((2**n, 2**n)) + 1j*np.random.random((2**n, 2**n)) + Basis = np.asmatrix(Basis).getH()*np.asmatrix(Basis) + + [S, U] = np.linalg.eig(Basis) + + idx = S.argsort()[::-1] + S = S[idx] + U = U[:, idx] + + M = (np.asmatrix(U)).getH()*np.asmatrix(D)*np.asmatrix(U) + + psi_plus = np.transpose(np.ones(2))/np.sqrt(2) + psi_0 = 1 + for k in range(n): + psi_0 = np.kron(np.asmatrix(psi_0), np.asmatrix(psi_plus)) + + sample_total_A = [] + sample_total_B = [] + sample_total_void = [] + if n == 2: + for n1 in range(N): + for n2 in range(N): + x1 = steps*n1 + x2 = steps*n2 + phi = x1*np.kron(Z, J) + x2*np.kron(J, Z) + (np.pi-x1)*(np.pi-x2)*np.kron(Z, Z) + Uu = scipy.linalg.expm(1j*phi) + psi = np.asmatrix(Uu)*H2*np.asmatrix(Uu)*np.transpose(psi_0) + temp = np.asscalar(np.real(psi.getH()*M*psi)) + if temp > gap: + sample_Total[n1][n2] = +1 + elif temp < -gap: + sample_Total[n1][n2] = -1 + else: + sample_Total[n1][n2] = 0 + + # Now sample randomly from sample_Total a number of times training_size+testing_size + tr = 0 + while tr < (training_size+test_size): + draw1 = np.random.choice(N) + draw2 = np.random.choice(N) + if sample_Total[draw1][draw2] == +1: + sampleA[tr] = [2*np.pi*draw1/N, 2*np.pi*draw2/N] + tr += 1 + + tr = 0 + while tr < (training_size+test_size): + draw1 = np.random.choice(N) + draw2 = np.random.choice(N) + if sample_Total[draw1][draw2] == -1: + sampleB[tr] = [2*np.pi*draw1/N, 2*np.pi*draw2/N] + tr += 1 + + sample_train = [sampleA, sampleB] + + for lindex in range(training_size+test_size): + label_train[lindex] = 0 + for lindex in range(training_size+test_size): + label_train[training_size+test_size+lindex] = 1 + label_train = label_train.astype(int) + sample_train = np.reshape(sample_train, (2*(training_size+test_size), n)) + training_input = {key: (sample_train[label_train == k, :])[:training_size] + for k, key in enumerate(class_labels)} + test_input = {key: (sample_train[label_train == k, :])[training_size:( + training_size+test_size)] for k, key in enumerate(class_labels)} + + if PLOT_DATA: + img = plt.imshow(np.asmatrix(sample_Total).T, interpolation='nearest', + origin='lower', cmap='copper', extent=[0, 2*np.pi, 0, 2*np.pi]) + plt.show() + fig2 = plt.figure() + for k in range(0, 2): + plt.scatter(sample_train[label_train == k, 0][:training_size], + sample_train[label_train == k, 1][:training_size]) + + plt.title("Ad-hoc Data") + plt.show() + + elif n == 3: + for n1 in range(N): + for n2 in range(N): + for n3 in range(N): + x1 = steps*n1 + x2 = steps*n2 + x3 = steps*n3 + phi = x1*np.kron(np.kron(Z, J), J) + x2*np.kron(np.kron(J, Z), J) + x3*np.kron(np.kron(J, J), Z) + \ + (np.pi-x1)*(np.pi-x2)*np.kron(np.kron(Z, Z), J)+(np.pi-x2)*(np.pi-x3)*np.kron(np.kron(J, Z), Z) + \ + (np.pi-x1)*(np.pi-x3)*np.kron(np.kron(Z, J), Z) + Uu = scipy.linalg.expm(1j*phi) + psi = np.asmatrix(Uu)*H3*np.asmatrix(Uu)*np.transpose(psi_0) + temp = np.asscalar(np.real(psi.getH()*M*psi)) + if temp > gap: + sample_Total[n1][n2][n3] = +1 + sample_total_A.append([n1, n2, n3]) + elif temp < -gap: + sample_Total[n1][n2][n3] = -1 + sample_total_B.append([n1, n2, n3]) + else: + sample_Total[n1][n2][n3] = 0 + sample_total_void.append([n1, n2, n3]) + + # Now sample randomly from sample_Total a number of times training_size+testing_size + tr = 0 + while tr < (training_size+test_size): + draw1 = np.random.choice(N) + draw2 = np.random.choice(N) + draw3 = np.random.choice(N) + if sample_Total[draw1][draw2][draw3] == +1: + sampleA[tr] = [2*np.pi*draw1/N, 2*np.pi*draw2/N, 2*np.pi*draw3/N] + tr += 1 + + tr = 0 + while tr < (training_size+test_size): + draw1 = np.random.choice(N) + draw2 = np.random.choice(N) + draw3 = np.random.choice(N) + if sample_Total[draw1][draw2][draw3] == -1: + sampleB[tr] = [2*np.pi*draw1/N, 2*np.pi*draw2/N, 2*np.pi*draw3/N] + tr += 1 + + sample_train = [sampleA, sampleB] + + for lindex in range(training_size+test_size): + label_train[lindex] = 0 + for lindex in range(training_size+test_size): + label_train[training_size+test_size+lindex] = 1 + label_train = label_train.astype(int) + sample_train = np.reshape(sample_train, (2*(training_size+test_size), n)) + training_input = {key: (sample_train[label_train == k, :])[:training_size] + for k, key in enumerate(class_labels)} + test_input = {key: (sample_train[label_train == k, :])[training_size:( + training_size+test_size)] for k, key in enumerate(class_labels)} + + if PLOT_DATA: + + sample_total_A = np.asarray(sample_total_A) + sample_total_B = np.asarray(sample_total_B) + x1 = sample_total_A[:, 0] + y1 = sample_total_A[:, 1] + z1 = sample_total_A[:, 2] + + x2 = sample_total_B[:, 0] + y2 = sample_total_B[:, 1] + z2 = sample_total_B[:, 2] + + fig1 = plt.figure() + ax1 = fig1.add_subplot(1, 1, 1, projection='3d') + ax1.scatter(x1, y1, z1, c='#8A360F') + plt.show() + # + fig2 = plt.figure() + ax2 = fig2.add_subplot(1, 1, 1, projection='3d') + ax2.scatter(x2, y2, z2, c='#683FC8') + plt.show() + + sample_training_A = training_input['A'] + sample_training_B = training_input['B'] + + x1 = sample_training_A[:, 0] + y1 = sample_training_A[:, 1] + z1 = sample_training_A[:, 2] + + x2 = sample_training_B[:, 0] + y2 = sample_training_B[:, 1] + z2 = sample_training_B[:, 2] + + fig1 = plt.figure() + ax1 = fig1.add_subplot(1, 1, 1, projection='3d') + ax1.scatter(x1, y1, z1, c='#8A360F') + ax1.scatter(x2, y2, z2, c='#683FC8') + plt.show() + + return sample_Total, training_input, test_input, class_labels + + +def sample_ad_hoc_data(sample_Total, test_size, n): + tr = 0 + + class_labels = [r'A', r'B'] # copied from ad_hoc_data() + if n == 2: + N = 100 + elif n == 3: + N = 20 + + label_train = np.zeros(2*test_size) + sampleA = [[0 for x in range(n)] for y in range(test_size)] + sampleB = [[0 for x in range(n)] for y in range(test_size)] + while tr < (test_size): + draw1 = np.random.choice(N) + draw2 = np.random.choice(N) + if sample_Total[draw1][draw2] == +1: + sampleA[tr] = [2*np.pi*draw1/N, 2*np.pi*draw2/N] + tr += 1 + + tr = 0 + while tr < (test_size): + draw1 = np.random.choice(N) + draw2 = np.random.choice(N) + if sample_Total[draw1][draw2] == -1: + sampleB[tr] = [2*np.pi*draw1/N, 2*np.pi*draw2/N] + tr += 1 + sample_train = [sampleA, sampleB] + for lindex in range(test_size): + label_train[lindex] = 0 + for lindex in range(test_size): + label_train[test_size+lindex] = 1 + label_train = label_train.astype(int) + sample_train = np.reshape(sample_train, (2 * test_size, n)) + test_input = {key: (sample_train[label_train == k, :])[:] for k, key in enumerate(class_labels)} + return test_input + + +def Breast_cancer(training_size, test_size, n, PLOT_DATA): + class_labels = [r'A', r'B'] + data, target = datasets.load_breast_cancer(True) + sample_train, sample_test, label_train, label_test = train_test_split(data, target, test_size=0.3, random_state=12) + + # Now we standarize for gaussian around 0 with unit variance + std_scale = StandardScaler().fit(sample_train) + sample_train = std_scale.transform(sample_train) + sample_test = std_scale.transform(sample_test) + + # Now reduce number of features to number of qubits + pca = PCA(n_components=n).fit(sample_train) + sample_train = pca.transform(sample_train) + sample_test = pca.transform(sample_test) + + # Scale to the range (-1,+1) + samples = np.append(sample_train, sample_test, axis=0) + minmax_scale = MinMaxScaler((-1, 1)).fit(samples) + sample_train = minmax_scale.transform(sample_train) + sample_test = minmax_scale.transform(sample_test) + + # Pick training size number of samples from each distro + training_input = {key: (sample_train[label_train == k, :])[:training_size] for k, key in enumerate(class_labels)} + test_input = {key: (sample_train[label_train == k, :])[training_size:( + training_size+test_size)] for k, key in enumerate(class_labels)} + + if PLOT_DATA: + for k in range(0, 2): + plt.scatter(sample_train[label_train == k, 0][:training_size], + sample_train[label_train == k, 1][:training_size]) + + plt.title("PCA dim. reduced Breast cancer dataset") + plt.show() + + return sample_train, training_input, test_input, class_labels + + +def Digits(training_size, test_size, n, PLOT_DATA): + class_labels = [r'A', r'B', r'C', r'D', r'E', r'F', r'G', r'H', r'I', r'J'] + data = datasets.load_digits() + sample_train, sample_test, label_train, label_test = train_test_split( + data.data, data.target, test_size=0.3, random_state=22) + + # Now we standarize for gaussian around 0 with unit variance + std_scale = StandardScaler().fit(sample_train) + sample_train = std_scale.transform(sample_train) + sample_test = std_scale.transform(sample_test) + + # Now reduce number of features to number of qubits + pca = PCA(n_components=n).fit(sample_train) + sample_train = pca.transform(sample_train) + sample_test = pca.transform(sample_test) + + # Scale to the range (-1,+1) + samples = np.append(sample_train, sample_test, axis=0) + minmax_scale = MinMaxScaler((-1, 1)).fit(samples) + sample_train = minmax_scale.transform(sample_train) + sample_test = minmax_scale.transform(sample_test) + + # Pick training size number of samples from each distro + training_input = {key: (sample_train[label_train == k, :])[:training_size] for k, key in enumerate(class_labels)} + test_input = {key: (sample_train[label_train == k, :])[training_size:( + training_size+test_size)] for k, key in enumerate(class_labels)} + + if PLOT_DATA: + for k in range(0, 9): + plt.scatter(sample_train[label_train == k, 0][:training_size], + sample_train[label_train == k, 1][:training_size]) + + plt.title("PCA dim. reduced Digits dataset") + plt.show() + + return sample_train, training_input, test_input, class_labels + + +def Iris(training_size, test_size, n, PLOT_DATA): + class_labels = [r'A', r'B', r'C'] + data, target = datasets.load_iris(True) + sample_train, sample_test, label_train, label_test = train_test_split(data, target, test_size=1, random_state=42) + + # Now we standarize for gaussian around 0 with unit variance + std_scale = StandardScaler().fit(sample_train) + sample_train = std_scale.transform(sample_train) + sample_test = std_scale.transform(sample_test) + + # Scale to the range (-1,+1) + samples = np.append(sample_train, sample_test, axis=0) + minmax_scale = MinMaxScaler((-1, 1)).fit(samples) + sample_train = minmax_scale.transform(sample_train) + sample_test = minmax_scale.transform(sample_test) + + # Pick training size number of samples from each distro + training_input = {key: (sample_train[label_train == k, :])[:training_size] for k, key in enumerate(class_labels)} + test_input = {key: (sample_train[label_train == k, :])[training_size:( + training_size+test_size)] for k, key in enumerate(class_labels)} + + if PLOT_DATA: + for k in range(0, 3): + plt.scatter(sample_train[label_train == k, 0][:training_size], + sample_train[label_train == k, 1][:training_size]) + + plt.title("Iris dataset") + plt.show() + + return sample_train, training_input, test_input, class_labels + + +def Wine(training_size, test_size, n, PLOT_DATA): + class_labels = [r'A', r'B', r'C'] + + data, target = datasets.load_wine(True) + sample_train, sample_test, label_train, label_test = train_test_split(data, target, test_size=0.1, + random_state=7) + + # Now we standarize for gaussian around 0 with unit variance + std_scale = StandardScaler().fit(sample_train) + sample_train = std_scale.transform(sample_train) + sample_test = std_scale.transform(sample_test) + + # Now reduce number of features to number of qubits + pca = PCA(n_components=n).fit(sample_train) + sample_train = pca.transform(sample_train) + sample_test = pca.transform(sample_test) + + # Scale to the range (-1,+1) + samples = np.append(sample_train, sample_test, axis=0) + minmax_scale = MinMaxScaler((-1, 1)).fit(samples) + sample_train = minmax_scale.transform(sample_train) + sample_test = minmax_scale.transform(sample_test) + # Pick training size number of samples from each distro + training_input = {key: (sample_train[label_train == k, :])[:training_size] for k, key in enumerate(class_labels)} + test_input = {key: (sample_train[label_train == k, :])[training_size:( + training_size+test_size)] for k, key in enumerate(class_labels)} + + if PLOT_DATA: + for k in range(0, 3): + plt.scatter(sample_train[label_train == k, 0][:training_size], + sample_train[label_train == k, 1][:training_size]) + + plt.title("PCA dim. reduced Wine dataset") + plt.show() + + return sample_train, training_input, test_input, class_labels + + +def Gaussian(training_size, test_size, n, PLOT_DATA): + sigma = 1 + if n == 2: + class_labels = [r'A', r'B'] + label_train = np.zeros(2*(training_size+test_size)) + sample_train = [] + sampleA = [[0 for x in range(n)] for y in range(training_size+test_size)] + sampleB = [[0 for x in range(n)] for y in range(training_size+test_size)] + randomized_vector1 = np.random.randint(2, size=n) + randomized_vector2 = (randomized_vector1+1) % 2 + for tr in range(training_size+test_size): + for feat in range(n): + if randomized_vector1[feat] == 0: + sampleA[tr][feat] = np.random.normal(-1/2, sigma, None) + elif randomized_vector1[feat] == 1: + sampleA[tr][feat] = np.random.normal(1/2, sigma, None) + else: + print('Nope') + + if randomized_vector2[feat] == 0: + sampleB[tr][feat] = np.random.normal(-1/2, sigma, None) + elif randomized_vector2[feat] == 1: + sampleB[tr][feat] = np.random.normal(1/2, sigma, None) + else: + print('Nope') + + sample_train = [sampleA, sampleB] + for lindex in range(training_size+test_size): + label_train[lindex] = 0 + for lindex in range(training_size+test_size): + label_train[training_size+test_size+lindex] = 1 + label_train = label_train.astype(int) + sample_train = np.reshape(sample_train, (2*(training_size+test_size), n)) + training_input = {key: (sample_train[label_train == k, :])[:training_size] + for k, key in enumerate(class_labels)} + test_input = {key: (sample_train[label_train == k, :])[training_size:( + training_size+test_size)] for k, key in enumerate(class_labels)} + + if PLOT_DATA: + fig1 = plt.figure() + for k in range(0, 2): + plt.scatter(sample_train[label_train == k, 0][:training_size], + sample_train[label_train == k, 1][:training_size]) + + plt.title("Gaussians") + plt.show() + + return sample_train, training_input, test_input, class_labels + elif n == 3: + class_labels = [r'A', r'B', r'C'] + label_train = np.zeros(3*(training_size+test_size)) + sample_train = [] + sampleA = [[0 for x in range(n)] for y in range(training_size+test_size)] + sampleB = [[0 for x in range(n)] for y in range(training_size+test_size)] + sampleC = [[0 for x in range(n)] for y in range(training_size+test_size)] + randomized_vector1 = np.random.randint(3, size=n) + randomized_vector2 = (randomized_vector1+1) % 3 + randomized_vector3 = (randomized_vector2+1) % 3 + for tr in range(training_size+test_size): + for feat in range(n): + if randomized_vector1[feat] == 0: + sampleA[tr][feat] = np.random.normal(2*1*np.pi/6, sigma, None) + elif randomized_vector1[feat] == 1: + sampleA[tr][feat] = np.random.normal(2*3*np.pi/6, sigma, None) + elif randomized_vector1[feat] == 2: + sampleA[tr][feat] = np.random.normal(2*5*np.pi/6, sigma, None) + else: + print('Nope') + + if randomized_vector2[feat] == 0: + sampleB[tr][feat] = np.random.normal(2*1*np.pi/6, sigma, None) + elif randomized_vector2[feat] == 1: + sampleB[tr][feat] = np.random.normal(2*3*np.pi/6, sigma, None) + elif randomized_vector2[feat] == 2: + sampleB[tr][feat] = np.random.normal(2*5*np.pi/6, sigma, None) + else: + print('Nope') + + if randomized_vector3[feat] == 0: + sampleC[tr][feat] = np.random.normal(2*1*np.pi/6, sigma, None) + elif randomized_vector3[feat] == 1: + sampleC[tr][feat] = np.random.normal(2*3*np.pi/6, sigma, None) + elif randomized_vector3[feat] == 2: + sampleC[tr][feat] = np.random.normal(2*5*np.pi/6, sigma, None) + else: + print('Nope') + + sample_train = [sampleA, sampleB, sampleC] + for lindex in range(training_size+test_size): + label_train[lindex] = 0 + for lindex in range(training_size+test_size): + label_train[training_size+test_size+lindex] = 1 + for lindex in range(training_size+test_size): + label_train[training_size+test_size+training_size+test_size+lindex] = 2 + label_train = label_train.astype(int) + sample_train = np.reshape(sample_train, (3*(training_size+test_size), n)) + training_input = {key: (sample_train[label_train == k, :])[:training_size] + for k, key in enumerate(class_labels)} + test_input = {key: (sample_train[label_train == k, :])[training_size:( + training_size+test_size)] for k, key in enumerate(class_labels)} + + if PLOT_DATA: + fig1 = plt.figure() + for k in range(0, 3): + plt.scatter(sample_train[label_train == k, 0][:training_size], + sample_train[label_train == k, 1][:training_size]) + + plt.title("Gaussians") + plt.show() + + return sample_train, training_input, test_input, class_labels + else: + print("Gaussian presently only supports 2 or 3 qubits") + + +if __name__ == '__main__': + + _, train_data, test_data, label = ad_hoc_data(training_size=4, test_size=4, n=2, gap=0.3, PLOT_DATA=False) + print(train_data) + print(test_data) + print(label) diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/w8_01.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/w8_01.ipynb new file mode 100644 index 000000000..8199a579d --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/w8_01.ipynb @@ -0,0 +1,198 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## _*Qiskit Aqua: Using Grover Search for 3SAT problems*_\n", + "\n", + "This notebook is based on an official notebook by Qiskit team, available at https://github.com/qiskit/qiskit-tutorial under the [Apache License 2.0](https://github.com/Qiskit/qiskit-tutorial/blob/master/LICENSE) license. \n", + "\n", + "This notebook demonstrates how to use the `Qiskit Aqua` library Grover algorithm and process the result.\n", + "\n", + "Your **TASK** is to execute every step of this notebook while learning to use qiskit-aqua and also strengthening your knowledge of the Grover search algorithm." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pylab\n", + "from qiskit_aqua import run_algorithm\n", + "from qiskit_aqua.input import get_input_instance\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as draw\n", + "from qiskit.tools.visualization import plot_histogram" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have a SAT problem to which we want to find solutions using Grover and SAT oracle combination. The SAT problem is specified in the [DIMACS CNF format](https://www.satcompetition.org/2009/format-benchmarks2009.html). We read one of\n", + "the sample cnf files to load the problem.\n", + "\n", + "Try the code below for both sample files `3sat3-5.cnf` and `3sat2-3.cnf`." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "c This is an example DIMACS 3-sat file with 3 satisfying solutions: 1 -2 3 0, -1 -2 -3 0, 1 2 -3 0\n", + "p cnf 3 5\n", + "-1 -2 -3 0\n", + "1 -2 3 0\n", + "1 2 -3 0\n", + "1 -2 -3 0\n", + "-1 2 3 0\n", + "\n" + ] + } + ], + "source": [ + "with open('3sat3-5.cnf', 'r') as f:\n", + " sat_cnf = f.read()\n", + "print(sat_cnf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to run an algorithm we need to create a configuration dictionary with the parameters for the algorithm and any other dependent objects it requires. So we first define a dictionary for the algorithm. We name GROVER as the algorithm and as it has no further parameters we are done. GROVER needs an oracle so we configure one. Here we use the SAT oracle which will allow us to solve an optimization SAT problem by searching solution space. We configure the oracle with the problem we loaded above. We then combine the dictionaries into the final single params dictionary that is passed to run_algorithm." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, -2, 3]\n" + ] + } + ], + "source": [ + "algorithm_cfg = {\n", + " 'name': 'Grover'\n", + "}\n", + "\n", + "oracle_cfg = {\n", + " 'name': 'SAT',\n", + " 'cnf': sat_cnf\n", + "}\n", + "\n", + "params = {\n", + " 'problem': {'name': 'search', 'random_seed': 50},\n", + " 'algorithm': algorithm_cfg,\n", + " 'oracle': oracle_cfg,\n", + " 'backend': {'name': 'qasm_simulator'}\n", + "}\n", + "\n", + "result = run_algorithm(params)\n", + "print(result['result'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As seen above, a satisfying solution to the specified sample SAT problem is obtained, with the absolute values indicating the variable indices, and the signs the `True/False` assignments, similar to the DIMACS format.\n", + "\n", + "A measurements result is also returned where it can be seen, below in the plot, that result\\['result'\\] was the highest probability. But the other solutions were very close in probability too." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pylab.rcParams['figure.figsize'] = (8, 4)\n", + "plot_histogram(result['measurements'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Try the following command `draw(result['circuit'])` \n", + "\n", + "Which should produce a figure like:\n", + "\n", + "![grover](grover_output.png)\n", + "\n", + "If it does not and an error is showw instead it is due to a bug in the drawing mechanism the `cnx` gates may not be visible yet, this issue will surely be fixed in later versions." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "#draw(result['circuit'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above figure shows the circuit that was run for Grover. This circuit was returned from the algorithm for the above visualization which was generated using qiskit.tools.visualization functionality." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/w8_02.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/w8_02.ipynb new file mode 100644 index 000000000..130a6383a --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/w8_02.ipynb @@ -0,0 +1,334 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# _*Qiskit Aqua: Experiment with classification problem with quantum-enhanced support vector machines*_\n", + "\n", + "This notebook is based on an official notebook by Qiskit team, available at https://github.com/qiskit/qiskit-tutorial under the [Apache License 2.0](https://github.com/Qiskit/qiskit-tutorial/blob/master/LICENSE) license. \n", + "The original notebook was developed by Vojtech Havlicek[1], Kristan Temme[1], Antonio Córcoles[1], Peng Liu[1], Richard Chen[1], Marco Pistoia[1] and Jay Gambetta[1] ([1]IBMQ)\n", + "\n", + "Your **TASK** is to execute every step of this notebook while learning to use qiskit-aqua and also understanding how this SVM implementation can be used for classifying breast cancer analysis." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Introduction\n", + "Classification algorithms and methods for machine learning are essential for pattern recognition and data mining applications. Well known techniques such as support vector machines and neural networks have blossomed over the last two decades as a result of the spectacular advances in classical hardware computational capabilities and speed. This progress in computer power made it possible to apply techniques, that were theoretically developed towards the middle of the 20th century, on classification problems that were becoming increasingly challenging.\n", + "\n", + "A key concept in classification methods is that of a kernel. Data cannot typically be separated by a hyperplane in its original space. A common technique used to find such a hyperplane consists on applying a non-linear transformation function to the data. This function is called a feature map, as it transforms the raw features, or measurable properties, of the phenomenon or subject under study. Classifying in this new feature space -and, as a matter of fact, also in any other space, including the raw original one- is nothing more than seeing how close data points are to each other. This is the same as computing the inner product for each pair of data in the set. So, in fact we do not need to compute the non-linear feature map for each datum, but only the inner product of each pair of data points in the new feature space. This collection of inner products is called the kernel and it is perfectly possible to have feature maps that are hard to compute but whose kernels are not.\n", + "\n", + "In this notebook we provide an example of a classification problem that requires a feature map for which computing the kernel is not efficient classically -this means that the required computational resources are expected to scale exponentially with the size of the problem. We show how this can be solved in a quantum processor by a direct estimation of the kernel in the feature space. The method we used falls in the category of what is called supervised learning, consisting of a training phase (where the kernel is calculated and the support vectors obtained) and a test or classification phase (where new unlabelled data is classified according to the solution found in the training phase).\n", + "\n", + "References and additional details:\n", + "\n", + "[1] Vojtech Havlicek, Antonio D. C´orcoles, Kristan Temme, Aram W. Harrow, Abhinav Kandala, Jerry M. Chow, and Jay M. Gambetta1, \"Supervised learning with quantum enhanced feature spaces,\" [arXiv: 1804.11326](https://arxiv.org/pdf/1804.11326.pdf)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from qsvm_datasets import *\n", + "from qiskit_aqua.utils import split_dataset_to_data_and_labels, map_label_to_class_name\n", + "from qiskit_aqua.input import get_input_instance\n", + "from qiskit_aqua import run_algorithm\n", + "\n", + "# setup aqua logging\n", + "import logging\n", + "from qiskit_aqua._logging import set_logging_config, build_logging_config\n", + "# set_logging_config(build_logging_config(logging.DEBUG)) # choose INFO, DEBUG to see the log" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Optional] Setup token to run the experiment on a real device\n", + "If you would like to run the experiement on a real device, you need to setup your account first.\n", + "\n", + "Note: If you do not store your token yet, use `IBMQ.save_accounts()` to store it first." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import IBMQ\n", + "IBMQ.load_accounts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we prepare the dataset, which is used for training, testing and the finally prediction.\n", + "\n", + "*Note: You can easily switch to a different dataset, such as the Breast Cancer dataset, by replacing 'ad_hoc_data' to 'Breast_cancer' below.*" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPgAAAD8CAYAAABaQGkdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAFcVJREFUeJztnW+oZVd5xp8nk5FJZm4c8E41OjFTaRElUJNcAiWQWLU2raHphxYMGOjEOF/aELEgWijDfChtv4iBhtLrTKaRRkUSQ0qQaECTNKWO3omxJpkoEhIyHWVyK4MzVckf336456Qn23P2Xnuvv3ud5wchc2b2Wfs9a++1nne9611r0cwghKiT83IbIISIhxq4EBWjBi5ExaiBC1ExauBCVIwauBAVowYuRMWogQtRMWrgQlTM+TEKXdmx3d60ssOrjNXVlc5rNjfPDv7+7Hef3zz3un+7dHVXFJtyldenjCG0/Q6Xe7va3XxOwOJn1Vb2kPoI8axcynAt63/O/hJnf/kyu8qJ0sDftLIDB2+40quM/bdc23nN0cOPDP7+7HdvPvL6chbZ7mtTrvL6lDGEtt/hcm9Xu5vPCVj8rNrKHlIfIZ6VSxmuZR26/7hTOVEauA+pGva8lyWWTUPKE/9fT211O32Od3709XXaVscu5Q6hq9zZv0/1DmgMLkTFFKfgbfj0uC7fbarA2IntmrsQSy1D0Me26TUuyutSbqr6kIILUTFq4EJUjJOLTnI3gMMALgNgAG42s/+MaVifwEqfgEXo4FpshriRqenjvvp8f3YI1ec5dpEr6JYC1zH47QAeNLM/JfkGABdGtEkIEYjOBk7yIgDXAPhzADCzlwC8FMugeb1ds7fuEwxzmRbrM8WSi6ZNJQatYpFKCWfruJb6dRmDvwPAiwCOkvwuycMkdzYvInmA5AbJjXO/eDm4oUKI/ri46OcDuALArWZ2jOTtAD4F4G9mLzKzdQDrALBvz4r3To4uY6wSlXYZWJRc0pbI0WfqaMhzbdrkGxcI6TEN8UBCxRhcFPwkgJNmdmzy+R5sNXghROF0KriZ/YTkCyTfaWY/APB+AE+HNsSlxwo59p5X1jJ7BEMUa5GS+9JU33m2TO8ZMpreRoh3I8cY3zWKfiuAuycR9GcB7I9nkhAiFE4N3MyeALDWt/BYvavv6qU+5XVRS7S1SR+1ia3kNdI1Lg/loSiTTYiKibLY5PnNc0HVO2TGWm0LSlIwJAq8KIqdOrsrxxLNPsTOb5CCC1ExauBCVEyx68GHTIn1wdddC7E2vUSX0YVFAaDZz7mGQrECfqloDmF8F9hIwYWomOIU3DcBJWZwzWUJa8j79bVhTLRNw8WaXh2T5zQvGDlk6kwKLkTFFKPgQ5ZsploK2ke5XRiDgoSiRNUs0aZFzPN07vzotc7bJkvBhaiY7AoeS7mblKDcY6dPkkqfaPaiyLFPHbvcf0xKDgxLEpKCC1Ex2RTcR7mHlO+C66IKX8amHLUztuex/5Zrccd//NDpWim4EBWjBi5ExSR30UO45qGnxRa55kNc8rGmSMZ2U13Kz72P+Lz75torINRzkIILUTFRFdwn7bTt/O4Q93HZf70PY1Xu2Pgs/gg5XTbUhlwBuFDehBRciIqJouCXru7CwRuufO1zn56nTxLL2JV7bNMzTWLtbJp7LD6PEp7VbH1sbp51+o4UXIiKiToGDx0hnxI7Eu9C6jF3SWrmwxAlTL0HehslKHkfpOBCVEy2VNUxKvdYIuWpNp8Q7QxZnNPGkOcoBReiYpwUnORzAM4CeBXAK2bWesrJ6uqK88kYfXquIdH4Pvfpun+phBybjm2MmYs+9eSi5IviDL7vXh8X/ffMbNPrbkKIpMhFF6JiXBXcAHydpAH4ZzNbd/nSENfcd1fV2lzzMUyPpUp48d0jPAZ9jkZyGbaGfudcG/jVZnaK5G8AeIjkM2b26OwFJA8AOAAAb3/LG4MaKYQYhuvxwacm/z9N8j4AVwF4tHHNOoB1ANi3Z8VclWdRj+Wj2sA4lNsnkJVTwUKkkpZ+KOAQhgTemt8NTecYnOROkivTPwP4IIAno1gjhAiKi4K/GcB9JKfXf8HMHvS9cYj9yudR+yYNpYw955FyjFxS+moIYi2w6WzgZvYsgN8JelchRBKy74ueekucsah1iJ48529Nde8uJe9jR6idfX2ShUIruebBhaiYbAoeS7nHoNBDfnuqsWYtEe1Y9FHYEpRcCi5ExaiBC1ExyV10uYCLyZmWWkJAyOc+zaHZkCHN0LTTtnJmP/vU8bxyXZCCC1Ex2afJhhDaC0ilnIvsznlMcS6PKvZ9fYOtoVQ3JDo+WAjxOkap4KIdF/UKqTJ9lMXnvr7j0SGUuMONjg8WQgBIpOAl9X45KCWxJfZzSPmcU59+0rzPWN5pKbgQFZP9ZJNaCbVwQbQTUsn7nDsf+izxWEjBhagYmlnwQtfe9VbbOPqx4OXGJoQK+G41NSXGxhUlKkxoQnlFrvXfVucx63tt/+ewceIUu66TggtRMWrgQlSMXPQ5DHHzQrjmsY40XgbXvA99nm/IoVLI5yAXXQihVNV5uEy9SBXHS59FP0OWoQ5R/VjvkxRciIqRgrcglV4uXDZx8NlYYt610/JipcJKwYWoGCl4QmJFz8Xiug2lhIvOEpsXMR+i6rFSYaXgQlSM8zw4yW0ANgD8t5ld33bt2OfBY5F6/rtJTTEFn5TUWPXQZZPLc3Z9lofuP47nXjwbdB78NgAnelwvhMiM0xic5F4AHwLwtwA+EdWiCill7D22M7ljLaeNFbHuml/PceqOq4J/FsAnAfxq0QUkD5DcILnx4pmfBzFOCOFHZwMneT2A02Z2vO06M1s3szUzW9uz+8JgBgohhtMZZCP5dwBuAvAKgB0ALgLwFTP7yKLv7NuzYgdvuNLLsDG4kG2k3Os8hOtXUn2XsNNN7Prw/Y3Bgmxm9mkz22tm+wB8GMA32hq3EKIcik10GcueV01ynlLiQwm7hoZU7j51Pc8DSpU4E9tb6dXAzexhAA9HsUQIEZwoGz6QXFioz3ixRAV36YFjK3eq6ZdcCSJ9KDG+EYMYiS5CiJGRXMGnDOkZS1LwEGmJPuRUlhJPdy0xvtHnGQ2x38yk4EIsM8mj6KWOaVwoYbxdAiEi7iXMdcemhHdBCi5ExaiBC1ExUYJsIVJVXUgVdCvJNS95iFPjgYsluNmLUJBNiCVn1Ao+JWcCRs3TYT702Xt8zORUeCm4EEtOsYtNlpGcar1od8+hjEmpfab52uqrhPG7FFyIihm1gpeQujrtwUOeQpmSpt2hlXzKon3FcxDivQn97sVSeym4EBUzSgUvQbmblKDGJbLoWc37+zGN213o47X0fX8O3d+6ReJrSMGFqJhRKXiJyh2SPr+vdLUb8qxSjdOn5aZ+n3J4LVJwISpGDVyIihmFi16bax5rmmaIu1dycDC2y57LVU+JFFyIiilWwce+L/csNSvELLF/Z6wg1Vj34HdBCi5ExYxquWiIXjXV9FJOBcg1hVaC6sX+7aXsDR9sX3SSO0h+m+T3SD5F8lAvS4QQ2XA5XZQAdprZOZLbATwG4DYz+9ai76Te8KEkSlCxKcvgrTRJ7b3k2iPeVcE7g2y21QOcm3zcPvkvvF8vhAiOUxSd5DYAxwH8FoA7zOxYVKsCkGv55jLMrZZMqlM7p8zeJ2R+Qyj7naLoZvaqmb0HwF4AV5G8rHkNyQMkN0hunPvFy0GME0L40WuazMzOYOv44Ovm/Nu6ma2Z2dquC7YHMk8I4UOni05yD4CXzewMyQsAfADAP4Q2pIT9q5o2lJzG6UJsd1XDkPLrwGUMfjGAuybj8PMAfNnMHohrlhAiBC5R9P8CcHkCW4oj1v5kqUkdeFoGxrIXv1JVhaiY4lJVSxiLTwml3CWP03xUvcTfFdpLif0b+9jbbBs62USIJSeKgpNcWKiPKo7pBM8S1a0PYx+vl17/XfXr8q5LwYVYcpIr+JRYkencJ4yUrhw+jEHVS67/0BFyKbgQS062LZtizTGnnrMuWTFCIeUeL1JwISpGDVyIiil2V9VZfA5oj4Vcwn70CR6NPTXYB5/jqOchBReiYrIreKoD56eMIWBUAz4K1OedqNWT6vrtOj5YCJEv0WURbT1XKXtSA/Uqx5QhdRJq3LgMyu3rSQbbF10IMV6KU/ApY1HyKWNXlCk5lXvKMii4L2v7P4eNE6ek4EIsM1E3fEjVs+c6XaKNsSqMzwYEvnQp91jrNAZScCGEGrgQNRM10WWeyxUiAaJZfokHuJdoUxslJwDlSFUu+Vn1QQouRMUUs6tq7CSJPj3yMh276/Nb9czycPTwI0p0EUJEUvC1d73VNo5+rPWaELtKujCGpYc5VCGE4vk8o1CJTLljB7mSroIpOMlLSH6T5AmST5G8rYedQoiMuETRXwHwV2b2OMkVAMdJPmRmT/vceEjPN0QxxnBi6LS3LmF8F4vQ6ae5lXvKrB0lbkzSqeBm9mMze3zy57MATgB4W1SrhBBB6DUPTnIftk4aPRbDmFlcesMQig6UqeoxCK0WLtsLhVTuUlQ7BKl+i3MUneQuAPcC+LiZ/WzOvx8guUFy48UzPw9poxBiIE5RdJLbATwA4Gtm9pmu69vmwUOOM+f1giGi77XurV6SAo5xvD2PWL+jy9MMGUUngCMATrg0biFEObi46FcDuAnA+0g+MfnvjyLbJYQIQGeQzcweA9DpCriyyE0Z4qZOvzNbZoh9pWPt9JqLElzc2qYAQ7vmi95X33dQqapCVEz2fdGnNHu5Pj1kqim1VHu310RtvzGVcodCCi5ExWRX8EXjXd8UwOb4PPSZT+LXqU2tZwmh3DnOZ5OCC1Ex2RW8qazzei6fxRghlXz2O7VE2F2oWZm7SK3coZGCC1Ex2RV8iosixlBywL2HlWovDz4LYIYodqx3SwouRMWogQtRMcXsqjoEHzeyLQkh1S4wqd3gtt88Bpc8ZcptV32kcs3n2aFdVYUQADIqeLNnSn10rxZg1EHI59j2PGInr/R9F3T4oBAi/TTZop7KpQfzWZAilpM+yUmhF4eEVOyhSMGFqJgoCr66uhKlh0qt2LE3fliG/dBzMU9pfZ6nj3LnfL5ScCEqpphU1ZJo9tZDev5l3n89BakWdnSVN++ZluSRScGFqBgpeA9KXS6qsXx4hmyCWGL9S8GFqBg1cCEqRi76QIYsSAk57TYvyFS7q95ngdAQ+gRGQ6dHx3pmUnAhKmZpFXy2xwyxYMFHQfoor4uttSv5LKGOkG4SQrldnlXsZ+Ry+OCdJE+TfDKqJUKI4Lgo+L8A+EcAn49ryvJQ29lnsYm9tDfU1FcJS5CbdCq4mT0K4KcJbBFCBCbYGJzkAQAHAODtb3ljqGKzoFNQhuF7Gk0fQjybEMrtsnVTqHTW2Xttbp51+k6wKLqZrZvZmpmt7dl9YahihRAeRImib26exdHDjyxFFLcEFilGqmh6rDn50GPaIRscLmJqW5sn4bNsNNRv1zy4EBXTqeAkvwjgvQBWSZ4EcNDMjrgUvkzzsUMYezS9xKhxE5e6Da3cIcoPRWcDN7Mbg95RCJEMuehCVEyUINvzm+dw85FHfi3YA8hdD0Wbi+jj+s9zEUPuYT/Uhr7kdM2n9w6VeuyDFFyIiom62GSekowp8DYk4cUnSSaWp+NS521KkiqYJuV2o8+7JQUXomKSLBedt5dZSUo+tcGnV20qx+znrh4353TZGKa65jGkrmIo96wdPieSxnr2UnAhKiaKgl+6ugsHb7jSaaxQkpIPwaXnDbl4ZV49LSq3qQ6lqnVMu2IlmQwZb/vulT/k/ZGCC1ExUcfg85Rr0ZijZCXX8tHwxPYmfJW7a1/00Mq9KNfA952TggtRMWrgQlRMkmmyUFMAsd34PtNlfdYWT8vr4+qXPGRxYZHdpbvmTYas6V7kXrvs7BLKNZ8iBReiYkaxL3qzp21+TqVyQ9Mgm57BIiUv9XDDkgl9wsiUXModGim4EBUzCgXvYizLUUOkxA7BJR1yyFlrTWLHRnwZUu9D0k+nDPECXBe1HLr/eOd1gBRciKoZhYL3Ub4Q0edUSuuTQNMnZbUEYqhnrPu63LvPwhGXZbqxnp0UXIiKSbJlUw5KnkfONRYvidgzBqk8hrbfEVq5h9STFFyIikm+ZVMXbcq7SPnakvlLVvIpqTydeWoTInoemtSnofhkv4U6d2wR88rXlk1CCABq4EJUjZOLTvI6ALcD2AbgsJn9vcv3fNy9tuQVlyDVGI4FKiHYlrp+Yk0HpXbNh5Q3W0afvd7m/VuwRBeS2wDcAeAPAbwbwI0k3+1UuhAiKy4KfhWAH5nZswBA8ksAbgDwdEhDfII9bTuYNj/36bXbFDZV0K5PkDD2zjM+iRwlsUwBV5cx+NsAvDDz+eTk74QQhUMza7+A/DMAf2Bmt0w+3wTgKjO7tXHdAQAHJh8vA/BkeHN7swpgM7cRE0qxpRQ7ANkyD1c7LjWzPV0XubjoJwFcMvN5L4BTzYvMbB3AOgCQ3DCzNYeyo1KKHUA5tpRiByBbUtjh4qJ/B8Bvk/xNkm8A8GEA/xbKACFEPDoV3MxeIfmXAL6GrWmyO83sqeiWCSG8cZoHN7OvAvhqj3LXh5kTnFLsAMqxpRQ7ANkyj6B2dAbZhBDjRamqQlRM0AZO8jqSPyD5I5KfCll2TzvuJHmaZNapOpKXkPwmyRMknyJ5W0ZbdpD8NsnvTWw5lMuWiT3bSH6X5AOZ7XiO5PdJPkFyI7Mtu0neQ/KZyTvzu95lhnLRJymtPwTw+9iaWvsOgBvNLGjGm6Mt1wA4B+DzZnZZ6vvP2HExgIvN7HGSKwCOA/iTTHVCADvN7BzJ7QAeA3CbmX0rtS0Tez4BYA3ARWZ2fQ4bJnY8B2DNzLLPgZO8C8C/m9nhyYzVhWZ2xqfMkAr+Wkqrmb0EYJrSmhwzexTAT3Pcu2HHj83s8cmfzwI4gUxZgLbFucnH7ZP/sgRgSO4F8CEAh3Pcv0RIXgTgGgBHAMDMXvJt3EDYBq6U1hZI7gNwOYBjGW3YRvIJAKcBPGRmuWz5LIBPAvhVpvvPYgC+TvL4JBszF+8A8CKAo5Ohy2GSO30LDdnAOefvFKIHQHIXgHsBfNzMfpbLDjN71czeg61sxKtIJh++kLwewGkzc1vvGJ+rzewKbK2W/IvJ8C4H5wO4AsA/mdnlAP4XgHccK2QDd0ppXTYm4917AdxtZl/JbQ8ATFy/hwFcl+H2VwP448nY90sA3kfyXzPYAQAws1OT/58GcB+2hpo5OAng5IxXdQ+2GrwXIRu4UlobTAJbRwCcMLPPZLZlD8ndkz9fAOADAJ5JbYeZfdrM9prZPmy9I98ws4+ktgMASO6cBD8xcYc/iEyLpMzsJwBeIPnOyV+9HwGWZAfbdLGklFaSXwTwXgCrJE8COGhmRzKYcjWAmwB8fzL2BYC/nmQGpuZiAHdNZjvOA/BlM8s6RVUAbwZw31Y/jPMBfMHMHsxoz60A7p4I5LMA9vsWqEw2ISpGmWxCVIwauBAVowYuRMWogQtRMWrgQlSMGrgQFaMGLkTFqIELUTH/B0aFQF+h+KscAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'A': 0, 'B': 1}\n" + ] + } + ], + "source": [ + "feature_dim=2 # we support feature_dim 2 or 3\n", + "sample_Total, training_input, test_input, class_labels = ad_hoc_data(training_size=20, test_size=10, n=feature_dim, gap=0.3, PLOT_DATA=True)\n", + "\n", + "datapoints, class_to_label = split_dataset_to_data_and_labels(test_input)\n", + "print(class_to_label)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the dataset ready we initialize the necessary inputs for the algorithm:\n", + "- the input dictionary (params) \n", + "- the input object containing the dataset info (algo_input)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "params = {\n", + " 'problem': {'name': 'svm_classification', 'random_seed': 10598},\n", + " 'algorithm': {\n", + " 'name': 'QSVM.Kernel'\n", + " },\n", + " 'backend': {'name': 'qasm_simulator', 'shots': 1024},\n", + " 'feature_map': {'name': 'SecondOrderExpansion', 'depth': 2, 'entanglement': 'linear'}\n", + "}\n", + "\n", + "algo_input = get_input_instance('SVMInput')\n", + "algo_input.training_dataset = training_input\n", + "algo_input.test_dataset = test_input\n", + "algo_input.datapoints = datapoints[0] # 0 is data, 1 is labels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With everything setup, we can now run the algorithm.\n", + "\n", + "For the testing, the result includes the details and the success ratio.\n", + "\n", + "For the prediction, the result includes the predicted labels. " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "testing success ratio: 1.0\n", + "predicted classes: ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B']\n" + ] + } + ], + "source": [ + "result = run_algorithm(params, algo_input)\n", + "print(\"testing success ratio: \", result['testing_accuracy'])\n", + "print(\"predicted classes:\", result['predicted_classes'])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "kernel matrix during the training:\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print(\"kernel matrix during the training:\")\n", + "kernel_matrix = result['kernel_matrix_training']\n", + "img = plt.imshow(np.asmatrix(kernel_matrix),interpolation='nearest',origin='upper',cmap='bone_r')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The breast cancer dataset\n", + "Now we run our algorithm with the real-world dataset: the breast cancer dataset, we use the first two principal components as features." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'A': 0, 'B': 1} {0: 'A', 1: 'B'}\n" + ] + } + ], + "source": [ + "sample_Total, training_input, test_input, class_labels = Breast_cancer(training_size=20, test_size=10, n=2, PLOT_DATA=True)\n", + "# n =2 is the dimension of each data point\n", + "\n", + "datapoints, class_to_label = split_dataset_to_data_and_labels(test_input)\n", + "label_to_class = {label:class_name for class_name, label in class_to_label.items()}\n", + "print(class_to_label, label_to_class)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "testing success ratio: 0.95\n", + "ground truth: ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B']\n", + "predicted: ['A', 'B', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B']\n" + ] + } + ], + "source": [ + "algo_input = get_input_instance('SVMInput')\n", + "algo_input.training_dataset = training_input\n", + "algo_input.test_dataset = test_input\n", + "algo_input.datapoints = datapoints[0]\n", + "result = run_algorithm(params, algo_input)\n", + "print(\"testing success ratio: \", result['testing_accuracy'])\n", + "print(\"ground truth: {}\".format(map_label_to_class_name(datapoints[1], label_to_class)))\n", + "print(\"predicted: {}\".format(result['predicted_classes']))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "kernel matrix during the training:\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print(\"kernel matrix during the training:\")\n", + "kernel_matrix = result['kernel_matrix_training']\n", + "img = plt.imshow(np.asmatrix(kernel_matrix),interpolation='nearest',origin='upper',cmap='bone_r')\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/w8_03.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/w8_03.ipynb new file mode 100644 index 000000000..c627a92e1 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/w8_03.ipynb @@ -0,0 +1,505 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# _*Qiskit Aqua: Experimenting with MaxCut problem with variational quantum eigensolver*_ \n", + "\n", + "\n", + "This notebook is based on an official notebook by Qiskit team, available at https://github.com/qiskit/qiskit-tutorial under the [Apache License 2.0](https://github.com/Qiskit/qiskit-tutorial/blob/master/LICENSE) license. \n", + "The original notebook was developed by Antonio Mezzacapo[1], Jay Gambetta[1], Kristan Temme[1], Ramis Movassagh[1], Albert Frisch[1], Takashi Imamichi[1], Giacomo Nannicni[1], Richard Chen[1], Marco Pistoia[1], Stephen Wood[1]([1]IBMQ)\n", + "\n", + "Your **TASK** is to execute every step of this notebook while learning to use qiskit-aqua and also how to leverage general problem modeling into know problems that qiskit-aqua can solve, namely the [Maximum Cut problem](https://en.wikipedia.org/wiki/Maximum_cut) problem." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "Many problems in quantitative fields such as finance and engineering are optimization problems. Optimization problems lay at the core of complex decision-making and definition of strategies. \n", + "\n", + "Optimization (or combinatorial optimization) means searching for an optimal solution in a finite or countably infinite set of potential solutions. Optimality is defined with respect to some criterion function, which is to be minimized or maximized. This is typically called cost function or objective function. \n", + "\n", + "**Typical optimization problems**\n", + "\n", + "Minimization: cost, distance, length of a traversal, weight, processing time, material, energy consumption, number of objects\n", + "\n", + "Maximization: profit, value, output, return, yield, utility, efficiency, capacity, number of objects \n", + "\n", + "We consider here maxcut problem of practical interest in many fields, and show how they can mapped on quantum computers.\n", + "\n", + "\n", + "### Weighted MaxCut\n", + "\n", + "MaxCut is an NP-complete problem, with applications in clustering, network science, and statistical physics. To grasp how practical applications are mapped into given MaxCut instances, consider a system of many people that can interact and influence each other. Individuals can be represented by vertices of a graph, and their interactions seen as pairwise connections between vertices of the graph, or edges. With this representation in mind, it is easy to model typical marketing problems. For example, suppose that it is assumed that individuals will influence each other's buying decisions, and knowledge is given about how strong they will influence each other. The influence can be modeled by weights assigned on each edge of the graph. It is possible then to predict the outcome of a marketing strategy in which products are offered for free to some individuals, and then ask which is the optimal subset of individuals that should get the free products, in order to maximize revenues.\n", + "\n", + "The formal definition of this problem is the following:\n", + "\n", + "Consider an $n$-node undirected graph *G = (V, E)* where *|V| = n* with edge weights $w_{ij}>0$, $w_{ij}=w_{ji}$, for $(i, j)\\in E$. A cut is defined as a partition of the original set V into two subsets. The cost function to be optimized is in this case the sum of weights of edges connecting points in the two different subsets, *crossing* the cut. By assigning $x_i=0$ or $x_i=1$ to each node $i$, one tries to maximize the global profit function (here and in the following summations run over indices 0,1,...n-1)\n", + "\n", + "$$\\tilde{C}(\\textbf{x}) = \\sum_{i,j} w_{ij} x_i (1-x_j).$$\n", + "\n", + "In our simple marketing model, $w_{ij}$ represents the probability that the person $j$ will buy a product after $i$ gets a free one. Note that the weights $w_{ij}$ can in principle be greater than $1$, corresponding to the case where the individual $j$ will buy more than one product. Maximizing the total buying probability corresponds to maximizing the total future revenues. In the case where the profit probability will be greater than the cost of the initial free samples, the strategy is a convenient one. An extension to this model has the nodes themselves carry weights, which can be regarded, in our marketing model, as the likelihood that a person granted with a free sample of the product will buy it again in the future. With this additional information in our model, the objective function to maximize becomes \n", + "\n", + "$$C(\\textbf{x}) = \\sum_{i,j} w_{ij} x_i (1-x_j)+\\sum_i w_i x_i. $$\n", + " \n", + "In order to find a solution to this problem on a quantum computer, one needs first to map it to an Ising Hamiltonian. This can be done with the assignment $x_i\\rightarrow (1-Z_i)/2$, where $Z_i$ is the Pauli Z operator that has eigenvalues $\\pm 1$. Doing this we find that \n", + "\n", + "$$C(\\textbf{Z}) = \\sum_{i,j} \\frac{w_{ij}}{4} (1-Z_i)(1+Z_j) + \\sum_i \\frac{w_i}{2} (1-Z_i) = -\\frac{1}{2}\\left( \\sum_{i" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Generating a graph of 4 nodes \n", + "\n", + "n=4 # Number of nodes in graph\n", + "G=nx.Graph()\n", + "G.add_nodes_from(np.arange(0,n,1))\n", + "elist=[(0,1,1.0),(0,2,1.0),(0,3,1.0),(1,2,1.0),(2,3,1.0)]\n", + "# tuple is (i,j,weight) where (i,j) is the edge\n", + "G.add_weighted_edges_from(elist)\n", + "\n", + "colors = ['r' for node in G.nodes()]\n", + "pos = nx.spring_layout(G)\n", + "default_axes = plt.axes(frameon=True)\n", + "nx.draw_networkx(G, node_color=colors, node_size=600, alpha=.8, ax=default_axes, pos=pos)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0. 1. 1. 1.]\n", + " [1. 0. 1. 0.]\n", + " [1. 1. 0. 1.]\n", + " [1. 0. 1. 0.]]\n" + ] + } + ], + "source": [ + "# Computing the weight matrix from the random graph\n", + "w = np.zeros([n,n])\n", + "for i in range(n):\n", + " for j in range(n):\n", + " temp = G.get_edge_data(i,j,default=0)\n", + " if temp != 0:\n", + " w[i,j] = temp['weight'] \n", + "print(w)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Brute force approach\n", + "\n", + "Try all possible $2^n$ combinations. For $n = 4$, as in this example, one deals with only 16 combinations, but for n = 1000, one has 1.071509e+30 combinations, which is impractical to deal with by using a brute force approach. " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "case = [0, 0, 0, 0] cost = 0.0\n", + "case = [1, 0, 0, 0] cost = 3.0\n", + "case = [0, 1, 0, 0] cost = 2.0\n", + "case = [1, 1, 0, 0] cost = 3.0\n", + "case = [0, 0, 1, 0] cost = 3.0\n", + "case = [1, 0, 1, 0] cost = 4.0\n", + "case = [0, 1, 1, 0] cost = 3.0\n", + "case = [1, 1, 1, 0] cost = 2.0\n", + "case = [0, 0, 0, 1] cost = 2.0\n", + "case = [1, 0, 0, 1] cost = 3.0\n", + "case = [0, 1, 0, 1] cost = 4.0\n", + "case = [1, 1, 0, 1] cost = 3.0\n", + "case = [0, 0, 1, 1] cost = 3.0\n", + "case = [1, 0, 1, 1] cost = 2.0\n", + "case = [0, 1, 1, 1] cost = 3.0\n", + "case = [1, 1, 1, 1] cost = 0.0\n", + "\n", + "Best solution = [1, 0, 1, 0] cost = 4.0\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "best_cost_brute = 0\n", + "for b in range(2**n):\n", + " x = [int(t) for t in reversed(list(bin(b)[2:].zfill(n)))]\n", + " cost = 0\n", + " for i in range(n):\n", + " for j in range(n):\n", + " cost = cost + w[i,j]*x[i]*(1-x[j])\n", + " if best_cost_brute < cost:\n", + " best_cost_brute = cost\n", + " xbest_brute = x \n", + " print('case = ' + str(x)+ ' cost = ' + str(cost))\n", + "\n", + "colors = ['r' if xbest_brute[i] == 0 else 'b' for i in range(n)]\n", + "nx.draw_networkx(G, node_color=colors, node_size=600, alpha=.8, pos=pos)\n", + "print('\\nBest solution = ' + str(xbest_brute) + ' cost = ' + str(best_cost_brute)) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Mapping to the Ising problem" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "qubitOp, offset = maxcut.get_maxcut_qubitops(w)\n", + "algo_input = get_input_instance('EnergyInput')\n", + "algo_input.qubit_op = qubitOp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Checking that the full Hamiltonian gives the right cost " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "energy: -1.5\n", + "maxcut objective: -4.0\n", + "solution: [0. 1. 0. 1.]\n", + "solution objective: 4.0\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Making the Hamiltonian in its full form and getting the lowest eigenvalue and eigenvector\n", + "\n", + "algorithm_cfg = {\n", + " 'name': 'ExactEigensolver',\n", + "}\n", + "\n", + "params = {\n", + " 'problem': {'name': 'ising'},\n", + " 'algorithm': algorithm_cfg\n", + "}\n", + "result = run_algorithm(params,algo_input)\n", + "x = maxcut.sample_most_likely(result['eigvecs'][0])\n", + "print('energy:', result['energy'])\n", + "print('maxcut objective:', result['energy'] + offset)\n", + "print('solution:', maxcut.get_graph_solution(x))\n", + "print('solution objective:', maxcut.maxcut_value(x, w))\n", + "\n", + "colors = ['r' if maxcut.get_graph_solution(x)[i] == 0 else 'b' for i in range(n)]\n", + "nx.draw_networkx(G, node_color=colors, node_size=600, alpha = .8, pos=pos)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Running it on quantum computer\n", + "We run the optimization routine using a feedback loop with a quantum computer that uses trial functions built with Y single-qubit rotations, $U_\\mathrm{single}(\\theta) = \\prod_{i=1}^n Y(\\theta_{i})$, and entangler steps $U_\\mathrm{entangler}$." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "energy: -1.4998924230468886\n", + "time: 45.33000445365906\n", + "maxcut objective: -3.9998924230468886\n", + "solution: [1. 0. 1. 0.]\n", + "solution objective: 4.0\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "algorithm_cfg = {\n", + " 'name': 'VQE',\n", + " 'operator_mode': 'matrix'\n", + "}\n", + "\n", + "optimizer_cfg = {\n", + " 'name': 'SPSA',\n", + " 'max_trials': 300\n", + "}\n", + "\n", + "var_form_cfg = {\n", + " 'name': 'RY',\n", + " 'depth': 5,\n", + " 'entanglement': 'linear'\n", + "}\n", + "\n", + "params = {\n", + " 'problem': {'name': 'ising', 'random_seed': 10598},\n", + " 'algorithm': algorithm_cfg,\n", + " 'optimizer': optimizer_cfg,\n", + " 'variational_form': var_form_cfg,\n", + " 'backend': {'name': 'statevector_simulator'}\n", + "}\n", + "\n", + "result = run_algorithm(params, algo_input)\n", + "\n", + "x = maxcut.sample_most_likely(result['eigvecs'][0])\n", + "print('energy:', result['energy'])\n", + "print('time:', result['eval_time'])\n", + "print('maxcut objective:', result['energy'] + offset)\n", + "print('solution:', maxcut.get_graph_solution(x))\n", + "print('solution objective:', maxcut.maxcut_value(x, w))\n", + "\n", + "colors = ['r' if maxcut.get_graph_solution(x)[i] == 0 else 'b' for i in range(n)]\n", + "nx.draw_networkx(G, node_color=colors, node_size=600, alpha = .8, pos=pos)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "energy: -1.4970703125\n", + "time: 52.9637291431427\n", + "maxcut objective: -3.9970703125\n", + "solution: [1 0 1 0]\n", + "solution objective: 4.0\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# run quantum algorithm with shots\n", + "params['algorithm']['operator_mode'] = 'grouped_paulis'\n", + "params['backend']['name'] = 'qasm_simulator'\n", + "params['backend']['shots'] = 1024\n", + "\n", + "result = run_algorithm(params, algo_input)\n", + "x = maxcut.sample_most_likely(result['eigvecs'][0])\n", + "print('energy:', result['energy'])\n", + "print('time:', result['eval_time'])\n", + "print('maxcut objective:', result['energy'] + offset)\n", + "print('solution:', maxcut.get_graph_solution(x))\n", + "print('solution objective:', maxcut.maxcut_value(x, w))\n", + "plot_histogram(result['eigvecs'][0])\n", + "\n", + "colors = ['r' if maxcut.get_graph_solution(x)[i] == 0 else 'b' for i in range(n)]\n", + "nx.draw_networkx(G, node_color=colors, node_size=600, alpha = .8, pos=pos)" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/w8_04.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/w8_04.ipynb new file mode 100644 index 000000000..3ca4d85a4 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/w8_04.ipynb @@ -0,0 +1,478 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# _*Qiskit Aqua: Experimenting with Traveling Salesman problem with variational quantum eigensolver*_ \n", + "\n", + "\n", + "This notebook is based on an official notebook by Qiskit team, available at https://github.com/qiskit/qiskit-tutorial under the [Apache License 2.0](https://github.com/Qiskit/qiskit-tutorial/blob/master/LICENSE) license. \n", + "The original notebook was developed by Antonio Mezzacapo[1], Jay Gambetta[1], Kristan Temme[1], Ramis Movassagh[1], Albert Frisch[1], Takashi Imamichi[1], Giacomo Nannicni[1], Richard Chen[1], Marco Pistoia[1], Stephen Wood[1]([1]IBMQ)\n", + "\n", + "Your **TASK** is to execute every step of this notebook while learning to use qiskit-aqua and also how to leverage general problem modeling into know problems that qiskit-aqua can solve, namely the [Travelling salesman problem](https://en.wikipedia.org/wiki/Travelling_salesman_problem)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "Many problems in quantitative fields such as finance and engineering are optimization problems. Optimization problems lay at the core of complex decision-making and definition of strategies. \n", + "\n", + "Optimization (or combinatorial optimization) means searching for an optimal solution in a finite or countably infinite set of potential solutions. Optimality is defined with respect to some criterion function, which is to be minimized or maximized. This is typically called cost function or objective function. \n", + "\n", + "**Typical optimization problems**\n", + "\n", + "Minimization: cost, distance, length of a traversal, weight, processing time, material, energy consumption, number of objects\n", + "\n", + "Maximization: profit, value, output, return, yield, utility, efficiency, capacity, number of objects \n", + "\n", + "We consider here maxcut problem of practical interest in many fields, and show how they can mapped on quantum computers.\n", + "\n", + "\n", + "### Weighted MaxCut\n", + "\n", + "MaxCut is an NP-complete problem, with applications in clustering, network science, and statistical physics. To grasp how practical applications are mapped into given MaxCut instances, consider a system of many people that can interact and influence each other. Individuals can be represented by vertices of a graph, and their interactions seen as pairwise connections between vertices of the graph, or edges. With this representation in mind, it is easy to model typical marketing problems. For example, suppose that it is assumed that individuals will influence each other's buying decisions, and knowledge is given about how strong they will influence each other. The influence can be modeled by weights assigned on each edge of the graph. It is possible then to predict the outcome of a marketing strategy in which products are offered for free to some individuals, and then ask which is the optimal subset of individuals that should get the free products, in order to maximize revenues.\n", + "\n", + "The formal definition of this problem is the following:\n", + "\n", + "Consider an $n$-node undirected graph *G = (V, E)* where *|V| = n* with edge weights $w_{ij}>0$, $w_{ij}=w_{ji}$, for $(i, j)\\in E$. A cut is defined as a partition of the original set V into two subsets. The cost function to be optimized is in this case the sum of weights of edges connecting points in the two different subsets, *crossing* the cut. By assigning $x_i=0$ or $x_i=1$ to each node $i$, one tries to maximize the global profit function (here and in the following summations run over indices 0,1,...n-1)\n", + "\n", + "$$\\tilde{C}(\\textbf{x}) = \\sum_{i,j} w_{ij} x_i (1-x_j).$$\n", + "\n", + "In our simple marketing model, $w_{ij}$ represents the probability that the person $j$ will buy a product after $i$ gets a free one. Note that the weights $w_{ij}$ can in principle be greater than $1$, corresponding to the case where the individual $j$ will buy more than one product. Maximizing the total buying probability corresponds to maximizing the total future revenues. In the case where the profit probability will be greater than the cost of the initial free samples, the strategy is a convenient one. An extension to this model has the nodes themselves carry weights, which can be regarded, in our marketing model, as the likelihood that a person granted with a free sample of the product will buy it again in the future. With this additional information in our model, the objective function to maximize becomes \n", + "\n", + "$$C(\\textbf{x}) = \\sum_{i,j} w_{ij} x_i (1-x_j)+\\sum_i w_i x_i. $$\n", + " \n", + "In order to find a solution to this problem on a quantum computer, one needs first to map it to an Ising Hamiltonian. This can be done with the assignment $x_i\\rightarrow (1-Z_i)/2$, where $Z_i$ is the Pauli Z operator that has eigenvalues $\\pm 1$. Doing this we find that \n", + "\n", + "$$C(\\textbf{Z}) = \\sum_{i,j} \\frac{w_{ij}}{4} (1-Z_i)(1+Z_j) + \\sum_i \\frac{w_i}{2} (1-Z_i) = -\\frac{1}{2}\\left( \\sum_{i0,$$ \n", + "\n", + "where it is assumed the boundary condition of the Hamiltonian cycle $(p=N)\\equiv (p=0)$. However, here it will be assumed a fully connected graph and not include this term. The distance that needs to be minimized is \n", + "\n", + "$$C(\\textbf{x})=\\sum_{i,j}w_{ij}\\sum_{p} x_{i,p}x_{j,p+1}.$$\n", + "\n", + "Putting this all together in a single objective function to be minimized, we get the following:\n", + "\n", + "$$C(\\textbf{x})=\\sum_{i,j}w_{ij}\\sum_{p} x_{i,p}x_{j,p+1}+ A\\sum_p\\left(1- \\sum_i x_{i,p}\\right)^2+A\\sum_i\\left(1- \\sum_p x_{i,p}\\right)^2,$$\n", + "\n", + "where $A$ is a free parameter. One needs to ensure that $A$ is large enough so that these constraints are respected. One way to do this is to choose $A$ such that $A > \\mathrm{max}(w_{ij})$.\n", + "\n", + "Once again, it is easy to map the problem in this form to a quantum computer, and the solution will be found by minimizing a Ising Hamiltonian. " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "distance\n", + " [[ 0. 91. 55.]\n", + " [91. 0. 39.]\n", + " [55. 39. 0.]]\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Generating a graph of 3 nodes\n", + "\n", + "n = 3\n", + "num_qubits = n ** 2\n", + "ins = tsp.random_tsp(n)\n", + "G = nx.Graph()\n", + "G.add_nodes_from(np.arange(0, n, 1))\n", + "colors = ['r' for node in G.nodes()]\n", + "pos = {k: v for k, v in enumerate(ins.coord)}\n", + "default_axes = plt.axes(frameon=True)\n", + "nx.draw_networkx(G, node_color=colors, node_size=600, alpha=.8, ax=default_axes, pos=pos)\n", + "print('distance\\n', ins.w)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Brute force approach" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "order = (0, 1, 2) Distance = 185.0\n", + "Best order from brute force = (0, 1, 2) with total distance = 185.0\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from itertools import permutations\n", + "\n", + "def brute_force_tsp(w, N):\n", + " a=list(permutations(range(1,N)))\n", + " last_best_distance = 1e10\n", + " for i in a:\n", + " distance = 0\n", + " pre_j = 0\n", + " for j in i:\n", + " distance = distance + w[j,pre_j]\n", + " pre_j = j\n", + " distance = distance + w[pre_j,0]\n", + " order = (0,) + i\n", + " if distance < last_best_distance:\n", + " best_order = order\n", + " last_best_distance = distance\n", + " print('order = ' + str(order) + ' Distance = ' + str(distance))\n", + " return last_best_distance, best_order\n", + " \n", + "best_distance, best_order = brute_force_tsp(ins.w, ins.dim)\n", + "print('Best order from brute force = ' + str(best_order) + ' with total distance = ' + str(best_distance))\n", + "\n", + "def draw_tsp_solution(G, order, colors, pos):\n", + " G2 = G.copy()\n", + " n = len(order)\n", + " for i in range(n):\n", + " j = (i + 1) % n\n", + " G2.add_edge(order[i], order[j])\n", + " default_axes = plt.axes(frameon=True)\n", + " nx.draw_networkx(G2, node_color=colors, node_size=600, alpha=.8, ax=default_axes, pos=pos)\n", + "\n", + "draw_tsp_solution(G, best_order, colors, pos)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Mapping to the Ising problem" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "qubitOp, offset = tsp.get_tsp_qubitops(ins)\n", + "algo_input = get_input_instance('EnergyInput')\n", + "algo_input.qubit_op = qubitOp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Checking that the full Hamiltonian gives the right cost " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "energy: -600092.5\n", + "feasible: True\n", + "solution: [0, 1, 2]\n", + "solution objective: 185.0\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Making the Hamiltonian in its full form and getting the lowest eigenvalue and eigenvector\n", + "\n", + "algorithm_cfg = {\n", + " 'name': 'ExactEigensolver',\n", + "}\n", + "\n", + "params = {\n", + " 'problem': {'name': 'ising'},\n", + " 'algorithm': algorithm_cfg\n", + "}\n", + "\n", + "result = run_algorithm(params,algo_input)\n", + "print('energy:', result['energy'])\n", + "#print('tsp objective:', result['energy'] + offset)\n", + "x = tsp.sample_most_likely(result['eigvecs'][0])\n", + "print('feasible:', tsp.tsp_feasible(x))\n", + "z = tsp.get_tsp_solution(x)\n", + "print('solution:', z)\n", + "print('solution objective:', tsp.tsp_value(z, ins.w))\n", + "draw_tsp_solution(G, z, colors, pos)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Running it on quantum computer\n", + "We run the optimization routine using a feedback loop with a quantum computer that uses trial functions built with Y single-qubit rotations, $U_\\mathrm{single}(\\theta) = \\prod_{i=1}^n Y(\\theta_{i})$, and entangler steps $U_\\mathrm{entangler}$." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "energy: -598732.7787240263\n", + "time: 88.01577425003052\n", + "feasible: True\n", + "solution: [1, 2, 0]\n", + "solution objective: 185.0\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "algorithm_cfg = {\n", + " 'name': 'VQE',\n", + " 'operator_mode': 'matrix'\n", + "}\n", + "\n", + "optimizer_cfg = {\n", + " 'name': 'SPSA',\n", + " 'max_trials': 300\n", + "}\n", + "\n", + "var_form_cfg = {\n", + " 'name': 'RY',\n", + " 'depth': 5,\n", + " 'entanglement': 'linear'\n", + "}\n", + "\n", + "params = {\n", + " 'problem': {'name': 'ising', 'random_seed': 10598},\n", + " 'algorithm': algorithm_cfg,\n", + " 'optimizer': optimizer_cfg,\n", + " 'variational_form': var_form_cfg,\n", + " 'backend': {'name': 'statevector_simulator'}\n", + "}\n", + "\n", + "result = run_algorithm(params,algo_input)\n", + "print('energy:', result['energy'])\n", + "print('time:', result['eval_time'])\n", + "#print('tsp objective:', result['energy'] + offset)\n", + "x = tsp.sample_most_likely(result['eigvecs'][0])\n", + "print('feasible:', tsp.tsp_feasible(x))\n", + "z = tsp.get_tsp_solution(x)\n", + "print('solution:', z)\n", + "print('solution objective:', tsp.tsp_value(z, ins.w))\n", + "draw_tsp_solution(G, z, colors, pos)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# run quantum algorithm with shots\n", + "params['algorithm']['operator_mode'] = 'grouped_paulis'\n", + "params['backend']['name'] = 'qasm_simulator'\n", + "params['backend']['shots'] = 1024\n", + "result = run_algorithm(params,algo_input)\n", + "print('energy:', result['energy'])\n", + "print('time:', result['eval_time'])\n", + "#print('tsp objective:', result['energy'] + offset)\n", + "x = tsp.sample_most_likely(result['eigvecs'][0])\n", + "print('feasible:', tsp.tsp_feasible(x))\n", + "z = tsp.get_tsp_solution(x)\n", + "print('solution:', z)\n", + "print('solution objective:', tsp.tsp_value(z, ins.w))\n", + "plot_histogram(result['eigvecs'][0])\n", + "draw_tsp_solution(G, z, colors, pos)" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/w8_05.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/w8_05.ipynb new file mode 100644 index 000000000..92efc3255 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/exercises/w8_05.ipynb @@ -0,0 +1,210 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# _*Qiskit Aqua: Chemistry basic how to*_ \n", + "\n", + "\n", + "This notebook is based on an official notebook by Qiskit team, available at https://github.com/qiskit/qiskit-tutorial under the [Apache License 2.0](https://github.com/Qiskit/qiskit-tutorial/blob/master/LICENSE) license. \n", + "The original notebook was developed by Richard Chen[1], Antonio Mezzacapo[1], Marco Pistoia[1], Stephen Wood[1] ([1]IBMQ)\n", + "\n", + "Your **TASK** is to execute every step of this notebook while learning to use qiskit-aqua and also how to simulate atomic phenomena with quantum devices.\n", + "\n", + "(requires instalation of **qiskit-aqua-chemistry** with `pip install qiskit-aqua-chemistry`)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Introduction\n", + "\n", + "This notebook demonstrates how to use Qiskit Aqua Chemistry to compute the ground state energy of a Hydrogen (H2) molecule using VQE and UCCSD.\n", + "\n", + "This notebook has been written to use the HDF5 chemistry driver. This driver uses molecular data that has been saved from a prior computation so that this notebook can be run with no additional driver installation requirements. See the HDF5 chemistry driver readme for more detail.\n", + "\n", + "First we import AquaChemistry, which is the object that will carry out the computation for us" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit_aqua_chemistry import AquaChemistry" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we create a Python dictionary to specify the problem we want to solve. There are defaults for many additional values that are not show here for simpicity. Indeed we take advantage of using sensisble defaults that the qischem stack provides to help us here. Please notice that the Qiskit Aqua Chemistry GUI allows for automatic extraction of the Python dictionary reflecting the current configuration. Once the Python dictionary has been extracted, it can be pasted into a Python program or a Jupyter Notebook and, if necessary, edited.\n", + "\n", + "The first entry names a chemistry driver. This example uses HDF5 and the next line configures the driver for an hdf5 file that contains data from a prior computation for an H2 molecule with basis set sto-3g. The operator line would default but I have added it here to show it and to say that this is where the problem is converted into a quantum qubit form. We then have a VQE algorithm, using the COBYLA optimizer with a UCCSD variatonal form and initial state of HartreeFock. VQE is Variational Quantum Eigensolver and as its name suggests uses a variational method to find the mimimum eigenvalue of the problem, which in this case is the ground state energy of the molecule." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Optional] Setup token to run the experiment on a real device\n", + "If you would like to run the experiement on a real device, you need to setup your account first.\n", + "\n", + "Note: If you do not store your token yet, use `IBMQ.save_accounts()` to store it first." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import IBMQ\n", + "IBMQ.load_accounts()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Input dictionary to configure Qiskit AQUA Chemistry for the chemistry problem.\n", + "aqua_chemistry_dict = {\n", + " 'driver': {'name': 'HDF5'},\n", + " 'HDF5': {'hdf5_input': '0.7_sto-3g.hdf5'},\n", + " 'operator': {'name': 'hamiltonian'},\n", + " 'algorithm': {'name': 'VQE'},\n", + " 'optimizer': {'name': 'COBYLA'},\n", + " 'variational_form': {'name': 'UCCSD'},\n", + " 'initial_state': {'name': 'HartreeFock'},\n", + " 'backend': {'name': 'statevector_simulator'}\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now create a AquaChemistry object and call run on it passing in the problem dictionary to get a result. This may take a short time and it will use a local quantum simulator to carry out the quantum computation that the VQE algorithm uses." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "solver = AquaChemistry()\n", + "result = solver.run(aqua_chemistry_dict)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The run method returns a result dictionary. Some notable fields include 'energy' which is the computed ground state energy. We can print it." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ground state energy: -1.1361894321408244\n" + ] + } + ], + "source": [ + "print('Ground state energy: {}'.format(result['energy']))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There is also a 'printable' field containing a complete ready to print readable result" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "=== GROUND STATE ENERGY ===\n", + " \n", + "* Electronic ground state energy (Hartree): -1.892156876312\n", + " - computed part: -1.892156876312\n", + " - frozen energy part: 0.0\n", + " - particle hole part: 0.0\n", + "~ Nuclear repulsion energy (Hartree): 0.755967444171\n", + "> Total ground state energy (Hartree): -1.136189432141\n", + " Measured:: Num particles: 2.000, S: 0.000, M: 0.00000\n", + " \n", + "=== DIPOLE MOMENT ===\n", + " \n", + "* Electronic dipole moment (a.u.): [0.0 0.0 0.00029555]\n", + " - computed part: [0.0 0.0 0.00029555]\n", + " - frozen energy part: [0.0 0.0 0.0]\n", + " - particle hole part: [0.0 0.0 0.0]\n", + "~ Nuclear dipole moment (a.u.): [0.0 0.0 0.0]\n", + "> Dipole moment (a.u.): [0.0 0.0 -0.00029555] Total: 0.00029555\n", + " (debye): [0.0 0.0 -0.00075122] Total: 0.00075122\n" + ] + } + ], + "source": [ + "for line in result['printable']:\n", + " print(line)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This was a very simple example showing how to get started. There are more elaborate notebooks here as well documentation describing the various components and their configurations to help you to experiment with quantum computing and its application to solving chemistry problems." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/beamercolorthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/beamercolorthemematerial.sty new file mode 100755 index 000000000..7fbe50bd2 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/beamercolorthemematerial.sty @@ -0,0 +1,286 @@ +\mode + +% light theme +\newcommand{\useLightTheme}{ +\definecolor{text} {HTML}{000000} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{E0E0E0} +\definecolor{BGgrey02}{HTML}{F5F5F5} +\definecolor{BGgrey03}{HTML}{FAFAFA} +\definecolor{BGgrey04}{HTML}{FFFFFF} +} + + +% dark theme +\newcommand{\useDarkTheme}{ +\definecolor{text} {HTML}{FFFFFF} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{000000} +\definecolor{BGgrey02}{HTML}{212121} +\definecolor{BGgrey03}{HTML}{303030} +\definecolor{BGgrey04}{HTML}{424242} +} + +% PRIMARY -------------------------------------------------------------- +\newcommand{\usePrimary}[3]{ +\definecolor{primary} {HTML}{#1} +\definecolor{primaryD}{HTML}{#2} +\definecolor{textPrimary} {HTML}{#3} +} + +% Primary Red +\newcommand{\usePrimaryRed}{ +\definecolor{primary} {HTML}{F44336} +\definecolor{primaryD}{HTML}{D32F2F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Pink +\newcommand{\usePrimaryPink}{ +\definecolor{primary} {HTML}{E91E63} +\definecolor{primaryD}{HTML}{C2185B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Purple +\newcommand{\usePrimaryPurple}{ +\definecolor{primary} {HTML}{6A1B9A} +\definecolor{primaryD}{HTML}{7B1FA2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Deep Purple +\newcommand{\usePrimaryDeepPurple}{ +\definecolor{primary} {HTML}{673AB7} +\definecolor{primaryD}{HTML}{512DA8} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Indigo +\newcommand{\usePrimaryIndigo}{ +\definecolor{primary} {HTML}{3F51B5} +\definecolor{primaryD}{HTML}{303F9F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Blue +\newcommand{\usePrimaryBlue}{ +\definecolor{primary} {HTML}{2196F3} +\definecolor{primaryD}{HTML}{1976D2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Blue +\newcommand{\usePrimaryLightBlue}{ +\definecolor{primary} {HTML}{03A9F4} +\definecolor{primaryD}{HTML}{0288D1} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Cyan +\newcommand{\usePrimaryCyan}{ +\definecolor{primary} {HTML}{00BCD4} +\definecolor{primaryD}{HTML}{0097A7} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Teal +\newcommand{\usePrimaryTeal}{ +\definecolor{primary} {HTML}{009688} +\definecolor{primaryD}{HTML}{00796B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Green +\newcommand{\usePrimaryGreen}{ +\definecolor{primary} {HTML}{4CAF50} +\definecolor{primaryD}{HTML}{388E3C} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Green +\newcommand{\usePrimaryLightGreen}{ +\definecolor{primary} {HTML}{8BC34A} +\definecolor{primaryD}{HTML}{689F38} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Lime +\newcommand{\usePrimaryLime}{ +\definecolor{primary} {HTML}{CDDC39} +\definecolor{primaryD}{HTML}{AFB42B} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Yellow +\newcommand{\usePrimaryYellow}{ +\definecolor{primary} {HTML}{FFEB3B} +\definecolor{primaryD}{HTML}{FBC02D} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Amber +\newcommand{\usePrimaryAmber}{ +\definecolor{primary} {HTML}{FFC107} +\definecolor{primaryD}{HTML}{FFA000} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Orange +\newcommand{\usePrimaryOrange}{ +\definecolor{primary} {HTML}{FF9800} +\definecolor{primaryD}{HTML}{F57C00} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Deep Orange +\newcommand{\usePrimaryDeepOrange}{ +\definecolor{primary} {HTML}{FF5722} +\definecolor{primaryD}{HTML}{E64A19} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Brown +\newcommand{\usePrimaryBrown}{ +\definecolor{primary} {HTML}{795548} +\definecolor{primaryD}{HTML}{5D4037} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Grey +\newcommand{\usePrimaryGrey}{ +\definecolor{primary} {HTML}{9E9E9E} +\definecolor{primaryD}{HTML}{616161} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Blue Grey +\newcommand{\usePrimaryBlueGrey}{ +\definecolor{primary} {HTML}{607D8B} +\definecolor{primaryD}{HTML}{455A64} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + + +% ACCENT --------------------------------------------------------------- + +\newcommand{\useAccent}[2]{ +\definecolor{accent} {HTML}{#1} +\definecolor{textAccent} {HTML}{#2} +} + +% Accent Red +\newcommand{\useAccentRed}{ +\definecolor{accent} {HTML}{FF1744} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Pink +\newcommand{\useAccentPink}{ +\definecolor{accent} {HTML}{F50057} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Purple +\newcommand{\useAccentPurple}{ +\definecolor{accent} {HTML}{D500F9} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Deep Purple +\newcommand{\useAccentDeepPurple}{ +\definecolor{accent} {HTML}{651FFF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Indigo +\newcommand{\useAccentIndigo}{ +\definecolor{accent} {HTML}{3D5AFE} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Blue +\newcommand{\useAccentBlue}{ +\definecolor{accent} {HTML}{2979FF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Light Blue +\newcommand{\useAccentLightBlue}{ +\definecolor{accent} {HTML}{00B0FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Cyan +\newcommand{\useAccentCyan}{ +\definecolor{accent} {HTML}{00E5FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Teal +\newcommand{\useAccentTeal}{ +\definecolor{accent} {HTML}{1DE9B6} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Green +\newcommand{\useAccentGreen}{ +\definecolor{accent} {HTML}{00E676} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Light Green +\newcommand{\useAccentLightGreen}{ +\definecolor{accent} {HTML}{76FF03} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Lime +\newcommand{\useAccentLime}{ +\definecolor{accent} {HTML}{C6FF00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Yellow +\newcommand{\useAccentYellow}{ +\definecolor{accent} {HTML}{FFEA00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Amber +\newcommand{\useAccentAmber}{ +\definecolor{accent} {HTML}{FFC400} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Orange +\newcommand{\useAccentOrange}{ +\definecolor{accent} {HTML}{FF9100} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Deep Orange +\newcommand{\useAccentDeepOrange}{ +\definecolor{accent} {HTML}{FF3D00} +\definecolor{textAccent} {HTML}{FFFFFF} +} + + + +\useLightTheme +\usePrimaryIndigo +\useAccentPink + +% more color settings +\setbeamercolor{block title}{fg=primary} +\hypersetup{linkcolor=primary} +\setbeamercolor{section in toc}{fg=primary} +\setbeamercolor{subsection in toc}{fg=primary} + + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/beamerinnerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/beamerinnerthemematerial.sty new file mode 100755 index 000000000..48d82d16a --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/beamerinnerthemematerial.sty @@ -0,0 +1,42 @@ +\setbeamercolor{background canvas}{bg=BGgrey03} + +% Title page +\defbeamertemplate*{title page}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t][\paperheight]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, + fuzzy shadow={0mm}{-0.6mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.2mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.2mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, height=0.6\paperheight, flushright upper, valign=bottom, boxsep=0.5cm] + {\usebeamerfont{title} \inserttitle}\\ + {\usebeamerfont{author}\insertauthor}\\ + {\usebeamerfont{author}\insertdate} + \end{tcolorbox} + + %\begin{tcolorbox}[arc=5mm,width=10mm,height=10mm, enhanced, % + %colback=accent, coltext=textAccent, % + %fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!primary}, % top + %fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + %fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + %left=1.5mm, right=1.5mm, top=1.5mm, bottom=1.5mm, boxsep=0mm, % + %boxrule=0mm, enlarge left by=10mm, enlarge top by=-10mm]% + %\includegraphics[width=7mm]{\iconFolder/ic_account_circle_48px} + %\end{tcolorbox} + \end{minipage}% + }% + \vfill +} + +% Items +\setbeamertemplate{enumerate items}[circle] +\setbeamertemplate{itemize items}{\Large $\bullet$} +\setbeamertemplate{sections/subsections in toc}[circle] + +\setbeamercolor{local structure}{fg=accent} + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/beamerouterthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/beamerouterthemematerial.sty new file mode 100755 index 000000000..9338c12a0 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/beamerouterthemematerial.sty @@ -0,0 +1,28 @@ +\mode + +% Frame title +\defbeamertemplate*{frametitle}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, % + left=6mm, right=6mm, top=2.6mm, bottom=2mm,% + fuzzy shadow={0mm}{-0.9mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.8mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.5mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, boxsep=2mm] + \ifx\insertframesubtitle\@empty% + {\usebeamerfont{frametitle} \insertframetitle} + \else% + {\usebeamerfont{frametitle} \insertframetitle} + {\usebeamerfont{framesubtitle} \insertframesubtitle} + \fi + \end{tcolorbox} + \end{minipage}% + }% +} + + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/beamerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/beamerthemematerial.sty new file mode 100755 index 000000000..c34246582 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/beamerthemematerial.sty @@ -0,0 +1,82 @@ +\mode + +% Requirement +\RequirePackage{tikz} +\RequirePackage{xcolor} +\RequirePackage{ifthen} +\RequirePackage[many]{tcolorbox} +\RequirePackage{graphicx} + +% Settings +\useinnertheme{material} +\useoutertheme{material} +\usecolortheme{material} + +\setbeamertemplate{navigation symbols}{} + +\setbeamerfont*{title}{size=\Huge} +\setbeamerfont*{frametitle}{size=\large} + +% tcolorbox settings +\newcommand{\setCardSettings}{% +\tcbset{% +colback=BGgrey04, colbacktitle=primary, coltitle=textPrimary, coltext=text,% +enhanced, sharpish corners=all,% +fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!BGgrey03}, % top +fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall +fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig +left=6mm, right=6mm, top=6mm, bottom=6mm, middle=4mm,% +title filled, boxrule=0mm, % +segmentation code={\path[draw=BGgrey01](segmentation.west) -- (segmentation.east);}% +} +} + +\setCardSettings + +\newenvironment{card}[1][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}% + }{% + \begin{tcolorbox}[colbacktitle=primary, coltitle=textPrimary, title=#1, left=6mm, right=6mm, top=3mm, bottom=4mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% + }% +}{% + \end{tcolorbox}% +} + +\newenvironment{cardTiny}{% + \setCardSettings + \begin{tcolorbox}[colbacktitle=primary, left=4mm, right=4mm, top=2mm, bottom=2mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% +}{% + \end{tcolorbox}% +} + + +\newcommand{\cardImg}[3][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, bottom=0mm, middle=1.5mm, boxsep=0mm, width=#3,]% + \includegraphics[width=\textwidth]{#2} + \end{tcolorbox} + }{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, middle=1.5mm, boxsep=0mm, leftlower=6mm, rightlower=6mm, bottom=6mm, , width=#3,]% + \includegraphics[width=\textwidth]{#2} + \tcblower + #1% + \end{tcolorbox} + }% +} + +\newenvironment{frameImg}[2][width]{% + \setCardSettings + \ifthenelse{\equal{#1}{width}}{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[width=\paperwidth, keepaspectratio=true]{#2}}}% + }{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[height=\paperheight, keepaspectratio=true]{#2}}}% + }% + \begin{frame} +}{% + \end{frame} +} + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/img/qka.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/img/qka.png new file mode 100755 index 000000000..0a51e213d Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/img/qka.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/img/qskit_aqua_ui.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/img/qskit_aqua_ui.png new file mode 100755 index 000000000..39022964a Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/img/qskit_aqua_ui.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/img/quantum_supremacy.jpeg b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/img/quantum_supremacy.jpeg new file mode 100755 index 000000000..3f7780189 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/img/quantum_supremacy.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/macros.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/macros.sty new file mode 100755 index 000000000..e8d2b8686 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/macros.sty @@ -0,0 +1,127 @@ +\ProvidesPackage{macros}[2018 My own macros] + +% Packages that main.tex will use AND common header commands +\usepackage{multicol} +\usepackage{tikz} % drawings +\usetikzlibrary{positioning, arrows} +\usepackage{animate} % animations +\usepackage{hyperref} +\usepackage{minted} % code snippets +\usepackage{todonotes} +\let\todox\todo +\renewcommand\todo[1]{\todox[inline]{#1}} + +%%%%%%%%%%%%%%%%% DOCUMENT GLOBAL SETTINGS +% example for author reusing these slides: +\author[Ramalho]{Miguel Sozinho Ramalho} +% \author[LASTNAME]{FIRSTNAME LASTNAME,\\ \scriptsize{based on slides by \textbf{Miguel Sozinho Ramalho}}} +\institute[FEUP]{Faculty of Engineering of the University of Porto} +\subject{Quantum Computing} +\date{November, 2018} + + +% Uncomment for notes on slides +% \usepackage{pgfpages} +% \setbeameroption{show notes} +% \setbeameroption{show notes on second screen=right} + +\graphicspath{{img/}} % add the img folder to graphics path + +% Packages that this file uses +\usepackage{braket} % bra-ket notation +\usepackage{xargs} % custom new commands +\usepackage{xspace} % add xspace after new command to auto insert space + + + +% braket shorthands +\newcommandx{\superpos}[3][1=\textual{\psi},2=0,3=1]{\ket {#1} = \textual{\alpha} \ket{#2} + \textual{\beta} \ket{#3}} +\newcommand{\plusminus}[1][\psi]{\superpos[#1][-][+]} +\newcommand{\pagenumber}{\raggedleft\vfill\scriptsize\insertframenumber/\inserttotalframenumber} +\newcommand{\speedoflight}{3 \times 10^{8} m/s} +\newcommand{\osqrt}{\frac{1}{\sqrt{2}}} +\newcommand{\kz}{\ket{0}} +\newcommand{\ko}{\ket{1}} + +% short shorthands +\newcommand{\qasm}{Qasm\xspace} +\newcommand{\q}{Quantum\xspace} +\newcommand{\qa}{\q Algorithms\xspace} +\newcommand{\qct}{\q Circuit\xspace} +\newcommand{\qcts}{\q Circuits\xspace} +\newcommand{\qc}{\q Computing\xspace} +\newcommand{\qcp}{\q Computation\xspace} +\newcommand{\qec}{\q Error Correction\xspace} +\newcommand{\qft}{\q Fourier Transform\xspace} +\newcommand{\qi}{\q Information\xspace} +\newcommand{\qis}{\q Information Science\xspace} +\newcommand{\qm}{\q Mechanics\xspace} +\newcommand{\qmt}{\q Measurement\xspace} +\newcommand{\qp}{\q Physics\xspace} +\newcommand{\qsp}{\q Superposition\xspace} +\newcommand{\qw}{\q World\xspace} +\newcommand{\mbqc}{Measurement Based \q Computer\xspace} +\newcommand{\aqc}{Adiabatic \q Computation\xspace} + +\newcommand{\cl}{Classical\xspace} +\newcommand{\cc}{Classical Computing\xspace} +\newcommand{\cm}{Classical Mechanics\xspace} +\newcommand{\cp}{Classical Physics\xspace} + +\newcommand{\qk}{Qiskit\xspace} +\newcommand{\qka}{Qiskit Aqua\xspace} +\newcommand{\ibmq}{IBM Q\xspace} +\newcommand{\ibmqe}{IBM Q Experience\xspace} + +\newcommand{\p}{\textbf{P}\xspace} +\newcommand{\np}{\textbf{NP}\xspace} +\newcommand{\bqp}{\textbf{BQP}\xspace} + +\newcommand{\djs}{Deutsch-Jozsa\xspace} +\newcommand{\ds}{Deutsch's\xspace} +\newcommand{\gv}{Grover\xspace} +\newcommand{\gvs}{\gv's\xspace} +\newcommand{\gvsa}{\gv's algorithm\xspace} +\newcommand{\aamp}{Amplitude Amplification\xspace} +\newcommand{\sa}{Shor's algorithm\xspace} + +\newcommand{\phiv}{phase inversion\xspace} +\newcommand{\iatm}{inversion about the mean\xspace} + +\newcommand{\ai}{Artificial Intelligence\xspace} + +%configurable variables +\newcommand{\githubRepo}{https://github.com/msramalho/Teach-Me-Quantum/} +\newcommand{\weeks}{\githubRepo/tree/master/} +\newcommand{\weekZero}{\weeks/Week\%200\%20-\%20Hello\%20Quantum\%20World/} +\newcommand{\weekOne}{\weeks/Week\%201\%20-\%20Quantum\%20Tools/} +\newcommand{\weekTwo}{\weeks/Week\%202\%20-\%20Quantum\%20Information\%20Science/} +\newcommand{\weekThree}{\weeks/Week\%203\%20-\%20Quantum\%20Gates/} +\newcommand{\weekFour}{\weeks/Week\%204\%20-\%20Quantum\%20Facts/} + +%%%%%%%%%%%%%%%%%%%%%%%% quotations +% src: https://tex.stackexchange.com/a/53380/126771 +\newcommand{\@chapapp}{\relax} +\makeatletter +\renewcommand{\@chapapp}{} +\newenvironment{chapquote}[2][2em] + {\setlength{\@tempdima}{#1} + \def\chapquote@author{#2} + \parshape 1 \@tempdima \dimexpr\textwidth-2\@tempdima\relax + \itshape} + {\par\normalfont\hfill--\ \chapquote@author\hspace*{\@tempdima}\par\bigskip} +\makeatother + +%%%%%%%%%%%%%%%%% color on hrefs +\hypersetup{ + colorlinks=true, + linkcolor=primaryD,%blue, + filecolor=primaryD,%cyan, + urlcolor=accent %hrefs +} + +%%%%%%%%%%%%%%%%% minted settings +\setminted[python]{fontsize=\footnotesize} +\setminted[vhdl]{fontsize=\footnotesize} +\definecolor{bgGrey}{rgb}{0.95,0.95,0.95} +\setminted{bgcolor=bgGrey} \ No newline at end of file diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/main.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/main.tex new file mode 100755 index 000000000..f8b3d435b --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/latex/main.tex @@ -0,0 +1,266 @@ +\documentclass[aspectratio=43]{beamer} +\usepackage[utf8]{inputenc} + +%%%%%%%%%%%%%%%%%%%%%%%% THEME +\usetheme{material} +\useLightTheme +\usePrimaryBlueGrey +\useAccentDeepPurple + +\usepackage{macros} % must come after theme + +\title{High-Level Quantum Programming} +\keywords{\qk, \q Programming} + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + + +\begin{frame}{Table of contents} + \begin{card} + \tableofcontents + \end{card} +\end{frame} + + +\section{Introduction} +\begin{frame}{Meta-Introduction} + \begin{card} + By now, you should have a good grasp of the \textit{magic underneath the hood} of \qc. Meaning that quantum circuitry and quantum programming are now within your grasp. + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{Introduction} + \begin{cardTiny} + This week, a different approach will be taken. We will see how quantum computing can be used for the benefit of many other scientific and industry areas. Hopefully, some of the topics you will learn will have a direct application on your life and work. + \end{cardTiny} + \begin{cardTiny} + We will do some \qka troubleshooting and then go through the latest examples on \href{https://github.com/Qiskit/qiskit-tutorial}{qiskit-tutorial} on how to use \qsa for solving real world problems. This example set is not fully explored and is expected to grow quite a lot in the short term (so keep your eyes open).\\ + \small{*If you are an autodidact, feel free to skip examples on areas that do not interest you.} + \end{cardTiny} +\pagenumber +\end{frame} + +\begin{frame}{Motivation} + \begin{card} + \begin{chapquote}[2pt]{\href{https://msramalho.github.io/}{Me}} + ``The better people understand that quantum computing is within their grasp and can be leveraged towards personal gain, the sooner a day will come when running quantum algorithms is but a triviality.'' + \end{chapquote} + \end{card} +\pagenumber +\end{frame} + +\section{\qka} +\begin{frame}{\qka} + \begin{center} + \includegraphics[width=1\textwidth]{qka} + \end{center} + \begin{card} + As we saw in \href{\weekOne}{Week 1 - Quantum Tools}, \qka is the top-level block on the \qk full-stack infrastructure. This means it works on a higher level then what we have seen so far, abstracting a quantum compiler and providing an interface much similar to that of classical computing. + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{The Premise of \qka} + \begin{card} + \qka contains ``a library of cross-domain quantum algorithms upon which applications for near-term quantum computing can be built''. \textbf{Near-term} means this is the time to look into this, as these algorithms and applications will become feasible in a short time. + \end{card} +\pagenumber +\end{frame} + +\section{\q Supremacy} +\begin{frame}{\q Supremacy} + \begin{card} + The term \textbf{\q Supremacy} (not to be mistaken for a crossover between \textit{Quantum of Solace} and \textit{The Bourne Supremacy}...) stands for the moment in time in which quantum computers can do better than the most powerful computer in simulating a quantum system.\\ + This may seem strange, but the fact is that classical computers are so developed they they are still able to simulate better quantum computers than those in existence, but this classical "quantum simulation" fits into the \np family and so there will come a time, in the not so far away future, when they are no longer able to do better than \textit{the real thing}. + \end{card} +\pagenumber +\end{frame} + +\begin{frameImg}[height]{quantum_supremacy.jpeg} + +\end{frameImg} + + +\section{Running algorithms in \qka} +\begin{frame}{Running algorithms in \qka} + \begin{card} + First and foremost: \mintinline{bash}{pip install qiskit-aqua} + \end{card} + \begin{cardTiny} + Then, we need to understand which algorithms have already been implemented in \qka. A comprehensive list can be found \href{https://qiskit.org/documentation/aqua/algorithms.html}{in the docs}, some that you may recognize are: + \begin{itemize} + \item \href{https://qiskit.org/documentation/aqua/algorithms.html#quantum-grover-search}{Grover Search} + \item \href{https://qiskit.org/documentation/aqua/algorithms.html#quantum-dynamics}{Quantum Dynamics} (Simulating Universal Quantum Systems) + \item \href{https://qiskit.org/documentation/aqua/algorithms.html#support-vector-machine-quantum-kernel-svm-q-kernel}{Support Vector Machine Quantum Kernel} (Machine Learning) + \item \href{https://qiskit.org/documentation/aqua/algorithms.html#cplex}{CPLEX} (Constraint Solver) + \end{itemize} + \end{cardTiny} +\pagenumber +\end{frame} + + +\begin{frame}{Running algorithms in \qka} +\small{ + \qka is very declarative, in fact, running an algorithm can be thought of as defining a description of your problem, for instance in a \href{https://www.json.org/}{JSON} file or in a \href{https://docs.python.org/3/tutorial/datastructures.html#dictionaries}{Python Dictionary}. It is a composition of the following settings (For more information, check the \href{https://qiskit.org/documentation/aqua/execution.html#input-file}{docs}.): + \begin{description} + \item[Problem] The type of experiment (\mintinline{python}{"energy" | "excited_states" | "ising" | "search" ...}) + \item[Input/Oracle] The way to specify the input to the problem, depends on the type (SAT configuration, dataset, oracle, ...) + \item[Algorithm] Optional specification of the algorithm to use (each problem has default algorithms) and its configurations + \item[Backend] Which device to use (simulator, real device), highly customizable with number of shots (how many times should an experiment be repeated), activate compiler optimization, specify device noise parameters, ... + \end{description} +} +\pagenumber +\end{frame} + +\section{Troubleshooting \qka} +\begin{frame}{Troubleshooting \qka} + \begin{card} + After installing head to a command line and run \mintinline{bash}{qiskit_aqua_ui}. If nothing happens, you should make sure you add your python \mintinline{bash}{bin} folder to the \href{https://docs.alfresco.com/4.2/tasks/fot-addpath.html}{system variable path}, it should be something like: \mintinline{python}{"C:/Program Files/Python36/Library/bin"}.\\ + The same solution goes for \href{https://stackoverflow.com/questions/14778178/import-cvxopt-base-the-specified-module-could-not-be-found}{the cvxopt error} when running python scripts. + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{Troubleshooting \qka} + \small{When everything is properly installed you should see something like (The \qka GUI for editing experimental settings):} + \begin{center} + \includegraphics[width=1\textwidth]{qskit_aqua_ui} + \end{center} +\pagenumber +\end{frame} + +\section{\gvsa in \qka} +\begin{frame}[fragile]{\gvsa in \qka} +Go ahead and run the following code, while trying to understand it:\begin{minted}{python} +from qiskit_aqua import run_algorithm +# problem in DIMACS CNF format: +sat_cnf = """ +p cnf 3 5 +-1 -2 -3 0 +1 -2 3 0 +1 2 -3 0 +1 -2 -3 0 +-1 2 3 0 +""" +params = { + 'problem': {'name': 'search'}, + 'oracle': {'name': 'SAT', 'cnf': sat_cnf}, + 'algorithm': {'name': 'Grover'}, + 'backend': {'name': 'qasm_simulator'} +} +print(run_algorithm(params)['result']) # [1, -2, 3] or another +\end{minted} +\end{frame} + + + +\section{\ai} +\begin{frame}{\ai} +\begin{card} + If you work in Machine Learning, you probably know how the \href{https://en.wikipedia.org/wiki/Support_vector_machine}{Support Vector Machine}(SVM) works. It is simply an algorithm for \href{https://en.wikipedia.org/wiki/Supervised_learning}{supervised learning}.\\ + \qka comes with more than one implementation of SVM Kernels. We will have a complete exercise on it this week (optional). +\end{card} +\begin{card} + More \ai related algorithms are expected to be implemented on \qka in the future, and you may even \href{https://qiskit.org/documentation/aqua/extending.html#algorithms}{implement your own}! +\end{card} +\pagenumber +\end{frame} + +\begin{frame}[fragile]{\ai (SVM)} +\small{Here's an example of a configuration for an SVM classification model:}\begin{minted}{python} +params = { + 'problem': { + 'name': 'svm_classification', + 'random_seed': 1219 # same seed ensures reproducibility + }, + 'algorithm': { + 'name': 'QSVM.Kernel' + }, + 'backend': { + 'name': 'qasm_simulator', + 'shots': 1024 + }, + 'feature_map': { + 'name': 'SecondOrderExpansion', + 'depth': 2, + 'entanglement': 'linear' + } +} +\end{minted} +\end{frame} + +\section{Optimization} +\begin{frame}{Optimization} +\begin{cardTiny} + Still related to AI, there is another very important topic nowadays in both research and industry settings: \textbf{optimization}. +\end{cardTiny} +\begin{cardTiny} + In this week's exercises you will have 2 examples of optimization problems: \href{https://en.wikipedia.org/wiki/Maximum_cut}{maximum cut} and the iconic \href{https://en.wikipedia.org/wiki/Travelling_salesman_problem}{traveling salesman problem}. These can both be reduced to a traditional model called \href{https://en.wikipedia.org/wiki/Ising_model}{ising model} that has been studied from a \href{https://arxiv.org/ftp/arxiv/papers/1210/1210.0113.pdf}{quantum point of view}. Thus, by using the ising solver in \qka we are able to solve many different problems, literally the only limitation is our ability to map problem formulations into know and solved problems. +\end{cardTiny} +\pagenumber +\end{frame} + + + + +\section{Chemistry in \qka} +\begin{frame}{Chemistry in \qka} +\begin{card} + Lastly, and especially directed at chemistry related research, there are also examples of extrapolation of quantum mechanical properties that allow to make simulation on the behaviour of atoms, electrons and on the evolution of molecule configurations.\\ If you think about it, what better to simulate an atomic process than quantum? +\end{card} +\begin{card} + As a matter of fact, there is a \href{https://github.com/Qiskit/aqua-chemistry}{complete repository} form the \qk team dedicated to chemistry algorithms for research on the field. +\end{card} +\pagenumber +\end{frame} + +\begin{frame}[fragile]{Chemistry in \qka} +\small{We will not go much deeper into explaining the typical approaches, as this should be done by those students that truly benefit from it. However, here is an example of how such problems may be configured (the input comes from \href{https://support.hdfgroup.org/HDF5/whatishdf5.html}{HDF5} files):}\begin{minted}{python} +# Input dictionary to configure Qiskit aqua Chemistry +# for the chemistry problem. +aqua_chemistry_dict = { + 'driver': {'name': 'HDF5'}, + 'HDF5': {'hdf5_input': 'H2/0.7_sto-3g.hdf5'}, + 'operator': {'name': 'hamiltonian'}, + 'algorithm': {'name': 'VQE'}, + 'optimizer': {'name': 'COBYLA'}, + 'variational_form': {'name': 'UCCSD'}, + 'initial_state': {'name': 'HartreeFock'}, + 'backend': {'name': 'statevector_simulator'} +} +\end{minted} +\end{frame} + + +\section{Hands-on} +\begin{frame}{Hands-on} +\begin{card} + This week there will be quite a few exercise tutorials available, each student is expected to select and study at least one of them. Here are the topics covered in each: + \begin{enumerate} + \item Grover algorithm with \qka (search) + \item SVM for Breast Cancer classification (\ai) + \item Maximum Cut problem (optimization) + \item Traveling Salesman problem (optimization) + \item Computing the ground state energy of an $H_2$ molecule (Chemistry) + \end{enumerate} +\end{card} +\end{frame} + + +\section{Where to learn more?} +\begin{frame}{Where to learn more?} +\begin{card} + \begin{itemize} + \item \href{https://qiskit.org/documentation/aqua/index.html}{\qka documentation} seriously a good point to start + \item \href{https://github.com/Qiskit/qiskit-tutorial/tree/master/qiskit/aqua}{\qka official tutorials} + \item \href{https://github.com/Qiskit/qiskit-tutorial/tree/master/community/aqua}{\qka community tutorials} + \item \href{https://en.wikipedia.org/wiki/Quantum_programming}{A comprehensive analysis of \q Programming SDKs and languages} including, of course, \qk + \end{itemize} +\end{card} +\end{frame} +\end{document} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/slides.pdf b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/slides.pdf new file mode 100755 index 000000000..bc25d7c1f Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_8-High_Level_Quantum_Programming/slides.pdf differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/README.ipynb b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/README.ipynb new file mode 100644 index 000000000..9a4ad49d6 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/README.ipynb @@ -0,0 +1,55 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Week 9 - State of the Quantum Art\n", + "\n", + " * Models of Quantum Computation\n", + " * Quantum Circuit\n", + " * Adiabatic Quantum Computation\n", + " * Measurement Based Quantum Computer\n", + " * Topological Quantum Computer\n", + " * Building Quantum Computers\n", + " * Implementing a Qubit\n", + " * Quantum Decoherence\n", + " * Quantum Error Correction\n", + " * Industrial Standpoint - Race for Quantum\n", + " * Closing Remarks\n", + "\n", + "## Resources\n", + " * [PDF slides](slides.pdf)\n", + " * [slides src](latex/main.tex) Latex files and image resources used in the presentation (useful for PR on slide typos and such)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/beamercolorthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/beamercolorthemematerial.sty new file mode 100755 index 000000000..7fbe50bd2 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/beamercolorthemematerial.sty @@ -0,0 +1,286 @@ +\mode + +% light theme +\newcommand{\useLightTheme}{ +\definecolor{text} {HTML}{000000} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{E0E0E0} +\definecolor{BGgrey02}{HTML}{F5F5F5} +\definecolor{BGgrey03}{HTML}{FAFAFA} +\definecolor{BGgrey04}{HTML}{FFFFFF} +} + + +% dark theme +\newcommand{\useDarkTheme}{ +\definecolor{text} {HTML}{FFFFFF} +\setbeamercolor*{normal text}{fg=text} + +\definecolor{shadow}{HTML}{000000} +\definecolor{BGgrey01}{HTML}{000000} +\definecolor{BGgrey02}{HTML}{212121} +\definecolor{BGgrey03}{HTML}{303030} +\definecolor{BGgrey04}{HTML}{424242} +} + +% PRIMARY -------------------------------------------------------------- +\newcommand{\usePrimary}[3]{ +\definecolor{primary} {HTML}{#1} +\definecolor{primaryD}{HTML}{#2} +\definecolor{textPrimary} {HTML}{#3} +} + +% Primary Red +\newcommand{\usePrimaryRed}{ +\definecolor{primary} {HTML}{F44336} +\definecolor{primaryD}{HTML}{D32F2F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Pink +\newcommand{\usePrimaryPink}{ +\definecolor{primary} {HTML}{E91E63} +\definecolor{primaryD}{HTML}{C2185B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Purple +\newcommand{\usePrimaryPurple}{ +\definecolor{primary} {HTML}{6A1B9A} +\definecolor{primaryD}{HTML}{7B1FA2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Deep Purple +\newcommand{\usePrimaryDeepPurple}{ +\definecolor{primary} {HTML}{673AB7} +\definecolor{primaryD}{HTML}{512DA8} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Indigo +\newcommand{\usePrimaryIndigo}{ +\definecolor{primary} {HTML}{3F51B5} +\definecolor{primaryD}{HTML}{303F9F} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Blue +\newcommand{\usePrimaryBlue}{ +\definecolor{primary} {HTML}{2196F3} +\definecolor{primaryD}{HTML}{1976D2} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Blue +\newcommand{\usePrimaryLightBlue}{ +\definecolor{primary} {HTML}{03A9F4} +\definecolor{primaryD}{HTML}{0288D1} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Cyan +\newcommand{\usePrimaryCyan}{ +\definecolor{primary} {HTML}{00BCD4} +\definecolor{primaryD}{HTML}{0097A7} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Teal +\newcommand{\usePrimaryTeal}{ +\definecolor{primary} {HTML}{009688} +\definecolor{primaryD}{HTML}{00796B} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Green +\newcommand{\usePrimaryGreen}{ +\definecolor{primary} {HTML}{4CAF50} +\definecolor{primaryD}{HTML}{388E3C} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Light Green +\newcommand{\usePrimaryLightGreen}{ +\definecolor{primary} {HTML}{8BC34A} +\definecolor{primaryD}{HTML}{689F38} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Lime +\newcommand{\usePrimaryLime}{ +\definecolor{primary} {HTML}{CDDC39} +\definecolor{primaryD}{HTML}{AFB42B} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Yellow +\newcommand{\usePrimaryYellow}{ +\definecolor{primary} {HTML}{FFEB3B} +\definecolor{primaryD}{HTML}{FBC02D} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Amber +\newcommand{\usePrimaryAmber}{ +\definecolor{primary} {HTML}{FFC107} +\definecolor{primaryD}{HTML}{FFA000} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Orange +\newcommand{\usePrimaryOrange}{ +\definecolor{primary} {HTML}{FF9800} +\definecolor{primaryD}{HTML}{F57C00} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Deep Orange +\newcommand{\usePrimaryDeepOrange}{ +\definecolor{primary} {HTML}{FF5722} +\definecolor{primaryD}{HTML}{E64A19} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Brown +\newcommand{\usePrimaryBrown}{ +\definecolor{primary} {HTML}{795548} +\definecolor{primaryD}{HTML}{5D4037} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + +% Primary Grey +\newcommand{\usePrimaryGrey}{ +\definecolor{primary} {HTML}{9E9E9E} +\definecolor{primaryD}{HTML}{616161} +\definecolor{textPrimary} {HTML}{000000} +} + +% Primary Blue Grey +\newcommand{\usePrimaryBlueGrey}{ +\definecolor{primary} {HTML}{607D8B} +\definecolor{primaryD}{HTML}{455A64} +\definecolor{textPrimary} {HTML}{FFFFFF} +} + + +% ACCENT --------------------------------------------------------------- + +\newcommand{\useAccent}[2]{ +\definecolor{accent} {HTML}{#1} +\definecolor{textAccent} {HTML}{#2} +} + +% Accent Red +\newcommand{\useAccentRed}{ +\definecolor{accent} {HTML}{FF1744} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Pink +\newcommand{\useAccentPink}{ +\definecolor{accent} {HTML}{F50057} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Purple +\newcommand{\useAccentPurple}{ +\definecolor{accent} {HTML}{D500F9} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Deep Purple +\newcommand{\useAccentDeepPurple}{ +\definecolor{accent} {HTML}{651FFF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Indigo +\newcommand{\useAccentIndigo}{ +\definecolor{accent} {HTML}{3D5AFE} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Blue +\newcommand{\useAccentBlue}{ +\definecolor{accent} {HTML}{2979FF} +\definecolor{textAccent} {HTML}{FFFFFF} +} + +% Accent Light Blue +\newcommand{\useAccentLightBlue}{ +\definecolor{accent} {HTML}{00B0FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Cyan +\newcommand{\useAccentCyan}{ +\definecolor{accent} {HTML}{00E5FF} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Teal +\newcommand{\useAccentTeal}{ +\definecolor{accent} {HTML}{1DE9B6} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Green +\newcommand{\useAccentGreen}{ +\definecolor{accent} {HTML}{00E676} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Light Green +\newcommand{\useAccentLightGreen}{ +\definecolor{accent} {HTML}{76FF03} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Lime +\newcommand{\useAccentLime}{ +\definecolor{accent} {HTML}{C6FF00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Yellow +\newcommand{\useAccentYellow}{ +\definecolor{accent} {HTML}{FFEA00} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Amber +\newcommand{\useAccentAmber}{ +\definecolor{accent} {HTML}{FFC400} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Orange +\newcommand{\useAccentOrange}{ +\definecolor{accent} {HTML}{FF9100} +\definecolor{textAccent} {HTML}{000000} +} + +% Accent Deep Orange +\newcommand{\useAccentDeepOrange}{ +\definecolor{accent} {HTML}{FF3D00} +\definecolor{textAccent} {HTML}{FFFFFF} +} + + + +\useLightTheme +\usePrimaryIndigo +\useAccentPink + +% more color settings +\setbeamercolor{block title}{fg=primary} +\hypersetup{linkcolor=primary} +\setbeamercolor{section in toc}{fg=primary} +\setbeamercolor{subsection in toc}{fg=primary} + + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/beamerinnerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/beamerinnerthemematerial.sty new file mode 100755 index 000000000..48d82d16a --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/beamerinnerthemematerial.sty @@ -0,0 +1,42 @@ +\setbeamercolor{background canvas}{bg=BGgrey03} + +% Title page +\defbeamertemplate*{title page}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t][\paperheight]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, + fuzzy shadow={0mm}{-0.6mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.2mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.2mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, height=0.6\paperheight, flushright upper, valign=bottom, boxsep=0.5cm] + {\usebeamerfont{title} \inserttitle}\\ + {\usebeamerfont{author}\insertauthor}\\ + {\usebeamerfont{author}\insertdate} + \end{tcolorbox} + + %\begin{tcolorbox}[arc=5mm,width=10mm,height=10mm, enhanced, % + %colback=accent, coltext=textAccent, % + %fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!primary}, % top + %fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + %fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + %left=1.5mm, right=1.5mm, top=1.5mm, bottom=1.5mm, boxsep=0mm, % + %boxrule=0mm, enlarge left by=10mm, enlarge top by=-10mm]% + %\includegraphics[width=7mm]{\iconFolder/ic_account_circle_48px} + %\end{tcolorbox} + \end{minipage}% + }% + \vfill +} + +% Items +\setbeamertemplate{enumerate items}[circle] +\setbeamertemplate{itemize items}{\Large $\bullet$} +\setbeamertemplate{sections/subsections in toc}[circle] + +\setbeamercolor{local structure}{fg=accent} + +\mode + diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/beamerouterthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/beamerouterthemematerial.sty new file mode 100755 index 000000000..9338c12a0 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/beamerouterthemematerial.sty @@ -0,0 +1,28 @@ +\mode + +% Frame title +\defbeamertemplate*{frametitle}{material}[1][] +{ + \makebox[\linewidth][c]{% + \begin{minipage}[t]{\paperwidth} + \raggedright + \begin{tcolorbox}[colback=primary, enhanced, sharpish corners=all, boxrule=0mm, coltext=textPrimary, % + left=6mm, right=6mm, top=2.6mm, bottom=2mm,% + fuzzy shadow={0mm}{-0.9mm}{0mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall + fuzzy shadow={0mm}{-0.8mm}{0mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig + fuzzy shadow={0mm}{ 0.6mm}{0mm}{0.2mm}{shadow!40!primary}, % topSmall + fuzzy shadow={0mm}{ 0.5mm}{0mm}{0.2mm}{shadow!20!primary}, % topBig + width=\paperwidth, boxsep=2mm] + \ifx\insertframesubtitle\@empty% + {\usebeamerfont{frametitle} \insertframetitle} + \else% + {\usebeamerfont{frametitle} \insertframetitle} + {\usebeamerfont{framesubtitle} \insertframesubtitle} + \fi + \end{tcolorbox} + \end{minipage}% + }% +} + + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/beamerthemematerial.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/beamerthemematerial.sty new file mode 100755 index 000000000..c34246582 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/beamerthemematerial.sty @@ -0,0 +1,82 @@ +\mode + +% Requirement +\RequirePackage{tikz} +\RequirePackage{xcolor} +\RequirePackage{ifthen} +\RequirePackage[many]{tcolorbox} +\RequirePackage{graphicx} + +% Settings +\useinnertheme{material} +\useoutertheme{material} +\usecolortheme{material} + +\setbeamertemplate{navigation symbols}{} + +\setbeamerfont*{title}{size=\Huge} +\setbeamerfont*{frametitle}{size=\large} + +% tcolorbox settings +\newcommand{\setCardSettings}{% +\tcbset{% +colback=BGgrey04, colbacktitle=primary, coltitle=textPrimary, coltext=text,% +enhanced, sharpish corners=all,% +fuzzy shadow={0mm}{ 0.9mm}{ 0.6mm}{0.2mm}{shadow!20!BGgrey03}, % top +fuzzy shadow={0mm}{-0.6mm}{-0.1mm}{0.2mm}{shadow!40!BGgrey03}, % bottomSmall +fuzzy shadow={0mm}{-0.2mm}{-0.2mm}{0.2mm}{shadow!20!BGgrey03}, % bottomBig +left=6mm, right=6mm, top=6mm, bottom=6mm, middle=4mm,% +title filled, boxrule=0mm, % +segmentation code={\path[draw=BGgrey01](segmentation.west) -- (segmentation.east);}% +} +} + +\setCardSettings + +\newenvironment{card}[1][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}% + }{% + \begin{tcolorbox}[colbacktitle=primary, coltitle=textPrimary, title=#1, left=6mm, right=6mm, top=3mm, bottom=4mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% + }% +}{% + \end{tcolorbox}% +} + +\newenvironment{cardTiny}{% + \setCardSettings + \begin{tcolorbox}[colbacktitle=primary, left=4mm, right=4mm, top=2mm, bottom=2mm, middle=4mm, toptitle=4mm, bottomtitle=3mm,]% +}{% + \end{tcolorbox}% +} + + +\newcommand{\cardImg}[3][pR23s2OTKY]{% + \setCardSettings + \ifthenelse{\equal{#1}{pR23s2OTKY}}{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, bottom=0mm, middle=1.5mm, boxsep=0mm, width=#3,]% + \includegraphics[width=\textwidth]{#2} + \end{tcolorbox} + }{% + \begin{tcolorbox}[lower separated=false, leftupper=0mm, rightupper=0mm, top=0mm, middle=1.5mm, boxsep=0mm, leftlower=6mm, rightlower=6mm, bottom=6mm, , width=#3,]% + \includegraphics[width=\textwidth]{#2} + \tcblower + #1% + \end{tcolorbox} + }% +} + +\newenvironment{frameImg}[2][width]{% + \setCardSettings + \ifthenelse{\equal{#1}{width}}{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[width=\paperwidth, keepaspectratio=true]{#2}}}% + }{% + \usebackgroundtemplate{\hspace{-0.5\paperwidth}\parbox[c][\paperheight][c]{2\paperwidth}{\centering\includegraphics[height=\paperheight, keepaspectratio=true]{#2}}}% + }% + \begin{frame} +}{% + \end{frame} +} + +\mode diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/img/grover_output.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/img/grover_output.png new file mode 100755 index 000000000..77c7d9cea Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/img/grover_output.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/img/mbqc.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/img/mbqc.png new file mode 100755 index 000000000..bb1d1e77a Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/img/mbqc.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/img/qiskit_cat.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/img/qiskit_cat.png new file mode 100755 index 000000000..aac853704 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/img/qiskit_cat.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/img/quantum_annealing.png b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/img/quantum_annealing.png new file mode 100755 index 000000000..8842399b4 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/img/quantum_annealing.png differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/img/topological.jpg b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/img/topological.jpg new file mode 100755 index 000000000..61bc43a06 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/img/topological.jpg differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/macros.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/macros.sty new file mode 100755 index 000000000..e8d2b8686 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/macros.sty @@ -0,0 +1,127 @@ +\ProvidesPackage{macros}[2018 My own macros] + +% Packages that main.tex will use AND common header commands +\usepackage{multicol} +\usepackage{tikz} % drawings +\usetikzlibrary{positioning, arrows} +\usepackage{animate} % animations +\usepackage{hyperref} +\usepackage{minted} % code snippets +\usepackage{todonotes} +\let\todox\todo +\renewcommand\todo[1]{\todox[inline]{#1}} + +%%%%%%%%%%%%%%%%% DOCUMENT GLOBAL SETTINGS +% example for author reusing these slides: +\author[Ramalho]{Miguel Sozinho Ramalho} +% \author[LASTNAME]{FIRSTNAME LASTNAME,\\ \scriptsize{based on slides by \textbf{Miguel Sozinho Ramalho}}} +\institute[FEUP]{Faculty of Engineering of the University of Porto} +\subject{Quantum Computing} +\date{November, 2018} + + +% Uncomment for notes on slides +% \usepackage{pgfpages} +% \setbeameroption{show notes} +% \setbeameroption{show notes on second screen=right} + +\graphicspath{{img/}} % add the img folder to graphics path + +% Packages that this file uses +\usepackage{braket} % bra-ket notation +\usepackage{xargs} % custom new commands +\usepackage{xspace} % add xspace after new command to auto insert space + + + +% braket shorthands +\newcommandx{\superpos}[3][1=\textual{\psi},2=0,3=1]{\ket {#1} = \textual{\alpha} \ket{#2} + \textual{\beta} \ket{#3}} +\newcommand{\plusminus}[1][\psi]{\superpos[#1][-][+]} +\newcommand{\pagenumber}{\raggedleft\vfill\scriptsize\insertframenumber/\inserttotalframenumber} +\newcommand{\speedoflight}{3 \times 10^{8} m/s} +\newcommand{\osqrt}{\frac{1}{\sqrt{2}}} +\newcommand{\kz}{\ket{0}} +\newcommand{\ko}{\ket{1}} + +% short shorthands +\newcommand{\qasm}{Qasm\xspace} +\newcommand{\q}{Quantum\xspace} +\newcommand{\qa}{\q Algorithms\xspace} +\newcommand{\qct}{\q Circuit\xspace} +\newcommand{\qcts}{\q Circuits\xspace} +\newcommand{\qc}{\q Computing\xspace} +\newcommand{\qcp}{\q Computation\xspace} +\newcommand{\qec}{\q Error Correction\xspace} +\newcommand{\qft}{\q Fourier Transform\xspace} +\newcommand{\qi}{\q Information\xspace} +\newcommand{\qis}{\q Information Science\xspace} +\newcommand{\qm}{\q Mechanics\xspace} +\newcommand{\qmt}{\q Measurement\xspace} +\newcommand{\qp}{\q Physics\xspace} +\newcommand{\qsp}{\q Superposition\xspace} +\newcommand{\qw}{\q World\xspace} +\newcommand{\mbqc}{Measurement Based \q Computer\xspace} +\newcommand{\aqc}{Adiabatic \q Computation\xspace} + +\newcommand{\cl}{Classical\xspace} +\newcommand{\cc}{Classical Computing\xspace} +\newcommand{\cm}{Classical Mechanics\xspace} +\newcommand{\cp}{Classical Physics\xspace} + +\newcommand{\qk}{Qiskit\xspace} +\newcommand{\qka}{Qiskit Aqua\xspace} +\newcommand{\ibmq}{IBM Q\xspace} +\newcommand{\ibmqe}{IBM Q Experience\xspace} + +\newcommand{\p}{\textbf{P}\xspace} +\newcommand{\np}{\textbf{NP}\xspace} +\newcommand{\bqp}{\textbf{BQP}\xspace} + +\newcommand{\djs}{Deutsch-Jozsa\xspace} +\newcommand{\ds}{Deutsch's\xspace} +\newcommand{\gv}{Grover\xspace} +\newcommand{\gvs}{\gv's\xspace} +\newcommand{\gvsa}{\gv's algorithm\xspace} +\newcommand{\aamp}{Amplitude Amplification\xspace} +\newcommand{\sa}{Shor's algorithm\xspace} + +\newcommand{\phiv}{phase inversion\xspace} +\newcommand{\iatm}{inversion about the mean\xspace} + +\newcommand{\ai}{Artificial Intelligence\xspace} + +%configurable variables +\newcommand{\githubRepo}{https://github.com/msramalho/Teach-Me-Quantum/} +\newcommand{\weeks}{\githubRepo/tree/master/} +\newcommand{\weekZero}{\weeks/Week\%200\%20-\%20Hello\%20Quantum\%20World/} +\newcommand{\weekOne}{\weeks/Week\%201\%20-\%20Quantum\%20Tools/} +\newcommand{\weekTwo}{\weeks/Week\%202\%20-\%20Quantum\%20Information\%20Science/} +\newcommand{\weekThree}{\weeks/Week\%203\%20-\%20Quantum\%20Gates/} +\newcommand{\weekFour}{\weeks/Week\%204\%20-\%20Quantum\%20Facts/} + +%%%%%%%%%%%%%%%%%%%%%%%% quotations +% src: https://tex.stackexchange.com/a/53380/126771 +\newcommand{\@chapapp}{\relax} +\makeatletter +\renewcommand{\@chapapp}{} +\newenvironment{chapquote}[2][2em] + {\setlength{\@tempdima}{#1} + \def\chapquote@author{#2} + \parshape 1 \@tempdima \dimexpr\textwidth-2\@tempdima\relax + \itshape} + {\par\normalfont\hfill--\ \chapquote@author\hspace*{\@tempdima}\par\bigskip} +\makeatother + +%%%%%%%%%%%%%%%%% color on hrefs +\hypersetup{ + colorlinks=true, + linkcolor=primaryD,%blue, + filecolor=primaryD,%cyan, + urlcolor=accent %hrefs +} + +%%%%%%%%%%%%%%%%% minted settings +\setminted[python]{fontsize=\footnotesize} +\setminted[vhdl]{fontsize=\footnotesize} +\definecolor{bgGrey}{rgb}{0.95,0.95,0.95} +\setminted{bgcolor=bgGrey} \ No newline at end of file diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/main.tex b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/main.tex new file mode 100755 index 000000000..ba478386c --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/latex/main.tex @@ -0,0 +1,319 @@ +\documentclass[aspectratio=43]{beamer} +\usepackage[utf8]{inputenc} + +%%%%%%%%%%%%%%%%%%%%%%%% THEME +\usetheme{material} +\useLightTheme +\usePrimaryBlue +\useAccentOrange + +\usepackage{macros} % must come after theme + +\title{State of the Quantum Art} +\keywords{Models of\qcp, \aqc} + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + + +\begin{frame}{Table of contents} + \begin{card} + \tableofcontents + \end{card} +\end{frame} + +% \begin{frame}{Introduction} +% \begin{card} + +% \end{card} +% \pagenumber +% \end{frame} + +\section{Introduction} +\begin{frame}{Introduction} + \begin{card} + This is the \textbf{final week} of the course, as such it is meant to be \textbf{lighter} and more \textbf{inspiring}. We will go over typical \textbf{models of computation}. Understand how all the theory we have been studying can actually be implemented - \textbf{how to build qubits} and \textbf{quantum computers}. Then, we will take a snapshot of the current state of the art as to the implementation of quantum computers, namely by analyzing the work all the \textbf{players} have showed. + \end{card} +\pagenumber +\end{frame} + +\section{Models of \qcp} +\begin{frame}{Models of \qcp} + \begin{card} + By now, we are aware that quantum mechanical properties of the world can be used to compute: \textit{perform a transformation on a given input to produce the desired output.} + \end{card} + \begin{card} + There are, however, many ways of doing so. These are the so-called \textbf{Models of \qcp}. We will go over each of the main ones. + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{Models of \qcp} + \begin{card} + Some considerations are required, however, namely: + \begin{itemize} + \item These models are interchangeable and equivalent in computational power + \item Provide different approaches to problem solving, each with a set of problems that it solves more easily - its \textit{forte} + \end{itemize} + As such, each has its advantages and disadvantages but they each have their own distinct fascinating essence. + \end{card} +\pagenumber +\end{frame} + + + +\subsection{\q Circuit} +\begin{frameImg}[height]{grover_output} + \begin{card}[\q Circuit] + Throughout this course, we have mainly focused on the \textit{\q Circuit} Model, so you are in a better point to understand its explicit definition. + \end{card} + \begin{card} + Computations are described as a sequence of gates, analog to classical circuits, that perform reversible transformations on a set of qubits, whose state is usually measured at the end. + \end{card} +\pagenumber +\end{frameImg} + + +\subsection{\aqc} +\begin{frameImg}[height]{quantum_annealing} + \begin{card}[\aqc] + This is a quantum application of the \href{https://en.wikipedia.org/wiki/Adiabatic_theorem}{Adiabatic Theorem}, according to which a quantum mechanical system adapts itself to changes in the environment when it is given enough time and will fail to do so, otherwise. + \end{card} +\pagenumber +\end{frameImg} + +\begin{frameImg}[height]{quantum_annealing} + \begin{card} + This is precisely what happens in metal and glass that is elevated to high temperatures and allowed to cool down slowly, so they can recrystallize into their natural organization, thus gaining some better mechanical properties. This process is called \textbf{annealing} and, as a matter of fact, \aqc is also referred to (with some nuances) as \textbf{\q Annealing}. + \end{card} + \begin{card} + Why is this interesting for \qc? Because we are able to generate a \href{https://en.wikipedia.org/wiki/Hamiltonian_(quantum_mechanics)}{\textbf{Hamiltonian}} whose \textbf{ground state} (the state of less energy) describes the final solution to our problem. + \end{card} +\pagenumber +\end{frameImg} + +\begin{frameImg}[height]{quantum_annealing} + \begin{card} + Take the SAT problem that we have already studied and think of it as a collection of constraints between variables (qubits) that can be implemented on a quantum system. We only specify the constraints and not the algorithm (this is already implicit!) and then we \textit{adiabatically} evolve the system, meaning we bring it to lower and lower states of energy. + \end{card} + \begin{card} + \textbf{Can you think of a way of doing this?}\\ + One way is to cool the system, bring it (slowly) to lower temperature levels and then perform a measurement, which will encode the solution to our initial problem! + \end{card} +\pagenumber +\end{frameImg} + + + +\subsection{\mbqc} +\begin{frameImg}[height]{mbqc} + \begin{card}[\mbqc (One-way)] + This model focuses on using entanglement to describe graph-like relations between the quantum state and then performs individual and ordered measurements on qubits, until it obtains the solution to the problem. It should be noted that the result of a measurement on one of the qubits can determine if any further operations (like which basis to measure) will be necessary. + \end{card} +\pagenumber +\end{frameImg} + +\begin{frameImg}[height]{mbqc} + \begin{card}[\mbqc (One-way)] + The term \textbf{One-way} comes from the fact that there is a sequential logic behind the measurements and because the initial entangled state gets destroyed once a measurement is performed and what is left is to collect the correlated values of the previously entangled qubits, as we have already seen, and we get the solution!\\ + The simplest physical implementations of such a system can usually be seen as a \href{https://en.wikipedia.org/wiki/Lattice_(group)}{lattice} of qubits. + \end{card} +\pagenumber +\end{frameImg} + + +\subsection{Topological \q Computer} +\begin{frameImg}[height]{topological} + \begin{card}[Topological \q Computer] + This last model is a bit more theoretical and has a few interesting properties, namely it employs \href{https://en.wikipedia.org/wiki/Quasiparticle}{quasiparticles} that can be \textbf{braided} together in a two-dimensional \href{https://en.wikipedia.org/wiki/Spacetime}{spacetime}, this is quite hard for the non-physics mind but it essentially means that the quantum particles can be connect by the equivalent of quantum gates, although these are inherent to the system. + \end{card} +\pagenumber +\end{frameImg} + +\begin{frameImg}[height]{topological} + \begin{card}[Topological \q Computer] + Although harder to implement, this \textit{braid system} can be much more resilient than typical qubit implementations to external interference and, therefore, less error prone. + \end{card} +\pagenumber +\end{frameImg} + + +\section{Building \q Computers} +\begin{frame}{Building \q Computers} + \begin{card} + After all that we have seen and all that we know we haven't seen, quantum computing theory is extensive and promising, yet there is still the slight detail of \textbf{actually building} a quantum computer. + \end{card} + \begin{card} + Unlike classical computers where the transistor has been the universal means for implementing circuits and handle bit information, there is no \textbf{one best} quantum equivalent so far. As a matter of fact, there are a lot of different approaches to this problem, each unique and each with both advantages and disadvantages. + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{Building \q Computers} + \begin{card} + Besides facing challenges in how to represent quantum states, the construction of quantum computers requires that those states: + \begin{itemize} + \item are stable enough that they can be operated upon and measured + \item allow entanglement between qubits + \item allow for easy setup and replication of experiments + \end{itemize} + \end{card} +\pagenumber +\end{frame} + + +\subsection{Implementing a Qubit} +\begin{frame}{Implementing a Qubit} + \begin{cardTiny} + The atomic (literally) element of quantum computers can be implemented in various ways. The most commonly used are: + \begin{description} + \item[Individual ionized atoms] \textit{ion traps}, optical laser to trap (isolate) ions and using their electron's energy levels + \item [Superconducting electronic circuits] circuits cooled down to extremely low temperature so that harmonic behaviour appears + \item [Spin qubits] controlling the quantized orientation of electrons + \item [Photons] which can be used in many ways to achieve a qubit implementation (often involving other particles) + \end{description} + \end{cardTiny} +\pagenumber +\end{frame} + + + +\subsection{Quantum Decoherence} +\begin{frame}{Quantum Decoherence} + \begin{card} + Besides being able to build the experimental setup to either trap ions or measure spin values, a problem that is common to most qubit implementations is that of \textbf{quantum decoherence}. + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{Quantum Decoherence} + \begin{card} + This phenomenon describes the impact of \textbf{external interference} on the quantum states. In practice, the perfect isolation of these systems is extremely hard and so there is always interfering components, this can be: other \textbf{atoms} or \textbf{electrons}, \textbf{magnetic fields}, \textbf{energy fluctuations}, ... and so the coherence of the qubit, a necessary property for quantum computing to work, decays with ease. + \end{card} +\pagenumber +\end{frame} +\begin{frame}{Quantum Decoherence} + \begin{card} + The problem being that the more qubits there are in a system, the harder it is to guarantee the \textit{goldilocks} state of just the \textbf{right amount of interference} to allow for other phenomena like \textbf{entanglement} and to prevent undesirable disturbances of the quantum system. + \end{card} +\pagenumber +\end{frame} + + +\section{\qec} +\begin{frame}{\qec} + \begin{card} + Like every problem invokes a solution, so does quantum decoherence result in another field of \qc, \textbf{\qec}. + \end{card} + \begin{card} + This is a very active and widespread field of study and it tackles not only decoherence, but noise as well (errors from other experimental factors like tools). + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{\qec} + \begin{card} + Classical computing also has to deal with errors in information handling and communication, and \qec can be seen as the analogous for \qc. Instead of handling the quality of qubit implementation, it dwells on ideas of error \textbf{identification} and error \textbf{correction}, it also includes \textbf{gate-specific} analysis. + \end{card} +\pagenumber +\end{frame} + +\section{Industrial Standpoint - Race for \q} +% \subsection{IBM} +% \subsection{Intel} +% \subsection{Microsoft} +% \subsection{Google} +% \subsection{D-Wave} +% \subsection{China Quantum Research Technology} +% \subsection{NSA} % #Penetrating Hard Targets +\begin{frame}{Industrial Standpoint - Race for \q} + \begin{card} + There are many \textbf{competitors} in this metaphorical race, and not only tech giants, a lot of academic institutions are quite well represented in the contest. + \end{card} + \begin{card} + Let us begin by the tech giants, \textbf{IBM}, \textbf{Intel}, \textbf{Google}, \textbf{Microsoft} are just a few names of companies that have active R\&D departments whose sole purpose is to create the best and largest quantum computer. + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{Industrial Standpoint - Race for \q} + \begin{card} + \textbf{IBM} had developed a 50 qubit quantum computer by the end of 2017 and there are some rumours around a within-reach 70+qubit by the end of 2018. More than that, IBM has made available to the public, as we already know, through \href{https://quantumexperience.ng.bluemix.net/qx}{\imqe} a few quantum computers with up to 14 qubits and has some with 20 for rental.\\ + Moreover, they have given \href{https://qiskit.org/}{\qk} to the world, and we know how wonderful it is. + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{Industrial Standpoint - Race for \q} + \begin{card} + \textbf{Intel} has taken a more widespread approach and they have been traveling the world looking for places to invest, one of the most promising ones is \href{https://qutech.nl/}{QuTech} in Delft. They also claim to have achieved a 49 qubit processor! + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{Industrial Standpoint - Race for \q} + \begin{card} + \textbf{Microsoft} has claimed to have topological qubits and is trying to make a services out of quantum computing through \href{https://azure.microsoft.com/en-us/}{Azure}. They have also come forward with a \href{https://www.microsoft.com/en-us/quantum/development-kit}{\q Development Kit}. + \end{card} +\pagenumber +\end{frame} + + +\begin{frame}{Industrial Standpoint - Race for \q} + \begin{card} + \textbf{Google} has released, as of 2018, \href{https://techcrunch.com/2018/03/05/googles-new-bristlecone-processor-brings-it-one-step-closer-to-quantum-supremacy/}{Bristlecone}, a 70 qubit processor and they have also a large branch of Google AI dedicated to quantum research, along with secretive claims for new machine learning algorithms that run on quantum computers. + \end{card} +\pagenumber +\end{frame} + + +\begin{frame}{Industrial Standpoint - Race for \q} + \begin{card} + Another company, \href{https://www.dwavesys.com/quantum-computing}{\textbf{D-Wave Systems}}, which is a solely quantum company, as of 2018, sells \textbf{2000 qubit} processors. These are supposed to be appropriate for Quantum Annealing techniques, especially dedicated to optimization problems. This does seem like a very large number, but let us not forget that quantity does not equal quality, and there is plenty of skepticism around their claims. + \end{card} +\pagenumber +\end{frame} + + +\begin{frame}{Industrial Standpoint - Race for \q} + \begin{card} + When \href{https://en.wikipedia.org/wiki/Edward_Snowden}{Edward Snowden} leaked information on the NSA, one of the findings in those documents was that of a secret project called \href{https://www.washingtonpost.com/world/national-security/nsa-seeks-to-build-quantum-computer-that-could-crack-most-types-of-encryption/2014/01/02/8fff297e-7195-11e3-8def-a33011492df2_story.html?utm_term=.0d294e5de470}{Penetrating Hard Targets} whose purpose was to build a Quantum Computer capable of breaking current encryption mechanisms. The current state of the project is unknown. + \end{card} +\pagenumber +\end{frame} + + +\begin{frame}{Industrial Standpoint - Race for \q} + \begin{card} + Moreover, the European Union has announced a \href{https://qt.eu/}{10 year funding program} of more than one billion euros for research in quantum technologies + \end{card} + \begin{card} + China, however, is \href{https://www.foreignaffairs.com/articles/china/2018-09-26/chinas-quantum-future}{spending billions of dollars} to be on the frontier of this quantum race. + \end{card} +\pagenumber +\end{frame} + +\begin{frame}{Industrial Standpoint - Race for \q} + \begin{card} + Clearly, there is immense at stake here, for quantum technologies represent a great tool, but also a great weapon, if there is one single entity in charge of it. So, global efforts must be put into making this a technology of the world and not of a company or super power, at least that is the author's conviction. + \end{card} +\pagenumber +\end{frame} + +\section{Closing Remarks} +\begin{frame}{Closing Remarks} + \begin{card} + With any luck, you will have finished this course with a prickling sensation telling you not to stop here, for the amount of \textbf{possibilities}, \textbf{uncharted waters}, \textbf{untested hypothesis}, \textbf{unresolved problems}, \textbf{unformulated algorithms} along with the \textbf{power} you have witnessed, will have given you the right impression on quantum computing - it is \textbf{undoubtedly the next step}. + \end{card} +\end{frame} + +\begin{frame} + \LARGE{\begin{chapquote}[2pt]{\href{https://en.wikipedia.org/wiki/Niels_Bohr}{Niels Bohr}} + ``If quantum mechanics hasn't profoundly shocked you, you haven't understood it yet.'' + \end{chapquote}} +\end{frame} + +\end{document} \ No newline at end of file diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/slides.pdf b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/slides.pdf new file mode 100755 index 000000000..c5c6ff895 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/TeachMeQ/Week_9-State_of_the_Quantum_Art/slides.pdf differ diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/utils/README.md b/community/awards/teach_me_quantum_2018/TeachMeQ/utils/README.md new file mode 100755 index 000000000..712141391 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/utils/README.md @@ -0,0 +1,8 @@ +# Utils +This folder contains useful scripts and files to speed up the process of updating the slides and exercises. + +Current contents include: + + * [replicate_macros.bat](replicate_macros.bat) [windows] copy the [macros.sty](macros.sty) in this folder to all the weeks' latex folders + * [replicate_macros.sh](replicate_macros.sh) [linux] copy the [macros.sty](macros.sty) in this folder to all the weeks' latex folders + * [macros.sty](macros.sty) the current macros file in used, should be updated as needed and replicated with the above files diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/utils/macros.sty b/community/awards/teach_me_quantum_2018/TeachMeQ/utils/macros.sty new file mode 100755 index 000000000..e8d2b8686 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/utils/macros.sty @@ -0,0 +1,127 @@ +\ProvidesPackage{macros}[2018 My own macros] + +% Packages that main.tex will use AND common header commands +\usepackage{multicol} +\usepackage{tikz} % drawings +\usetikzlibrary{positioning, arrows} +\usepackage{animate} % animations +\usepackage{hyperref} +\usepackage{minted} % code snippets +\usepackage{todonotes} +\let\todox\todo +\renewcommand\todo[1]{\todox[inline]{#1}} + +%%%%%%%%%%%%%%%%% DOCUMENT GLOBAL SETTINGS +% example for author reusing these slides: +\author[Ramalho]{Miguel Sozinho Ramalho} +% \author[LASTNAME]{FIRSTNAME LASTNAME,\\ \scriptsize{based on slides by \textbf{Miguel Sozinho Ramalho}}} +\institute[FEUP]{Faculty of Engineering of the University of Porto} +\subject{Quantum Computing} +\date{November, 2018} + + +% Uncomment for notes on slides +% \usepackage{pgfpages} +% \setbeameroption{show notes} +% \setbeameroption{show notes on second screen=right} + +\graphicspath{{img/}} % add the img folder to graphics path + +% Packages that this file uses +\usepackage{braket} % bra-ket notation +\usepackage{xargs} % custom new commands +\usepackage{xspace} % add xspace after new command to auto insert space + + + +% braket shorthands +\newcommandx{\superpos}[3][1=\textual{\psi},2=0,3=1]{\ket {#1} = \textual{\alpha} \ket{#2} + \textual{\beta} \ket{#3}} +\newcommand{\plusminus}[1][\psi]{\superpos[#1][-][+]} +\newcommand{\pagenumber}{\raggedleft\vfill\scriptsize\insertframenumber/\inserttotalframenumber} +\newcommand{\speedoflight}{3 \times 10^{8} m/s} +\newcommand{\osqrt}{\frac{1}{\sqrt{2}}} +\newcommand{\kz}{\ket{0}} +\newcommand{\ko}{\ket{1}} + +% short shorthands +\newcommand{\qasm}{Qasm\xspace} +\newcommand{\q}{Quantum\xspace} +\newcommand{\qa}{\q Algorithms\xspace} +\newcommand{\qct}{\q Circuit\xspace} +\newcommand{\qcts}{\q Circuits\xspace} +\newcommand{\qc}{\q Computing\xspace} +\newcommand{\qcp}{\q Computation\xspace} +\newcommand{\qec}{\q Error Correction\xspace} +\newcommand{\qft}{\q Fourier Transform\xspace} +\newcommand{\qi}{\q Information\xspace} +\newcommand{\qis}{\q Information Science\xspace} +\newcommand{\qm}{\q Mechanics\xspace} +\newcommand{\qmt}{\q Measurement\xspace} +\newcommand{\qp}{\q Physics\xspace} +\newcommand{\qsp}{\q Superposition\xspace} +\newcommand{\qw}{\q World\xspace} +\newcommand{\mbqc}{Measurement Based \q Computer\xspace} +\newcommand{\aqc}{Adiabatic \q Computation\xspace} + +\newcommand{\cl}{Classical\xspace} +\newcommand{\cc}{Classical Computing\xspace} +\newcommand{\cm}{Classical Mechanics\xspace} +\newcommand{\cp}{Classical Physics\xspace} + +\newcommand{\qk}{Qiskit\xspace} +\newcommand{\qka}{Qiskit Aqua\xspace} +\newcommand{\ibmq}{IBM Q\xspace} +\newcommand{\ibmqe}{IBM Q Experience\xspace} + +\newcommand{\p}{\textbf{P}\xspace} +\newcommand{\np}{\textbf{NP}\xspace} +\newcommand{\bqp}{\textbf{BQP}\xspace} + +\newcommand{\djs}{Deutsch-Jozsa\xspace} +\newcommand{\ds}{Deutsch's\xspace} +\newcommand{\gv}{Grover\xspace} +\newcommand{\gvs}{\gv's\xspace} +\newcommand{\gvsa}{\gv's algorithm\xspace} +\newcommand{\aamp}{Amplitude Amplification\xspace} +\newcommand{\sa}{Shor's algorithm\xspace} + +\newcommand{\phiv}{phase inversion\xspace} +\newcommand{\iatm}{inversion about the mean\xspace} + +\newcommand{\ai}{Artificial Intelligence\xspace} + +%configurable variables +\newcommand{\githubRepo}{https://github.com/msramalho/Teach-Me-Quantum/} +\newcommand{\weeks}{\githubRepo/tree/master/} +\newcommand{\weekZero}{\weeks/Week\%200\%20-\%20Hello\%20Quantum\%20World/} +\newcommand{\weekOne}{\weeks/Week\%201\%20-\%20Quantum\%20Tools/} +\newcommand{\weekTwo}{\weeks/Week\%202\%20-\%20Quantum\%20Information\%20Science/} +\newcommand{\weekThree}{\weeks/Week\%203\%20-\%20Quantum\%20Gates/} +\newcommand{\weekFour}{\weeks/Week\%204\%20-\%20Quantum\%20Facts/} + +%%%%%%%%%%%%%%%%%%%%%%%% quotations +% src: https://tex.stackexchange.com/a/53380/126771 +\newcommand{\@chapapp}{\relax} +\makeatletter +\renewcommand{\@chapapp}{} +\newenvironment{chapquote}[2][2em] + {\setlength{\@tempdima}{#1} + \def\chapquote@author{#2} + \parshape 1 \@tempdima \dimexpr\textwidth-2\@tempdima\relax + \itshape} + {\par\normalfont\hfill--\ \chapquote@author\hspace*{\@tempdima}\par\bigskip} +\makeatother + +%%%%%%%%%%%%%%%%% color on hrefs +\hypersetup{ + colorlinks=true, + linkcolor=primaryD,%blue, + filecolor=primaryD,%cyan, + urlcolor=accent %hrefs +} + +%%%%%%%%%%%%%%%%% minted settings +\setminted[python]{fontsize=\footnotesize} +\setminted[vhdl]{fontsize=\footnotesize} +\definecolor{bgGrey}{rgb}{0.95,0.95,0.95} +\setminted{bgcolor=bgGrey} \ No newline at end of file diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/utils/replicate_macros.bat b/community/awards/teach_me_quantum_2018/TeachMeQ/utils/replicate_macros.bat new file mode 100755 index 000000000..51cfab34f --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/utils/replicate_macros.bat @@ -0,0 +1,10 @@ +COPY "macros.sty" "../Week 0 - Hello Quantum World/latex/macros.sty" +COPY "macros.sty" "../Week 1 - Quantum Tools/latex/macros.sty" +COPY "macros.sty" "../Week 2 - Quantum Information Science/latex/macros.sty" +COPY "macros.sty" "../Week 3 - Quantum Gates/latex/macros.sty" +COPY "macros.sty" "../Week 4 - Quantum Facts/latex/macros.sty" +COPY "macros.sty" "../Week 5 - Quantum Algorithms/latex/macros.sty" +COPY "macros.sty" "../Week 6 - Quantum Search/latex/macros.sty" +COPY "macros.sty" "../Week 7 - Quantum Factorization/latex/macros.sty" +COPY "macros.sty" "../Week 8 - High Level Quantum Programming/latex/macros.sty" +COPY "macros.sty" "../Week 9 - State of the Quantum Art/latex/macros.sty \ No newline at end of file diff --git a/community/awards/teach_me_quantum_2018/TeachMeQ/utils/replicate_macros.sh b/community/awards/teach_me_quantum_2018/TeachMeQ/utils/replicate_macros.sh new file mode 100755 index 000000000..65250d6b8 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/TeachMeQ/utils/replicate_macros.sh @@ -0,0 +1,10 @@ +cp macros.sty ../"Week 0 - Hello Quantum World"/latex/ +cp macros.sty ../"Week 1 - Quantum Tools"/latex/ +cp macros.sty ../"Week 2 - Quantum Information Science"/latex/ +cp macros.sty ../"Week 3 - Quantum Gates"/latex/ +cp macros.sty ../"Week 4 - Quantum Facts"/latex/ +cp macros.sty ../"Week 5 - Quantum Algorithms"/latex/ +cp macros.sty ../"Week 6 - Quantum Search"/latex/ +cp macros.sty ../"Week 7 - Quantum Factorization"/latex/ +cp macros.sty ../"Week 8 - High Level Quantum Programming"/latex/ +cp macros.sty ../"Week 9 - State of the Quantum Art"/latex/ \ No newline at end of file diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/QuantumComputingIntroduction.ipynb b/community/awards/teach_me_quantum_2018/basic_intro2qc/QuantumComputingIntroduction.ipynb new file mode 100644 index 000000000..3a163cf81 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/basic_intro2qc/QuantumComputingIntroduction.ipynb @@ -0,0 +1,1604 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Introduction to Quantum Computing with QISKit - a pratical guide\n", + "#### How to use www.qiskit.org :: An open source quantum computing framework for the development of quantum experiments and applications.\n", + "\n", + "### Download the [slides](Slides4Lecture.pdf) that go with this course!\n", + "--- " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Contributors:\n", + "Carla Silva, Vanda Azevedo, Diogo Fernandes, and Inês Dutra from Department of Computer Science, University of Porto, Portugal.\n", + "\n", + "### *Abstract*\n", + "\n", + "*Quantum computing is computing using quantum-mechanical phenomena, unlike binary digital electronic computers based on transistors. This notebook, provides an introduction to the fundamental notions of quantum mechanics and computer science techniques of the field of quantum computation and quantum information. We detail concepts of quantum mechanics on a computational basis and showcase examples using QISKit.*\n", + "\n", + "*Note: this notebook was run on 11/15/2018 at 23:15 p.m. (WET)*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Concepts\n", + "- What is a qubit\n", + "- What is bra-ket notation\n", + "- What is a superposition\n", + "- What is a entanglement\n", + "- What is a bloch sphere\n", + "- Measurement\n", + "- Classical vs quantum\n", + "- How do quantum algorithms work\n", + "- Quantum gates\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What is a qubit?\n", + "In quantum computing, a qbit or qubit or quantum bit is a unit of quantum information. In a quantum computer the basic memory units are qubits, analogously to the bits on a classical computer. A classical bit can take two distinct values, 0 or 1 at a given time. In contrast, a qubit state can be a combination of 0 and 1, called superposition where the qubit is in both basic states (0 and 1) at the same time. A qubit is a quantum system in which the Boolean states 0 and 1 are represented by a pair of normalised and mutually orthogonal quantum states. The two states form a computational basis and any other (pure) state of the qubit can be written as a linear combination,\n", + "$$|\\psi\\rangle = \\alpha|0\\rangle + \\beta |1\\rangle$$\n", + "\n", + "where $\\alpha$ and $\\beta$ are probability amplitudes and can be complex numbers. In a measurement the probability of the bit being in $|0\\rangle$ is $|\\alpha|^2$ and $|1\\rangle$ is $|\\beta|^2$,\n", + "$$\n", + "|\\psi\\rangle = \n", + "\\begin{pmatrix}\n", + "\\alpha \\\\\n", + "\\beta\n", + "\\end{pmatrix}.\n", + "$$\n", + "\n", + "Two real numbers can describe a single qubit quantum state, since global phase is undetectable and conservation probability $|\\alpha|^2+ |\\beta|^2 = 1$.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What is bra-ket notation?\n", + "In quantum mechanics, bra-ket notation is a standard notation for representing quantum states. In order to calculate the scalar product of vectors, the notation uses angle brackets $\\langle$ $\\rangle$, and a vertical bar |. The scalar product is then $\\langle\\phi|\\psi\\rangle$ where the right part is the \"psi ket\" (a column vector) and the left part is the bra - the Hermitian transpose of the ket (a row vector). Bra-ket notation was introduced in 1939 by Paul Dirac and is also known as the Dirac notation.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What is a superposition?\n", + "Superposition allows the qubit to be in both states at the same time, and it can be defined as a weighted combination between the basic states 0 and 1. Superposition occurs when any two (or more) quantum states are added, becoming superposed, resulting in a new quantum state - i.e. in 0 and 1 simultaneously, a linear combination of the two classical states.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What is a entanglement?\n", + "An important difference between a qubit and a classical bit is that multiple qubits can exhibit quantum entanglement. It occurs when pairs or more than two particles are generated or interact in a way that the quantum state of each particle can't be described independently of the state of the other(s).\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What is a bloch sphere?\n", + "We can describe the states of the qubit by $|\\psi\\rangle = \\cos(\\theta/2)|0\\rangle + \\sin(\\theta/2)e^{i\\phi}|1\\rangle$\n", + "where $0\\leq \\phi < 2\\pi$, and $0\\leq \\theta \\leq \\pi$. Qubit states ($\\mathbb{C}^2$) corresponde to the points on the surface of a unit sphere ($\\mathbb{R}^3$).\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Measurement\n", + "The system is deterministic until measurement. Afterwards, measurement provide only one state of the superposed states. The only one state become the new state and interferes with computational procedures. This state, is determined with some probability <= 1, implying uncertainty in the result states and cannot be copied (\"cloned\"). Also, environmental interference may cause a measurement-like state collapse (decoherence).\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Classical vs quantum\n", + "- Classical Logic Circuits, are governed by classical physics, where signal states are simple bit vectors, e.g. 11000101, operations are based in Boolean algebra, we can copy and measure signals freely, and we have the universal gate types, e.g. NAND, (AND, OR, NOT), (AND, NOT), etc.\n", + "- Quantum Logic Circuits, are governed by quantum mechanics, where signal states are vectors interpreted as a superposition of binary \"qubit\" vectors, operations are defined by linear algebra in the Hilbert space, represented by unitary matrices with complex elements, there are restrictions on copying and measuring signals, and we have many unitary operations and gates.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### How do quantum algorithms work?\n", + "Quantum algorithms work by applying quantum operations, called quantum logical gates, on qubits. Similar to instructions in a classical program. A quantum algorithm using gates is then a quantum circuit.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Quantum gates\n", + "Quantum gates/operations are represented as matrices which act on a qubit represented by a $2\\times 2$ unitary matrix $U$, in case of single qubit gates. The operation is by multiplying the matrix representing the gate with the vector that represents the quantum state.\n", + "\n", + "$$|\\psi'\\rangle = U|\\psi\\rangle$$\n", + "\n", + "Here are the 1-qubit gates:\n", + "$$\\sigma_x=\\left(\\begin{array}{cc}0\\quad1\\\\1\\quad0\\end{array}\\right)$$\n", + "\n", + "$$\\sigma_y=\\left(\\begin{array}{cc}0\\quad-i\\\\i\\quad0\\end{array}\\right)$$\n", + "\n", + "$$\\sigma_h=\\left(\\begin{array}{cc}1\\quad0\\\\0\\quad-1\\end{array}\\right)$$\n", + "\n", + "$$H=\\left(\\begin{array}{cc}\\frac{1}{\\sqrt{2}}\\quad\\frac{1}{\\sqrt{2}}\\\\\\frac{1}{\\sqrt{2}}\\quad-\\frac{1}{\\sqrt{2}}\\end{array}\\right)$$\n", + "\n", + "The 2-qubit gates are $4\\times 4$, and 3-qubit gates $8\\times 8$ matrices. An overview of the single and multiple qubit gates is described below, along with the matrix and circuit representation of each gate.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preliminaries\n", + "- IBM Q Experience device information\n", + "- What is QISKit\n", + "- Install QISKit using PIP Install Command\n", + "- Single-Qubit Gates\n", + "- Two-Qubit Gates\n", + "- Three-Qubit Gates\n", + "- Hello Quantum World program\n", + "- Quantum (not)Smiley program\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### IBM Q Experience device information\n", + "IBM Q devices are named after IBM office locations around the globe.\n", + "- Client: IBM Q 20 Tokyo (20 qubits)\n", + "- Public devices: IBM Q 14 Melbourne (14 qubits), IBM Q 5 Tenerife (5 qubits) and IBM Q 5 Yorktown (5 qubits)\n", + "- Simulators: IBM Q QASM 32 Q Simulator (32 qubits)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- display_name: IBM Q 5 Yorktown | backend_name: ibmqx2 | description: the connectivity is provided by two coplanar waveguide (CPW) resonators with resonances around 6.6 GHz (coupling Q2, Q3 and Q4) and 7.0 GHz (coupling Q0, Q1 and Q2). Each qubit has a dedicated CPW for control and readout (labeled as R). Chip layout and connections:\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- display_name: IBM Q 16 Melbourne | backend_name: ibmq_16_melbourne | description: the connectivity on the device is provided by total 22 coplanar waveguide (CPW) \"bus\" resonators, each of which connects two qubits. Three different resonant frequencies are used for the bus resonators: 6.25 GHz, 6.45 GHz, and 6.65 GHz. Chip layout and connections:\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To take full advantage of the connections of each different type of chip, research is being done in order to find the best coupling map using techniques and algorithms such as the Quantum Tabu Search to obtain a quantum combinatorial optimisation, suggesting that an entanglement-metaheurisc can display optimal solutions.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The algorithm main steps can be briefly described by, a) generating the neighbors, b) evaluating each neighbor and c) getting the neighbor with maximum evaluation. The algorithm stops at any iteration where there are no feasible moves into the local neighborhood of the current solution.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What is QISKit?\n", + "QISKit is a software development kit (SDK) comprising of Python-based software libraries used to create quantum computing programs, compile, and execute them on one of the real quantum processors backends and simulators available in the IBM cloud.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### What is Terra?\n", + "Qiskit Terra provides the foundational roots for our software stack. Within Terra is a set of tools for composing quantum programs at the level of circuits and pulses, optimizing them for the constraints of a particular physical quantum processor, and managing the batched execution of experiments on remote-access backends.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### What is Aqua?\n", + "Qiskit Aqua contains a library of cross-domain quantum algorithms upon which applications for near-term quantum computing can be built. Aqua is designed to be extensible, and employs a pluggable framework where quantum algorithms can easily be added. It currently allows the user to experiment on chemistry, AI, optimization and finance applications for near-term quantum computers.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Install Python PIP\n", + "Execute the following command to install QISKit:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pip install qiskit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Useful packages for the next gates experiments\n", + "import numpy as np\n", + "from qiskit import QuantumCircuit, QuantumRegister\n", + "from qiskit import execute\n", + "from qiskit.tools.visualization import circuit_drawer\n", + "from qiskit import Aer\n", + "backend = Aer.get_backend('unitary_simulator')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Single-Qubit Gates\n", + "\n", + "- u gates\n", + "- Identity gate\n", + "- Pauli gates\n", + "- Cliffords gates\n", + "- $C3$ gates\n", + "- Standard rotation gates \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[[ 0.+0.j 1.-0.j]\n", + " [ 1.+0.j -0.+0.j]]" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Pauli X : bit-flip gate\n", + "q = QuantumRegister(1)\n", + "qc = QuantumCircuit(q)\n", + "qc.x(q)\n", + "im = circuit_drawer(qc)\n", + "im.save(\"GateX.png\", \"PNG\")\n", + "job = execute(qc, backend)\n", + "print(np.round(job.result().get_data(qc)['unitary'], 3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[[ 0.+0.j -0.-1.j]\n", + " [ 0.+1.j -0.+0.j]]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Pauli Y : bit and phase-flip gate\n", + "q = QuantumRegister(1)\n", + "qc = QuantumCircuit(q)\n", + "qc.y(q)\n", + "im = circuit_drawer(qc)\n", + "im.save(\"GateY.png\", \"PNG\")\n", + "job = execute(qc, backend)\n", + "print(np.round(job.result().get_data(qc)['unitary'], 3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[[ 1.+0.j 0.+0.j]\n", + " [ 0.+0.j -1.+0.j]]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Pauli Z : phase-flip gate\n", + "q = QuantumRegister(1)\n", + "qc = QuantumCircuit(q)\n", + "qc.z(q)\n", + "im = circuit_drawer(qc)\n", + "im.save(\"GateZ.png\", \"PNG\")\n", + "job = execute(qc, backend)\n", + "print(np.round(job.result().get_data(qc)['unitary'], 3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[[ 0.707+0.j 0.707-0.j]\n", + " [ 0.707+0.j -0.707+0.j]]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Clifford Hadamard gate\n", + "q = QuantumRegister(1)\n", + "qc = QuantumCircuit(q)\n", + "qc.h(q)\n", + "im = circuit_drawer(qc)\n", + "im.save(\"GateH.png\", \"PNG\")\n", + "job = execute(qc, backend)\n", + "print(np.round(job.result().get_data(qc)['unitary'], 3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[[1.+0.j 0.+0.j]\n", + " [0.+0.j 0.+1.j]]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Clifford S gate\n", + "q = QuantumRegister(1)\n", + "qc = QuantumCircuit(q)\n", + "qc.s(q)\n", + "im = circuit_drawer(qc)\n", + "im.save(\"GateS.png\", \"PNG\")\n", + "job = execute(qc, backend)\n", + "print(np.round(job.result().get_data(qc)['unitary'], 3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[[1. +0.j 0. +0.j ]\n", + " [0. +0.j 0.707+0.707j]]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Clifford T gate\n", + "q = QuantumRegister(1)\n", + "qc = QuantumCircuit(q)\n", + "qc.t(q)\n", + "im = circuit_drawer(qc)\n", + "im.save(\"GateT.png\", \"PNG\")\n", + "job = execute(qc, backend)\n", + "print(np.round(job.result().get_data(qc)['unitary'], 3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Two-Qubit Gates\n", + "\n", + "- controlled Pauli gates\n", + "- controlled Hadamard gate\n", + "- controlled rotation gates\n", + "- controlled phase gate\n", + "- controlled u3 gate\n", + "- swap gate\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[[1.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", + " [0.+0.j 0.+0.j 0.+0.j 1.+0.j]\n", + " [0.+0.j 0.+0.j 1.+0.j 0.+0.j]\n", + " [0.+0.j 1.+0.j 0.+0.j 0.+0.j]]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Pauli Controlled-X (or, controlled-NOT) gate\n", + "q = QuantumRegister(2)\n", + "qc = QuantumCircuit(q)\n", + "qc.cx(q)\n", + "im = circuit_drawer(qc)\n", + "im.save(\"GateCX.png\", \"PNG\")\n", + "job = execute(qc, backend)\n", + "print(np.round(job.result().get_data(qc)['unitary'], 3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[[ 1.-0.j 0.+0.j 0.+0.j 0.+0.j]\n", + " [ 0.+0.j 1.-0.j 0.+0.j -0.-0.j]\n", + " [ 0.+0.j 0.+0.j 1.-0.j 0.+0.j]\n", + " [ 0.+0.j -0.+0.j 0.+0.j -1.+0.j]]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Pauli Controlled Z (or, controlled Phase) gate\n", + "q = QuantumRegister(2)\n", + "qc = QuantumCircuit(q)\n", + "qc.cz(q)\n", + "im = circuit_drawer(qc)\n", + "im.save(\"GateCZ.png\", \"PNG\")\n", + "job = execute(qc, backend)\n", + "print(np.round(job.result().get_data(qc)['unitary'], 3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[[1.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", + " [0.+0.j 0.+0.j 1.+0.j 0.+0.j]\n", + " [0.+0.j 1.+0.j 0.+0.j 0.+0.j]\n", + " [0.+0.j 0.+0.j 0.+0.j 1.+0.j]]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# SWAP gate\n", + "q = QuantumRegister(2)\n", + "qc = QuantumCircuit(q)\n", + "qc.swap(q)\n", + "im = circuit_drawer(qc)\n", + "im.save(\"GateSWAP.png\", \"PNG\")\n", + "job = execute(qc, backend)\n", + "print(np.round(job.result().get_data(qc)['unitary'], 3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Three-Qubit Gates\n", + "\n", + "- Toffoli gate \n", + "- Fredkin gate\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[[ 1.-0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", + " [ 0.+0.j 1.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", + " [ 0.+0.j 0.+0.j 1.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", + " [ 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.-0.j]\n", + " [ 0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.-0.j 0.+0.j 0.+0.j 0.+0.j]\n", + " [ 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.-0.j 0.+0.j 0.+0.j]\n", + " [ 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.-0.j 0.+0.j]\n", + " [ 0.+0.j 0.+0.j 0.+0.j 1.-0.j 0.+0.j 0.+0.j 0.+0.j -0.+0.j]]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Toffoli gate (ccx gate)\n", + "q = QuantumRegister(3)\n", + "qc = QuantumCircuit(q)\n", + "qc.ccx(q)\n", + "im = circuit_drawer(qc)\n", + "im.save(\"GateCCX.png\", \"PNG\")\n", + "job = execute(qc, backend)\n", + "print(np.round(job.result().get_data(qc)['unitary'], 3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hello Quantum World program\n", + "Create and save a \"Hello Quantum World\" with the following code in a file such as quantumWorld.py:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import ClassicalRegister, QuantumRegister\n", + "from qiskit import QuantumCircuit, execute\n", + "from qiskit.tools.visualization import plot_histogram, circuit_drawer\n", + "# Create a Quantum Register called \"qr\" with 2 qubits.\n", + "qr = QuantumRegister(2)\n", + "# Create a Classical Register called \"cr\" with 2 bits.\n", + "cr = ClassicalRegister(2)\n", + "# Create a Quantum Circuit called \"qc\" with qr and cr.\n", + "qc = QuantumCircuit(qr, cr)\n", + "# Add the H gate in the Qubit 1, putting this qubit in superposition.\n", + "qc.h(qr[1])\n", + "# Add the CX gate on control qubit 1 and target qubit 0, putting the qubits in a Bell state i.e entanglement.\n", + "qc.cx(qr[1], qr[0])\n", + "# Add a Measure gate to see the state.\n", + "qc.measure(qr, cr)\n", + "# Compile and execute the quantum program in the local simulator.\n", + "job_sim = execute(qc, \"qasm_simulator\")\n", + "stats_sim = job_sim.result().get_counts()\n", + "# Plot and print results.\n", + "plot_histogram(stats_sim)\n", + "print(stats_sim)\n", + "im = circuit_drawer(qc)\n", + "im.save(\"circuit.png\", \"PNG\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "{'00': 512, '11': 512}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Quantum (not)Smiley program\n", + "Create and save a file such as quantumSmiley.py:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import ClassicalRegister, QuantumRegister\n", + "from qiskit import QuantumCircuit, execute\n", + "from qiskit.tools.visualization import plot_histogram\n", + "import matplotlib.pyplot as plt\n", + "# 3 bitStrings, one for each symbol : )( \n", + "#\":\" 00111010 \"(\" 00101000 \")\" 00101001\n", + "# Create a Quantum Register called \"qr\" with 16 qubits.\n", + "qr = QuantumRegister(16)\n", + "# Create a Classical Register called \"cr\" with 16 bits.\n", + "cr = ClassicalRegister(16)\n", + "# Create a Quantum Circuit called \"qc\" with qr and cr.\n", + "qc = QuantumCircuit(qr, cr)\n", + "# Add the H gate in the 0 Qubit, putting the qubit in superposition.\n", + "qc.h(qr[0])\n", + "qc.x(qr[3])\n", + "qc.x(qr[5])\n", + "qc.x(qr[9])\n", + "qc.x(qr[11])\n", + "qc.x(qr[12])\n", + "qc.x(qr[13])\n", + "for j in range(16):\n", + " qc.measure(qr[j], cr[j])\n", + "# Compile and execute the quantum program in the local simulator.\n", + "shots_sim = 128\n", + "job_sim = execute(qc, \"qasm_simulator\", shots=shots_sim)\n", + "stats_sim = job_sim.result().get_counts()\n", + "# Plot and print results.\n", + "plot_histogram(stats_sim)\n", + "print(stats_sim)\n", + "def plotSmiley (stats, shots):\n", + " for bitString in stats:\n", + " char = chr(int(bitString[0:8],2)) # 8 bits (left), convert to an ASCII character.\n", + " char += chr(int(bitString[8:16],2)) # 8 bits (right), add it to the previous character.\n", + " prob = stats[bitString]/shots # Fraction of shots the result occurred\n", + " plt.annotate(char, (0.5,0.5), va=\"center\", ha=\"center\", color = (0,0,0,prob), size = 300) # Create plot.\n", + " plt.axis(\"off\")\n", + " plt.show()\n", + "plotSmiley(stats_sim, shots_sim)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "{'0011101000101000': 64, '0011101000101001': 64}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Arithmetics\n", + "- Assignment\n", + "- Sum (Binary)\n", + "- Sum (Ripple-carry adder)\n", + "- Sum (Quantum Fourier Transform)\n", + "- Average\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Assignment\n", + "The registers are made of qubits, therefore we cannot directly assign values from the bit strings to a quantum register. As such, when we create a new quantum register, all of its qubits start in the $|0\\rangle$ state. By using the quantum X gate, we can flip the qubits that give us the $|1\\rangle$ state.\n", + "Create a file such as assignment.py:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import ClassicalRegister, QuantumRegister\n", + "from qiskit import QuantumCircuit, execute\n", + "# E.g. number 21 in binary.\n", + "number = \"10101\"\n", + "# Initializing the registers.\n", + "# Create a Quantum Register called \"qr\" with length number qubits.\n", + "qr = QuantumRegister(len(str(number)))\n", + "# Create a Classical Register called \"cr\" with length number bits.\n", + "cr = ClassicalRegister(len(str(number)))\n", + "# Create a Quantum Circuit called \"qc\" with qr and cr.\n", + "qc = QuantumCircuit(qr, cr)\n", + "# Setting up the registers using the value inputted.\n", + "for i in range(len(str(number))):\n", + " if number[i] == \"1\":\n", + " qc.x(qr[len(str(number)) - (i+1)]) #Flip the qubit from 0 to 1.\n", + "#Measure qubits and store results in classical register cr.\n", + "for i in range(len(str(number))):\n", + " qc.measure(qr[i], cr[i])\n", + "# Compile and execute the quantum program in the local simulator.\n", + "job_sim = execute(qc, \"qasm_simulator\")\n", + "stats_sim = job_sim.result().get_counts()\n", + "# Print number.\n", + "print(stats_sim)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "{'10101': 1024} #21" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sum (Binary)\n", + "Create a file such as sumBinary.py:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# Boolean binary string adder.\n", + "def rjust_lenght(s1, s2, fill='0'):\n", + " l1, l2 = len(s1), len(s2)\n", + " if l1 > l2:\n", + " s2 = s2.rjust(l1, fill)\n", + " elif l2 > l1:\n", + " s1 = s1.rjust(l2, fill)\n", + " return (s1, s2)\n", + "def get_input():\n", + " bits_a = input('input your first binary string ')\n", + " bits_b = input('input your second binary string ')\n", + " return rjust_lenght(bits_a, bits_b)\n", + "def xor(bit_a, bit_b):\n", + " A1 = bit_a and (not bit_b)\n", + " A2 = (not bit_a) and bit_b\n", + " return int(A1 or A2)\n", + "def half_adder(bit_a, bit_b):\n", + " return (xor(bit_a, bit_b), bit_a and bit_b)\n", + "def full_adder(bit_a, bit_b, carry=0):\n", + " sum1, carry1 = half_adder(bit_a, bit_b)\n", + " sum2, carry2 = half_adder(sum1, carry)\n", + " return (sum2, carry1 or carry2)\n", + "def binary_string_adder(bits_a, bits_b):\n", + " carry = 0\n", + " result = ''\n", + " for i in range(len(bits_a)-1 , -1, -1):\n", + " summ, carry = full_adder(int(bits_a[i]), int(bits_b[i]), carry)\n", + " result += str(summ)\n", + " result += str(carry)\n", + " return result[::-1]\n", + "def main():\n", + " bits_a, bits_b = get_input()\n", + " print('1st string of bits is : {}, ({})'.format(bits_a, int(bits_a, 2)))\n", + " print('2nd string of bits is : {}, ({})'.format(bits_b, int(bits_b, 2)))\n", + " result = binary_string_adder(bits_a, bits_b)\n", + " print('summarized is : {}, ({})'.format(result, int(result, 2)))\n", + "if __name__ == '__main__':\n", + " main()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "input your first binary string 101
\n", + "input your second binary string 1011
\n", + "1st string of bits is : 0101, (5)
\n", + "2nd string of bits is : 1011, (11)
\n", + "summarized is : 10000, (16)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sum (Ripple-carry adder)\n", + "This implementation prepares a = 1, b = 15 and computes the sum into b with an output carry cout[0] by using a quantum ripple-carry adder approach.\n", + "Create a file such as sum.py:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import ClassicalRegister, QuantumRegister\n", + "from qiskit import QuantumCircuit, execute\n", + "from qiskit.tools.visualization import circuit_drawer\n", + "# Initializing the registers.\n", + "# Create a Quantum Registers.\n", + "cin = QuantumRegister(1)\n", + "a = QuantumRegister(4)\n", + "b = QuantumRegister(4)\n", + "cout = QuantumRegister(1)\n", + "# Create a Classical Registers.\n", + "ans = ClassicalRegister(5)\n", + "# Create a Quantum Circuit called \"qc\".\n", + "qc = QuantumCircuit(cin, a, b, cout, ans)\n", + "# Set input states.\n", + "x = \"0001\" #1\n", + "y = \"1111\" #15\n", + "# Setting up the registers using the value inputted.\n", + "for i in range(len(str(x))):\n", + " if x[i] == \"1\":\n", + " qc.x(a[len(str(x)) - (i+1)]) #Flip the qubit from 0 to 1.\n", + "for i in range(len(str(y))):\n", + " if y[i] == \"1\":\n", + " qc.x(b[len(str(y)) - (i+1)]) #Flip the qubit from 0 to 1.\n", + "def majority(circ, a, b, c):\n", + " circ.cx(c,b)\n", + " circ.cx(c,a)\n", + " circ.ccx(a,b,c)\n", + "def unmaj(circ, a, b, c):\n", + " circ.ccx(a,b,c)\n", + " circ.cx(c,a)\n", + " circ.cx(a,b)\n", + "# Add a to b, storing result in b\n", + "majority(qc,cin[0],b[0],a[0])\n", + "majority(qc,a[0],b[1],a[1])\n", + "majority(qc,a[1],b[2],a[2])\n", + "majority(qc,a[2],b[3],a[3])\n", + "qc.cx(a[3],cout[0])\n", + "unmaj(qc,a[2],b[3],a[3])\n", + "unmaj(qc,a[1],b[2],a[2])\n", + "unmaj(qc,a[0],b[1],a[1])\n", + "unmaj(qc,cin[0],b[0],a[0])\n", + "# Measure qubits and store results.\n", + "for i in range(0, 4):\n", + " qc.measure(b[i], ans[i])\n", + "qc.measure(cout[0], ans[4])\n", + "# Compile and execute the quantum program in the local simulator.\n", + "num_shots = 2 # Number of times to repeat measurement.\n", + "job = execute(qc, \"qasm_simulator\", shots=num_shots)\n", + "job_stats = job.result().get_counts()\n", + "# Print result number and circuit.\n", + "print(job_stats)\n", + "im = circuit_drawer(qc)\n", + "im.save(\"circuitSum.png\", \"PNG\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "{'10000': 2} #16" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sum (Quantum Fourier Transform)\n", + "Method to calculate sum on a quantum computer using the quantum Fourier Transform by applying repeated controlled-U gates.\n", + "Create a file such as sumQFT.py:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import ClassicalRegister, QuantumRegister\n", + "from qiskit import QuantumCircuit, execute\n", + "from qiskit.tools.visualization import circuit_drawer\n", + "import numpy as np\n", + "n1 = '10011'\n", + "# E.g. number 19\n", + "n2 = '0011101'\n", + "# E.g. number 29\n", + "if len(str(n1)) > len(str(n2)):\n", + " n = len(str(n1))\n", + "else:\n", + " n = len(str(n2))\n", + "# Initializing the registers.\n", + "# Create a Quantum Registers called \"qr1\" and \"qr2\".\n", + "qr1 = QuantumRegister(n+1)\n", + "qr2 = QuantumRegister(n+1)\n", + "# The classical register.\n", + "cr = ClassicalRegister(n+1)\n", + "# Create a Quantum Circuit called \"qc\".\n", + "qc = QuantumCircuit(qr1, qr2, cr)\n", + "length1 = len(n1)\n", + "length2 = len(n2)\n", + "# Set same length.\n", + "if length2 > length1:\n", + " n1,n2 = n2, n1\n", + " length2, length1 = length1, length2\n", + "n2 = (\"0\")*(length1-length2) + n2\n", + "# Set registers qr1 and qr2 to hold the two numbers.\n", + "for i in range(len(str(n1))):\n", + " if n1[i] == \"1\":\n", + " qc.x(qr1[len(str(n1)) - (i+1)])\n", + "for i in range(len(str(n2))):\n", + " if n2[i] == \"1\":\n", + " qc.x(qr2[len(str(n2)) - (i+1)])\n", + "def qft(circ, q1, q2, n):\n", + " # n-qubit QFT on q in circ.\n", + " for i in range(0, n+1):\n", + " qc.cu1(np.math.pi/float(2**(i)), q2[n-i], q1[n])\n", + "def invqft(circ, q, n):\n", + " # Performs the inverse quantum Fourier transform.\n", + " for i in range(0, n):\n", + " qc.cu1(-np.math.pi/float(2**(n-i)), q[i], q[n])\n", + " qc.h(q[n])\n", + "def input_state(circ, q, n):\n", + " # n-qubit input state for QFT.\n", + " qc.h(q[n])\n", + " for i in range(0, n):\n", + " qc.cu1(np.math.pi/float(2**(i+1)), q[n-(i+1)], q[n])\n", + "for i in range(0, n+1):\n", + " input_state(qc, qr1, n-i)\n", + "qc.barrier()\n", + "for i in range(0, n+1):\n", + " qft(qc, qr1, qr2, n-i)\n", + "qc.barrier()\n", + "for i in range(0, n+1):\n", + " invqft(qc, qr1, i)\n", + "qc.barrier()\n", + "for i in range(0, n+1):\n", + " qc.cx(qr1[i],qr2[i])\n", + "for i in range(0, n+1):\n", + " qc.measure(qr1[i], cr[i])\n", + "# Compile and execute the quantum program in the local simulator.\n", + "num_shots = 2 # Number of times to repeat measurement.\n", + "job = execute(qc, \"qasm_simulator\", shots=num_shots)\n", + "job_stats = job.result().get_counts()\n", + "print(job_stats)\n", + "im = circuit_drawer(qc)\n", + "im.save(\"circuitAdderQFT.png\", \"PNG\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "{'00110000': 2} #48" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Average\n", + "Show that the average value of the observable $$X_1Z_2$$ for a two-qubit system measured in the state $$(|00\\rangle+|11\\rangle)/\\sqrt{2}$$ is zero.\n", + "In a two-qubit system we represent the kets as vectors, the Pauli matrices and perform the tensor products, and conduct the multiplication.\n", + "\n", + "$$|0\\rangle\\equiv\\left(\\begin{array}{c}1\\\\0\\end{array}\\right)\\qquad|1\\rangle\\equiv\\left(\\begin{array}{c}0\\\\1\\end{array}\\right)$$We calculate the tensor product, such as $|01\\rangle$,$$|01\\rangle=|0\\rangle\\otimes|1\\rangle\\equiv\\left(\\begin{array}{c}1\\times\\left(\\begin{array}{c} 0 \\\\ 1 \\end{array}\\right)\\\\ 0\\times \\left(\\begin{array}{c} 0 \\\\ 1 \\end{array}\\right) \\end{array}\\right)=\\left(\\begin{array}{c} 0 \\\\ 1 \\\\ 0 \\\\ 0 \\end{array}\\right)$$Where $\\langle 01|$ is the Hermitian conjugate of,$$\\langle 01|=\\left(\\begin{array}{cccc} 0 & 1 & 0 & 0 \\end{array}\\right)$$Then similar reasoning for the operators. For example,$$X_1X_2=\\sigma_1\\otimes\\sigma_1=\\left(\\begin{array}{cc} 0\\times \\left(\\begin{array}{cc} 0 & 1 \\\\ 1 & 0 \\end{array}\\right) & 1\\times \\left(\\begin{array}{cc} 0 & 1 \\\\ 1 & 0 \\end{array}\\right) \\\\ 1\\times \\left(\\begin{array}{cc} 0 & 1 \\\\ 1 & 0 \\end{array}\\right) & 0\\times \\left(\\begin{array}{cc} 0 & 1 \\\\ 1 & 0 \\end{array}\\right) \\end{array}\\right)=\\left(\\begin{array}{cccc} 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 1 & 0 & 0 & 0 \\end{array}\\right).$$Finally, we simply multiply it out:$$\\langle 01|X_1X_2|01\\rangle=\\left(\\begin{array}{cccc} 0 & 1 & 0 & 0 \\end{array}\\right)\\left(\\begin{array}{cccc} 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 1 & 0 & 0 & 0 \\end{array}\\right)\\left(\\begin{array}{c} 0 \\\\ 1 \\\\ 0 \\\\ 0 \\end{array}\\right)=0.$$" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import ClassicalRegister, QuantumRegister\n", + "from qiskit import QuantumCircuit, execute\n", + "from qiskit.tools.visualization import circuit_drawer\n", + "# Initializing the registers.\n", + "# Create a Quantum Registers.\n", + "cin = QuantumRegister(1)\n", + "a = QuantumRegister(2)\n", + "b = QuantumRegister(2)\n", + "cout = QuantumRegister(1)\n", + "# Create a Classical Registers.\n", + "ans = ClassicalRegister(3)\n", + "# Create a Quantum Circuit called \"qc\".\n", + "qc = QuantumCircuit(cin, a, b, cout, ans)\n", + "# Set input states.\n", + "x = \"00\" #0\n", + "y = \"11\" #3\n", + "# Setting up the registers using the value inputted.\n", + "for i in range(len(str(x))):\n", + " if x[i] == \"1\":\n", + " qc.x(a[len(str(x)) - (i+1)]) #Flip the qubit from 0 to 1.\n", + "for i in range(len(str(y))):\n", + " if y[i] == \"1\":\n", + " qc.x(b[len(str(y)) - (i+1)]) #Flip the qubit from 0 to 1.\n", + "# Add a to b, storing result in b\n", + "majority(qc,cin[0],b[0],a[0])\n", + "majority(qc,a[0],b[1],a[1])\n", + "qc.cx(a[1],cout[0])\n", + "unmaj(qc,a[0],b[1],a[1])\n", + "unmaj(qc,cin[0],b[0],a[0])\n", + "qc.cx(b[1],b[0])\n", + "qc.x(b[1])\n", + "# Measure qubits and store results.\n", + "for i in range(0, 1):\n", + " qc.measure(b[i], ans[i])\n", + "qc.measure(cout[0], ans[1])\n", + "# Compile and execute the quantum program in the local simulator.\n", + "num_shots = 2 # Number of times to repeat measurement.\n", + "job = execute(qc, \"qasm_simulator\", shots=num_shots)\n", + "job_stats = job.result().get_counts()\n", + "# Print result number and circuit.\n", + "print(job_stats)\n", + "im = circuit_drawer(qc)\n", + "im.save(\"circuitAverage.png\", \"PNG\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "{'000': 2} #0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Quantum Algorithms\n", + "- Shor's\n", + "- Grover's\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Shor's\n", + "Any integer number has a unique decomposition into a product of prime numbers.\n", + "In 1995 Peter Shor proposed a polynomial-time quantum algorithm for the factoring problem.\n", + "\n", + "-> Runs partially on quantum computer. Fourier Transform and Period-finding algorithm.
\n", + "-> Pre- and post-processing on a classical computer: greatest common divisor (quadratic in number of digits of a, b), test of primality (polynomial), prime power test (O(log n)) and continued fraction expansion (polynomial)
\n", + "\n", + "Worst Case in Quantum : polynomial in log(N)
\n", + "Worst Case in Classical: polynomial in N
\n", + "\n", + "- Period Finding\n", + "Given integers N and a, find the smallest positive integer r such that a^r-1 is a multiple of N,\n", + "where r is the period of a modulo N (smallest positive integer r such that a^r=1 mod N)\n", + "\n", + "Example: N=15 and a=7\n", + " We want to find the smallest positive integer r such that a^r = 1 mod N\n", + " <=> 7^r = 1 mod 15\n", + "\n", + " r=2: 7^2 = 4 mod 15\n", + " r=3: 7^3 = 4 * 7 mod 15 = 13 mod 15\n", + " r=4: 7^4 = 13 * 7 mod 15 = 1 mod 15\n", + " -> r=4 is the period of a modulo N\n", + "\n", + "- From factoring to period finding
\n", + "Assume that N has only two distinct prime factors: N = p1 * p2.
\n", + "1) pick an integer a between [2,N-1] and compute greatest common divisor gcd(N,a) using Euclid's Algorithm.
\n", + "2) If gcd(N,a)=p1 or p2 we are done.
\n", + "3) Else repeat the above steps with different random choices of a until r is even.\n", + " If r is even and is the smallest integer such that a^r-1 is a multiple of N:
\n", + " a^r-1=(a^(r/2)-1)*(a^(r/2)+1).
\n", + " where neither (a^(r/2)-1) nor (a^(r/2)+1) is a multiple of N, but their product is.
\n", + " We can find p1 and p2 by computing gcd(N, (a^(r/2)-1)) and gcd(N, (a^(r/2)+1)).
\n", + " If (a^(r/2)+1) is multiple of N we try with a different a.

\n", + "At the heart of Shor's Algorithm, Quantum Fourier Transform (QFT), a linear transformation on quantum bits, and the quantum analogue of the discrete Fourier transform.
\n", + "Formally, the QFT is expected to be useful in determining the period r of a function i.e. when f(x)=f(x+r) for all x.
\n", + "The input register for QFT contains n-qubit basis state $|x\\rangle$ which is rewritten as the tensor product of the individual qubits in its binary expansion.
\n", + "In fact, each of those single-qubit operations can be implemented efficiently using a Hadamard gate and controlled phase gates.
\n", + "The first term requires one Hadamard gate and (n-1) controlled phase gates, the next one requires a Hadamard gate and (n-2) controlled phase gate, and each following term requires one fewer controlled phase gate.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Shor's Algorithm
\n", + "Shor's algorithm exploits interference to measure periodicity of arithmetic objects.
\n", + "Suppose we a,N are co-primes, gcd(a,N)=1.
\n", + "Our goal is to compute the smallest positive integer r such that a^r=1 mod N.

\n", + "Steps:
\n", + "1. Determine if n is even, prime or a prime power. If so, exit.
\n", + "2. Pick a random integer x < n and calculate gcd(x, n). If this is not 1, then we have obtained a factor of n.
\n", + "3. Quantum algorithm:
\n", + " Pick q as the smallest power of 2 with n^2 $\\leq$ q < 2 * n^2.
\n", + " Find period r of x^a mod n.
\n", + " Measurement gives us a variable c which has the property c $\\approx$ d where d $\\in$ |N.
\n", + "4. Determine d, r via continued fraction expansion algorithm. d, r only determined if gcd(d, r) = 1 (reduced fraction).
\n", + "5. If r is odd, go back to 2.
\n", + " If x^(r/2) $\\equiv$ −1 mod n go back to 2.
\n", + " Otherwise the factors p, q = gcd(x^(r/2) $\\pm$ 1, n).\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Grover's
\n", + "- Quantum algorithms
\n", + "The current state of quantum algorithms can be divided in two main types of algorithms. On one side we have the algorithms based on \"Shor's quantum Fourier transform\", on which were built some of the most popular known algorithms with a exponencial speedup over their classical counterparts.
\n", + "For example the classic Fast Fourier transform on a runs on O(nlog n) time and the Quantum Fourier transform runs on O(log^2 n).
\n", + "On the other side we have Groover's, which is mainly used on quantum search. This method gives a quadratic speedup to some of the best classical algorithms.
\n", + "Since it is used to search a database if the classical algorithm runs on the worst case O(N), on a groover's search algorithm it can e improved to run on O(sqrt(N))
\n", + "- Quantum Complexity
\n", + "Regarding computational complexity theory, when it comes to quantum computing we have two big correlations that we can compare to the classical computing complexities know as P and NP. One of them is BQP which stands for bounded-error quantum polynomial time which as the name implies belongs to the class of decision problems that can be solved by a quantum computer in polynomial time. We then have QMA, which stands for Quantum Merlin Arthur, and this one is, in an informal way, the set of decision problems for which when the answer is YES, there is a polynomial-size quantum proof (a quantum state) which convinces a polynomial-time quantum verifier of the fact with high probability. Moreover, when the answer is NO, every polynomial-size quantum state is rejected by the verifier with high probability. Both of these can be compared to P and NP because QMA is to BQP as NP is to P.
\n", + "- Groover's Algorithm
\n", + "This algorithm is mainly used to search databases, as told before the time it runs improves quadratically compared to the classical counterparts.
\n", + "What does that mean? Given an array of N elements, and on that array we want to locate a specific and unique element. Given this typical example we can relate to a normal problem we would face on a classical computer, but it would take on average N/2 or in the worst case O(N). This is not how it will work on a quantum computer, because using groover algorithm it is possible to reduce the time to O(sqrt(N)). How does it work?
\n", + " - The Oracle
\n", + " Firstly we have to encode a list in terms of a function f, this function returns f(x)=0 for all unwanted positions and f(u)=1 for the element we want to locate.
\n", + " The we define the Oracle to act on the state |x$\\rangle$, this done by the following function: U f|x$\\rangle$ =(-1)^f(x) |x$\\rangle$.
\n", + " This works because the state of the qbit only changes when we find f(u)=1 resulting in U f|u$\\rangle$ = -|w$\\rangle$ while the rest remains the same.
\n", + " - Amplitude amplification
\n", + " So far so good but it is still very similar to a normal algorithm, and we cannot guess because it would still take O(N) and if we were to guess, the measure would destroy the super position. Amplitude representation in the image below.
\n", + " So how to initialize the algorithm?
\n", + " 1. Start a uniform superposition |s$\\rangle$ by doing the following |s$\\rangle$=H$\\otimes$n|0$\\rangle$n.
\n", + " 2. We then have to apply the oracle function to Uf|$\\psi$t$\\rangle$=|$\\psi$t'$\\rangle$. This results on the amplitude of the element we are searching for turning negative.
\n", + " 3. We now apply an additional reflection Us about the state |s$\\rangle$.
\n", + " We have then to repeat this process O($\\sqrt{N}$).
\n", + " In this code we have a grover implementation.
\n", + " This code represents a deterministic solution for a SAT problem with 3 clauses and 3 literals that has exactly one true output, the formula has to be on conjunctive normal form(CNF) in order for it to work.
\n", + " This works the following way, imagine all the results the expression could give are in an array, since the expression only has one output that is true, being that the one we want to find, it is possible to apply the algorithm to this problem.
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### SAT program\n", + "Create and save a program with the following code in a file such as sat.py:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from qiskit import ClassicalRegister, QuantumRegister\n", + "from qiskit import QuantumCircuit, execute\n", + "from qiskit.tools.visualization import plot_histogram, circuit_drawer\n", + "n = 3\n", + "sat_formula = [[1,2,-3],[-1,-2,-3],[1,-2,3]]\n", + "f_in = QuantumRegister(n)\n", + "f_out = QuantumRegister(1)\n", + "aux = QuantumRegister(len(sat_formula)+1)\n", + "ans = ClassicalRegister(n)\n", + "qc = QuantumCircuit(f_in, f_out, aux, ans)\n", + "# Initializes all of the qbits.\n", + "def input_state(circuit, f_in, f_out, n):\n", + " for j in range(n):\n", + " circuit.h(f_in[j])\n", + " circuit.x(f_out)\n", + " circuit.h(f_out)\n", + "# The back box U function (Oracle).\n", + "def black_box_u_f(circuit, f_in, f_out, aux, n, sat_formula):\n", + " num_claus = len(sat_formula)\n", + " for(k,claus) in enumerate(sat_formula):\n", + " for literal in claus:\n", + " if literal > 0:\n", + " circuit.cx(f_in[literal-1],aux[k])\n", + " else:\n", + " circuit.x(f_in[-literal-1])\n", + " circuit.cx(f_in[-literal-1],aux[k])\n", + " circuit.ccx(f_in[0],f_in[1],aux[num_claus])\n", + " circuit.ccx(f_in[2],aux[num_claus],aux[k])\n", + " circuit.ccx(f_in[0],f_in[1],aux[num_claus])\n", + " for literal in claus:\n", + " if literal < 0:\n", + " circuit.x(f_in[-literal-1])\n", + " if(num_claus == 1):\n", + " circuit.cx(aux[0], f_out[0])\n", + " elif(num_claus == 2):\n", + " circuit.ccx(aux[0],aux[1],f_out[0])\n", + " elif(num_claus == 3):\n", + " circuit.ccx(aux[0], aux[1], aux[num_claus])\n", + " circuit.ccx(aux[2], aux[num_claus], f_out[0])\n", + " circuit.ccx(aux[0], aux[1], aux[num_claus])\n", + " else:\n", + " raise ValueError('Apenas 3 clausulas pf :)')\n", + " for(k,claus) in enumerate(sat_formula):\n", + " for literal in claus:\n", + " if literal > 0:\n", + " circuit.cx(f_in[literal-1],aux[k])\n", + " else:\n", + " circuit.x(f_in[-literal-1])\n", + " circuit.cx(f_in[-literal-1],aux[k])\n", + " circuit.ccx(f_in[0], f_in[1], aux[num_claus])\n", + " circuit.ccx(f_in[2], aux[num_claus], aux[k])\n", + " circuit.ccx(f_in[0], f_in[1], aux[num_claus])\n", + " for literal in claus:\n", + " if literal < 0:\n", + " circuit.x(f_in[-literal-1])\n", + "# iInverts the qbit that was affected by the Oracle function.\n", + "def inversion_about_average(circuit,f_in,n):\n", + " for j in range(n):\n", + " circuit.h(f_in[j])\n", + " for j in range(n):\n", + " circuit.x(f_in[j])\n", + " n_controlled_z(circuit, [f_in[j] for j in range(n-1)], f_in[n-1])\n", + " for j in range(n):\n", + " circuit.x(f_in[j])\n", + " for j in range(n):\n", + " circuit.h(f_in[j])\n", + "def n_controlled_z(circuit,controls,target):\n", + " if(len(controls) > 2):\n", + " raise ValueError('erro de control')\n", + " elif(len(controls) == 1):\n", + " circuit.h(target)\n", + " circuit.cx(controls[0],target)\n", + " circuit.h(target)\n", + " elif(len(controls) == 2):\n", + " circuit.h(target)\n", + " circuit.ccx(controls[0],controls[1],target)\n", + " circuit.h(target)\n", + "input_state(qc,f_in,f_out,n)\n", + "black_box_u_f(qc,f_in,f_out,aux,n,sat_formula)\n", + "inversion_about_average(qc,f_in,n)\n", + "black_box_u_f(qc,f_in,f_out,aux,n,sat_formula)\n", + "inversion_about_average(qc,f_in,n)\n", + "for j in range(n):\n", + " qc.measure(f_out[0],ans[j])\n", + "# Compile and execute the quantum program in the local simulator.\n", + "job_sim = execute(qc, \"qasm_simulator\")\n", + "stats_sim = job_sim.result().get_counts()\n", + "# Plot and print results.\n", + "print(stats_sim)\n", + "plot_histogram(stats_sim)\n", + "im = circuit_drawer(qc)\n", + "im.save(\"circuitGrover.pdf\", \"PDF\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Final notes\n", + "- Check 'from qiskit import available_backends', useful to know which real backends are available.\n", + "- Check 'from qiskit.tools.qi.qi import state_fidelity', tool to verify if two states are same or not.\n", + "- Check 'from qiskit.tools.visualization import...', tools for exceptional visualization charts!\n", + "- Happy Quantum Coding! And, any help, check the IBM Q Graphical composer :) Compose quantum circuits using drag and drop interface. Save circuits online or as QASM text, and import later. Run circuits on real hardware and simulator." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Acknowledgments\n", + "We acknowledge use of the IBM Q for this work. The views expressed are those of the authors and do not reflect the official policy or position of IBM or the IBM Q team." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "***\n", + "### *References*\n", + "\n", + "[1] M. Nielsen, and I. Chuang (2010). Quantum Computation and Quantum Information: 10th Anniversary Edition. Cambridge: Cambridge University Press. doi:10.1017/CBO9780511976667.
\n", + "[2] IBM Research and the IBM QX team (2017). User guide. IBM Q Experience Documentation https://quantumexperience.ng.bluemix.net/qx/tutorial
\n", + "[3] S. Cuccaro, T. Draper, S. Kutin, and D. Moulton. A new quantum ripple-carry addition circuit. arXiv:quant-ph/0410184, 2004.
\n", + "[4] Andrew W. Cross, Lev S. Bishop, John A. Smolin, and Jay M. Gambetta. Open quantum assembly language. arXiv:1707.03429, 2017.
\n", + "[5] 5-qubit backend: IBM Q team, \"IBM Q 5 Yorktown backend specification V1.1.0,\" (2018). Retrieved from https://ibm.biz/qiskit-yorktown.
\n", + "[6] 14-qubit backend: IBM Q team, \"IBM Q 14 Melbourne backend specification V1.x.x,\" (2018). Retrieved from https://ibm.biz/qiskit-melbourne.
\n", + "[7] C. Silva, I. Dutra, and M.S. Dahlem (2018). Driven tabu search: a quantum inherent optimisation. arXiv preprint arXiv:1808.08429.
\n", + "[8] L. Ruiz-Perez and J. C. Garcia-Escartin (2014). Quantum arithmetic with the Quantum Fourier Transform. arXiv preprint arXiv:1411.5949.
[9] P. Kaye, R. Laflamme, and M. Mosca (2007). An Introduction to Quantum Computing. Oxford Univ. Press.
" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + }, + "latex_envs": { + "LaTeX_envs_menu_present": true, + "autoclose": false, + "autocomplete": true, + "bibliofile": "biblio.bib", + "cite_by": "apalike", + "current_citInitial": 1, + "eqLabelWithNumbers": true, + "eqNumInitial": 1, + "hotkeys": { + "equation": "Ctrl-E", + "itemize": "Ctrl-I" + }, + "labels_anchors": false, + "latex_user_defs": false, + "report_style_numbering": false, + "user_envs_cfg": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/Slides4Lecture.pdf b/community/awards/teach_me_quantum_2018/basic_intro2qc/Slides4Lecture.pdf new file mode 100755 index 000000000..0933c51d2 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/Slides4Lecture.pdf differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/1QFT.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/1QFT.png new file mode 100755 index 000000000..af8e3ad46 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/1QFT.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/2QFT.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/2QFT.png new file mode 100755 index 000000000..379559f01 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/2QFT.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/3QFT.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/3QFT.png new file mode 100755 index 000000000..eeeaf0a24 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/3QFT.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/Figure_1.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/Figure_1.png new file mode 100755 index 000000000..97fae1307 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/Figure_1.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/Figure_2.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/Figure_2.png new file mode 100755 index 000000000..2cb428747 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/Figure_2.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/Figure_3.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/Figure_3.png new file mode 100755 index 000000000..5e3f71c71 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/Figure_3.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateCCX.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateCCX.png new file mode 100755 index 000000000..d0e196e91 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateCCX.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateCX.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateCX.png new file mode 100755 index 000000000..69ce865ac Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateCX.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateCZ.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateCZ.png new file mode 100755 index 000000000..26dca37b8 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateCZ.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateH.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateH.png new file mode 100755 index 000000000..dfb58ccfb Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateH.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateS.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateS.png new file mode 100755 index 000000000..e1a3c5fc8 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateS.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateSWAP.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateSWAP.png new file mode 100755 index 000000000..b8080c2a5 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateSWAP.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateT.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateT.png new file mode 100755 index 000000000..d70f11e54 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateT.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateX.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateX.png new file mode 100755 index 000000000..456cdc1c4 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateX.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateY.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateY.png new file mode 100755 index 000000000..ebeffd049 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateY.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateZ.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateZ.png new file mode 100755 index 000000000..b90b629d0 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/GateZ.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/Help.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/Help.png new file mode 100755 index 000000000..ed9fde037 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/Help.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/aqua.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/aqua.png new file mode 100755 index 000000000..8ae15395e Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/aqua.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/bloch_sphere.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/bloch_sphere.png new file mode 100755 index 000000000..f59ab68f8 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/bloch_sphere.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/cat.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/cat.png new file mode 100755 index 000000000..d93571019 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/cat.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/charts.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/charts.png new file mode 100755 index 000000000..9644a16d7 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/charts.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/circuit.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/circuit.png new file mode 100755 index 000000000..192a06b23 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/circuit.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/circuitAdderQFT.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/circuitAdderQFT.png new file mode 100755 index 000000000..ecf75b83f Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/circuitAdderQFT.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/circuitAverage.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/circuitAverage.png new file mode 100755 index 000000000..b2272266d Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/circuitAverage.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/circuitGrover.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/circuitGrover.png new file mode 100755 index 000000000..527623990 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/circuitGrover.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/circuitSum.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/circuitSum.png new file mode 100755 index 000000000..df784d06c Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/circuitSum.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/grover.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/grover.png new file mode 100755 index 000000000..47b1d3233 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/grover.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/melbourne-connections.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/melbourne-connections.png new file mode 100755 index 000000000..c90fb0e48 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/melbourne-connections.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/melbourne.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/melbourne.png new file mode 100755 index 000000000..985958957 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/melbourne.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/qasmeditor.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/qasmeditor.png new file mode 100755 index 000000000..36e8c0c28 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/qasmeditor.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/qiskit.org.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/qiskit.org.png new file mode 100755 index 000000000..0b357fe54 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/qiskit.org.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/qiskit.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/qiskit.png new file mode 100755 index 000000000..1f1dc9613 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/qiskit.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/qwcircuit.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/qwcircuit.png new file mode 100755 index 000000000..192a06b23 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/qwcircuit.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/qwhist.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/qwhist.png new file mode 100755 index 000000000..c13aeae50 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/qwhist.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/rueschlikon-connections.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/rueschlikon-connections.png new file mode 100755 index 000000000..243efa2f7 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/rueschlikon-connections.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/rueschlikon.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/rueschlikon.png new file mode 100755 index 000000000..ef2572f72 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/rueschlikon.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/tabuSearch.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/tabuSearch.png new file mode 100755 index 000000000..6917d73a1 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/tabuSearch.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/terra.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/terra.png new file mode 100755 index 000000000..cf17073c1 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/terra.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/yorktown-connections.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/yorktown-connections.png new file mode 100755 index 000000000..c8ea7daa3 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/yorktown-connections.png differ diff --git a/community/awards/teach_me_quantum_2018/basic_intro2qc/images/yorktown.png b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/yorktown.png new file mode 100755 index 000000000..c0a982f8f Binary files /dev/null and b/community/awards/teach_me_quantum_2018/basic_intro2qc/images/yorktown.png differ diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B08_Python_Basics_Variables_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B08_Python_Basics_Variables_Solutions.ipynb new file mode 100644 index 000000000..63978aae2 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B08_Python_Basics_Variables_Solutions.ipynb @@ -0,0 +1,174 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 02, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Basics of Python: Variables

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 1

\n", + "\n", + "Define three variables n1, n2, and n3, and set their values to 3 -4 6\n", + "\n", + "Define a new variable r1, and set its value to $ (2 \\cdot n1 + 3 \\cdot n2) \\cdot 2 - 5 \\cdot n3 $, where $\\cdot$ represents the multiplication operator. \n", + "\n", + "The multiplication operator in python (and in many other programming languages) is *.\n", + "\n", + "Then, print the value of r1. \n", + "\n", + "As you may also verify it by yourself that you should see -42 as the outcome." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n1,n2,n3 = 3,-4,6\n", + "\n", + "print(n1,n2,n3)\n", + "\n", + "r1 = (2 * n1 + 3 * n2)*2 - 5 *n3\n", + "print(r1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2

\n", + "\n", + "By using the same variables (you may not need to define them again), please print the following value\n", + "$$\n", + " \\dfrac{(n1-n2)\\cdot(n2-n3)}{(n3-n1)\\cdot(n3+1)}\n", + "$$\n", + "\n", + "You should see -3.3333333333333335 as the outcome" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n1,n2,n3 = 3,-4,6\n", + "\n", + "up = (n1-n2) * (n2-n3)\n", + "down = (n3-n1) * (n3 +1)\n", + "\n", + "result = up/down\n", + "print (result)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 3

\n", + "\n", + "Define variables N and S, and set their values to your name and surname. \n", + "\n", + "Then, print the values of N and S with a prefix phrase \"hello from the quantum world to\"." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "N = \"Abuzer\"\n", + "S = \"Yakaryilmaz\"\n", + "\n", + "print(\"hello from the quantum world to\",N,S)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B10_Python_Basics_Loops_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B10_Python_Basics_Loops_Solutions.ipynb new file mode 100644 index 000000000..8682aed53 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B10_Python_Basics_Loops_Solutions.ipynb @@ -0,0 +1,371 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 02, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Basics of Python: Loops

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 1

\n", + "\n", + "Calculate the value of summation $ 3+6+9+\\cdots+51 $, and the print the result.\n", + "\n", + "You should see 459 as the outcome." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "total1 = 0\n", + "total2 = 0\n", + "\n", + "for i in range(3,52,3):\n", + " total1 = total1 + i\n", + " total2 += i # shorter form\n", + "\n", + "print(\"The summation is\",total1)\n", + "print(\"the summation is\",total2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2

\n", + "\n", + "$ 3^k $ means $ 3 \\cdot 3 \\cdot \\cdots \\cdot 3 $ ($ k $ times) for $ k \\geq 2 $. \n", + "\n", + "Moreover, $ 3^0 $ is 1 and $ 3^1 = 3 $.\n", + "\n", + "Calculate the value of summation $ 3^0 + 3^1 + 3^2 + \\cdots + 3^8 $, and then print the result.\n", + "\n", + "You should see 9841 as the outcome." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "T = 0 \n", + "current_number = 1\n", + "for i in range(9):\n", + " T = T + current_number\n", + " print(\"3 to\",i,\"is\",current_number)\n", + " current_number = 3 * current_number\n", + " \n", + "print(\"summation is\",T)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# python has also exponent operator: **\n", + "# we may directly use it\n", + "\n", + "T = 0\n", + "\n", + "for i in range(9):\n", + " print(\"3 to\",i,\"is\",3**i)\n", + " T = T + 3 ** i\n", + " \n", + "print(\"summation is\",T)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 3

\n", + "\n", + "Consider the summation $ T(n) = 1 + \\dfrac{1}{2} + \\dfrac{1}{4}+ \\dfrac{1}{8} + \\cdots + \\dfrac{1}{2^n} $ for some natural number $ n $.\n", + "\n", + "Remark that $ T(0) = \\dfrac{1}{2^0} = \\dfrac{1}{1} = 1 $.\n", + "\n", + "This summation can be arbitrarily close to $2$. \n", + "\n", + "Let's find the minimum value of $ n $ such that the closeness of $ T(n) $ to $2$ is less than $ 0.01 $.\n", + "\n", + "In other words, let's find the minimum value of $n$ such that $ T(n) > 1.99 $.\n", + "\n", + "The operator for \"less than or equal to\" in python is \"$ < = $\"." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "T = 0\n", + "n = 2 # this value will be first halved and then added to the summation\n", + "how_many_terms = 0\n", + "\n", + "while T<=1.99:\n", + " n = n/2 # half the value of n\n", + " T = T + n # update the value of T\n", + " how_many_terms = how_many_terms + 1\n", + " \n", + "print(n,T)\n", + "print(\"how many terms in the summation is\",how_many_terms)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# our result says that there should be 8 terms in our summation\n", + "# let's calculate the summation of the first seven and the first eight terms, and verify our results\n", + "\n", + "T7 = 0 \n", + "n = 2 # this value will be first halved and then added to the summation\n", + "\n", + "for i in range(7):\n", + " n = n/2\n", + " print(n)\n", + " T7 = T7 + n\n", + " \n", + "print(\"the summation of the first seven terms is\",T7)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "T8 = 0 \n", + "n = 2 # this value will be first halved and then added to the summation\n", + "\n", + "for i in range(8):\n", + " n = n/2\n", + " print(n)\n", + " T8 = T8 + n\n", + " \n", + "print(\"the summation of the first eight terms is\",T8)\n", + "\n", + "print(\"(the summation of the first seven terms is\",T7,\")\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 4

\n", + "\n", + "The task is to pick numbers between 0 and 9 randomly until hitting the number 3, and then print the number of attempt(s).\n", + "\n", + "We can use randrange function from random module for randomly picking a number in a given range." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "\n", + "r = 0\n", + "attempt = 0\n", + "\n", + "while r != 3: # the loop iterates as long as r is not equal to 3\n", + " r = randrange(10) # randomly pick a number\n", + " attempt = attempt + 1 # increase the number of attempts by 1\n", + " print (attempt,\"->\",r) # print the number of attmept and the randomly picked number at this moment\n", + " \n", + "print(\"total number of attempt(s) is\",attempt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 5

\n", + "\n", + "This task is challanging. \n", + "\n", + "It is designed for the usage of double nested loops: one loop is inside of the other loop.\n", + "\n", + "In the fourth task above, the expected number of attempt(s) to hit number 3 is 10. \n", + "\n", + "Let's do a series of experiment by using your solution for Task 4.\n", + "\n", + "Experiment 1: Execute your code 20 times, and then calculate the average attempts.\n", + "\n", + "Experiment 2: Execute your code 200 times, and then calculate the average attempts.\n", + "\n", + "Experiment 3: Execute your code 2000 times, and then calculate the average attempts.\n", + "\n", + "Experiment 4: Execute your code 20000 times, and then calculate the average attempts.\n", + "\n", + "Experiment 5: Execute your code 200000 times, and then calculate the average attempts.\n", + "\n", + "Your experimental average should get closer to 10 when the number of executions is increased.\n", + "\n", + "Remark that all five experiments can be automatically done by using triple loops." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# be aware of single and double indentions\n", + "\n", + "number_of_execution = 2000 # change this with 200, 2000, 20000, 200000 and reexecute this cell\n", + "total_attempts = 0 \n", + "\n", + "from random import randrange\n", + "\n", + "for i in range(number_of_execution): # the outer loops iterates number_of_execution times\n", + " r = 0 \n", + " attempt = 0\n", + " while r != 3: # the while-loop iterates as long as r is not equal to 3\n", + " r = randrange(10) # randomly pick a number\n", + " attempt = attempt + 1 # increase the number of attempts by 1\n", + " # I am out of scope of while-loop\n", + " total_attempts = total_attempts + attempt # update the total number of attempts\n", + " \n", + "# I am out of scope of for-loop\n", + "print(number_of_execution,\"->\",total_attempts/number_of_execution)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's use triple nested loops\n", + "for number_of_execution in [20,200,2000,20000,200000]: # we will use the same code by indenting all lines one more level :-)\n", + " total_attempts = 0 \n", + " for i in range(number_of_execution): # the middle loops iterates number_of_execution times\n", + " r = 0 \n", + " attempt = 0\n", + " while r != 3: # the while-loop iterates as long as r is not equal to 3\n", + " r = randrange(10) # randomly pick a number\n", + " attempt = attempt + 1 # increase the number of attempts by 1\n", + " # I am out of scope of while-loop\n", + " total_attempts = total_attempts + attempt # update the total number of attempts\n", + " # I am out of scope of for-loop\n", + " print(number_of_execution,\"->\",total_attempts/number_of_execution)\n", + "\n", + "# you can include 2 million to the list, but you should WAIT for a while to see the result\n", + "# can your computer compete with exponential growth?\n", + "# if you think \"yes\", please try 20 million, 200 million, and so on" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B12_Python_Basics_Conditionals_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B12_Python_Basics_Conditionals_Solutions.ipynb new file mode 100644 index 000000000..c634da34e --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B12_Python_Basics_Conditionals_Solutions.ipynb @@ -0,0 +1,150 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 02, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Basics of Python: Conditionals

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 1

\n", + "\n", + "Randomly pick a number between 10 and 50, and say whether it is even or not.\n", + "\n", + "Remember the reminder/mod operator (%). \n", + "\n", + "A number is even if is exactly divided by 2. That is, the reminder is zero when divided by 2 over integers.\n", + "\n", + "If the number is odd, then the reminder will be 1 when divided by 2 over integers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "\n", + "r = randrange(10,51)\n", + "\n", + "if r % 2 ==0: print(r,\"is even\")\n", + "else: print(r,\"is odd\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2

\n", + "\n", + "Randomly pick a number between 0 and 99. \n", + "\n", + "With half probability $\\left( 0.5 = \\dfrac{1}{2} \\right)$, it is expected to be between 0 and 49 or between 50 and 99.\n", + "\n", + "Let's try to calculate this probability experimentially.\n", + "\n", + "N=100 times randomly pick a number between 0 and 99, calculate the frequencies of both cases, and then divide each by 100. \n", + "\n", + "Repeat the same experiment for N=1,000, N=10,000, and N=100,000.\n", + "\n", + "Experimental results should get closer to the ideal ratio when N increases." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "\n", + "for N in [100,1000,10000,100000]:\n", + " first_half=second_half=0\n", + " for i in range(N):\n", + " r = randrange(100)\n", + " if r<50: \n", + " first_half = first_half + 1\n", + " else: \n", + " second_half=second_half + 1\n", + " print(N,\"->\",first_half/N,second_half/N)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B14_Python_Basics_Lists_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B14_Python_Basics_Lists_Solutions.ipynb new file mode 100644 index 000000000..e41578d73 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B14_Python_Basics_Lists_Solutions.ipynb @@ -0,0 +1,170 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 02, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Basics of Python: Lists

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 1

\n", + "\n", + "Fibonacci sequence starts with $ 1 $ and $ 1 $. Then, each next element is equal to summation of the previous two elements:\n", + "$$\n", + " 1, 1, 2 , 3 , 5, 8, 13, 21, 34, 55 \\ldots \n", + "$$\n", + "\n", + "Find the first 30 elements of the Fibonacci sequence, store them in a list, and then print the list. \n", + "\n", + "You can verify the first 10 elements of your result with the above list." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# the first and second elements are 1 and 1\n", + "F = [1,1]\n", + "\n", + "for i in range(2,30):\n", + " F.append(F[i-1] + F[i-2])\n", + "\n", + "# print the final list\n", + "print(F)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2

\n", + "\n", + "Define a list $ N $ with 11 elements such that $ N[i] $ is another list with four elements as $ [i,i^2,i^3,i^2+i^3] $.\n", + "\n", + "The index $ i $ should be form $ 0 $ and $ 10 $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# define an empty list\n", + "N = []\n", + "\n", + "for i in range(11):\n", + " N.append([ i , i*i , i*i*i , i*i + i*i*i ]) # a list having four elements is added to the list N\n", + " # Alternatively:\n", + " #N.append([i , i**2 , i**3 , i**2 + i**3]) # ** is the exponent operator\n", + " #N = N + [ [i , i*i , i*i*i , i*i + i*i*i] ] # Why using double brakets?\n", + " #N = N + [ [i , i**2 , i**3 , i**2 + i**3] ] # Why using double brakets?\n", + " # In the last two alternative solutions, you may try with a single braket, \n", + " # and then see why double brakets are needed for the exact solution.\n", + "\n", + "# print the final list\n", + "print(N)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's print the list element by element\n", + "for i in range(len(N)):\n", + " print(N[i])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's print the list element by element by using an alternative method\n", + "for el in N: # el will iteratively takes the values of elements in N \n", + " print(el)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B16_Python_Lists_Vectors_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B16_Python_Lists_Vectors_Solutions.ipynb new file mode 100644 index 000000000..92091b009 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B16_Python_Lists_Vectors_Solutions.ipynb @@ -0,0 +1,277 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 14, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Vectors: One Dimensional List

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 1

\n", + "\n", + "Create two 7-dimensional vectors $u$ and $ v $ as a list in python having entries randomly picked between $-10$ and $10$. \n", + "\n", + "Print their entries." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "\n", + "dimension = 7\n", + "\n", + "# create u and v as empty list \n", + "u = []\n", + "v = []\n", + "\n", + "for i in range(dimension):\n", + " u.append(randrange(-10,11)) # add a randomly picked number to the list u\n", + " v.append(randrange(-10,11)) # add a randomly picked number to the list v\n", + "\n", + "# print both lists\n", + "print(\"u is\",u)\n", + "print(\"v is\",v)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2

\n", + "\n", + "By using the same vectors, find the vector $ (3 u-2 v) $ and print its entries. Here $ 3u $ and $ 2v $ means $u$ and $v$ are multiplied by $3$ and $2$, respectively." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's create a result list \n", + "\n", + "# the first method\n", + "result=[]\n", + "\n", + "# fill it with zeros\n", + "for i in range(dimension): \n", + " result.append(0)\n", + "\n", + "print(\"result is initialized by the first method to \",result)\n", + "\n", + "# the second method\n", + "# alternative and shorter solution for creating a list with zeros\n", + "result = [0] * 7 \n", + "\n", + "print(\"result is initialized by the second method to\",result)\n", + "\n", + "# let's calculate 3u-2v\n", + "for i in range(dimension):\n", + " result[i] = 3 * u[i] - 2 * v[i]\n", + "\n", + "# print all lists\n", + "print(\"u is\",u)\n", + "print(\"v is\",v)\n", + "print(\"3u-2v is\",result)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 3

\n", + "\n", + "Let $ u = \\myrvector{1 \\\\ -2 \\\\ -4 \\\\ 2} $ be a four dimensional vector.\n", + "\n", + "Verify that $ \\norm{4 u} = 4 \\cdot \\norm{u} $ in python. \n", + "\n", + "Remark that $ 4u $ is another vector obtained from $ u $ by multiplying it with 4." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "u = [1,-2,-4,2]\n", + "\n", + "fouru=[4,-8,-16,8]\n", + "\n", + "len_u = 0\n", + "len_fouru = 0\n", + "for i in range(len(u)):\n", + " len_u = len_u + u[i]**2 # adding square of each value \n", + " len_fouru = len_fouru + fouru[i]**2 # adding sqaure of each value\n", + "\n", + "len_u = len_u ** 0.5 # taking square root of the summation\n", + "len_fouru = len_fouru ** 0.5 # taking square root of the summation\n", + "\n", + "# print the lengths\n", + "print(\"length of u is\",len_u)\n", + "print(\"4 * length of u is\",4 * len_u)\n", + "print(\"length of 4u is\",len_fouru)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 4

\n", + "\n", + "Let $ u = \\myrvector{1 \\\\ -2 \\\\ -4 \\\\ 2} $ be a four dimensional vector.\n", + "\n", + "Randomly pick a number $r$ from $ \\left\\{ \\dfrac{1}{10}, \\dfrac{2}{10}, \\cdots, \\dfrac{9}{10} \\right\\} $.\n", + "\n", + "Find the vector $(-r)\\cdot u$ and then its length." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "\n", + "u = [1,-2,-4,2]\n", + "\n", + "print(\"u is\",u)\n", + "\n", + "r = randrange(9) # r is a number in {0,...,8}\n", + "r = r + 1 # r is a number in {1,...,9}\n", + "r = r/10 # r is a number in {1/10,...,9/10}\n", + "\n", + "print()\n", + "print(\"r is\",r)\n", + "\n", + "newu=[]\n", + "\n", + "for i in range(len(u)):\n", + " newu.append(-1*r*u[i])\n", + "\n", + "print() \n", + "print(\"-ru is\",newu)\n", + "print()\n", + "\n", + "length = 0\n", + "\n", + "for i in range(len(newu)):\n", + " length = length + newu[i]**2 # adding square of each number\n", + " print(newu[i],\"->[square]->\",newu[i]**2)\n", + " \n", + "print() \n", + "print(\"the summation of squares is\",length) \n", + "length = length**0.5 # taking square root\n", + "print(\"the length of\",newu,\"is\",length)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remark that:\n", + "\n", + "The length of $ u $ is 5.\n", + "\n", + "The length of $ (-r)u $ will be $ 5r $. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B18_Python_Lists_Inner_Product_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B18_Python_Lists_Inner_Product_Solutions.ipynb new file mode 100644 index 000000000..9b254b518 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B18_Python_Lists_Inner_Product_Solutions.ipynb @@ -0,0 +1,245 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 02, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Vectors: Inner Products

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 1

\n", + "\n", + "Find the inner product of the following vectors in python:\n", + "\n", + "$$\n", + " v = \\myrvector{-3 \\\\ 4 \\\\ -5 \\\\ 6} ~~~~\\mbox{and}~~~~ u = \\myrvector{4 \\\\ 3 \\\\ 6 \\\\ 5}.\n", + "$$\n", + "\n", + "Your outcome should be $0$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's define the vectors\n", + "v=[-3,4,-5,6]\n", + "u=[4,3,6,5]\n", + "\n", + "vu = 0\n", + "\n", + "for i in range(len(v)):\n", + " vu = vu + v[i]*u[i]\n", + "\n", + "print(v,u,vu)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2

\n", + "\n", + "Let $ u = \\myrvector{ -3 \\\\ -4 } $ be a 2 dimensional vector.\n", + "\n", + "Find $ \\inner{u}{u} $ in python." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "u = [-3,-4]\n", + "\n", + "uu = u[0]*u[0] + u[1]*u[1]\n", + "\n", + "print(u,u,uu)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 3

\n", + "\n", + "Verify that (i) $ u $ is orthogonal to $ -v $, (ii) $ -u $ is orthogonal to $ v $, and (iii) $ -u $ is orthogonal to $ -v $.\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "u = [-3,-4]\n", + "neg_u=[3,4]\n", + "\n", + "v=[-4,3]\n", + "neg_v=[4,-3]\n", + "\n", + "# let's define a function for inner product\n", + "def inner(v_one,v_two):\n", + " summation = 0 \n", + " for i in range(len(v_one)):\n", + " summation = summation + v_one[i]*v_two[i] # adding up pairwise multiplications\n", + " return summation # return the inner product\n", + "\n", + "print(\"inner product of u and -v (\",u,\" and \",neg_v,\") is\",inner(u,neg_v))\n", + "print(\"inner product of -u and v (\",neg_u,\" and \",v,\") is\",inner(neg_u,v))\n", + "print(\"inner product of -u and -v (\",neg_u,\" and \",neg_v,\") is\",inner(neg_u,neg_v))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 4

\n", + "\n", + "Find the inner product of $ u $ and $ v $ in python.\n", + "\n", + "$$\n", + " v = \\myrvector{-1 \\\\ 2 \\\\ -3 \\\\ 4} ~~~~\\mbox{and}~~~~ u = \\myrvector{-2 \\\\ -1 \\\\ 5 \\\\ 2}.\n", + "$$\n", + "\n", + "Find the inner product of $ -2u $ and $ 3v $ in python.\n", + "\n", + "Compare both results." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's define a function for inner product\n", + "def inner(v_one,v_two):\n", + " summation = 0 \n", + " for i in range(len(v_one)):\n", + " summation = summation + v_one[i]*v_two[i] # adding up pairwise multiplications\n", + " return summation # return the inner product\n", + "\n", + "v = [-1,2,-3,4]\n", + "v_neg_two=[2,-4,6,-8]\n", + "\n", + "u=[-2,-1,5,2]\n", + "u_three=[-6,-3,15,6]\n", + "\n", + "print(\"inner product of v and u is\",inner(v,u))\n", + "\n", + "print(\"inner product of -2v and 3u is\",inner(v_neg_two,u_three))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Observe that:\n", + "\n", + "$\\inner{v}{u} = -7 $ \n", + "\n", + "$ \\inner{-2v}{3u} = 42 = (-6) (-7) = (-2)(3) \\inner{v}{u} $\n", + "\n", + "$ \\inner{-2v}{3u} = (-2)(3) \\inner{v}{u} $" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B20_Python_Lists_Matrices_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B20_Python_Lists_Matrices_Solutions.ipynb new file mode 100644 index 000000000..4b9149ab1 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B20_Python_Lists_Matrices_Solutions.ipynb @@ -0,0 +1,420 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 02, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Matrices: Two Dimensional Lists

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 1

\n", + "\n", + "Randomly create $ (3 \\times 4) $-dimensional matrices $ A $ and $ B $. \n", + "\n", + "The entries can be from the list $ \\{-5,\\ldots,5\\} $.\n", + "\n", + "Print the entries of both matrices.\n", + "\n", + "Find matrix $ C = 3A - 2B $, and print its entries.\n", + "\n", + "Verify the correctness your outcomes." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "\n", + "A = []\n", + "B = []\n", + "\n", + "for i in range(3):\n", + " A.append([])\n", + " B.append([])\n", + " for j in range(4):\n", + " A[i].append(randrange(-5,6))\n", + " B[i].append(randrange(-5,6))\n", + "\n", + "print(\"A is\",A)\n", + "print(\"B is\",B)\n", + "\n", + "C = []\n", + "\n", + "for i in range(3):\n", + " C.append([])\n", + " for j in range(4):\n", + " C[i].append( 3*A[i][j]-2*B[i][j])\n", + "\n", + "print(\"C is 3A - 2B\")\n", + "print(\"C is\",C) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2

\n", + "\n", + "Calculate $ M^T $ and $ N^T $ in python.\n", + "\n", + "Print all matrices and verify the correctness of your outcome." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "M = [\n", + " [-2,3,0,4],\n", + " [-1,1,5,9] \n", + "]\n", + "N =[\n", + " [1,2,3],\n", + " [4,5,6],\n", + " [7,8,9]\n", + "]\n", + "\n", + "# create the transpose of M as a zero matrix\n", + "# its dimension is (4x2)\n", + "MT = []\n", + "for i in range(4):\n", + " MT.append([])\n", + " for j in range(2):\n", + " MT[i].append(0)\n", + "\n", + "# create the transpose of N as a zero matrix \n", + "# its dimension is (3x3)\n", + "NT = []\n", + "for i in range(3):\n", + " NT.append([])\n", + " for j in range(3):\n", + " NT[i].append(0)\n", + "\n", + "# calculate the MT\n", + "for i in range(2):\n", + " for j in range(4):\n", + " MT[j][i]=M[i][j] # check the indices\n", + "\n", + "print(\"M is\")\n", + "for i in range(len(M)):\n", + " print(M[i])\n", + "\n", + "print()\n", + "print(\"Transpose of M is\")\n", + "for i in range(len(MT)):\n", + " print(MT[i])\n", + "\n", + "print()\n", + "# calculate the NT\n", + "for i in range(3):\n", + " for j in range(3):\n", + " NT[j][i]=N[i][j] # check the indices\n", + "\n", + "print(\"N is\")\n", + "for i in range(len(N)):\n", + " print(N[i])\n", + "\n", + "print()\n", + "print(\"Transpose of N is\")\n", + "for i in range(len(NT)):\n", + " print(NT[i])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 3

\n", + "\n", + "Find $ u' = N u $ in python for the following matrix $ N $ and column vector $ u $:\n", + "\n", + "$$\n", + " N = \\mymatrix{rrr}{-1 & 1 & 2 \\\\ 0 & -2 & -3 \\\\ 3 & 2 & 5 \\\\ 0 & 2 & -2} ~~~~~~\\mbox{and}~~~~~~ u = \\myrvector{2 \\\\ -1 \\\\ 3}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "N = [\n", + " [-1,1,2],\n", + " [0,-2,-3],\n", + " [3,2,5],\n", + " [0,2,-2]\n", + "]\n", + "\n", + "u = [2,-1,3]\n", + "\n", + "uprime =[]\n", + "\n", + "print(\"N is\")\n", + "for i in range(len(N)):\n", + " print(N[i])\n", + "\n", + "print()\n", + "print(\"u is\",u)\n", + "\n", + "for i in range(len(N)): # the number of rows of N\n", + " S = 0 # summation of pairwise multiplications\n", + " for j in range(len(u)): # the dimension of u\n", + " S = S + N[i][j] * u[j]\n", + " uprime.append(S)\n", + "\n", + "print()\n", + "print(\"u' is\",uprime) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 4

\n", + "\n", + "Find matrix $ K = M \\cdot N $ for given matrices\n", + "$\n", + " M = \\mymatrix{rrr}{-1 & 0 & 1 \\\\ -2 & -1 & 2 \\\\ 1 & 2 & -2} ~~\\mbox{and}~~ \n", + " N = \\mymatrix{rrr}{0 & 2 & 1 \\\\ 3 & -1 & -2 \\\\ -1 & 1 & 0}.\n", + "$\n", + " \n", + "This is a very challanging task. You may use triple nested for-loops. \n", + "\n", + "You may also consider to write a function taking two lists and returning their inner product." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# matrix M\n", + "M = [\n", + " [-1,0,1],\n", + " [-2,-1,2],\n", + " [1,2,-2]\n", + "]\n", + "\n", + "# matrix N\n", + "N = [\n", + " [0,2,1],\n", + " [3,-1,-2],\n", + " [-1,1,0]\n", + "]\n", + "\n", + "# matrix K\n", + "K = []\n", + "\n", + "for i in range(3):\n", + " K.append([])\n", + " for j in range(3):\n", + " # here we calculate K[i][j]\n", + " # inner product of i-th row of M with j-th row of N\n", + " S = 0\n", + " for k in range(3):\n", + " S = S + M[i][k] * N[k][j]\n", + " K[i].append(S)\n", + " \n", + "print(\"M is\")\n", + "for i in range(len(M)):\n", + " print(M[i])\n", + " \n", + "print()\n", + "print(\"N is\")\n", + "for i in range(len(N)):\n", + " print(N[i])\n", + "\n", + "print()\n", + "print(\"K is\")\n", + "for i in range(len(K)):\n", + " print(K[i])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 5

\n", + "\n", + "Randomly define two $ (2 \\times 2) $-dimensional matrices $A$ and $ B $. \n", + "\n", + "Then, find $ C= AB-BA $. If $ C $ is not a zero matrix, then we are done.\n", + "\n", + "Remark: With some probability, we may find a pair of $ (A,B) $ such that $ AB = BA $. \n", + " \n", + "In this case, we should repeat our experiment. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "\n", + "A = []\n", + "B = []\n", + "AB = []\n", + "BA = []\n", + "DIFF = []\n", + "\n", + "# create A, B, AB, BA, DIFF together\n", + "for i in range(2):\n", + " A.append([])\n", + " B.append([])\n", + " AB.append([])\n", + " BA.append([])\n", + " DIFF.append([])\n", + " for j in range(2):\n", + " A[i].append(randrange(-10,10)) # the elements of A are random\n", + " B[i].append(randrange(-10,10)) # the elements of B are random\n", + " AB[i].append(0) # the elements of AB are initially set to zeros\n", + " BA[i].append(0) # the elements of BA are initially set to zeros\n", + " DIFF[i].append(0) # the elements of DIFF are initially set to zeros\n", + "\n", + "print(\"A =\",A)\n", + "print(\"B =\",B)\n", + "print() # print a line\n", + "print(\"AB, BA, and DIFF are initially zero matrices\")\n", + "print(\"AB =\",AB)\n", + "print(\"BA =\",BA)\n", + "print(\"DIFF =\",BA)\n", + "\n", + "# let's find AB\n", + "for i in range(2):\n", + " for j in range(2):\n", + " # remark that AB[i][j] is already 0, and so we can directly add all pairwise multiplications\n", + " for k in range(2):\n", + " AB[i][j] = AB[i][j] + A[i][k] * B[k][j] # each multiplication is added\n", + "\n", + "print() # print a line\n", + "print(\"AB =\",AB)\n", + "\n", + "# let's find BA\n", + "for i in range(2):\n", + " for j in range(2):\n", + " # remark that BA[i][j] is already 0, and so we can directly add all pairwise multiplications\n", + " for k in range(2):\n", + " BA[i][j] = BA[i][j] + B[i][k] * A[k][j] # each multiplication is added\n", + "\n", + "print(\"BA =\",BA)\n", + "\n", + "# let's calculate DIFF = AB- BA\n", + "for i in range(2):\n", + " for j in range(2):\n", + " DIFF[i][j] = AB[i][j] - BA[i][j]\n", + "\n", + "print() # print a line \n", + "print(\"DIFF = AB - BA =\",DIFF) " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B22_Python_Lists_Tensor_Product_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B22_Python_Lists_Tensor_Product_Solutions.ipynb new file mode 100644 index 000000000..3640f162c --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B22_Python_Lists_Tensor_Product_Solutions.ipynb @@ -0,0 +1,262 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 02, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Matrices: Tensor Product

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 1

\n", + "\n", + "Find $ u \\otimes v $ and $ v \\otimes u $ for the given vectors $ u = \\myrvector{-2 \\\\ -1 \\\\ 0 \\\\ 1} $ and $ v = \\myrvector{ 1 \\\\ 2 \\\\ 3 } $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "u = [-2,-1,0,1]\n", + "v = [1,2,3]\n", + "\n", + "uv = []\n", + "vu = []\n", + "\n", + "\n", + "for i in range(len(u)): # one element of u is picked\n", + " for j in range(len(v)): # now we iteratively select every element of v\n", + " uv.append(u[i]*v[j]) # this one element of u is iteratively multiplied with every element of v \n", + " \n", + "print(\"u-tensor-v is\",uv) \n", + "\n", + "for i in range(len(v)): # one element of v is picked\n", + " for j in range(len(u)): # now we iteratively select every element of u\n", + " vu.append(v[i]*u[j]) # this one element of v is iteratively multiplied with every element of u \n", + " \n", + "print(\"v-tensor-u is\",vu) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2

\n", + "\n", + "Find $ A \\otimes B $ for the given matrices\n", + "$\n", + " A = \\mymatrix{rrr}{-1 & 0 & 1 \\\\ -2 & -1 & 2} ~~\\mbox{and}~~ \n", + " B = \\mymatrix{rr}{0 & 2 \\\\ 3 & -1 \\\\ -1 & 1 }.\n", + "$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "A = [\n", + " [-1,0,1],\n", + " [-2,-1,2]\n", + "]\n", + "\n", + "B = [\n", + " [0,2],\n", + " [3,-1],\n", + " [-1,1]\n", + "]\n", + "\n", + "print(\"A =\")\n", + "for i in range(len(A)):\n", + " print(A[i])\n", + "\n", + "print() # print a line\n", + "print(\"B =\")\n", + "for i in range(len(B)):\n", + " print(B[i])\n", + "\n", + "# let's define A-tensor-B as a (6x6)-dimensional zero matrix\n", + "AB = []\n", + "for i in range(6):\n", + " AB.append([])\n", + " for j in range(6):\n", + " AB[i].append(0)\n", + "\n", + " \n", + " \n", + "# let's find A-tensor-B\n", + "for i in range(2):\n", + " for j in range(3):\n", + " # for each A(i,j) we execute the following codes\n", + " a = A[i][j]\n", + " # we access each element of B\n", + " for m in range(3):\n", + " for n in range(2):\n", + " b = B[m][n]\n", + " # now we put (a*b) in the appropriate index of AB\n", + " AB[3*i+m][2*j+n] = a * b\n", + " \n", + " \n", + "\n", + "print() # print a line\n", + "print(\"A-tensor-B =\") \n", + "print() # print a line\n", + "for i in range(6):\n", + " print(AB[i])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 3

\n", + "\n", + "Find $ B \\otimes A $ for the given matrices\n", + "$\n", + " A = \\mymatrix{rrr}{-1 & 0 & 1 \\\\ -2 & -1 & 2} ~~\\mbox{and}~~ \n", + " B = \\mymatrix{rr}{0 & 2 \\\\ 3 & -1 \\\\ -1 & 1 }.\n", + "$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "A = [\n", + " [-1,0,1],\n", + " [-2,-1,2]\n", + "]\n", + "\n", + "B = [\n", + " [0,2],\n", + " [3,-1],\n", + " [-1,1]\n", + "]\n", + "\n", + "print() # print a line\n", + "print(\"B =\")\n", + "for i in range(len(B)):\n", + " print(B[i])\n", + " \n", + "print(\"A =\")\n", + "for i in range(len(A)):\n", + " print(A[i])\n", + "\n", + "# let's define B-tensor-A as a (6x6)-dimensional zero matrix\n", + "BA = []\n", + "for i in range(6):\n", + " BA.append([])\n", + " for j in range(6):\n", + " BA[i].append(0)\n", + " \n", + "# let's find B-tensor-A\n", + "for i in range(3):\n", + " for j in range(2):\n", + " # for each B(i,j) we execute the following codes\n", + " b = B[i][j]\n", + " # we access each element of A\n", + " for m in range(2):\n", + " for n in range(3):\n", + " a = A[m][n]\n", + " # now we put (a*b) in the appropriate index of AB\n", + " BA[2*i+m][3*j+n] = b * a\n", + " \n", + " \n", + "\n", + "print() # print a line\n", + "print(\"B-tensor-A =\") \n", + "print() # print a line\n", + "for i in range(6):\n", + " print(BA[i])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B24_One_Bit_Solution.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B24_One_Bit_Solution.ipynb new file mode 100644 index 000000000..83d8510a8 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B24_One_Bit_Solution.ipynb @@ -0,0 +1,155 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for One Bit

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 3

\n", + "\n", + "Design a quantum circuit with 10 quantum bits and 10 classical bits.\n", + "\n", + "For each quantum bit, flip a coin, and apply x-gate if the outcome is head.\n", + "\n", + "Measure your quantum bits.\n", + "\n", + "Execeute your circuit 128 times.\n", + "\n", + "Repeat this task as mush as you want, and enjoy your random choices." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we import all necessary methods and objects\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "from random import randrange\n", + "\n", + "# we will use 10 quantum bits and 10 classical bits\n", + "qreg3 = QuantumRegister(10)\n", + "creg3 = ClassicalRegister(10)\n", + "\n", + "mycircuit3 = QuantumCircuit(qreg3,creg3)\n", + "\n", + "# we will store the index of each qubit to which x-gate is applied\n", + "picked_qubits=[] \n", + "\n", + "for i in range(10):\n", + " if randrange(2) == 0: # Assume that 0 is Head and 1 is Tail\n", + " mycircuit3.x(qreg3[i]) # apply x-gate\n", + " print(\"x-gate is applied to the qubit with index\",i)\n", + " picked_qubits.append(i) # i is picked\n", + "\n", + "# measurement \n", + "mycircuit3.measure(qreg3,creg3) \n", + "\n", + "print(\"Everything looks fine, let's continue ...\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# draw the circuit\n", + "drawer(mycircuit3)\n", + "# reexecute me if you DO NOT see the circuit diagram" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def print_outcomes(counts): # takes a dictionary variable\n", + " for outcome in counts: # for each key-value in dictionary\n", + " reverse_outcome = ''\n", + " for i in outcome: # each string can be considered as a list of characters\n", + " reverse_outcome = i + reverse_outcome # each new symbol comes before the old symbol(s)\n", + " print(reverse_outcome,\"is observed\",counts[outcome],\"times\")\n", + "\n", + "# execute the circuit and read the results\n", + "job = execute(mycircuit3,Aer.get_backend('qasm_simulator'),shots=128)\n", + "\n", + "counts = job.result().get_counts(mycircuit3)\n", + "print_outcomes(counts)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B26_Coin_Flip_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B26_Coin_Flip_Solutions.ipynb new file mode 100644 index 000000000..d9ee51734 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B26_Coin_Flip_Solutions.ipynb @@ -0,0 +1,162 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Coin Flip: A Probabilistic Bit

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 1: Simulating FairCoin in Python

\n", + "\n", + "Flip a fair coin 100 times. Calcuate the total number of heads and tails, and then compare them.\n", + "\n", + "Do the same experiment 1000 times.\n", + "\n", + "Do the same experiment 10,000 times.\n", + "\n", + "Do the same experiment 100,000 times.\n", + "\n", + "Do your results get close to the ideal case (the numbers of heads and tails are the same)?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "\n", + "for experiment in [100,1000,10000,100000]:\n", + " heads = tails = 0\n", + " for i in range(experiment):\n", + " if randrange(2) == 0: heads = heads + 1\n", + " else: tails = tails + 1\n", + " print(\"experiment:\",experiment)\n", + " print(\"the ratio of #heads/#tails is\",(heads/tails),\"heads =\",heads,\"tails = \",tails)\n", + " print() # empty line" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2: Simulating BiasedCoin in Python

\n", + "\n", + "Flip the following biased coin 100 times. Calcuate the total number of heads and tails, and then compare them.\n", + "\n", + "$\n", + "BiasedCoin = \\begin{array}{c|cc} & \\mathbf{Head} & \\mathbf{Tail} \\\\ \\hline \\mathbf{Head} & 0.6 & 0.6 \\\\ \\mathbf{Tail} & 0.4 & 0.4 \\end{array}\n", + "$\n", + "\n", + "\n", + "Do the same experiment 1000 times.\n", + "\n", + "Do the same experiment 10,000 times.\n", + "\n", + "Do the same experiment 100,000 times.\n", + "\n", + "Do your results get close to the ideal case $ \\mypar{ \\dfrac{ \\mbox{# of heads} }{ \\mbox{# of tails} } = \\dfrac{0.6}{0.4} = 1.50000000 } $?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "\n", + "# let's pick a random number between {0,1,...,99}\n", + "# it is expected to be less than 60 with probability 0.6\n", + "# and greater than or equal to 60 with probability 0.4\n", + "\n", + "for experiment in [100,1000,10000,100000]:\n", + " heads = tails = 0\n", + " for i in range(experiment):\n", + " if randrange(100) <60: heads = heads + 1 # probability with 0.6\n", + " else: tails = tails + 1 # probability with 0.4\n", + " print(\"experiment:\",experiment) \n", + " print(\"the ratio of #heads/#tails is\",(heads/tails),\"heads =\",heads,\"tails = \",tails)\n", + " print() # empty line" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B28_Coin_Flip_Game_Solution.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B28_Coin_Flip_Game_Solution.ipynb new file mode 100644 index 000000000..22301b792 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B28_Coin_Flip_Game_Solution.ipynb @@ -0,0 +1,128 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for A Game with two biased coins

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2

\n", + "\n", + "By using python, calculate the probabilities of Asja getting head and tail after 10 coin tosses.\n", + "\n", + "$\n", + "GameCoins = \\begin{array}{c|cc} & \\mathbf{Head} & \\mathbf{Tail} \\\\ \\hline \\mathbf{Head} & 0.6 & 0.3\\\\ \\mathbf{Tail} & 0.4 & 0.7 \\end{array} = \\begin{array}{c|cc} & \\mathbf{0} & \\mathbf{1} \\\\ \\hline \\mathbf{0} & 0.6 & 0.3 \\\\ \\mathbf{1} & 0.4 & 0.7 \\end{array}\n", + "$\n", + "\n", + "Please use a loop in your solution." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# We copy and paste the previous code\n", + "#\n", + "\n", + "# initial case\n", + "# We assume that the probability of getting head is 1 at the beginning,\n", + "# becasue Asja will start with one euro.\n", + "prob_head = 1\n", + "prob_tail = 0\n", + "\n", + "number_of_iteration = 10\n", + "\n", + "for i in range(number_of_iteration):\n", + " # if the last result was head\n", + " new_prob_head_from_head = prob_head * 0.6\n", + " new_prob_tail_from_head = prob_head * 0.4\n", + "\n", + " # if the last result was tail\n", + " # we know that prob_tail is 0 at the begining \n", + " # but we still keep these two lines to have the same code for each iteration\n", + " new_prob_head_from_tail = prob_tail * 0.3\n", + " new_prob_tail_from_tail = prob_tail * 0.7\n", + "\n", + " # update the probabilities at the end of coin toss\n", + " prob_head = new_prob_head_from_head + new_prob_head_from_tail\n", + " prob_tail = new_prob_tail_from_head + new_prob_tail_from_tail\n", + " \n", + "# print prob_head and prob_tail\n", + "print(\"the probability of getting head\",prob_head)\n", + "print(\"the probability of getting tail\",prob_tail)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B32_Probabilistic_States_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B32_Probabilistic_States_Solutions.ipynb new file mode 100644 index 000000000..81c9c774e --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B32_Probabilistic_States_Solutions.ipynb @@ -0,0 +1,203 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Probabilistic States

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2

\n", + "\n", + "Suppose that Fyodor hiddenly rolls a loaded (tricky) dice with the bias \n", + "\n", + "$$ Pr(1):Pr(2):Pr(3):Pr(4):Pr(5):Pr(6) = 7:5:4:2:6:1 . $$\n", + "\n", + "Represent your information on the result as a column vector. Remark that the size of your column should be 6.\n", + "\n", + "You may use python for your calculations." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total portion is 25\n", + "the weight of one portion is 0.04\n", + "\n", + "the probability of rolling 1 is 0.28\n", + "the probability of rolling 2 is 0.2\n", + "the probability of rolling 3 is 0.16\n", + "the probability of rolling 4 is 0.08\n", + "the probability of rolling 5 is 0.24\n", + "the probability of rolling 6 is 0.04\n" + ] + } + ], + "source": [ + "# all portions are stored in a list \n", + "all_portions = [7,5,4,2,6,1];\n", + "\n", + "# let's calculate the total portion\n", + "total_portion = 0\n", + "for i in range(6):\n", + " total_portion = total_portion + all_portions[i]\n", + "\n", + "print(\"total portion is\",total_portion)\n", + "\n", + "# find the weight of one portion\n", + "one_portion = 1/total_portion\n", + "print(\"the weight of one portion is\",one_portion)\n", + "\n", + "print() # print an empty line\n", + "# now we can calculate the probabilities of rolling 1,2,3,4,5, and 6\n", + "for i in range(6):\n", + " print(\"the probability of rolling\",(i+1),\"is\",(one_portion*all_portions[i]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 4

\n", + "\n", + "For a system with 4 states, randomly create a probabilistic state, and print its entries, e.g., $ 0.16~~0.17~~0.02~~0.65 $.\n", + "\n", + "You may pick your random numbers between 0 and 100 (or 1000), and then divide each by 100 (or 1000) to represent it as a probability." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we will randomly create a probabilistic state\n", + "#\n", + "# we should be careful about two things:\n", + "# 1. a probability value must be between 0 and 1\n", + "# 2. the total probability must be 1\n", + "#\n", + "# therefore, we can randomly pick three probability values.\n", + "# once we have three probability values, the fourth one is determined automatically\n", + "# the fourth one cannot be arbitrary, because the summation of the four values must be 1\n", + "\n", + "# let's use a list of size 4\n", + "# initial values are zeros\n", + "my_state = [0,0,0,0]\n", + "\n", + "# we pick three random probabilistic values\n", + "from random import randrange\n", + "\n", + "# I assume that I have the following total value to distribute to four parts\n", + "total = 1000\n", + "# I will randomly pick a value, and then continue with the remaining value\n", + "for i in range(3): # let's find the three values\n", + " pick_a_value = randrange(total)\n", + " print(\"I picked\",pick_a_value)\n", + " my_state[i] = pick_a_value\n", + " total = total - pick_a_value # remaining value for the others\n", + "my_state[3] = total # this is the remaining value after three iterations\n", + "print(\"The remaining value is\",total)\n", + "\n", + "# let's verify the summation of the elements in my_state\n", + "sum = 0\n", + "print() # print an empty line\n", + "for i in range(len(my_state)):\n", + " sum = sum + my_state[i]\n", + "print(\"the summation of the elements in my_state is\",sum)\n", + "\n", + "# let's convert the selected values to the probabilities\n", + "# we can also call this procedure as **NORMALIZATION**\n", + "for i in range(len(my_state)):\n", + " my_state[i] = my_state[i]/1000\n", + "\n", + "print() # print an empty line\n", + "print(\"the entries of my probabilistic state:\")\n", + "# let's print all probabilities\n", + "for i in range(len(my_state)): print(my_state[i])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B36_Probabilistic_Operators_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B36_Probabilistic_Operators_Solutions.ipynb new file mode 100644 index 000000000..761f4e302 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B36_Probabilistic_Operators_Solutions.ipynb @@ -0,0 +1,515 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Probabilistic Operators

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2

\n", + "\n", + "Randomly construct a $ (3 \\times 3 ) $-dimensional probabilistic operator.\n", + "\n", + "Randomly determine the entries of the matrix that represents a probabilistic operator." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's start with a zero matrix\n", + "A = [\n", + " [0,0,0],\n", + " [0,0,0],\n", + " [0,0,0]\n", + "]\n", + "\n", + "# we will randomly construct 3 columns\n", + "from random import randrange\n", + "for j in range(3): # each column is iteratively constructed\n", + " total = 100 # we will start with 100 and randomly distribute it into three parties\n", + " for i in range(2): # we will determine the first two entries randomly \n", + " picked_probability = randrange(total)\n", + " A[i][j] = picked_probability # the value of the i-th row in j-th column\n", + " total = total - picked_probability # remaining part to distribute in the next iteration\n", + " A[2][j] = total # the last row (in the j-th column) takes the remaining part after two iterations\n", + "\n", + "# let's print matrix A before the normalization\n", + "# the entries are between 0 and 100\n", + "print(\"matrix A before normalization:\")\n", + "for i in range(3):\n", + " print(A[i])\n", + "\n", + "print(\"the column summations must be 100\")\n", + "\n", + "\n", + "# let's normalize the entries by dividing every element with 100\n", + "for i in range(3):\n", + " for j in range(3):\n", + " A[i][j] /=100 # shorter form of A[i][j] = A[i][j] / 100\n", + " \n", + "# let's print matrix A after the normalization\n", + "print() # print an empty line\n", + "print(\"matrix A after normalization:\")\n", + "for i in range(3):\n", + " print(A[i]) \n", + "\n", + "print(\"the column summations must be 1\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 3

\n", + "\n", + "Write a function in python for Asja's probabilistic operator $ \\mymatrix{cc}{ 0.6 & 0.3 \\\\ 0.4 & 0.7 } $ such that\n", + "
    \n", + "
  • it takes a probabilistic state as the input, and
  • \n", + "
  • it outputs the new probabilistic state.
  • \n", + "
\n", + " \n", + "Then, test your function by applying it twice to the starting state $ \\myvector{1 \\\\ 0} $.\n", + "\n", + "Remember that: $ \n", + " \\myvector{1 \\\\ 0} \\xrightarrow{\\mbox{Asja's coin-flipping protocol}} \\myvector{0.6 \\\\ 0.4}\n", + " \\xrightarrow{\\mbox{Asja's coin-flipping protocol}} \\myvector{0.48 \\\\ 0.52}.\n", + "$\n", + "\n", + "If your function seems to work, then evolve your system for 3, 6, 9, 12, 24, 48, and 96 steps.\n", + "\n", + "Is there any pattern?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Asja's probabilistic operator (coin flip protocol)\n", + "A = [\n", + " [0.6,0.3],\n", + " [0.4,0.7]\n", + "]\n", + "\n", + "# one-step evolution of Asja's probabilistic operator on a given probabilistic state\n", + "def asja(prelist):\n", + " newlist=[0,0]\n", + " for i in range(2): # for each row\n", + " for j in range(2): # for each column\n", + " newlist[i] = newlist[i] + prelist[j] * A[i][j] # summation of pairwise multiplication \n", + " return newlist # return the new state\n", + " \n", + "# initial state \n", + "state = [1,0] \n", + "\n", + "# after one step\n", + "state = asja(state)\n", + "print(\"after one step, the state is\",state)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# the new state is correct\n", + "\n", + "# let's check one more step\n", + "state = asja(state)\n", + "print(\"after two steps, the state is\",state)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# this is also correct\n", + "#\n", + "# then, let's evolve the system for more steps\n", + "for i in [3,6,9,12,24,48,96]:\n", + " # start from the initial state\n", + " state = [1,0]\n", + " for t in range(i): # apply asja t times\n", + " state = asja(state)\n", + " # print the result\n", + " print(state,\"after\",(t+1),\"steps\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " The system converges to a fixed probabilistic state ." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 4

\n", + "\n", + "Write a function that takes a probabilistic operator and a probabilistic state, and then returns the new probabilistic state.\n", + "\n", + "Your function should work for any dimension.\n", + "\n", + "Test your function on $ \\mymatrix{ccc}{ 0.4 & 0.6 & 0 \\\\ 0.2 & 0.1 & 0.7 \\\\ 0.4 & 0.3 & 0.3 } $ and $ \\myvector{0.1 \\\\ 0.3 \\\\ 0.6} $. \n", + "\n", + "The new probabilistic state should be $ \\myvector{0.22 \\\\ 0.47 \\\\ 0.31} $.\n", + "\n", + "Then, evolve your system for 5, 10, 20, and 40 steps.\n", + "\n", + "The system should evolve to a fixed probabilistic state.\n", + "\n", + "Change your initial state to $ \\myvector{1 \\\\ 0 \\\\ 0} $, and see whether the converged state is the same or not." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def evolve(Op,state):\n", + " newstate=[]\n", + " for i in range(len(Op)): # for each row\n", + " # we calculate the corresponding entry of the new state\n", + " newstate.append(0) # we set this value to 0 for the initialization\n", + " for j in range(len(state)): # for each element in state\n", + " newstate[i] = newstate[i] + Op[i][j] * state[j] # summation of pairwise multiplications\n", + " return newstate # return the new probabilistic state" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# test the function\n", + "\n", + "# operator for the test\n", + "A = [\n", + " [0.4,0.6,0],\n", + " [0.2,0.1,0.7],\n", + " [0.4,0.3,0.3]\n", + "]\n", + "\n", + "# state for test\n", + "v = [0.1,0.3,0.6]\n", + "\n", + "newstate = evolve(A,v)\n", + "print(newstate)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for step in [5,10,20,40]:\n", + " new_state = [0.1,0.3,0.6] # initial state\n", + " for i in range(step):\n", + " new_state = evolve(A,new_state)\n", + " print(new_state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " The system converges to a fixed probabilistic state .\n", + "\n", + "Moreover, the converged probabilistic state is an equal distribution." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# change the initial state\n", + "\n", + "for step in [5,10,20,40]:\n", + " new_state = [1,0,0] # initial state\n", + " for i in range(step):\n", + " new_state = evolve(A,new_state)\n", + " print(new_state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " The converged probabilistic state does not change with the initial state. ." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 7

\n", + "\n", + "A challenging task.\n", + "\n", + "Freivalds reads 50 random strings of length 40. \n", + "\n", + "Find the final probabilistic state for each string.\n", + "\n", + "Is there any relation between the numbers of $ a $s and $ b $s, say $ N_a $ and $ N_b $, and the probabilities of the first bit being in zero and one, say $ p_0 $ and $ p_1 $?\n", + "
    \n", + "
  • When $ N_a > N_b $, then is $ p_0 < p_1 $ or $ p_0 > p_1 $?
  • \n", + "
  • When $ N_a < N_b $, then is $ p_0 < p_1 $ or $ p_0 > p_1 $?
  • \n", + "
\n", + "\n", + "Or simply check the signs of $ (N_a - N_b) $ and $ (p_0-p_1) $ for each string.\n", + "\n", + "Note that the multiplication of two numbers with the same signs is a positive number, and the multiplication of two numbers with the opposite signs gives a negative number." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# for random number generation\n", + "from random import randrange\n", + "\n", + "# we will use evolve function\n", + "def evolve(Op,state):\n", + " newstate=[]\n", + " for i in range(len(Op)): # for each row\n", + " newstate.append(0)\n", + " for j in range(len(state)): # for each element in state\n", + " newstate[i] = newstate[i] + Op[i][j] * state[j] # summation of pairwise multiplications\n", + " return newstate # return the new probabilistic state\n", + "\n", + "# the initial state\n", + "state = [0.5, 0, 0.5, 0]\n", + "\n", + "# probabilistic operator for symbol a\n", + "A = [\n", + " [0.5, 0, 0, 0],\n", + " [0.25, 1, 0, 0],\n", + " [0, 0, 1, 0],\n", + " [0.25, 0, 0, 1]\n", + "]\n", + "\n", + "# probabilistic operator for symbol b\n", + "B = [\n", + " [1, 0, 0, 0],\n", + " [0, 1, 0.25, 0],\n", + " [0, 0, 0.5, 0],\n", + " [0, 0, 0.25, 1]\n", + "]\n", + "\n", + "#\n", + "# your solution is here\n", + "#\n", + "\n", + "length = 40\n", + "total = 50\n", + "# total = 1000 # we will also test our code for 1000 strings\n", + "\n", + "# we will check 5 cases\n", + "# let's use a list \n", + "cases = [0,0,0,0,0]\n", + "\n", + "for i in range(total): # total number of strings\n", + " Na = 0\n", + " Nb = 0\n", + " string = \"\"\n", + " state = [0.5, 0, 0.5, 0]\n", + " for j in range(length): # generate random string\n", + " if randrange(2) == 0: \n", + " Na = Na + 1 # new symbol is a\n", + " string = string + \"a\"\n", + " state = evolve(A,state) # update the probabilistic state by A\n", + " else:\n", + " Nb = Nb + 1 # new symbol is b\n", + " string = string + \"b\"\n", + " state = evolve(B,state) # update the probabilistic state by B\n", + " # now we have the final state\n", + " p0 = state[0] + state [1] # the probabilities of being in 00 and 01\n", + " p1 = state[2] + state[3] # the probabilities of being in 10 and 11\n", + " #print() # print an empty line\n", + " print(\"(Na-Nb) is\",Na-Nb,\"and\",\"(p0-p1) is\",p0-p1)\n", + " # let's check possible different cases\n", + " \n", + " # start with the case in which both are nonzero\n", + " # then their multiplication is nonzero\n", + " # let's check the sign of their multiplication\n", + " if (Na-Nb) * (p0-p1) < 0: \n", + " print(\"they have opposite sign\")\n", + " cases[0] = cases[0] + 1\n", + " elif (Na-Nb) * (p0-p1) > 0: \n", + " print(\"they have the same sign\")\n", + " cases[1] = cases[1] + 1\n", + " \n", + " # one of them should be zero\n", + " elif (Na-Nb) == 0:\n", + " if (p0-p1) == 0: \n", + " print(\"both are zero\")\n", + " cases[2] = cases[2] + 1\n", + " else: \n", + " print(\"(Na-Nb) is zero, but (p0-p1) is nonzero\")\n", + " cases[3] = cases[3] + 1\n", + " elif (p0-p1) == 0: \n", + " print(\"(Na-Nb) is nonzero, but (p0-p1) is zero\")\n", + " cases[4] = cases[4] + 1\n", + " \n", + "# check the case(s) observed and the case(s) not observed\n", + "print() # print an empty line\n", + "print(cases) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Interpretation \n", + "\n", + "Five cases about $ (N_a-N_b) $ and $ (p_0-p_1) $:\n", + "
    \n", + "
  • $ case[0] $: they have opposite sign
  • \n", + "
  • $ case[1] $: they have the same sign
  • \n", + "
  • $ case[2] $: both are zero
  • \n", + "
  • $ case[3] $: $ (N_a-N_b) $ is zero, but $ (p_0-p_1) $ is nonzero
  • \n", + "
  • $ case[4] $: $ (N_a-N_b) $ is nonzero, but $ (p_0-p_1) $ is zero
  • \n", + "
\n", + "\n", + "We observed only two cases: $ case[0] $ and $ case[2] $.\n", + "\n", + "(1) If the numbers of $ a $s and $ b $s are the same, then the probabilities of the first bit being in zero and one are the same.\n", + "\n", + "$$\n", + " N_a = N_b \\longleftrightarrow p_0 = p_1.\n", + "$$\n", + "\n", + "(2) If the numbers of $ a $s and $ b $s are not the same, then we have only $ (N_a - N_b) \\cdot (p_0-p_1) < 0 $.\n", + "\n", + "(2.a) If the number of $ a $s is greater than the number of $ b $s, then the probability of observing $ 0 $ in the first bit ($00$ or $11$) is less than the probability of observing 1 in the first bit ($10$ or $11 $).\n", + "\n", + "$$\n", + " N_a > N_b \\longrightarrow p_0 < p_1.\n", + "$$\n", + "\n", + "(2.b) If the number of $ a $s is less than the number of $ b $s, then the probability of observing $ 0 $ in the first bit ($00$ or $11$) is greater than the probability of observing 1 in the first bit ($10$ or $11 $).\n", + "\n", + "$$\n", + " N_a < N_b \\longrightarrow p_0 > p_1.\n", + "$$\n", + "\n", + "
\n", + "\n", + "If we have more $ a $s, we expect to observe $ 10 $ and $ 11 $ more than $ 00 $ and $ 01 $.\n", + "\n", + "If we have more $ b $s, we expect to observe $ 00 $ and $ 01 $ more than $ 10 $ and $ 11 $.\n", + "\n", + "If we have equal numbers of $a$s and $b$s, we expect to observe $ 0 $ and $ 1 $ in the first bit equally." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B42_Hadamard_Solution.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B42_Hadamard_Solution.ipynb new file mode 100644 index 000000000..8c4378ee6 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B42_Hadamard_Solution.ipynb @@ -0,0 +1,232 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Hadamard

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 1

\n", + "\n", + "Remember that x-gate flips the value of a qubit.\n", + "\n", + "Design a quantum circuit with a single qubit.\n", + "\n", + "The qubit is initially set to $ \\ket{0} $.\n", + "\n", + "Set the value of qubit to $ \\ket{1} $ by using x-gate.\n", + "\n", + "Experiment 1: Apply one Hadamard gate, make measurement, and execute your program 10000 times.\n", + "\n", + "Experiment 2: Apply two Hadamard gates, make measurement, and execute your program 10000 times.\n", + "\n", + "Compare your results.\n", + "\n", + "The following two diagrams represent two different experiments." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

\n", + "\n", + "

Experiment 1: x-gate, h-gate, and measurement

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "# define a quantum register with one qubit\n", + "qreg3 = QuantumRegister(1)\n", + "\n", + "# define a classical register with one bit\n", + "# it stores the measurement result of the quantum part\n", + "creg3 = ClassicalRegister(1)\n", + "\n", + "# define our quantum circuit\n", + "mycircuit3 = QuantumCircuit(qreg3,creg3)\n", + "\n", + "# apply x-gate to the first qubit\n", + "mycircuit3.x(qreg3[0])\n", + "\n", + "# apply h-gate (Hadamard: quantum coin-flipping) to the first qubit\n", + "mycircuit3.h(qreg3[0])\n", + "\n", + "# measure the first qubit, and store the result in the first classical bit\n", + "mycircuit3.measure(qreg3,creg3)\n", + "\n", + "print(\"Everything looks fine, let's continue ...\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# draw the circuit\n", + "drawer(mycircuit3)\n", + "# reexecute me if you DO NOT see the circuit diagram" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# execute the circuit and read the results\n", + "job = execute(mycircuit3,Aer.get_backend('qasm_simulator'),shots=10000)\n", + "\n", + "counts3 = job.result().get_counts(mycircuit3)\n", + "print(counts3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Experiment 2: x-gate, h-gate, h-gate, and measurement

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "# define a quantum register with one qubit\n", + "qreg4 = QuantumRegister(1)\n", + "\n", + "# define a classical register with one bit\n", + "# it stores the measurement result of the quantum part\n", + "creg4 = ClassicalRegister(1)\n", + "\n", + "# define our quantum circuit\n", + "mycircuit4 = QuantumCircuit(qreg4,creg4)\n", + "\n", + "# apply x-gate to the first qubit\n", + "mycircuit4.x(qreg4[0])\n", + "\n", + "# apply h-gate (Hadamard: quantum coin-flipping) to the first qubit twice\n", + "mycircuit4.h(qreg4[0])\n", + "mycircuit4.h(qreg4[0])\n", + "\n", + "# measure the first qubit, and store the result in the first classical bit\n", + "mycircuit4.measure(qreg4,creg4)\n", + "\n", + "print(\"Everyhing looks fine, let's continue ...\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# draw the circuit\n", + "drawer(mycircuit4)\n", + "# reexecute me if you DO NOT see the circuit diagram" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# execute the circuit and read the results\n", + "job = execute(mycircuit4,Aer.get_backend('qasm_simulator'),shots=10000)\n", + "\n", + "counts4 = job.result().get_counts(mycircuit4)\n", + "print(counts4)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B46_Quantum_State_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B46_Quantum_State_Solutions.ipynb new file mode 100644 index 000000000..a7ebf23e7 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B46_Quantum_State_Solutions.ipynb @@ -0,0 +1,220 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Quantum State

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 1

\n", + "\n", + "Let $a$ and $b$ be real numbers.\n", + "\n", + "If the folllowing vectors are valid quantum states, then what can be the values of $a$ and $b$?\n", + "\n", + "$$\n", + " \\ket{v} = \\myrvector{a \\\\ -0.1 \\\\ -0.3 \\\\ 0.4 \\\\ 0.5}\n", + " ~~~~~ \\mbox{and} ~~~~~\n", + " \\ket{u} = \\myrvector{ \\frac{1}{\\sqrt{2}} \\\\ \\frac{1}{\\sqrt{b}} \\\\ -\\frac{1}{\\sqrt{3}} }.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# vector |v>\n", + "\n", + "print(\"vector |v>\")\n", + "\n", + "values = [-0.1, -0.3, 0.4, 0.5]\n", + "\n", + "total = 0 # summation of squares\n", + "for i in range(len(values)):\n", + " total += values[i]**2; # add the square of each value\n", + "print(\"total is \",total)\n", + "print(\"the missing part is\",1-total)\n", + "print(\"so, the value a should be\",(1-total)**0.5) # sqaure root of the missing part\n", + "\n", + "print()\n", + "print(\"vector |u>\")\n", + "\n", + "values = [1/(2**0.5), -1/(3**0.5)]\n", + "\n", + "total = 0 # summation of squares\n", + "for i in range(len(values)):\n", + " total += values[i]**2; # add the square of each value\n", + "print(\"total is \",total)\n", + "print(\"the missing part is\",1-total)\n", + "# the missing part is 1/b, square of 1/sqrt(b)\n", + "# thus b is 1/missing-part\n", + "print(\"so, the value b should be\",1/(1-total)) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2

\n", + "\n", + "Remember Hadamard operator:\n", + "\n", + "$$\n", + " H = \\hadamard.\n", + "$$\n", + "\n", + "Let's randomly create a 2-dimensional quantum state, and test whether Hadamard operator preserves the length or not.\n", + "\n", + "Write a function that returns a randomly created 2-dimensional quantum state:\n", + "
    \n", + "
  • Pick a random value between 0 and 100
  • \n", + "
  • Divide it by 100
  • \n", + "
  • Take sqaure root of it
  • \n", + "
  • Randomly determine its sign ($+$ or $-$)
  • \n", + "
  • This is the first entry of the vector
  • \n", + "
  • Find an appropriate value for the second entry
  • \n", + "
  • Randomly determine its sign ($+$ or $-$)
  • \n", + "
\n", + "\n", + "Write a function that determines whether a given vector is a valid quantum state or not.\n", + "\n", + "(Due to precision problem, the summation of squares may not be exactly 1 but very close to 1, e.g., 0.9999999999999998.)\n", + "\n", + "Repeat 10 times:\n", + "
    \n", + "
  • Randomly create a quantum state
  • \n", + "
  • Multiply Hadamard matrix with the randomly created quantum state
  • \n", + "
  • Check whether the result quantum state is valid
  • \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "# randomly create a 2-dimensional quantum state\n", + "def random_quantum_state():\n", + " first_entry = randrange(100)\n", + " first_entry = first_entry/100\n", + " first_entry = first_entry**0.5 # we found the first value before determining its sign\n", + " if randrange(2) == 0: # determine the sign\n", + " first_entry = -1 * first_entry\n", + " second_entry = 1 - (first_entry**2)\n", + " second_entry = second_entry**0.5\n", + " if randrange(2) == 0: # determine the sign\n", + " second_entry = -1 * second_entry\n", + " return [first_entry,second_entry]\n", + "\n", + "def is_quantum_state(quantum_state):\n", + " length_square = 0\n", + " for i in range(len(quantum_state)):\n", + " length_square += quantum_state[i]**2\n", + " print(\"summation of entry squares is\",length_square)\n", + " # there might be precision problem\n", + " # the length may be very close to 1 but not exactly 1\n", + " # so we use the following trick\n", + " if (length_square - 1)**2 < 0.00000001: return True \n", + " return False # else\n", + "\n", + "\n", + "# define a function for Hadamard multiplication\n", + "def hadamard(quantum_state):\n", + " result_quantum_state = [0,0] # define with zero entries\n", + " result_quantum_state[0] = (1/(2**0.5)) * quantum_state[0] + (1/(2**0.5)) * quantum_state[1]\n", + " result_quantum_state[1] = (1/(2**0.5)) * quantum_state[0] - (1/(2**0.5)) * quantum_state[1]\n", + " return result_quantum_state\n", + "\n", + "# we are ready\n", + "for i in range(10):\n", + " picked_quantum_state=random_quantum_state()\n", + " print(picked_quantum_state,\"this is randomly picked quantum state\")\n", + " new_quantum_state = hadamard(picked_quantum_state)\n", + " print(new_quantum_state,\"this is new quantum state\")\n", + " print(\"Is it valid?\",is_quantum_state(new_quantum_state))\n", + " print() # print an empty line" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B48_Superposition_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B48_Superposition_Solutions.ipynb new file mode 100644 index 000000000..5d68b551b --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B48_Superposition_Solutions.ipynb @@ -0,0 +1,252 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Superposition

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2

\n", + "\n", + "We have a quantum system with four states: $\\ket{00}$, $ \\ket{01} $, $\\ket{10}$, and $ \\ket{11} $.\n", + "\n", + "We can also say that our system has two qubits.\n", + "\n", + "\n", + "Suppose that the system is in the following state:\n", + "\n", + "$ \\myrvector{ \\dfrac{ 1 }{ \\sqrt{3} - \\sqrt{ 5 + 2\\sqrt{6}} } \\\\ \\\\ \\dfrac{1}{ \\sqrt{3} - \\sqrt{ 7 + 2\\sqrt{12} } } \\\\ \\\\\n", + " \\dfrac{ 1 }{ \\sqrt{5} - \\sqrt{ 13 + 2\\sqrt{40} } } \\\\ \\\\ \\dfrac{1}{ \\sqrt{ 7 } - \\sqrt{ 15 + 2 \\sqrt{56} } } }. $\n", + " \n", + " Find the probability of observing the system in state $\\ket{00}$, $ \\ket{01} $, $\\ket{10}$, or $ \\ket{11} $.\n", + " \n", + " You may write a function to calculate the dominator of each fraction automatically, where its value is determined by three values $a$, $ b$, and $ c $ by assuming the form $ \\sqrt{a} - \\sqrt{b + 2 \\sqrt{c} } $.\n", + " \n", + " Verify that the total probability is 1 (or almost 1)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def square_roots(a,b,c):\n", + " # we iteratively calculate the expression with many square roots\n", + " # we start with c and continue with b and a\n", + " result = c**0.5 # square root of c\n", + " result = 2 * result # 2*sqrt(c)\n", + " result = result + b # b + 2*sqrt(c)\n", + " result = result**0.5 # square root\n", + " result = a**0.5 - result\n", + " return result\n", + "\n", + "quantum_state =[\n", + " square_roots(3,5,6)**(-1),\n", + " square_roots(3,7,12)**(-1),\n", + " square_roots(5,13,40)**(-1),\n", + " square_roots(7,15,56)**(-1),\n", + "] # this is our quantum state\n", + "\n", + "# print the quantum state\n", + "print(quantum_state)\n", + "\n", + "print()\n", + "print(\"The probability of observing the states 00, 01, 10, 11:\")\n", + "total_probability = 0\n", + "for i in range(len(quantum_state)):\n", + " current_probability = quantum_state[i]**2 # square of the amplitude\n", + " print(current_probability)\n", + " total_probability = total_probability + current_probability\n", + "\n", + "print()\n", + "print(\"total probability is\",total_probability)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 3

\n", + "\n", + "Create a quantum ciruit with 5 qubits.\n", + "\n", + "Apply h-gate (Hadamard operator) to each qubit.\n", + "\n", + "Apply z-gate ($Z$ operator) to randomly picked qubits. (e.g., $ mycircuit.z(qreg[i]) $)\n", + "\n", + "Apply h-gate to each qubit \n", + "\n", + "Measuere each qubit.\n", + "\n", + "Execute your program 1000 times.\n", + "\n", + "Compare the outcomes of the qubits affected by z-gates, and the outcomes of the qubits not affected by z-gates.\n", + "\n", + "Does z-gate change the outcome?\n", + "\n", + "Why?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "# import randrange for random choices\n", + "from random import randrange\n", + "\n", + "number_of_qubit = 5\n", + "\n", + "# define a quantum register with 5 qubits\n", + "qreg = QuantumRegister(number_of_qubit)\n", + "\n", + "# define a classical register with 5 bits\n", + "creg = ClassicalRegister(number_of_qubit)\n", + "\n", + "# define our quantum circuit\n", + "mycircuit = QuantumCircuit(qreg,creg)\n", + "\n", + "# apply h-gate to all qubits\n", + "for i in range(number_of_qubit):\n", + " mycircuit.h(qreg[i])\n", + "\n", + "# apply z-gate randomly picked qubits\n", + "for i in range(number_of_qubit):\n", + " if randrange(2) == 0: # the qubit with index i is picked to apply z-gate\n", + " mycircuit.z(qreg[i])\n", + " \n", + "# apply h-gate to all qubits\n", + "for i in range(number_of_qubit):\n", + " mycircuit.h(qreg[i])\n", + " \n", + " \n", + "# measure all qubits\n", + "mycircuit.measure(qreg,creg)\n", + "\n", + "print(\"Everything looks fine, let's continue ...\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# draw the circuit\n", + "\n", + "drawer(mycircuit)\n", + "# reexecute me if you DO NOT see the circuit diagram" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# execute the circuit 1000 times in the local simulator\n", + "\n", + "job = execute(mycircuit,Aer.get_backend('qasm_simulator'),shots=1000)\n", + "counts = job.result().get_counts(mycircuit)\n", + "for outcome in counts: # print the reverse of the outcome\n", + " reverse_outcome = ''\n", + " for i in outcome:\n", + " reverse_outcome = i + reverse_outcome\n", + " print(reverse_outcome,\"is observed\",counts[outcome],\"times\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We start in state $ \\ket{0} $ in each qubit.\n", + "\n", + "If a qubit is affected by z-gate, then its final value is changed to $ \\ket{1} $.\n", + "\n", + "If a qubit is not affected by z-gate, then its final value is $ \\ket{0} $." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B56_Two_Qubits_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B56_Two_Qubits_Solutions.ipynb new file mode 100644 index 000000000..1bd218b12 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B56_Two_Qubits_Solutions.ipynb @@ -0,0 +1,335 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Two Qubits

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 1

\n", + "\n", + "Create a quantum curcuit with $ n=5 $ qubits.\n", + "\n", + "Set each qubit to $ \\ket{1} $.\n", + "\n", + "Repeat 4 times:\n", + "
    \n", + "
  • Randomly pick a pair of qubits, and apply cx-gate (CNOT operator) on the pair.
  • \n", + "
\n", + "\n", + "Draw your circuit, and execute your program 100 times.\n", + "\n", + "Verify your measurement results by checking the diagram of the circuit. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "# import randrange for random choices\n", + "from random import randrange\n", + "\n", + "n = 5\n", + "m = 4\n", + "\n", + "values_of_qubits = [] # we keep a record of the qubits also in a list\n", + "\n", + "qreg1 = QuantumRegister(n) # quantum register with n qubits\n", + "creg1 = ClassicalRegister(n) # classical register with n bits\n", + "\n", + "mycircuit1 = QuantumCircuit(qreg1,creg1) # quantum circuit with quantum and classical registers\n", + "\n", + "# set each qubit to |1>\n", + "for i in range(n):\n", + " mycircuit1.x(qreg1[i]) # apply x-gate (NOT operator)\n", + " values_of_qubits.append(1) # the value of each qubit is set to 1\n", + " \n", + "# randomly pick m pairs of qubits\n", + "for i in range(m):\n", + " controller_qubit = randrange(n)\n", + " target_qubit = randrange(n)\n", + " # controller and target qubits should be different\n", + " while controller_qubit == target_qubit: # if they are the same, we pick the target_qubit again\n", + " target_qubit = randrange(n)\n", + " # print our picked qubits\n", + " print(\"the indices of the controller and target qubits are\",controller_qubit,target_qubit)\n", + " # apply cx-gate (CNOT operator)\n", + " mycircuit1.cx(qreg1[controller_qubit],qreg1[target_qubit])\n", + " # we also trace the results\n", + " if values_of_qubits[controller_qubit] == 1: # if the value of the controller qubit is 1,\n", + " values_of_qubits[target_qubit] = 1 - values_of_qubits[target_qubit] # then flips the value of the target qubit \n", + " # remark that 1-x gives the negation of x\n", + " \n", + "\n", + "# measure the quantum register\n", + "mycircuit1.measure(qreg1,creg1)\n", + "\n", + "print(\"Everything looks fine, let's continue ...\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# draw the circuit\n", + "\n", + "drawer(mycircuit1)\n", + "# re-execute this cell if you DO NOT see the circuit diagram" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# execute the circuit 100 times in the local simulator\n", + "\n", + "job = execute(mycircuit1,Aer.get_backend('qasm_simulator'),shots=100)\n", + "counts = job.result().get_counts(mycircuit1)\n", + "\n", + "# print the reverse of the outcome\n", + "for outcome in counts:\n", + " reverse_outcome = ''\n", + " for i in outcome:\n", + " reverse_outcome = i + reverse_outcome\n", + " print(reverse_outcome,\"is observed\",counts[outcome],\"times\")\n", + "\n", + "# the value of the qubits should be as follows based on our own calculation\n", + "print(values_of_qubits)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2

\n", + "\n", + "Our task is to learn the behaviour of the following quantum circut by doing experiments.\n", + "\n", + "Our circuit has two qubits. \n", + "
    \n", + "
  • Apply Hadamard to the both qubits.\n", + "
  • Apply CNOT(first-qubit,second-qubit).\n", + "
  • Apply Hadamard to the both qubits.\n", + "
  • Measure the circuit.\n", + "
\n", + "\n", + "Iteratively initialize the qubits to $ \\ket{00} $, $ \\ket{01} $, $ \\ket{10} $, and $ \\ket{11} $.\n", + "\n", + "Execute your program 100 times for each iteration, and then check the outcomes for each iteration. \n", + "\n", + "Verify that the overall circuit implements CNOT(second-qubit,first-qubit)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "all_inputs=['00','01','10','11']\n", + "\n", + "for input in all_inputs:\n", + " qreg2 = QuantumRegister(2) # quantum register with 2 qubits\n", + " creg2 = ClassicalRegister(2) # classical register with 2 bits\n", + " mycircuit2 = QuantumCircuit(qreg2,creg2) # quantum circuit with quantum and classical registers\n", + " \n", + " #initialize the inputs\n", + " if input[0]=='1':\n", + " mycircuit2.x(qreg2[0]) # set the state of the first qubit to |1>\n", + " if input[1]=='1':\n", + " mycircuit2.x(qreg2[1]) # set the state of the second qubit to |1>\n", + "\n", + " # apply h-gate to both qubits\n", + " mycircuit2.h(qreg2[0])\n", + " mycircuit2.h(qreg2[1])\n", + "\n", + " # apply cx(first-qubit,second-qubit)\n", + " mycircuit2.cx(qreg2[0],qreg2[1])\n", + "\n", + " # apply h-gate to both qubits\n", + " mycircuit2.h(qreg2[0])\n", + " mycircuit2.h(qreg2[1])\n", + "\n", + " # measure both qubits\n", + " mycircuit2.measure(qreg2,creg2)\n", + " \n", + " # execute the circuit 100 times in the local simulator\n", + " job = execute(mycircuit2,Aer.get_backend('qasm_simulator'),shots=100)\n", + " counts = job.result().get_counts(mycircuit2)\n", + " for outcome in counts: # print the reverse of the outcomes\n", + " reverse_outcome = ''\n", + " for i in outcome:\n", + " reverse_outcome = i + reverse_outcome\n", + " print(\"our input is\",input,\"and\",reverse_outcome,\"is observed\",counts[outcome],\"times\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 3

\n", + "\n", + "Our task is to learn the behaviour of the following quantum circut by doing experiments.\n", + "\n", + "Our circuit has two qubits. \n", + "
    \n", + "
  • Apply CNOT(first-qubit,second-qubit).\n", + "
  • Apply CNOT(second-qubit,first-qubit).\n", + "
  • Apply CNOT(first-qubit,second-qubit).\n", + "
\n", + "\n", + "Iteratively initialize the qubits to $ \\ket{00} $, $ \\ket{01} $, $ \\ket{10} $, and $ \\ket{11} $.\n", + "\n", + "Execute your program 100 times for each iteration, and then check the outcomes for each iteration. \n", + "\n", + "Verify that the overall circuit swaps the values of the first and second qubits:\n", + "
    \n", + "
  • $\\ket{00} \\rightarrow \\ket{00} $
  • \n", + "
  • $\\ket{01} \\rightarrow \\ket{10} $
  • \n", + "
  • $\\ket{10} \\rightarrow \\ket{01} $
  • \n", + "
  • $\\ket{11} \\rightarrow \\ket{11} $
  • \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "all_inputs=['00','01','10','11']\n", + "\n", + "for input in all_inputs:\n", + " qreg3 = QuantumRegister(2) # quantum register with 2 qubits\n", + " creg3 = ClassicalRegister(2) # classical register with 2 bits\n", + " mycircuit3 = QuantumCircuit(qreg3,creg3) # quantum circuit with quantum and classical registers\n", + " \n", + " #initialize the inputs\n", + " if input[0]=='1':\n", + " mycircuit3.x(qreg3[0]) # set the value of the first qubit to |1>\n", + " if input[1]=='1':\n", + " mycircuit3.x(qreg3[1]) # set the value of the second qubit to |1>\n", + "\n", + " # apply cx(first-qubit,second-qubit)\n", + " mycircuit3.cx(qreg3[0],qreg3[1])\n", + " # apply cx(second-qubit,first-qubit)\n", + " mycircuit3.cx(qreg3[1],qreg3[0])\n", + " # apply cx(first-qubit,second-qubit)\n", + " mycircuit3.cx(qreg3[0],qreg3[1])\n", + " \n", + " mycircuit3.measure(qreg3,creg3)\n", + " \n", + " # execute the circuit 100 times in the local simulator\n", + " job = execute(mycircuit3,Aer.get_backend('qasm_simulator'),shots=100)\n", + " counts = job.result().get_counts(mycircuit3)\n", + " for outcome in counts: # print the reverse of the outcomes\n", + " reverse_outcome = ''\n", + " for i in outcome:\n", + " reverse_outcome = i + reverse_outcome\n", + " print(\"our input is\",input,\"and\",reverse_outcome,\"is observed\",counts[outcome],\"times\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B60_Superdense_Coding_Solution.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B60_Superdense_Coding_Solution.ipynb new file mode 100644 index 000000000..a63f51274 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B60_Superdense_Coding_Solution.ipynb @@ -0,0 +1,164 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution for Superdense Coding

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 1

\n", + "\n", + "Verify the correctness of the above protocol.\n", + "\n", + "For each pair of $ (a,b) \\in \\left\\{ (0,0), (0,1), (1,0),(1,1) \\right\\} $:\n", + "
    \n", + "
  • Create a quantum curcuit with two qubits: Asja's and Balvis' qubits.
  • \n", + "
  • Both are initially set to $ \\ket{0} $.
  • \n", + "
  • Apply h-gate (Hadamard) to the first qubit.
  • \n", + "
  • Apply cx-gate (CNOT) with parameters first-qubit and second-qubit.
  • \n", + "
\n", + "\n", + "They are separated now.\n", + "\n", + "
    \n", + "
  • If $ a $ is 1, then apply z-gate to the first qubit.
  • \n", + "
  • If $ b $ is 1, then apply x-gate (NOT) to the first qubit.
  • \n", + "
\n", + "\n", + "Asja sends her qubit to Balvis.\n", + "\n", + "
    \n", + "
  • Apply cx-gate (CNOT) with parameters first-qubit and second-qubit.
  • \n", + "
  • Apply h-gate (Hadamard) to the first qubit.
  • \n", + "
  • Measure both qubits, and compare the results with pair $ (a,b) $.
  • \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "all_pairs = ['00','01','10','11']\n", + "\n", + "for pair in all_pairs:\n", + "\n", + " # create a quantum curcuit with two qubits: Asja's and Balvis' qubits.\n", + " # both are initially set to |0>.\n", + " qreg = QuantumRegister(2) # quantum register with 2 qubits\n", + " creg = ClassicalRegister(2) # classical register with 2 bits\n", + " mycircuit = QuantumCircuit(qreg,creg) # quantum circuit with quantum and classical registers\n", + "\n", + " # apply h-gate (Hadamard) to the first qubit.\n", + " mycircuit.h(qreg[0])\n", + "\n", + " # apply cx-gate (CNOT) with parameters first-qubit and second-qubit.\n", + " mycircuit.cx(qreg[0],qreg[1])\n", + "\n", + " # they are separated now.\n", + "\n", + " # if a is 1, then apply z-gate to the first qubit.\n", + " if pair[0]=='1': \n", + " mycircuit.z(qreg[0])\n", + " \n", + " # if b is 1, then apply x-gate (NOT) to the first qubit.\n", + " if pair[1]=='1': \n", + " mycircuit.x(qreg[0])\n", + " \n", + " # Asja sends her qubit to Balvis.\n", + " \n", + " # apply cx-gate (CNOT) with parameters first-qubit and second-qubit.\n", + " mycircuit.cx(qreg[0],qreg[1])\n", + " \n", + " # apply h-gate (Hadamard) to the first qubit.\n", + " mycircuit.h(qreg[0])\n", + " \n", + " # measure both qubits\n", + " mycircuit.measure(qreg,creg)\n", + " \n", + " # compare the results with pair (a,b)\n", + " job = execute(mycircuit,Aer.get_backend('qasm_simulator'),shots=100)\n", + " counts = job.result().get_counts(mycircuit)\n", + " for outcome in counts:\n", + " reverse_outcome = ''\n", + " for i in outcome:\n", + " reverse_outcome = i + reverse_outcome\n", + " print(\"(a,b) is\",pair,\"and\",reverse_outcome,\"is observed\",counts[outcome],\"times\")\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B64_Phase_Kickback_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B64_Phase_Kickback_Solutions.ipynb new file mode 100644 index 000000000..c62bf4eba --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B64_Phase_Kickback_Solutions.ipynb @@ -0,0 +1,236 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Phase Kickback

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 1

\n", + "\n", + "Create a quantum circuit with two qubits.\n", + "\n", + "Set the state of the first qubit to $ \\ket{0} $.\n", + "\n", + "Set the state of the second qubit to $ \\ket{1} $.\n", + "\n", + "Apply Hadamard to both qubits.\n", + "\n", + "Apply CNOT operator, where the controller qubit is the first qubit and the target qubit is the second qubit.\n", + "\n", + "Apply Hadamard to both qubits.\n", + "\n", + "Measure the outcomes.\n", + "\n", + "We start in quantum state $ \\ket{01} $. What is the outcome?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "qreg1 = QuantumRegister(2) # quantum register with 2 qubits\n", + "creg1 = ClassicalRegister(2) # classical register with 2 bits\n", + "\n", + "mycircuit1 = QuantumCircuit(qreg1,creg1) # quantum circuit with quantum and classical registers\n", + "\n", + "# the first qubit is in |0>\n", + "\n", + "# set the second qubit to |1>\n", + "mycircuit1.x(qreg1[1]) # apply x-gate (NOT operator)\n", + "\n", + "# apply Hadamard to both qubits.\n", + "mycircuit1.h(qreg1[0])\n", + "mycircuit1.h(qreg1[1])\n", + "\n", + "# apply CNOT operator, where the controller qubit is the first qubit and the target qubit is the second qubit.\n", + "mycircuit1.cx(qreg1[0],qreg1[1])\n", + "\n", + "# apply Hadamard to both qubits.\n", + "mycircuit1.h(qreg1[0])\n", + "mycircuit1.h(qreg1[1])\n", + "\n", + "# measure both qubits\n", + "mycircuit1.measure(qreg1,creg1)\n", + "\n", + "# execute the circuit 100 times in the local simulator\n", + "\n", + "job = execute(mycircuit1,Aer.get_backend('qasm_simulator'),shots=100)\n", + "counts = job.result().get_counts(mycircuit1)\n", + "\n", + "# print the reverse of the outcome\n", + "for outcome in counts:\n", + " reverse_outcome = ''\n", + " for i in outcome:\n", + " reverse_outcome = i + reverse_outcome\n", + " print(\"We start in quantum state 01 and\",reverse_outcome,\"is observed\",counts[outcome],\"times\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2

\n", + "\n", + "Create a curcuit with 7 qubits.\n", + "\n", + "Set the states of the first six qubits to $ \\ket{0} $.\n", + "\n", + "Set the state of the last qubit to $ \\ket{1} $.\n", + "\n", + "Apply Hadamard operators to all qubits.\n", + "\n", + "Apply CNOT operator (first-qubit,last-qubit) \n", + "
\n", + "Apply CNOT operator (fourth-qubit,last-qubit)\n", + "
\n", + "Apply CNOT operator (fifth-qubit,last-qubit)\n", + "\n", + "Apply Hadamard operators to all qubits.\n", + "\n", + "Measure all qubits. \n", + "\n", + "For each CNOT operator, do we have phase-kickback affect?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "# Create a curcuit with 7 qubits.\n", + "n = 7\n", + "qreg2 = QuantumRegister(n) # quantum register with 7 qubits\n", + "creg2 = ClassicalRegister(n) # classical register with 7 bits\n", + "\n", + "mycircuit2 = QuantumCircuit(qreg2,creg2) # quantum circuit with quantum and classical registers\n", + "\n", + "# the first six qubits are already in |0>\n", + "\n", + "# set the last qubit to |1>\n", + "mycircuit2.x(qreg2[n-1]) # apply x-gate (NOT operator)\n", + "\n", + "# apply Hadamard to all qubits.\n", + "for i in range(n):\n", + " mycircuit2.h(qreg2[i])\n", + "\n", + "\n", + "# apply CNOT operator (first-qubit,last-qubit) \n", + "# apply CNOT operator (fourth-qubit,last-qubit) \n", + "# apply CNOT operator (fifth-qubit,last-qubit)\n", + "mycircuit2.cx(qreg2[0],qreg2[n-1])\n", + "mycircuit2.cx(qreg2[3],qreg2[n-1])\n", + "mycircuit2.cx(qreg2[4],qreg2[n-1])\n", + "\n", + "# apply Hadamard to all qubits.\n", + "for i in range(n):\n", + " mycircuit2.h(qreg2[i])\n", + "\n", + "# measure all qubits\n", + "mycircuit2.measure(qreg2,creg2)\n", + "\n", + "# execute the circuit 100 times in the local simulator\n", + "\n", + "job = execute(mycircuit2,Aer.get_backend('qasm_simulator'),shots=100)\n", + "counts = job.result().get_counts(mycircuit2)\n", + "\n", + "# print the reverse of the outcome\n", + "for outcome in counts:\n", + " reverse_outcome = ''\n", + " for i in outcome:\n", + " reverse_outcome = i + reverse_outcome\n", + " print(reverse_outcome,\"is observed\",counts[outcome],\"times\")\n", + " for i in range(len(reverse_outcome)-1):\n", + " print(\"the final value of the\",(i+1),\". qubit is\",reverse_outcome[i])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B88_Grovers_Search_Solutions.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B88_Grovers_Search_Solutions.ipynb new file mode 100644 index 000000000..ad8e00410 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze-solutions/B88_Grovers_Search_Solutions.ipynb @@ -0,0 +1,793 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 10, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solutions for Grover's Search

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 1

\n", + "\n", + "Design a quantum circuit with 4 qubits.\n", + "\n", + "Apply Hadamard to each qubit.\n", + "\n", + "Execute your circuit 1600 times.\n", + "\n", + "You should observe each basis state around 100 times.\n", + "\n", + "Reexecute your circuit 16000 times." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "qreg = QuantumRegister(4) # quantum register with 4 qubits\n", + "creg = ClassicalRegister(4) # classical register with 4 bits\n", + "mycircuit = QuantumCircuit(qreg,creg) # quantum circuit with quantum and classical registers\n", + "\n", + "# apply h-gate (Hadamard) to each qubit\n", + "for i in range(4):\n", + " mycircuit.h(qreg[i])\n", + "\n", + "# measure both qubits\n", + "mycircuit.measure(qreg,creg)\n", + " \n", + "# execute the circuit 1600 times, and print the outcomes\n", + "job = execute(mycircuit,Aer.get_backend('qasm_simulator'),shots=1600)\n", + "counts = job.result().get_counts(mycircuit)\n", + "for outcome in counts:\n", + " reverse_outcome = ''\n", + " for i in outcome:\n", + " reverse_outcome = i + reverse_outcome\n", + " print(reverse_outcome,\"is observed\",counts[outcome],\"times\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Task 2: Emulating Grover's search

\n", + "\n", + "For this task, you can use the methods given in notebook B80_Reflections.\n", + "\n", + "Set the value of $ k $ to 4. Then, the size of list is $ 2^k = 16 $.\n", + "\n", + "Pick the value of $ m $ as 3, the number of the marked elements.\n", + "\n", + "As described above, $ \\ket{u} = \\sqrt{\\frac{3}{16}} \\ket{u_{marked}} + \\sqrt{\\frac{13}{16}} \\ket{u_{unmarked}} $.\n", + "\n", + "Create a quantum circuit with single qubit.\n", + "\n", + "States $ \\ket{1} $ and $ \\ket{0} $ represents the quantum state $ \\ket{u_{marked}} $ and $ \\ket{u_{unmarked}}$, respectively.\n", + "\n", + "Then, $ \\ket{u} = \\sqrt{\\frac{13}{16}} \\ket{0} + \\sqrt{\\frac{3}{16}} \\ket{1} $.\n", + "\n", + "Determine the angle $ \\theta $, the angle between $ \\ket{u} $ and $ \\ket{0} $.\n", + "\n", + "Iterate Grover's search algorithm once by using your quantum circuit.\n", + "\n", + "For each reflection, use ry-gate (rotation).\n", + "
    \n", + "
  • Define a list to store all quantum states (with their labels) that will be visited.
  • \n", + "
  • Implement the first reflection on your qubit
  • \n", + "
  • Read the current quantum state and store it on your list
  • \n", + "
  • Implement the second reflection on your qubit
  • \n", + "
  • Read the current quantum state and store it on your list\n", + "
  • Draw all visited quantum states with their labels
  • \n", + "
  • Execute your circuit 100 times
  • \n", + "
\n", + "\n", + "Is this single iteration enough to observe state $ \\ket{1} $ more than state $ \\ket{0} $? " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Find angle theta ($\\theta$)

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# find the angle theta\n", + "\n", + "u2 = [(13/16)**0.5,(3/16)**0.5]\n", + "print(u2)\n", + "\n", + "from math import acos # acos is the inverse of function cosine\n", + "from math import pi \n", + "\n", + "def angle_between_two_quantum_states(quantum_state1,quantum_state2):\n", + " inner_product = quantum_state1[0] * quantum_state2[0] + quantum_state1[1] * quantum_state2[1]\n", + " return acos(inner_product) \n", + "\n", + "# angle between |u> and |0> \n", + "theta2 = angle_between_two_quantum_states(u2,[1,0])\n", + "print(theta2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

The previously used functions

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# COPY-PASTE the functions from the notebook \"B80_Reflections\"\n", + "\n", + "def amplitudes_of_a_quantum_state(quantum_circuit):\n", + " # import all necessary objects and methods for quantum circuits\n", + " from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + " \n", + " # the following code is used to get the quantum state of a quantum circuit\n", + " job = execute(quantum_circuit,Aer.get_backend('statevector_simulator'))\n", + " current_quantum_state=job.result().get_statevector(quantum_circuit) \n", + " \n", + " # now we read the real parts of the amplitudes\n", + " the_first_amplitude = current_quantum_state[0].real # amplitude of |0>\n", + " the_second_amplitude = current_quantum_state[1].real # amplitude of |1>\n", + " \n", + " return[the_first_amplitude,the_second_amplitude]\n", + "# end of function\n", + "\n", + "def visualize_quantum_states(quantum_states):\n", + " # import the useful tool for drawing figures in pythpn\n", + " from matplotlib.pyplot import plot, show, figure, Circle, axis, gca, annotate, arrow, text\n", + " # import the constant pi\n", + " from math import pi\n", + " \n", + " figure(figsize=(6,6), dpi=80) # size of the figure\n", + " gca().add_patch( Circle((0,0),1,color='black',fill=False) ) # draw the circle\n", + " # auxiliary points\n", + " plot(-1.3,0)\n", + " plot(1.3,0)\n", + " plot(0,1.3)\n", + " plot(0,-1.3)\n", + " # axes\n", + " arrow(0,0,1.1,0,head_width=0.04, head_length=0.08)\n", + " arrow(0,0,-1.1,0,head_width=0.04, head_length=0.08)\n", + " arrow(0,0,0,-1.1,head_width=0.04, head_length=0.08)\n", + " arrow(0,0,0,1.1,head_width=0.04, head_length=0.08)\n", + " \n", + " # draw all quantum states\n", + "\n", + " for quantum_state in quantum_states:\n", + " # show the quantum state as an arrow on the diagram\n", + " state_name = quantum_state[0] # label of the quantum state \n", + " x_value = quantum_state[1] # amplitude of |0>\n", + " y_value = quantum_state[2] # amplitude of |1>\n", + " # draw the arrow\n", + " arrow(0,0,x_value,y_value,head_width=0.04, head_length=0.04,color='blue')\n", + "\n", + " # the following code is used to write the name of quantum states\n", + " if x_value<0: text_x_value=x_value-0.1\n", + " else: text_x_value=x_value+0.05\n", + " if y_value<0: text_y_value=y_value-0.1\n", + " else: text_y_value=y_value+0.05 \n", + " text(text_x_value,text_y_value,state_name)\n", + "\n", + " show() # show the diagram\n", + "# end of function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

One iteration of Grover's search algorithm

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "\n", + "all_visited_quantum_states2 =[]\n", + "\n", + "\n", + "qreg2 = QuantumRegister(1) # quantum register with 1 qubit\n", + "creg2 = ClassicalRegister(1) # classical register with 1 bit\n", + "mycircuit2 = QuantumCircuit(qreg2,creg2) # quantum circuit with quantum and classical registers\n", + "\n", + "\n", + "# set the qubit to |u>\n", + "# rotate by theta2\n", + "# do not forget to multiply it by 2\n", + "mycircuit2.ry(2*theta2,qreg2[0])\n", + "\n", + "# read and store the current quantum state\n", + "[x,y] = amplitudes_of_a_quantum_state(mycircuit2)\n", + "all_visited_quantum_states2.append(['u',x,y])\n", + "\n", + "\n", + "# this is (-2*theta2) in the first iteration\n", + "rotation_angle_for_the_first_reflection2 = -2 * theta2\n", + "# this is always (2*theta2) more than (-1*rotation_angle_for_the_first_reflection2)\n", + "rotation_angle_for_the_second_reflection2 = (2*theta2) + (-1*rotation_angle_for_the_first_reflection2)\n", + "\n", + "# the first reflection: rotate by rotation_angle_for_the_first_reflection2\n", + "mycircuit2.ry(2*rotation_angle_for_the_first_reflection2,qreg2[0])\n", + "# read and store the current quantum state\n", + "[x,y] = amplitudes_of_a_quantum_state(mycircuit2)\n", + "all_visited_quantum_states2.append(['r',x,y]) # the label is r (reflected state)\n", + "\n", + "# the second reflection: rotate by rotation_angle_for_the_second_reflection2\n", + "mycircuit2.ry(2*rotation_angle_for_the_second_reflection2,qreg2[0])\n", + "# read and store the current quantum state\n", + "[x,y] = amplitudes_of_a_quantum_state(mycircuit2)\n", + "all_visited_quantum_states2.append(['n',x,y]) # the label is n (new state)\n", + " \n", + " \n", + "visualize_quantum_states(all_visited_quantum_states2)\n", + " \n", + " \n", + "# measure both qubits\n", + "mycircuit2.measure(qreg2,creg2)\n", + " \n", + " \n", + "# execute the circuit 100 times, and print the outcomes\n", + "job = execute(mycircuit2,Aer.get_backend('qasm_simulator'),shots=100)\n", + "counts2 = job.result().get_counts(mycircuit2)\n", + "for outcome in counts2:\n", + " reverse_outcome = ''\n", + " for i in outcome:\n", + " reverse_outcome = i + reverse_outcome\n", + " print(reverse_outcome,\"is observed\",counts2[outcome],\"times\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(all_visited_quantum_states2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "

Taks 3

\n", + "\n", + "For this task, you can use the methods given in notebook B80_Reflections .\n", + "\n", + "Set the value of $ k $ to 6. Then, the size of list is $ 2^k = 64 $.\n", + "\n", + "Pick the value of $ m $ as 1, the number of the marked elements.\n", + "\n", + "As described above, $ \\ket{u} = \\sqrt{\\frac{1}{64}} \\ket{u_{marked}} + \\sqrt{\\frac{63}{64}} \\ket{u_{unmarked}} $.\n", + "\n", + "Create a quantum circuit with single qubit.\n", + "\n", + "States $ \\ket{1} $ and $ \\ket{0} $ represents the quantum state $ \\ket{u_{marked}} $ and $ \\ket{u_{unmarked}}$, respectively.\n", + "\n", + "Then, $ \\ket{u} = \\sqrt{\\frac{63}{64}} \\ket{0} + \\sqrt{\\frac{1}{64}} \\ket{1} $.\n", + "\n", + "Determine the angle $ \\theta $, the angle between $ \\ket{u} $ and $ \\ket{0} $.\n", + "\n", + "Iterate Grover's search algorithm three times by using your quantum circuit.\n", + "\n", + "For each reflection, use ry-gate (rotation).\n", + "
    \n", + "
  • Define a list to store all quantum states (with their labels) that will be visited.
  • \n", + "
  • Iterate 3 times:\n", + "
      \n", + "
    • Implement the first reflection on your qubit
    • \n", + "
    • Read the current quantum state and store it on your list
    • \n", + "
    • Implement the second reflection on your qubit
    • \n", + "
    • Read the current quantum state and store it on your list
    • \n", + "
  • \n", + "
  • Draw all visited quantum states with their labels
  • \n", + "
  • Execute your circuit 100 times
  • \n", + "
\n", + "\n", + "Is 3 iterations enough to observe state $ \\ket{1} $ more than state $ \\ket{0} $?\n", + "\n", + "Try 4, 5, 6, 7, 8, 9, and 10 iterations.\n", + "\n", + "What is the best iteration number?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Find angle theta ($\\theta$)

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# find the angle theta\n", + "\n", + "u3 = [(63/64)**0.5,(1/64)**0.5]\n", + "print(u3)\n", + "\n", + "from math import acos # acos is the inverse of function cosine\n", + "from math import pi \n", + "\n", + "def angle_between_two_quantum_states(quantum_state1,quantum_state2):\n", + " inner_product = quantum_state1[0] * quantum_state2[0] + quantum_state1[1] * quantum_state2[1]\n", + " return acos(inner_product) \n", + "\n", + "# angle between |u> and |0> \n", + "theta3 = angle_between_two_quantum_states(u3,[1,0])\n", + "print(theta3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

The previously used functions

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# COPY-PASTE the functions from the notebook \"B80_Reflections\"\n", + "\n", + "def amplitudes_of_a_quantum_state(quantum_circuit):\n", + " # import all necessary objects and methods for quantum circuits\n", + " from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + " \n", + " # the following code is used to get the quantum state of a quantum circuit\n", + " job = execute(quantum_circuit,Aer.get_backend('statevector_simulator'))\n", + " current_quantum_state=job.result().get_statevector(quantum_circuit) \n", + " \n", + " # now we read the real parts of the amplitudes\n", + " the_first_amplitude = current_quantum_state[0].real # amplitude of |0>\n", + " the_second_amplitude = current_quantum_state[1].real # amplitude of |1>\n", + " \n", + " return[the_first_amplitude,the_second_amplitude]\n", + "# end of function\n", + "\n", + "def visualize_quantum_states(quantum_states):\n", + " # import the useful tool for drawing figures in pythpn\n", + " from matplotlib.pyplot import plot, show, figure, Circle, axis, gca, annotate, arrow, text\n", + " # import the constant pi\n", + " from math import pi\n", + " \n", + " figure(figsize=(6,6), dpi=80) # size of the figure\n", + " gca().add_patch( Circle((0,0),1,color='black',fill=False) ) # draw the circle\n", + " # auxiliary points\n", + " plot(-1.3,0)\n", + " plot(1.3,0)\n", + " plot(0,1.3)\n", + " plot(0,-1.3)\n", + " # axes\n", + " arrow(0,0,1.1,0,head_width=0.04, head_length=0.08)\n", + " arrow(0,0,-1.1,0,head_width=0.04, head_length=0.08)\n", + " arrow(0,0,0,-1.1,head_width=0.04, head_length=0.08)\n", + " arrow(0,0,0,1.1,head_width=0.04, head_length=0.08)\n", + " \n", + " # draw all quantum states\n", + "\n", + " for quantum_state in quantum_states:\n", + " # show the quantum state as an arrow on the diagram\n", + " state_name = quantum_state[0] # label of the quantum state \n", + " x_value = quantum_state[1] # amplitude of |0>\n", + " y_value = quantum_state[2] # amplitude of |1>\n", + " # draw the arrow\n", + " arrow(0,0,x_value,y_value,head_width=0.04, head_length=0.04,color='blue')\n", + "\n", + " # the following code is used to write the name of quantum states\n", + " if x_value<0: text_x_value=x_value-0.1\n", + " else: text_x_value=x_value+0.05\n", + " if y_value<0: text_y_value=y_value-0.1\n", + " else: text_y_value=y_value+0.05 \n", + " text(text_x_value,text_y_value,state_name)\n", + "\n", + " show() # show the diagram\n", + "# end of function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Five iterations of Grover's search algorithm

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "\n", + "all_visited_quantum_states3 =[]\n", + "\n", + "\n", + "qreg3 = QuantumRegister(1) # quantum register with 1 qubit\n", + "creg3 = ClassicalRegister(1) # classical register with 1 bit\n", + "mycircuit3 = QuantumCircuit(qreg3,creg3) # quantum circuit with quantum and classical registers\n", + "\n", + "# set the qubit to |u>\n", + "# rotate by theta3\n", + "# do not forget to multiply it by 2\n", + "mycircuit3.ry(2*theta3,qreg3[0])\n", + "\n", + "# read and store the current quantum state\n", + "[x,y] = amplitudes_of_a_quantum_state(mycircuit3)\n", + "all_visited_quantum_states3.append(['u',x,y])\n", + "\n", + "# this is -2 * theta3 in the first iteration\n", + "rotation_angle_for_the_first_reflection3 = -2 * theta3\n", + "# this is always (2*theta3) more than (-1*rotation_angle_for_the_first_reflection3)\n", + "rotation_angle_for_the_second_reflection3 = (2*theta3) + (-1*rotation_angle_for_the_first_reflection3)\n", + "\n", + "for i in range(3): # three iterations # later check 4, 5, 6, 7, 8, 9, and 10\n", + "\n", + " # the first reflection: rotate by rotation_angle_for_the_first_reflection3\n", + " mycircuit3.ry(2*rotation_angle_for_the_first_reflection3,qreg3[0])\n", + " # read and store the current quantum state\n", + " [x,y] = amplitudes_of_a_quantum_state(mycircuit3)\n", + " all_visited_quantum_states3.append(['r'+str(i+1),x,y]) # the labels are r1, r2, ... (reflected states)\n", + "\n", + " # the second reflection: rotate by rotation_angle_for_the_second_reflection3\n", + " mycircuit3.ry(2*rotation_angle_for_the_second_reflection3,qreg3[0])\n", + " # read and store the current quantum state\n", + " [x,y] = amplitudes_of_a_quantum_state(mycircuit3)\n", + " all_visited_quantum_states3.append(['n'+str(i+1),x,y]) # the labels are n1, n2, ... (new states)\n", + " \n", + " # this will be increased by (-4*theta2) after each iteration\n", + " rotation_angle_for_the_first_reflection3 = rotation_angle_for_the_first_reflection3 -4* theta3\n", + " # this is always (2*theta2) more than (-1*rotation_angle_for_the_first_reflection3)\n", + " rotation_angle_for_the_second_reflection3 = (2*theta3) + (-1*rotation_angle_for_the_first_reflection3)\n", + "# end of iterations\n", + "\n", + "visualize_quantum_states(all_visited_quantum_states3)\n", + " \n", + "# measure both qubits\n", + "mycircuit3.measure(qreg3,creg3)\n", + " \n", + "# execute the circuit 100 times, and print the outcomes\n", + "job = execute(mycircuit3,Aer.get_backend('qasm_simulator'),shots=100)\n", + "counts3 = job.result().get_counts(mycircuit3)\n", + "for outcome in counts3:\n", + " reverse_outcome = ''\n", + " for i in outcome:\n", + " reverse_outcome = i + reverse_outcome\n", + " print(reverse_outcome,\"is observed\",counts3[outcome],\"times\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(all_visited_quantum_states3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "

Task 4

\n", + "\n", + "Repeat Task 3 for $ k = 8 $ and $ m = 1 $, but algorithmically find the best iteration number, say $B$. \n", + "\n", + "You may execute your circuit 1000 times to have more reliable results.\n", + "
\n", + " Hint:\n", + "\n", + "For each iteration number, you may check how many times the state $ \\ket{1} $ is observed. \n", + "

\n", + "This value should be at least 500.\n", + "\n", + "And, when this value starts to decrease, you may announce the previous iteration number as the best. \n", + "
\n", + "
\n", + "Our solution outputs $ B $ as 12 in every execution." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Solution

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Find angle theta ($\\theta$)

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# find the angle theta\n", + "# k=8, 2^k = 256\n", + "\n", + "u4 = [(255/256)**0.5,(1/256)**0.5]\n", + "print(u4)\n", + "\n", + "from math import acos # acos is the inverse of function cosine\n", + "from math import pi \n", + "\n", + "def angle_between_two_quantum_states(quantum_state1,quantum_state2):\n", + " inner_product = quantum_state1[0] * quantum_state2[0] + quantum_state1[1] * quantum_state2[1]\n", + " return acos(inner_product) \n", + "\n", + "# angle between |u> and |0> \n", + "theta4 = angle_between_two_quantum_states(u4,[1,0])\n", + "print(theta4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

The previously used functions

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# COPY-PASTE the functions from the notebook \"B80_Reflections\"\n", + "\n", + "def amplitudes_of_a_quantum_state(quantum_circuit):\n", + " # import all necessary objects and methods for quantum circuits\n", + " from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + " \n", + " # the following code is used to get the quantum state of a quantum circuit\n", + " job = execute(quantum_circuit,Aer.get_backend('statevector_simulator'))\n", + " current_quantum_state=job.result().get_statevector(quantum_circuit) \n", + " \n", + " # now we read the real parts of the amplitudes\n", + " the_first_amplitude = current_quantum_state[0].real # amplitude of |0>\n", + " the_second_amplitude = current_quantum_state[1].real # amplitude of |1>\n", + " \n", + " return[the_first_amplitude,the_second_amplitude]\n", + "# end of function\n", + "\n", + "def visualize_quantum_states(quantum_states):\n", + " # import the useful tool for drawing figures in pythpn\n", + " from matplotlib.pyplot import plot, show, figure, Circle, axis, gca, annotate, arrow, text\n", + " # import the constant pi\n", + " from math import pi\n", + " \n", + " figure(figsize=(6,6), dpi=80) # size of the figure\n", + " gca().add_patch( Circle((0,0),1,color='black',fill=False) ) # draw the circle\n", + " # auxiliary points\n", + " plot(-1.3,0)\n", + " plot(1.3,0)\n", + " plot(0,1.3)\n", + " plot(0,-1.3)\n", + " # axes\n", + " arrow(0,0,1.1,0,head_width=0.04, head_length=0.08)\n", + " arrow(0,0,-1.1,0,head_width=0.04, head_length=0.08)\n", + " arrow(0,0,0,-1.1,head_width=0.04, head_length=0.08)\n", + " arrow(0,0,0,1.1,head_width=0.04, head_length=0.08)\n", + " \n", + " # draw all quantum states\n", + "\n", + " for quantum_state in quantum_states:\n", + " # show the quantum state as an arrow on the diagram\n", + " state_name = quantum_state[0] # label of the quantum state \n", + " x_value = quantum_state[1] # amplitude of |0>\n", + " y_value = quantum_state[2] # amplitude of |1>\n", + " # draw the arrow\n", + " arrow(0,0,x_value,y_value,head_width=0.04, head_length=0.04,color='blue')\n", + "\n", + " # the following code is used to write the name of quantum states\n", + " if x_value<0: text_x_value=x_value-0.1\n", + " else: text_x_value=x_value+0.05\n", + " if y_value<0: text_y_value=y_value-0.1\n", + " else: text_y_value=y_value+0.05 \n", + " text(text_x_value,text_y_value,state_name)\n", + "\n", + " show() # show the diagram\n", + "# end of function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Five iterations of Grover's search algorithm

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "\n", + "how_many_times_state_one_observed = 0\n", + "\n", + "decrease = False\n", + "\n", + "number_of_iteration = 1\n", + "\n", + "while decrease == False:\n", + "\n", + " qreg4 = QuantumRegister(1) # quantum register with 1 qubit\n", + " creg4 = ClassicalRegister(1) # classical register with 1 bit\n", + " mycircuit4 = QuantumCircuit(qreg4,creg4) # quantum circuit with quantum and classical registers\n", + "\n", + " # set the qubit to |u>\n", + " # rotate by theta4\n", + " # do not forget to multiply it by 2\n", + " mycircuit4.ry(2*theta4,qreg4[0])\n", + "\n", + "\n", + " # this is -2 * theta4 in the first iteration\n", + " rotation_angle_for_the_first_reflection4 = -2 * theta4\n", + " # this is always (2*theta4) more than (-1*rotation_angle_for_the_first_reflection4)\n", + " rotation_angle_for_the_second_reflection4 = (2*theta4) + (-1*rotation_angle_for_the_first_reflection4)\n", + "\n", + " for i in range(number_of_iteration):\n", + " \n", + " # the first reflection: rotate by rotation_angle_for_the_first_reflection4\n", + " mycircuit4.ry(2*rotation_angle_for_the_first_reflection4,qreg4[0])\n", + "\n", + " # the second reflection: rotate by rotation_angle_for_the_second_reflcetion4\n", + " mycircuit4.ry(2*rotation_angle_for_the_second_reflection4,qreg4[0])\n", + " \n", + " # this will be increased by (-4*theta4) after each iteration\n", + " rotation_angle_for_the_first_reflection4 = rotation_angle_for_the_first_reflection4 -4* theta4\n", + " # this is always (2*theta4) more than (-1*rotation_angle_for_the_first_reflection4)\n", + " rotation_angle_for_the_second_reflection4 = (2*theta4) + (-1*rotation_angle_for_the_first_reflection4)\n", + " # end of iterations\n", + "\n", + " \n", + " # measure both qubits\n", + " mycircuit4.measure(qreg4,creg4)\n", + " \n", + " # execute the circuit 1000 times, and print the outcomes\n", + " job = execute(mycircuit4,Aer.get_backend('qasm_simulator'),shots=1000)\n", + " counts4 = job.result().get_counts(mycircuit4)\n", + " print(number_of_iteration,counts4) # print the outcomes\n", + " for outcome in counts4:\n", + " if outcome == '1': \n", + " # how_many_times_state_one_observed is more than 500 and has a less value than the previous one\n", + " # then it is time to STOP\n", + " if how_many_times_state_one_observed> 500 and how_many_times_state_one_observed > counts4[outcome]: \n", + " print(\"B is\",number_of_iteration-1)\n", + " decrease = True\n", + " else: # we should continue\n", + " how_many_times_state_one_observed = counts4[outcome] # update how_many_times_state_one_observed\n", + " number_of_iteration = number_of_iteration + 1 # increase number_of_iteration" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B01_ Acknowledgements.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B01_ Acknowledgements.ipynb new file mode 100644 index 000000000..d1ecb9ef5 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B01_ Acknowledgements.ipynb @@ -0,0 +1,63 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Acknowledgements

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "

QuSoft@Riga: Bronze

\n", + "\n", + "

\"Your First Step to Quantum Programming\"

\n", + "\n", + "QuSoft Riga has been preparing tutorials to teach programming quantum computers. \n", + "\n", + "Our first tutorial is Bronze. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We thank to Katrina Kizenbaha from Riga TechGirls for her revisions on our notebooks on python.\n", + "\n", + "We thank to Martins Kalis (QuSoft@Riga) for his technical comments on python, qiskit, and our notebooks.\n", + "\n", + "We thank to Maksims Dimitrijevs (QuSoft@Riga) for his careful reading and corrections on our notebooks.\n", + "\n", + "We thank to QuSoft members Martins Kalis, Maksims Dimitrijevs, Aleksejs Naumovs Andis Draguns, and Matiss Apinis for their help and support.\n", + "\n", + "We thank to the students (DF@LU) attending QuSoft's meetings on each Friday (Fall 2018) for their comments while working with our notebooks.\n", + "
" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B02_cells_in_notebook.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B02_cells_in_notebook.ipynb new file mode 100644 index 000000000..8b0c28a7c --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B02_cells_in_notebook.ipynb @@ -0,0 +1,144 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# A jupyter notebook is composed by one or more cells.\n", + "# A cell is used to write and execute your codes.\n", + "# A cell is also used to write descriptions, notes, formulas, etc.\n", + "# You can format your descriptions by using HTML or LaTex codes.\n", + "# During this tutorial, you are expected to write only python codes.\n", + "# Interested readers may also use HTML and LaTex, but it is not necesary to complete this tutorial. \n", + "\n", + "#\n", + "# We explain basic usage of cells in Jupyter notebooks here\n", + "#\n", + "\n", + "# This is the first cell in this notebook.\n", + "# You can write Python code here, \n", + "# and then EXECUTE/RUN it by\n", + "# 1) pressing SHIFT+ENTER\n", + "# 2) clicking \"Run\" on the menu\n", + "\n", + "\n", + "# here is a few lines of python codes\n", + "\n", + "print(\"hello world\")\n", + "str=\"*\"\n", + "for i in range(5):\n", + " print(str)\n", + " str+=\"*\"\n", + "\n", + "# after executing this cell, you will see the outcomes immedeately after this cell\n", + "# you may change the range above and re-run this cell\n", + "\n", + "# after executing this cell, you can continue with the next cell" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# This is the second cell.\n", + "#\n", + "# When you double click after the last cell, a new cell appears automatically.\n", + "# It automatically happens when you execute the last cell as well. \n", + "#\n", + "# By using menu item \"Insert\", you may also add a new cell before or after the selected cell.\n", + "# When a cell is selected, you may delete it by using menu item \"Edit\".\n", + "#\n", + "# As you may notice, there are other editing options under \"Edit\",\n", + "# for example, copy/cut-paste cells and split-merge cells." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the third cell.
\n", + "There are four types of cells.
\n", + "The first type is called \"Code\", which is the default type, as the above two cells.
\n", + "This is a second type cell called \"Markdown\", which is used for explanatory texts.
\n", + "The type of any cell is shown on the toolbar under the menu bar (right-side). You can change the type of a cell from this pulldown menu.
\n", + "You can also determine the type by clicking on the menu item \"Cell\", and then the subitem \"Cell Type\".
\n", + "\n", + "You can write HTML and LaTex code here.
\n", + "Here we have very basic HTML codes: making the texts bold, italic, or underline, and inserting line breaks.\n", + "\n", + "By double clicking on this cell, you can see the code.
\n", + "By execucting this cell, you see the result text." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " This is the fourth cell.\n", + "
\n", + "Its type is also \"Markdown\".\n", + "\n", + "LaTex is used to show mathematical expressions, formulas, etc. \n", + "\n", + "For example, $ x^2 + y ^ 2 = \\frac{4}{9} $, $ \\sum_{i=1}^n (i+2)^{3} $, or $ \\left( \\begin{array}{rr} 1 & 0 & -1 \\\\ 2 & -2 & 0 \\\\ 3 & -1 & -2 \\end{array} \\right) $.\n", + "\n", + "By double clicking on this cell, you can see the code.
\n", + "By executing/running this cell, you can see the result text." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Self Practice

\n", + "
    \n", + "
  1. Please insert a new cell between this first and second cells. \n", + "
      \n", + "
    • Change its type to \"Markdown\".
    • \n", + "
    • Write down \"This is the 1.5th cell\" and some random text (Hello world, your name and surname, etc.).
    • \n", + "
    • Run it and check the result.
    • \n", + "
    \n", + "
  2. \n", + "
  3. Please insert a new cell between two markdown cells above.\n", + "
      \n", + "
    • Write as a comment \"# This is the 3.5th cell\".\n", + "
    • Use it as a \"Code\" cell. (By default, it is a code cell.)
    • \n", + "
    • Write a single line python code, e.g., print(\"hello world :-\")
    • \n", + "
    • Run your code.
    • \n", + "
    \n", + "
  4. \n", + "
  5. Cut the cell having the text \"This is the 1.5th cell\", and insert (paste) it after the cell having the text \"This is the 3.5th cell\".
  6. \n", + "
  7. Cut these two cells (\"1.5th and 3.5th\") together, and insert (paste) them as the top cells.
  8. \n", + "
  9. Delete the cell having the text \"This is the 1.5th cell\".
  10. \n", + "
  11. Reposition the cell having the text \"This is the 3.5th cell\" to its previous place.
  12. \n", + "
\n", + " " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B04_hello_from_quantum_world.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B04_hello_from_quantum_world.ipynb new file mode 100644 index 000000000..2840b4698 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B04_hello_from_quantum_world.ipynb @@ -0,0 +1,535 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 02, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Hello From Quantum World

\n", + "\n", + "This is our test file. \n", + "\n", + "Please run each cell one by one." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Sqaure brackets on the left sides of the code cells

\n", + "\n", + "
    \n", + "
  • Each pair of the brackets shows the execution counter of the cell.
  • \n", + "
  • If the cell has not been executed, the inside of the brackets is empty.
  • \n", + "
  • When the code cell is still running, there appears a single star inside the brackets [*].
  • \n", + "
  • When the execution is finished, there appears a number inside the brackets [number].
  • \n", + "
  • A cell can be executed many times. Each time it takes a new number (in increasing order).
  • \n", + "
\n", + "\n", + "The execution of a cell may take a few miliseconds, a few seconds, a few minutes, or much longer time.\n", + "\n", + " Therefore, you may not see any outcome until [*] is changed to [number]." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Python Test

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# I am a comment in python\n", + "\n", + "print(\"Hello From Quantum World :-)\")\n", + "\n", + "# please run me" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Quantum Circuit Test

\n", + "\n", + "Our quantum programs are designed as quantum curcits. \n", + "\n", + "Explanations will appear in the main tutorial.\n", + "\n", + "

We create a very simple quantum circuit

\n", + "\n", + "Please run the cell below, and wait until the execution is completed.\n", + "\n", + "Remark that we call a function or an object from a module in python as\n", + " \n", + "from module-name import function-name\n", + " \n", + "from module-name import object-name\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from random import randrange\n", + "\n", + "# Create my circuit and register objects\n", + "qreg = QuantumRegister(2) # my quantum register\n", + "creg = ClassicalRegister(2) # my classical register \n", + "circuit = QuantumCircuit(qreg,creg) # my quantum circuit\n", + "\n", + "# let's apply a Hadamard gate to the first qubit\n", + "\n", + "circuit.h(qreg[0])\n", + "\n", + "# let's set the second qubit to |1>\n", + "circuit.x(qreg[1])\n", + "\n", + "# let's apply CNOT(first_qubit,second_qubit)\n", + "circuit.cx(qreg[0],qreg[1])\n", + "\n", + "# let's measure the both qubits\n", + "circuit.measure(qreg,creg)\n", + "\n", + "print(\"The execution was completed, and the circuit was created :)\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

We execute the circuit (our program) 1024 times in the local simulator

\n", + "\n", + "Each execution may have a different outcome (?).\n", + "\n", + "In our simple program, we expect to observe either 01 or 10 as the outcome in a single execution. \n", + "\n", + "We print the measurement results. \n", + "\n", + "Thus, we will see how many times '01' is observed and how many times '10' is observed.\n", + "\n", + "You may execute this cell a few times, and check the outcomes in each case." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## execute the circuit 100 times\n", + "job = execute(circuit,Aer.get_backend('qasm_simulator'),shots=1024)\n", + "# get the result\n", + "counts = job.result().get_counts(circuit)\n", + "print(counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Draw the circuit

\n", + "\n", + "We can draw our circuit. \n", + "\n", + "If the circuit does not appear in the first run, please re-run the cell." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "# draw the overall circuit \n", + "drawer(circuit)\n", + "# re-execute me if you DO NOT see the circuit diagram" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

IBMQ Test

\n", + "\n", + " The remaining part requires internet connection.\n", + "\n", + "We will execute our test circuit on IBM simulator, and then on one of IBM real qauntum computers.\n", + "\n", + " Please wait the execution of each cell to be completed, before executing the next cell." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Save your API on the disk

\n", + "\n", + "Please write YOUR IBM API TOKEN in the following cell, and then run the cell.\n", + "\n", + "(The instruction is given at the end of section \"Testing: First Program\" in the file bronze-start.html\n", + "\n", + "Once your YOUR IBM API TOKEN is saved on the disk, it can be directly used later." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import IBMQ\n", + "\n", + "IBMQ.save_account('write YOUR IBM API TOKEN here')\n", + "\n", + "# Then, execute this cell" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

See the stored account(s)

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "IBMQ.stored_accounts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Load our account(s)

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "IBMQ.load_accounts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

See the active account(s)

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "IBMQ.active_accounts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

See available backends

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "IBMQ.backends()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

See the currently operational real quantum computer(s)

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "IBMQ.backends(operational=True, simulator=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

See the least busy real quantum computer

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit.backends.ibmq import least_busy\n", + "least_busy(IBMQ.backends(simulator=False))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

IBMQ simulator

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Use the simulator as backend

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "backend = least_busy(IBMQ.backends(simulator=True))\n", + "\n", + "backend.name()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Create a job for the backend

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import compile\n", + "\n", + "qobj = compile(circuit, backend=backend, shots=1024)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Execute this job on the simulator

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "job = backend.run(qobj)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Check the result

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = job.result()\n", + "counts = result.get_counts()\n", + "print(counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

IBMQ real quantum computers (Optional)

\n", + "\n", + "Please read the following part to see IBM's policy for usage for the prototype real quantum computers. [accessed on October 28, 2018]\n", + "

\n", + "
\n", + " Frequently Asked Questions\n", + "
\n", + "https://quantumexperience.ng.bluemix.net/proxy/tutorial/full-user-guide/000-FAQ/000-Frequently_Asked_Questions.html\n", + "\n", + "How many experiments can I run?\n", + "\n", + "You can run as many experiments as you have Units to run; each experiment execution requires between 3 and 5 Units. No Units are required to perform simulations or to recall results of an experiment that was run previously.\n", + "\n", + "What happens when I run out of Units?\n", + "\n", + "You can still run simulations or recall the result of the experiments that have been run previously, but you must wait for the Units to replenish, which happens either once your execution has run off the queue, or 24 hours, whichever is greater.\n", + "
\n", + "\n", + "You can check your Units in your IBM Q Experience account (My Account > Advanced). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Use the least busy real machine as backend

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "backend_real = least_busy(IBMQ.backends(simulator=False))\n", + "\n", + "backend_real.name()\n", + "\n", + "backend_real.status()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Execute the same job on a real machine

\n", + "\n", + "Depending on the number of pending jobs, it might take for a while to execute our job on the real machine.\n", + "\n", + " If you do not have enough Units, you should wait for 24 hours to execute your quantum program on a real machine. \n", + "\n", + " But, this would not be a problem to complete Bronze, because we use the local simulator for our tasks. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "qobj_real = compile(circuit, backend=backend_real, shots=1024)\n", + "\n", + "job_real = backend_real.run(qobj_real)\n", + "\n", + "job_real.queue_position()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Check the result

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result_real = job_real.result()\n", + "counts_real = result_real.get_counts()\n", + "print(counts_real)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " You may finish this notebook before getting the outcomes, if it seems to take long time.\n", + "\n", + "You may observe more than two outcomes, different than the simulators. \n", + "\n", + "The expected outcomes '01' and '10' can still be observed more frequently, but we may also observe the unexpected outcomes '00' and '11'. Because, even after a single operation, the prototype quantum computers introduce some errors." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B06_Python_Quick_Reference.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B06_Python_Quick_Reference.ipynb new file mode 100644 index 000000000..51d166c53 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B06_Python_Quick_Reference.ipynb @@ -0,0 +1,789 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 09, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Python: Quick Reference

\n", + "
\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Variables

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "number = 5 # integer\n", + "real = -3.4 # float\n", + "\n", + "name = 'Asja' # string\n", + "surname = \"Sarkana\" # string\n", + "\n", + "boolean1 = True # Boolean \n", + "boolean1 = False # Boolean " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Arithmetic operators

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Basic operators

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = 13\n", + "b = 5\n", + "print(\"a =\",a)\n", + "print(\"b =\",b)\n", + "print()\n", + "\n", + "# basics operators\n", + "print(\"a + b =\",a+b)\n", + "print(\"a - b =\",a-b)\n", + "print(\"a * b =\",a*b)\n", + "print(\"a / b =\",a/b)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Integer division and modulus operators

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = 13\n", + "b = 5\n", + "print(\"a =\",a)\n", + "print(\"b =\",b)\n", + "print()\n", + "\n", + "# integer division\n", + "print(\"a//b =\",a//b)\n", + "\n", + "# modulus operator\n", + "print(\"a mod b =\",a % b)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Exponent operator

\n", + "\n", + "number\\*\\*exponent" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "b = 5\n", + "print(\"b =\",b)\n", + "print()\n", + "\n", + "print(\"b*b =\",b**2)\n", + "print(\"b*b*b =\",b**3)\n", + "print(\"sqrt(b)=\",b**0.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Objects

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Lists

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# list\n", + "mylist = [10,8,6,4,2] \n", + "\n", + "print(mylist)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Tuple

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# tuple\n", + "mytuple=(1,4,5,'Asja') \n", + "\n", + "print(mytuple)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Dictionary

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# dictionary\n", + "mydictionary = {\n", + " 'name' : \"Asja\",\n", + " 'surname':'Sarkane',\n", + " 'age': 23\n", + "}\n", + "\n", + "print(mydictionary)\n", + "\n", + "print(mydictionary['surname'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

List of the other objects or variables

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# list of the other objects or variables\n", + "list_of_other_objects =[\n", + " mylist,\n", + " mytuple,\n", + " 3,\n", + " \"Asja\",\n", + " mydictionary\n", + "]\n", + "\n", + "print(list_of_other_objects)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Size of an object

\n", + "\n", + "We use the method \"len()\" that takes an object as the input." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# length of a string\n", + "print(len(\"Asja Sarkane\"))\n", + "\n", + "# size of a list\n", + "print(len([1,2,3,4]))\n", + "\n", + "# size of a dictionary\n", + "mydictionary = { 'name' : \"Asja\", 'surname':'Sarkane', 'age': 23}\n", + "print(len(mydictionary))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Loops

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

While-loop

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "i = 10\n", + "while i>0: # while condition(s):\n", + " print(i)\n", + " i = i - 1 " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

For-loop

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for i in range(10): # i is in [0,1,...,9]\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for i in range(-5,6): # i is in [-5,-4,...,0,...,4,5]\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for i in range(0,23,4): # i is in [0,4,8,12,16,20]\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for i in [3,8,-5,11]: \n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for i in \"Sarkane\":\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# dictionary\n", + "mydictionary = {\n", + " 'name' : \"Asja\",\n", + " 'surname':'Sarkane',\n", + " 'age': 23,\n", + "}\n", + "\n", + "for key in mydictionary:\n", + " print(\"key is\",key,\"and its value is\",mydictionary[key])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Conditionals

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for a in range(4,7):\n", + " \n", + " # if condition(s)\n", + " if a<5: \n", + " print(a,\"is less than 5\")\n", + " \n", + " # elif conditions(s)\n", + " elif a==5: \n", + " print(a,\"is equal to 5\")\n", + " \n", + " # else\n", + " else:\n", + " print(a,\"is greater than 5\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Logical and Boolean operators

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Logical operator \"and\"

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Logical operator \"and\"\n", + "i = -3\n", + "j = 4\n", + "if i<0 and j > 0: \n", + " print(i,\"is negative AND\",j,\"is positive\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Logical operator \"or\"

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Logical operator \"or\"\n", + "i = -2\n", + "j = 2\n", + "if i==2 or j == 2: \n", + " print(\"i OR j is 2: (\",i,\",\",j,\")\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Logical operator \"not\"

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Logical operator \"not\"\n", + "i = 3\n", + "if not (i==2):\n", + " print(i,\"is NOT equal to 2\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Operator \"equal to\"

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Operator \"equal to\"\n", + "i = -1\n", + "if i == -1:\n", + " print(i,\"is EQUAL TO -1\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Operator \"not equal to\"

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Operator \"not equal to\"\n", + "i = 4\n", + "if i != 3:\n", + " print(i,\"is NOT EQUAL TO 3\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Operator \"less than or equal to\"

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Operator \"not equal to\"\n", + "i = 2\n", + "if i <= 5:\n", + " print(i,\"is LESS THAN OR EQUAL TO 5\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Operator \"greater than or equal to\"

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Operator \"not equal to\"\n", + "i = 5\n", + "if i >= 1:\n", + " print(i,\"is GREATER THAN OR EQUAL TO 3\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Double list

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "A =[\n", + " [1,2,3],\n", + " [-2,-4,-6],\n", + " [3,6,9]\n", + "]\n", + "\n", + "# print all\n", + "print(A)\n", + "print()\n", + "\n", + "# print list by list\n", + "for list in A:\n", + " print(list)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

List operations

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Concatenation of two lists

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "list1 = [1,2,3]\n", + "list2 = [4,5,6]\n", + "\n", + "#concatenation of two lists\n", + "\n", + "list3 = list1 + list2\n", + "print(list3)\n", + "\n", + "list4 = list2 + list1\n", + "print(list4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Appending a new element

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "list = [0,1,2]\n", + "\n", + "list.append(3)\n", + "print(list)\n", + "\n", + "list = list + [4]\n", + "print(list)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Functions

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def summation_of_integers(n):\n", + " summation = 0\n", + " for integer in range(n+1):\n", + " summation = summation + integer\n", + " return summation\n", + "\n", + "print(summation_of_integers(10))\n", + "print(summation_of_integers(20))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

Random number

\n", + "\n", + "We can use method \"randrange()\"." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "\n", + "print(randrange(10),\"is picked randomly between 0 and 9\")\n", + " \n", + "print(randrange(-9,10),\"is picked randomly between -9 and 9\")\n", + "\n", + "print(randrange(0,20,3),\"is picked randomly from the list [0,3,6,9,12,15,18]\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B08_Python_Basics_Variables.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B08_Python_Basics_Variables.ipynb new file mode 100644 index 000000000..efec88193 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B08_Python_Basics_Variables.ipynb @@ -0,0 +1,443 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 02, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Basics of Python: Variables

\n", + "\n", + "We review using variables in python here. \n", + "\n", + "Please run each cell and check the results.\n", + "\n", + " Indention of codes matters in python! \n", + "\n", + "In this notebook, each line of code should start from the left without any indention. Otherwise, you will get syntax error.\n", + "\n", + "Comments can be indented.\n", + "\n", + "The codes belonging to a conditional or loop statement or a function/procedure are indented. We will see them later." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# This is a comment\n", + "# A comment is used for explanations/descriptions/etc.\n", + "# Comments do not affect the programs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's define an integer variable named a\n", + "a = 5\n", + "\n", + "# let's print its value\n", + "print(a)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's define three integer variables named a, b, and c\n", + "a = 2\n", + "b = 4\n", + "c = a + b # summation of a and b\n", + "\n", + "# let's print their values together \n", + "print(a,b,c)\n", + "# a single space will automatically appears in between" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's print their values in reverse order\n", + "print(c,b,a)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's print their summation and multiplication\n", + "print(a+b+c,a*b*c)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's define variables with string/text values\n", + "\n", + "hw = \"hello world\" # we can use double quotes\n", + "hqw = 'hello quantum world' # we can use single quotes\n", + "\n", + "# let's print them\n", + "print(hw)\n", + "print(hqw)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's print them together by inserting another string in between\n", + "print(hw,\"and\",hqw)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's concatenate a few strings\n", + "d = \"Hello \" + 'World' + \" but \" + 'Quantum' + \"World\" \n", + "\n", + "# let's print the result\n", + "print(d)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's print numeric and string values together\n", + "print(\"a =\",a,\", b =\",b,\", a+b =\",a+b)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's subtract two numbers\n", + "d = a-b\n", + "print(a,b,d)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's divide two numbers\n", + "d = a/b\n", + "print(a,b,d)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's divide two integers over integers\n", + "# the result is always an integer with possible integer remainder\n", + "d = 33 // 6\n", + "print(d)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# reminder/mod operator\n", + "r = 33 % 6 \n", + "# 33 mod 6 = 3\n", + "# or when 33 is divided by 6 over integers, the reminder is 3\n", + "# 33 = 5 * 6 + 3\n", + "\n", + "# let's print the result\n", + "print(r) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Booleen variables\n", + "t = True\n", + "f = False\n", + "\n", + "# let's print their values\n", + "print(t,f)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# print their negations\n", + "print(not t) \n", + "print(\"the negation of\",t,\"is\",not t)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(not f)\n", + "print(\"the negation of\",f,\"is\",not f)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# define a float variable\n", + "\n", + "d = -3.4444\n", + "\n", + "# let's print its value and its square\n", + "print(d, d * d)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's use parathesis in our experessions.\n", + "\n", + "$(23 \\cdot 13)-(11 \\cdot 15) $\n", + "\n", + "Here $\\cdot$ represents the multiplication operator" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "e = (23*13) - (11 * 15)\n", + "print(e)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's consider a more complex expression.\n", + "\n", + "$ -3 \\cdot (123- 34 \\cdot 11 ) + 4 \\cdot(5+ (23 \\cdot 15) ) $" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can use more than one variable\n", + "\n", + "# left is the variable for the left part of the expression\n", + "# we start with the multiplication inside the parathesis\n", + "left = 34*11\n", + "# we continue with the substruction inside the parathesis\n", + "# we reuse the variable named left\n", + "left = 123 - left\n", + "# we reuse left again for the multiplication with -3\n", + "left = -3 * left\n", + "\n", + "# right is the variable for the right part of the expression\n", + "# we use the same idea here\n", + "right = 23 * 15\n", + "right = 5 + right\n", + "right = 4 * right\n", + "\n", + "# at the end, we use left for the result\n", + "left = left + right\n", + "\n", + "# let's print the result\n", + "print(left)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 1

\n", + "\n", + "Define three variables n1, n2, and n3, and set their values to 3 -4 6\n", + "\n", + "Define a new variable r1, and set its value to $ (2 \\cdot n1 + 3 \\cdot n2) \\cdot 2 - 5 \\cdot n3 $, where $\\cdot$ represents the multiplication operator. \n", + "\n", + "The multiplication operator in python (and in many other programming languages) is *.\n", + "\n", + "Then, print the value of r1. \n", + "\n", + "As you may also verify it by yourself that you should see -42 as the outcome." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 2

\n", + "\n", + "By using the same variables (you may not need to define them again), please print the following value\n", + "$$\n", + " \\dfrac{(n1-n2)\\cdot(n2-n3)}{(n3-n1)\\cdot(n3+1)}\n", + "$$\n", + "\n", + "You should see -3.3333333333333335 as the outcome" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 3

\n", + "\n", + "Define variables N and S, and set their values to your name and surname. \n", + "\n", + "Then, print the values of N and S with a prefix phrase \"hello from the quantum world to\"." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B10_Python_Basics_Loops.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B10_Python_Basics_Loops.ipynb new file mode 100644 index 000000000..a993cdf68 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B10_Python_Basics_Loops.ipynb @@ -0,0 +1,560 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 02, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Basics of Python: Loops

\n", + "\n", + "We review using loops in python here. \n", + "\n", + "Please run each cell and check the results." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

For-loop

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's print all numbers between 0 and 9\n", + "for i in range(10): print(i)\n", + "# range(n) represents the list of all numbers from 0 to n-1\n", + "# i is the variable to take the values in the range(n) iteratively: 0, 1, ..., 9 in our example" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's write the same code in two lines\n", + "for i in range(10): # do not forget to use colon\n", + " print(i)\n", + " # the second line is indented\n", + " # that means the command in the second line will be executed inside the for-loop\n", + " # any other code executed inside the for-loop must be intented in the same way\n", + " #my_code_inside_for-loop_2\n", + " #my_code_inside_for-loop_3\n", + " #my_code_inside_for-loop_4\n", + "# now I am out of the scope of for-loop\n", + "#my_code_outside_for-loop_1\n", + "#my_code_outside_for-loop_2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's calculate the summation 1+2+...+10 by using a for-loop\n", + "\n", + "# we use variable total for the total summation\n", + "total = 0 \n", + "for i in range(11): # do not forget to use colon\n", + " total = total + i # total is updated by i in each iteration\n", + " # alternatively the same assignment can shortly be written as total =+ i similar to languages C, C++, Java, etc.\n", + "# now I am out of the scope of for-loop\n", + "# let's print the latest value of total\n", + "print(total)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's calculate the summation 10+12+14+...+44\n", + "# we create a list having all numbers in the summation\n", + "# for this purpose, this time we will use three parameters in range\n", + "total = 0\n", + "for j in range(10,45,2): # the range is defined between 10 and 44, and the value of j will be increased by 2 after each iteration\n", + " total += j # let's use the shorten version of total = total + j\n", + "print(total)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's calculate the summation 1+2+4+8+16+...+256\n", + "# remark that 256 = 2*2*...*2 (8 times)\n", + "total = 0\n", + "current_number = 1 # this value will be multiplied by 2 after each iteration\n", + "for k in range(9):\n", + " total = total + current_number # current_number is 1 at the beginning, and its value will be doubled after each iteration\n", + " current_number = 2 * current_number # let's double the value of the current_number for the next iteration\n", + " # short version of the same assignment: current_number *= 2 as in the languages C, C++, Java, etc.\n", + "# now I am out of the scope of for-loop\n", + "# let's print the latest value of total\n", + "print(total)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# instead of a range, we can directly use a list\n", + "for i in [1,10,100,1000,10000]:\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# instead of [...], we can also use (...)\n", + "# but this time it is a tuple, not a list (keep in your mind that the values in a tuple cannot be changed)\n", + "for i in (1,10,100,1000,10000):\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's create a range containing the multiples of 7 and between 10 and 91\n", + "for j in range(14,92,7): \n", + " # 14 is the first multiple of 7 greater or equal to 10\n", + " # 91 should be in the range, and so we write 92\n", + " print(j)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's create a range between 11 and 22\n", + "for i in range(11,23):\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can also use variables in range\n", + "n = 5\n", + "for j in range(n,2*n): print(j) # we will print all numbers in {n,n+1,n+2,...,2n-1}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can use a list of strings\n", + "for name in (\"Asja\",\"Balvis\",\"Fyodor\"):\n", + " print(\"Hello\",name,\":-)\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# any range can be converted to a list\n", + "L1 = list(range(10))\n", + "print(L1)\n", + "\n", + "L2 = list(range(55,200,11))\n", + "print(L2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 1

\n", + "\n", + "Calculate the value of summation $ 3+6+9+\\cdots+51 $, and the print the result.\n", + "\n", + "You should see 459 as the outcome." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 2

\n", + "\n", + "$ 3^k $ means $ 3 \\cdot 3 \\cdot \\cdots \\cdot 3 $ ($ k $ times) for $ k \\geq 2 $. \n", + "\n", + "Moreover, $ 3^0 $ is 1 and $ 3^1 = 3 $.\n", + "\n", + "Calculate the value of summation $ 3^0 + 3^1 + 3^2 + \\cdots + 3^8 $, and then print the result.\n", + "\n", + "You should see 9841 as the outcome." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

While-loop

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's calculate the summation 1+2+4+8+...+256 by using a while-loop\n", + "total = 0\n", + "i = 1\n", + "\n", + "#while condition(s):\n", + "# your_code1\n", + "# your_code2\n", + "# your_code3\n", + "while i < 257: # this loop iterates as long as i is less than 257\n", + " total = total + i\n", + " i = i * 2 # i is doubled in each iteration, and so soon it will be greater than 256\n", + " \n", + "print(total)\n", + "# remember that we calculated this summation as 511 before" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "L = [0,1,2,3,4,5,11] # this is a list containing 7 integer values\n", + "i = 0\n", + "while i in L: # this loop will be iterated as long as i is in L\n", + " print(i)\n", + " i = i + 1 # the value of i iteratively increased, and so soon it will hit a value not in the list L\n", + " \n", + "# the loop is terminated after i is set to 6, because 6 is not in L" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's use negation in the condition of while-loop\n", + "L = [10] # this list has a single element\n", + "i = 0\n", + "while i not in L: # this loop will be iterated as long as i is not equal to 10\n", + " print(i)\n", + " i = i+1 # the value of i will hit to 10 after ten iterations\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's rewrite the same loop by using a direct inequality\n", + "i = 0\n", + "while i != 10: # \"!=\" is used for \"not equal to\" operator \n", + " print(i) \n", + " i=i+1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's rewrite the same loop by using negation of equality\n", + "i = 0\n", + "while not (i == 10): # \"==\" is used for \"equal to\" operator \n", + " print(i) \n", + " i=i+1\n", + " \n", + "# while-loop seems having more fun :-)\n", + "# but we should be more careful when writing the condition(s)!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Consider the summation $ S(n) = 1+ 2+ 3 + \\cdots + n $ for some natural number $ n $.\n", + "\n", + "Let's find the minimum value of $ n $ such that $ S(n) \\geq 1000 $.\n", + "\n", + "While-loop works very well for this task.\n", + "
    \n", + "
  • We can iteratively increase $ n $ and update the value of $ S(n) $.
  • \n", + "
  • The loop iterates as long as $S(n)$ is less than 1000.
  • \n", + "
  • Once it hits 1000 or a bigger number, the loop will be terminated.
  • \n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# summation and n is zero at the beginning\n", + "S = 0\n", + "n = 0\n", + "while S < 1000: # this loop will stop after S exceeds 999 (S = 1000 or S > 1000)\n", + " n = n +1\n", + " S = S + n\n", + "# let's print n and S\n", + "print(n,S)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 3

\n", + "\n", + "Consider the summation $ T(n) = 1 + \\dfrac{1}{2} + \\dfrac{1}{4}+ \\dfrac{1}{8} + \\cdots + \\dfrac{1}{2^n} $ for some natural number $ n $. \n", + "\n", + "Remark that $ T(0) = \\dfrac{1}{2^0} = \\dfrac{1}{1} = 1 $.\n", + "\n", + "This summation can be arbitrarily close to $2$. \n", + "\n", + "Let's find the minimum value of $ n $ such that the closeness of $ T(n) $ to $2$ is less than $ 0.01 $.\n", + "\n", + "In other words, let's find the minimum value of $n$ such that $ T(n) > 1.99 $.\n", + "\n", + "The operator for \"less than or equal to\" in python is \"$ < = $\"." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# three examples for the operator \"less than or equal to\"\n", + "#print (4 <= 5)\n", + "#print (5 <= 5)\n", + "#print (6 <= 5)\n", + "# you may comment out the above three lines for executing and seeing the results\n", + "\n", + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 4

\n", + "\n", + "The task is to pick numbers between 0 and 9 randomly until hitting the number 3, and then print the number of attempt(s).\n", + "\n", + "We can use randrange function from random module for randomly picking a number in a given range." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# this is the code for including function randrange to our program \n", + "from random import randrange\n", + "# randrange(n) picks a number from the list [0,1,2,...,n-1] randomly\n", + "#r = randrange(100)\n", + "#print(r)\n", + "\n", + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 5

\n", + "\n", + "This task is for challenge. \n", + "\n", + "It is designed for the usage of double nested loops: one loop is inside of the other loop.\n", + "\n", + "In the fourth task above, the expected number of attempt(s) to hit number 3 is 10. \n", + "\n", + "Let's do a series of experiment by using your solution for Task 4.\n", + "\n", + "Experiment 1: Execute your code 20 times, and then calculate the average attempts.\n", + "\n", + "Experiment 2: Execute your code 200 times, and then calculate the average attempts.\n", + "\n", + "Experiment 3: Execute your code 2000 times, and then calculate the average attempts.\n", + "\n", + "Experiment 4: Execute your code 20000 times, and then calculate the average attempts.\n", + "\n", + "Experiment 5: Execute your code 200000 times, and then calculate the average attempts.\n", + "\n", + "Your experimental average should get closer to 10 when the number of executions is increased.\n", + "\n", + "Remark that all five experiments can be automatically done by using triple loops." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# here is a schematic example for double nested loops\n", + "#for i in range(10):\n", + "# your_code1\n", + "# your_code2\n", + "# while j != 7:\n", + "# your_code_3\n", + "# your_code_4\n", + "\n", + "#\n", + "# your solution is here\n", + "#\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B12_Python_Basics_Conditionals.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B12_Python_Basics_Conditionals.ipynb new file mode 100644 index 000000000..f138c19ae --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B12_Python_Basics_Conditionals.ipynb @@ -0,0 +1,349 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 02, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Basics of Python: Conditionals

\n", + "\n", + "We review using conditionals in python here. \n", + "\n", + "Please run each cell and check the results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's randomly pick a number between 0 and 9, and print its value if it is greater than 5\n", + "\n", + "from random import randrange\n", + "r = randrange(10)\n", + "\n", + "if r > 5: print(r) # when the condition (r > 5) is valid/true, the code (print(r)) will be executed\n", + "# you may need to execute your code more than once to observe an outcome" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# repeat the same task four times, and also print the value of iteration variable (i) \n", + "\n", + "for i in range(4):\n", + " r = randrange(10) # this code belongs to for-loop, and so it is indented\n", + " if r > 5: # this code also belongs to for-loop, and so it is indented as well\n", + " print(\"i=\",i,\"r=\",r) # this code belongs to if-statement, and so it is indented with respect to if-statement\n", + "\n", + "# if you are unlucky (with probabability less than 13/100), you may still do not see any outcome in a single run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# do the same task 100 times, and find the percentage of successful iteration (attempt)\n", + "# an iteration (attempt) is successful if the randomly picked number is greater than 5\n", + "# the expected percentage is 40, because, out of 10 numbers, there are 4 numbers greater than 5 \n", + "# but the experimental results differ\n", + "\n", + "success = 0\n", + "for i in range(100):\n", + " r = randrange(10)\n", + " if r > 5: \n", + " success = success + 1\n", + "print(success,\"%\")\n", + "\n", + "# each run most probabily will give different percentage value" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's randomly pick a number between 0 and 9, and says whether it less than 6 or not\n", + "# we use two conditionals here\n", + "\n", + "r = randrange(10)\n", + "print(\"the picked number is \",r)\n", + "\n", + "if r < 6:\n", + " print(\"it is less than 6\")\n", + "if r >= 6:\n", + " print(\"it is greater than or equal to 6\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's write the same code by using if-else\n", + "\n", + "r = randrange(10)\n", + "print(\"the picked number is \",r)\n", + "\n", + "if r < 6:\n", + " print(\"it is less than 6\")\n", + "else: # if the above condition (r<6) is False\n", + " print(\"it is greater than or equal to 6\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 1

\n", + "\n", + "Randomly pick a number between 10 and 50, and say whether it is even or not.\n", + "\n", + "Remember the reminder/mod operator (%). \n", + "\n", + "A number is even if is exactly divided by 2. That is, the reminder is zero when divided by 2 over integers.\n", + "\n", + "If the number is odd, then the reminder will be 1 when divided by 2 over integers." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# when there are many conditionals, we can use if-elif-else\n", + "#\n", + "\n", + "# let's randomly pick an even number between 1 and 99\n", + "# then determine whether it is less than 25, between 25 and 50, between 51 and 75, or greater than 75.\n", + "\n", + "r = randrange(2,100,2) # randonmly pick a number in range {2,4,6,...,98}, which satisfies our condition\n", + "# let's print this range to verify our claim\n", + "print(list(range(2,100,2)))\n", + "\n", + "print() # print an empty line\n", + "print(\"the picked number is\",r)\n", + "\n", + "if r < 25:\n", + " print(\"it is less than 25\")\n", + "elif r<=50: # if the above condition is False and my condition is True\n", + " print(\"it is between 25 and 50\")\n", + "elif r<=75: # if both conditions above are False and my condition is True\n", + " print(\"it is between 51 and 75\")\n", + "else: # if all conditions above are False\n", + " print(\"it is greater than 75\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 2

\n", + "\n", + "Randomly pick a number between 0 and 99. \n", + "\n", + "With half probability $\\left( 0.5 = \\dfrac{1}{2} \\right)$, it is expected to be between 0 and 49 or between 50 and 99.\n", + "\n", + "Let's try to calculate this probability experimentially.\n", + "\n", + "N=100 times randomly pick a number between 0 and 99, calculate the frequencies of both cases, and then divide each by 100. \n", + "\n", + "Repeat the same experiment for N=1,000, N=10,000, and N=100,000.\n", + "\n", + "Experimental results should get closer to the ideal ratio when N increases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Prime numbers

\n", + "\n", + "A number is prime if it greater than 1 and it is divided by only 1 and itself.\n", + "\n", + "For example, any negative number, 0, or 1 is not prime.\n", + "\n", + "2, 3, 5, 7, and 11 are the first five prime numbers. \n", + "\n", + "31 is another prime number because it cannot be divided by any natural number other than 1 and 31. \n", + "
    \n", + "In other words, any number in {2,3,4,...,30} does not divide 31. \n", + "\n", + "4 is not a prime number because it is divided by 2. The reminder is 0 when divided by 2.\n", + "
\n", + "9 is not a prime number because it is divided by 3. The reminder is 0 when divided by 3.\n", + "
\n", + "15 is not a prime number because it is divided by 3 or 5. The reminder is 0 when divided by 3 or 5." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's determine whether a randomly picked number between -10 and 100 is prime or not.\n", + "# this is a good example for using more than one conditionals in different parts of the program\n", + "# this is also an example for \"break\" command, which terminates any loop immediately\n", + "\n", + "r = randrange(-10,101) # pick a number between -10 and 100\n", + "print(r) # print is value\n", + "\n", + "if r < 2: print(\"it is NOT a prime number\") # this is by definition\n", + "elif r == 2: print(\"it is a PRIME number\") # we already know this\n", + "else:\n", + " prime=True # we assume that r is prime, and try to falsify this assumption by looking for a divisor in the following loop\n", + " \n", + " for i in range(2,r): # check all integers between 2 and r-1\n", + " if r % i ==0: # if i divides r without any reminder (or reminder is zero), then r is not be a prime number\n", + " print(\"it is NOT a prime number\")\n", + " prime=False # our assumption is falsifed\n", + " break # TERMINATE the iteration immediately\n", + " # we are out of if-scope\n", + " # we are out of for-loop-scope\n", + " if prime == True: # if our assumption is still True (if it was not falsied inside for-loop)\n", + " print(\"it is a PRIME number\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Writing function in python

\n", + "\n", + "Our code determines whether a given integer is prime or not.\n", + "\n", + "We can store it and use it later.\n", + "\n", + "We can write it as function (module), and then call it whenever it is needed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# this is an example to write a function\n", + "# our function will return a Boolean value True or False\n", + "\n", + "def prime(number): # our function has one parameter\n", + " if number < 2: return False # once return command is executed, we exit the function\n", + " if number == 2: return True # because of return command, we can use \"if\" instead of \"elif\"\n", + " if number % 2 == 0: return False # any even number greater than 2 is not prime, because it is divisible by 2\n", + " for i in range(3,number,2): # we can skip even integers\n", + " if number % i == 0: return False # once we find a divisor of the number, we return False and exit the function\n", + " return True # the number has passed all checks until now\n", + " # because of return command, the program can be shorten\n", + " # remark that this might not be a good choice everytime for readibility of codes \n", + "\n", + "# let's test our program by printing all prime numbers between -10 and 30\n", + "for i in range(-10,30):\n", + " # we pass i to the function prime\n", + " if prime(i): # the function prime(i) returns True or False\n", + " print(i) # this code will be executed if i is prime, i.e., prime(i) returns True" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B14_Python_Basics_Lists.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B14_Python_Basics_Lists.ipynb new file mode 100644 index 000000000..11f440460 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B14_Python_Basics_Lists.ipynb @@ -0,0 +1,431 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 02, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Basics of Python: Lists

\n", + "\n", + "We review using Lists in python here. \n", + "\n", + "Please run each cell and check the results.\n", + "\n", + "A list (or array) is a collection of objects (variables) separated by comma. \n", + "\n", + "The order is important, and we can access each element in the list with its index starting from 0." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# here is a list holding all even numbers between 10 and 20\n", + "L = [10, 12, 14, 16, 18, 20]\n", + "\n", + "# let's print the list\n", + "print(L)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's print each element by using its index but in reverse order\n", + "print(L[5],L[4],L[3],L[2],L[1],L[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's print the length (size) of list\n", + "print(len(L))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's print each element and its index in the list\n", + "# we use a for-loop and the number of iteration is determined by the length of the list\n", + "# everthing is automatic :-)\n", + "\n", + "L = [10, 12, 14, 16, 18, 20]\n", + "\n", + "for i in range(len(L)):\n", + " print(L[i],\"is the element in our list with the index\",i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's replace each number in the list with its double value\n", + "\n", + "L = [10, 12, 14, 16, 18, 20]\n", + "\n", + "# let's print the list before doubling\n", + "print(\"the list before doubling\",L)\n", + "\n", + "for i in range(len(L)):\n", + " current_element=L[i] # get the value of the i-th element\n", + " L[i] = 2 * current_element # update the value of the i-th element\n", + " # let's shorten the replacing code\n", + " #L[i] = 2 * L[i]\n", + " # or\n", + " #L[i] *= 2\n", + " \n", + "# let's print the list after doubling\n", + "print(\"the list after doubling\",L)\n", + "\n", + "# after each exceution of this cell, the latest values will be doubled\n", + "# so the values in the list will be exponentially increased " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's define two lists\n", + "L1 = [1,2,3,4]\n", + "L2 = [-5,-6,-7,-8]\n", + "\n", + "# two lists can be concatenated \n", + "# the results is a new list\n", + "\n", + "print(\"the concatenation of L1 and L2 is\",L1+L2)\n", + "\n", + "# the order of terms is important\n", + "print(\"the concatenation of L2 and L1 is\",L2+L1) # this is a different list than L1+L2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can add a new element to a list, which increases its length/size by 1\n", + "\n", + "L = [10, 12, 14, 16, 18, 20]\n", + "\n", + "print(L,\"the current length is\",len(L))\n", + "\n", + "# we add two values by showing two different methods\n", + "\n", + "# L.append(value) directly adds the value as a new element to the list\n", + "\n", + "L.append(-4)\n", + "\n", + "# we can also use concatenation operator +\n", + "\n", + "L = L + [-8] # here [-8] is a list with single element\n", + "\n", + "print(L,\"the new length is\",len(L))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# a list can be multiplied with an integer\n", + "L = [1,2]\n", + "\n", + "# we can consider the multiplication of L by an integer \n", + "# as a repeated summation (concatenation) of L by itself\n", + "# L * 1 is the list itself\n", + "# L * 2 is L + L (concatenation of L with itself)\n", + "# L * 3 is L + L + L (concatenation of L with itself twice)\n", + "# L * m is L + ... + L (concatenation of L with itself m-1 times)\n", + "# L * 0 is the empty list\n", + "\n", + "# L * i is the same as i * L\n", + "\n", + "# let's print the different cases\n", + "for i in range(6):\n", + " print(i,\"* L is\",i*L)\n", + "\n", + "# this can be useful when initializing a list with the same value(s)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's create a list of prime numbers less than 100\n", + "\n", + "# here is a function determining whether a given number is prime or not\n", + "def prime(number):\n", + " if number < 2: return False\n", + " if number == 2: return True \n", + " if number % 2 == 0: return False\n", + " for i in range(3,number,2):\n", + " if number % i == 0: return False \n", + " return True\n", + "# end of function\n", + "\n", + "# let's start with an empty list\n", + "L=[] \n", + "# what can the length of this list be?\n", + "print(\"my initial length is\",len(L))\n", + "\n", + "for i in range(2,100): \n", + " if prime(i):\n", + " L.append(i)\n", + " # alternative methods:\n", + " #L = L + [i]\n", + " #L += [i]\n", + "\n", + "# print the final list\n", + "print(L)\n", + "print(\"my final length is\",len(L))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For a given integer $n \\geq 0$, $ S(0) = 0 $, $ S(1)=1 $, and $ S(n) = 1 + 2 + \\cdots + n $.\n", + "\n", + "We define list $ L(n) $ such that the element with index $n$ holds $ S(n) $.\n", + "\n", + "In other words, the elements of $ L(n) $ is $ [ S(0)~~S(1)~~S(2)~~\\cdots~~S(n) ] $.\n", + "\n", + "Let's build the list $ L(20) $." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's define the list with S(0) \n", + "L = [0]\n", + "\n", + "# let's iteratively define n and S\n", + "\n", + "# initial values\n", + "n = 0\n", + "S = 0\n", + "\n", + "# the number of iteration\n", + "N = 20 \n", + "\n", + "while n <= N: # we iterate all values from 1 to 20\n", + " n = n + 1\n", + " S = S + n\n", + " L.append(S)\n", + " \n", + "# print the final list\n", + "print(L)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 1

\n", + "\n", + "Fibonacci sequence starts with $ 1 $ and $ 1 $. Then, each next element is equal to summation of the previous two elements:\n", + "$$\n", + " 1, 1, 2 , 3 , 5, 8, 13, 21, 34, 55 \\ldots \n", + "$$\n", + "\n", + "Find the first 30 elements of the Fibonacci sequence, store them in a list, and then print the list. \n", + "\n", + "You can verify the first 10 elements of your result with the above list." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n", + "\n", + "F = [1,1]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Lists of different objects

\n", + "\n", + "A list can have any type of values." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# the following list stores certain information about Asja\n", + "# name, surname, age, profession, height, weight, partner(s) if any, kid(s) if any, date\n", + "ASJA = ['Asja','Sarkane',34,'musician',180,65.5,[],['Eleni','Fyodor'],\"October 24, 2018\"]\n", + "\n", + "print(ASJA)\n", + "\n", + "# Remark that an element of a list can be another list as well." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 2

\n", + "\n", + "Define a list $ N $ with 11 elements such that $ N[i] $ is another list with four elements such that $ [i, i^2, i^3, i^2+i^3] $.\n", + "\n", + "The index $ i $ should be form $ 0 $ and $ 10 $." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Dictionaries

\n", + "\n", + "The outcomes of a quantum program will be stored in a dictionary.\n", + "\n", + "Therefore, we very shortly mention about the dictionary data type. \n", + "\n", + "A dictionary is a set of paired elements.\n", + "\n", + "Each pair is composed by a key and its value, and any value can be accessed by its key." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's define a dictionary pairing a person with her/his age\n", + "\n", + "ages = {\n", + " 'Asja':32,\n", + " 'Balvis':28,\n", + " 'Fyodor':43\n", + "}\n", + "\n", + "# let print all keys\n", + "for person in ages:\n", + " print(person)\n", + " \n", + "# let's print the values\n", + "for person in ages:\n", + " print(ages[person])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B16_Lists_Vectors.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B16_Lists_Vectors.ipynb new file mode 100644 index 000000000..555841129 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B16_Lists_Vectors.ipynb @@ -0,0 +1,445 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 14, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Vectors: One Dimensional Lists

\n", + "\n", + "A vector is a list of numbers. \n", + "\n", + "Vectors are very useful to describe the state of a system, as you will see in the main tutorial in a concrete way. \n", + "\n", + "A list is a single object in python.\n", + "\n", + "Similarly, a vector is a single mathematical object. \n", + "\n", + "The number of elements in a list is its size or length.\n", + "\n", + "Similarly, the number of elements in a vector is called as the size or dimension of the vector." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# consider the following list with 4 elements \n", + "L = [1,-2,0,5]\n", + "print(L)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vectors can be in horizantal or vertical shape.\n", + "\n", + "We show this list as a four dimensional row vector (horizantial) or a column vector vertical():\n", + "\n", + "$$\n", + " u = \\mypar{1~~-2~~0~~-5} ~~~\\mbox{ or }~~~ v =\\mymatrix{r}{1 \\\\ -2 \\\\ 0 \\\\ 5}, ~~~\\mbox{ respectively.}\n", + "$$\n", + "\n", + "Remark that we do not need to use any comma in vector representation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Multiplying a vector with a number

\n", + "\n", + "A vector can be multiplied by a number.\n", + "\n", + "Multiplication of a vector with a number is also a vector: each entry is multiplied with this number.\n", + "\n", + "$$\n", + " 3 \\cdot v = 3 \\cdot \\mymatrix{r}{1 \\\\ -2 \\\\ 0 \\\\ 5} = \\mymatrix{r}{3 \\\\ -6 \\\\ 0 \\\\ 15}\n", + " ~~~~~~\\mbox{ or }~~~~~~\n", + " (-0.6) \\cdot v = (-0.6) \\cdot \\mymatrix{r}{1 \\\\ -2 \\\\ 0 \\\\ 5} = \\mymatrix{r}{-0.6 \\\\ 1.2 \\\\ 0 \\\\ -3}.\n", + "$$\n", + "\n", + "You may consider this as enlarging or making smaller the vector.\n", + "\n", + "Let's verify our calculations in python." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 3 * v\n", + "v = [1,-2,0,5]\n", + "print(\"v is\",v)\n", + "# we use the same list for the result\n", + "for i in range(len(v)):\n", + " v[i] = 3 * v[i]\n", + "print(\"3v is\",v)\n", + "\n", + "# -0.6 * u\n", + "# reinitialize the list v\n", + "v = [1,-2,0,5]\n", + "for i in range(len(v)):\n", + " v[i] = -0.6 * v[i]\n", + "print(\"0.6v is\",v)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Summation of vectors

\n", + "\n", + "Two vectors can be summed up.\n", + "\n", + "The summation of two vectors is a vector: the numbers in the same entries are added up.\n", + "\n", + "$$\n", + " u = \\myrvector{-3 \\\\ -2 \\\\ 0 \\\\ -1 \\\\ 4} \\mbox{ and } v = \\myrvector{-1\\\\ -1 \\\\2 \\\\ -3 \\\\ 5}.\n", + " ~~~~~~~ \\mbox{Then, }~~\n", + " u+v = \\myrvector{-3 \\\\ -2 \\\\ 0 \\\\ -1 \\\\ 4} + \\myrvector{-1\\\\ -1 \\\\2 \\\\ -3 \\\\ 5} =\n", + " \\myrvector{-3+(-1)\\\\ -2+(-1) \\\\0+2 \\\\ -1+(-3) \\\\ 4+5} = \\myrvector{-4\\\\ -3 \\\\2 \\\\ -4 \\\\ 9}.\n", + "$$\n", + "\n", + "Let's do the same calculations in python." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "u = [-3,-2,0,-1,4]\n", + "v = [-1,-1,2,-3,5]\n", + "result=[]\n", + "for i in range(len(u)):\n", + " result.append(u[i]+v[i])\n", + "\n", + "print(\"u+v is\",result)\n", + "\n", + "# let's also print the result vector similar to a column vector\n", + "print() # print an empty line\n", + "print(\"the elements of u+v are\")\n", + "for j in range(len(result)):\n", + " print(result[j])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 1

\n", + "\n", + "Create two 7-dimensional vectors $u$ and $ v $ as a list in python having entries randomly picked between $-10$ and $10$. \n", + "\n", + "Print their entries." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "#\n", + "# your solution is here\n", + "#\n", + "\n", + "#r=randrange(-10,11) # randomly pick a number from the list {-10,-9,...,-1,0,1,...,9,10}\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 2

\n", + "\n", + "By using the same vectors, find the vector $ (3 u-2 v) $ and print its entries. Here $ 3u $ and $ 2v $ means $u$ and $v$ are multiplied by $3$ and $2$, respectively." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Visualization of vectors

\n", + "\n", + "We can visualize the vectors with dimension at most 3. \n", + "\n", + "For simplicity, we give examples of 2-dimensional vectors. \n", + "\n", + "Consider the vector $ v = \\myvector{1 \\\\ 2} $. \n", + "\n", + "A 2-dimensional vector can be represented on the two-dimensional plane by an arrow starting from the origin $ (0,0) $ to the point $ (1,2) $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's represent the vectors $ 2v = \\myvector{2 \\\\ 4} $ and $ -v = \\myvector{-1 \\\\ -2} $.\n", + "\n", + "\n", + "\n", + "As you can observe, after multiplying by 2, the vector is enlarged, and, after multiplying by $(-1)$, the vector is the same but its direction is opposite." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

The length of a vector

\n", + "\n", + "The length of a vector is the (shortest) distance from the points pointed by the elements of vector to the origin point $(0,0)$.\n", + "\n", + "The length of a vector can be calculated by using Pythagoras Theorem. \n", + "\n", + "We visualize the vector, its length, and the contributions of each entry in the vector to the length. \n", + "\n", + "Consider the vector $ u = \\myrvector{-3 \\\\ 4} $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The length of $ u $ is denoted as $ \\norm{u} $, and it is calculated as $ \\norm{u} =\\sqrt{(-3)^2+4^2} = 5 $. \n", + "\n", + "Here each entry is contributed with its square value. All contributions are summed up. Thus we obtain the square of the length. \n", + "\n", + "This formula is generalized to any dimension. \n", + "\n", + "Let's find the length of the following vector by using python:\n", + " \n", + "$$\n", + " v = \\myrvector{-1 \\\\ -3 \\\\ 5 \\\\ 3 \\\\ 1 \\\\ 2}\n", + " ~~~~~~~~~~\n", + " \\mbox{and}\n", + " ~~~~~~~~~~\n", + " \\norm{v} = \\sqrt{(-1)^2+(-3)^2+5^2+3^2+1^2+2^2} .\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Hint: There is a short way of writing power operation in python. \n", + "
    \n", + "
  • In its generic form: $ a^x $ can be denoted as $ a ** x $ in python.
  • \n", + "
  • The square of a number $a$: $ a^2 $ can be denoted as $ a ** 2 $ in python.
  • \n", + "
  • The square root of a number $ a $: $ \\sqrt{a} = a^{\\frac{1}{2}} = a^{0.5} $ can be denoted as $ a ** 0.5 $ in python.
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "v = [-1,-3,5,3,1,2]\n", + "\n", + "length_square=0\n", + "for i in range(len(v)):\n", + " print(v[i],\":square ->\",v[i]**2) # let's print each entry and its square value\n", + " length_square = length_square + v[i]**2 # let's sum up the square of each entry\n", + "\n", + "length = length_square ** 0.5 # let's take the square root of the summation of the squares of all entries\n", + "print(\"the summation is\",length_square)\n", + "print(\"then the length is\",length)\n", + "\n", + "# for square root, we can also use built-in function math.sqrt\n", + "print() # print an empty line\n", + "from math import sqrt\n", + "print(\"the sqaure root of\",length_square,\"is\",sqrt(length_square))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 3

\n", + "\n", + "Let $ u = \\myrvector{1 \\\\ -2 \\\\ -4 \\\\ 2} $ be a four dimensional vector.\n", + "\n", + "Verify that $ \\norm{4 u} = 4 \\cdot \\norm{u} $ in python. \n", + "\n", + "Remark that $ 4u $ is another vector obtained from $ u $ by multiplying it with 4. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Notes:\n", + "\n", + "When a vector is multiply by a number, then its length is also multiplied with the same number.\n", + "\n", + "But, we should be careful with the sign.\n", + "\n", + "Consider the vector $ -3 v $. It has the same length of $ 3v $, but its direction is opposite.\n", + "\n", + "So, when calculating the length of $ -3 v $, we use absolute value of the number:\n", + "\n", + "$ \\norm{-3 v} = |-3| \\norm{v} = 3 \\norm{v} $.\n", + "\n", + "Here $ |-3| $ is the absolute value of $ -3 $. \n", + "\n", + "The absolute value of a number is its distance to 0. So, $ |-3| = 3 $.\n", + "\n", + " Remark that length cannot be $ negative $ :) ." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 4

\n", + "\n", + "Let $ u = \\myrvector{1 \\\\ -2 \\\\ -4 \\\\ 2} $ be a four dimensional vector.\n", + "\n", + "Randomly pick a number $r$ from $ \\left\\{ \\dfrac{1}{10}, \\dfrac{2}{10}, \\cdots, \\dfrac{9}{10} \\right\\} $.\n", + "\n", + "Find the vector $(-r)\\cdot u$ and then its length." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B18_Lists_Inner_Product.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B18_Lists_Inner_Product.ipynb new file mode 100644 index 000000000..6f28e837e --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B18_Lists_Inner_Product.ipynb @@ -0,0 +1,342 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 14, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Vectors: Inner Product

\n", + "\n", + "Two vectors can be multiplied with each other.\n", + "\n", + "But, the result is a single number, instead of a vector.\n", + "\n", + "Therefore, it is called inner product of two vectors, and so we can also avoid from any confusion with the ordinary multiplication.\n", + "\n", + "Consider the following two vectors:\n", + "$$\n", + " u = \\myrvector{-3 \\\\ -2 \\\\ 0 \\\\ -1 \\\\ 4} \\mbox{ and } v = \\myrvector{-1\\\\ -1 \\\\2 \\\\ -3 \\\\ 5}.\n", + "$$\n", + "\n", + "The inner product of $ u $ and $ v $, denoted $ \\inner{u}{v}$, can be defined algorithmically.\n", + "\n", + "Pairwise multiplication: the values in the same positions are multiplied with each other.\n", + "\n", + "Summation of all pairwise multiplications: Then we sum all the results obtained from the pairwise multiplications.\n", + "\n", + "Let's write its python code:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's define both vectors\n", + "u = [-3,-2,0,-1,4]\n", + "v = [-1,-1,2,-3,5]\n", + "\n", + "uv = 0; # summation is initially zero\n", + "\n", + "for i in range(len(u)): # iteratively access every pair with the same indices\n", + " print(\"pairwise multiplication of the entries with index\",i,\"is\",u[i]*v[i])\n", + " uv = uv + u[i]*v[i] # i-th entries are multiplied and then added to summation\n", + " \n", + "print() # print an empty line \n", + "print(\"The inner product of\",u,'and',v,'is',uv)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The pairwise multiplications of entries are\n", + "
    \n", + "
  • $ (-3)\\cdot(-1) = 3 $,
  • \n", + "
  • $ (-2)\\cdot(-1) = 2 $,
  • \n", + "
  • $ 0\\cdot 2 = 0 $,
  • \n", + "
  • $ (-1)\\cdot(-3) = 3 $, and,
  • \n", + "
  • $ 4 \\cdot 5 = 20 $.
  • \n", + "
\n", + "\n", + "Thus the summation of all pairwise multiplication of entries is $ 3+2+0+3+20 = 28 $.\n", + "\n", + "Remark that the dimensions of the given vectors must be the same. Otherwise, the inner product is not defined." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 1

\n", + "\n", + "Find the inner product of the following vectors in python:\n", + "\n", + "$$\n", + " v = \\myrvector{-3 \\\\ 4 \\\\ -5 \\\\ 6} ~~~~\\mbox{and}~~~~ u = \\myrvector{4 \\\\ 3 \\\\ 6 \\\\ 5}.\n", + "$$\n", + "\n", + "Your outcome should be $0$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 2

\n", + "\n", + "Let $ u = \\myrvector{ -3 \\\\ -4 } $ be a 2 dimensional vector.\n", + "\n", + "Find $ \\inner{u}{u} $ in python." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Notes:\n", + "\n", + "As you may have observed from the second task, the length of a vector can be calculated by using its inner product with itself.\n", + "\n", + "$$ \\norm{u} = \\sqrt{\\inner{u}{u}}. $$\n", + "\n", + "$ \\inner{u}{u} $ is $25$, and so $ \\norm{u} = \\sqrt{25} = 5 $. \n", + "\n", + "$ \\inner{u}{u} $ automatically accumulates the contribution of each entry to the length." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Orthogonal (perpendicular) vectors

\n", + "\n", + "For simplicity, we consider 2-dimensional vectors.\n", + "\n", + "The following two vectors are perpendicular (orthogonal) to each other.\n", + "\n", + "The angle between them is $ 90 $ degrees. \n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's find the inner product of v and u\n", + "v = [-4,0]\n", + "u = [0,-5]\n", + "result = 0;\n", + "\n", + "for i in range(2):\n", + " result = result + v[i]*u[i]\n", + "\n", + "print(\"the inner product of u and v is\",result)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, let's check the inner product of the following two vectors:\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can use the same code\n", + "v = [-4,3]\n", + "u = [-3,-4]\n", + "result = 0;\n", + "\n", + "for i in range(2):\n", + " result = result + v[i]*u[i]\n", + "\n", + "print(\"the inner product of u and v is\",result)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The inner product of new $ u $ and $ v $ is also $0$. \n", + "\n", + "This is not suprising, because the vectors $u$ and $v$ (in both cases) are orthogonal to each other.\n", + "\n", + "Fact: \n", + "
    \n", + "
  • The inner product of two orthogonal (perpendicular) vectors is zero.
  • \n", + "
  • If the inner product of two vectors is zero, then they are ortohogonal to each other.
  • \n", + "
\n", + "\n", + " This fact is important, because, as we will see later, orthogonal vectors (states) are distingiushed perfectly. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 3

\n", + "\n", + "Verify that (i) $ u $ is orthogonal to $ -v $, (ii) $ -u $ is orthogonal to $ v $, and (iii) $ -u $ is orthogonal to $ -v $.\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# you may consider to write a function in python for innner product\n", + "\n", + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 4

\n", + "\n", + "Find the inner product of $ u $ and $ v $ in python.\n", + "\n", + "$$\n", + " v = \\myrvector{-1 \\\\ 2 \\\\ -3 \\\\ 4} ~~~~\\mbox{and}~~~~ u = \\myrvector{-2 \\\\ -1 \\\\ 5 \\\\ 2}.\n", + "$$\n", + "\n", + "Find the inner product of $ -2u $ and $ 3v $ in python.\n", + "\n", + "Compare both results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B20_Lists_Matrices.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B20_Lists_Matrices.ipynb new file mode 100644 index 000000000..818bd6c1d --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B20_Lists_Matrices.ipynb @@ -0,0 +1,603 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 02, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Matrices: Two Dimensional Lists

\n", + "\n", + "A matrix is a list of vectors with the same dimensions.\n", + "\n", + "Here is an example matrix formed by 4 row vectors with dimension 5:\n", + "\n", + "$$\n", + " M = \\mymatrix{rrrrr}{8 & 0 & -1 & 0 & 2 \\\\ -2 & -3 & 1 & 1 & 4 \\\\ 0 & 0 & 1 & -7 & 1 \\\\ 1 & 4 & -2 & 5 & 9}.\n", + "$$\n", + "\n", + "We can also say that $M$ is formed by 5 column vectors with dimension 4.\n", + "\n", + "$M$ is called an $ (4 \\times 5) $-dimensional matrix. ($4 \\times 5$: \"four times five\") \n", + "\n", + "We can represent $M$ as a two dimensional list in python. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can break lines when defining our list\n", + "M = [ \n", + " [8 , 0 , -1 , 0 , 2], \n", + " [-2 , -3 , 1 , 1 , 4], \n", + " [0 , 0 , 1 , -7 , 1],\n", + " [1 , 4 , -2 , 5 , 9]\n", + "] \n", + "\n", + "# let's print matrix M\n", + "print(M)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's print M in matrix form, row by row\n", + "\n", + "for i in range(4): # there are 4 rows\n", + " print(M[i])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remark that, by definition, the rows and columns of matrices are indexed starting from 1.\n", + "\n", + "The $ (i,j) $-th entry of $ M $ refers to the entry in $ i $-th row and $ j $-th column.\n", + "\n", + "(It is also denoted as $ M[i,j] $, $ M(i,j) $, or $ M_{ij} $.)\n", + "\n", + "On the other hand, in python, the indices start from zero.\n", + "\n", + "So, when we define a list for a matrix or vector in python, the value of an index is one less than the value of original index.\n", + "\n", + "Here are a few examples:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "M = [ \n", + " [8 , 0 , -1 , 0 , 2], \n", + " [-2 , -3 , 1 , 1 , 4], \n", + " [0 , 0 , 1 , -7 , 1],\n", + " [1 , 4 , -2 , 5 , 9]\n", + "] \n", + "\n", + "#let's print the element of M in the 1st row and the 1st column.\n", + "print(M[0][0])\n", + "\n", + "#let's print the element of M in the 3rd row and the 4th column.\n", + "print(M[2][3])\n", + "\n", + "#let's print the element of M in the 4th row and the 5th column.\n", + "print(M[3][4])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Multiplying a matrix with a number

\n", + "\n", + "Let's multiply matrix $ M $ by $ -2 $. \n", + "\n", + "Each entry is multiplied by $ -2 $." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we use double nested for-loops\n", + "\n", + "N =[] # the result matrix\n", + "\n", + "for i in range(4): # for each row\n", + " N.append([]) # create an empty sub-list for each row in the result matrix\n", + " for j in range(5): # in row (i+1), for each column\n", + " N[i].append(M[i][j]*-2) # we add new elements into the i-th sub-list\n", + " \n", + "# let's print M and N, and see the results\n", + "print(\"I am M:\")\n", + "for i in range(4):\n", + " print(M[i])\n", + "\n", + "print()\n", + "\n", + "print(\"I am N:\")\n", + "for i in range(4):\n", + " print(N[i])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After executing our program, we can write down the matrix $ N= -2 \\cdot M $:\n", + "\n", + "$$\n", + " N= -2 M = \\mymatrix{rrrrr}{-16 & 0 & 2 & 0 & -4 \\\\ 4 & 6 & -2 & -2 & -8 \\\\ 0 & 0 & -2 & 14 & -2 \\\\ -2 & -8 & 4 & -10 & -18}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

The summation of matrices

\n", + "\n", + "If $ M $ and $ N $ are matrices with the same dimensions, then $ M+N $ is also a matrix with the same dimension.\n", + "\n", + "The summation of two matrices is similar to the summation of two vectors. \n", + "\n", + "If $ K = M +N $, then $ K[i,j] = M[i,j] + N[i,j] $ for every pair of $ (i,j) $.\n", + "\n", + "Let's find $ K $ in python. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create an empty list for the result matrix\n", + "K=[]\n", + "\n", + "for i in range(len(M)): # len(M) return the number of rows in M\n", + " K.append([]) # we create a new row for K\n", + " for j in range(len(M[0])): # len(M[0]) returns the number of columns in M\n", + " K[i].append(M[i][j]+N[i][j]) # we add new elements into the i-th sublist/rows\n", + "\n", + "# print each matrix in a single line\n", + "print(\"M=\",M)\n", + "print(\"N=\",N)\n", + "print(\"K=\",K)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Observation:\n", + "\n", + "$ K = N +M $. We defined $ N $ as $ -2 M $. \n", + "\n", + "Thus, $ K = N+M = -2M + M = -M $.\n", + "\n", + "We can see that $ K = -M $ by looking the outcomes of our program." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 1

\n", + "\n", + "Randomly create $ (3 \\times 4) $-dimensional matrices $ A $ and $ B $. \n", + "\n", + "The entries can be from the list $ \\{-5,\\ldots,5\\} $.\n", + "\n", + "Print the entries of both matrices.\n", + "\n", + "Find matrix $ C = 3A - 2B $, and print its entries. (Note that $ 3A - 2B = 3A + (-2B) $.)\n", + "\n", + "Verify the correctness your outcomes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Transpose of a matrix

\n", + "\n", + "The transpose of a matrix is obtained by interchanging rows and columns. \n", + "\n", + "For example, the second row becomes the new second column, and third column becomes the new third row.\n", + "\n", + "The transpose of a matrix $ M $ is denoted $ M^T $.\n", + "\n", + "Here we give two examples.\n", + "\n", + "$$\n", + " M = \\mymatrix{rrrr}{-2 & 3 & 0 & 4\\\\ -1 & 1 & 5 & 9} ~~~~~ \\Rightarrow ~~~~~ M^T=\\mymatrix{rr}{-2 & -1 \\\\ 3 & 1 \\\\ 0 & 5 \\\\ 4 & 9} ~~~~~~~~ \\mbox{ and } ~~~~~~~~\n", + " N = \\mymatrix{ccc}{1 & 2 & 3 \\\\ 4 & 5 & 6 \\\\ 7 & 8 & 9} ~~~~~ \\Rightarrow ~~~~~ N^T = \\mymatrix{ccc}{1 & 4 & 7 \\\\ 2 & 5 & 8 \\\\ 3 & 6 & 9}.\n", + "$$\n", + "\n", + "Shortly, $ M[i,j] = M^T[j,i] $ and $ N[i,j] = N^T[j,i] $. (The indices are interchanged.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 2

\n", + "\n", + "Calculate $ M^T $ and $ N^T $ in python.\n", + "\n", + "Print all matrices and verify the correctness of your outcome." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "M = [\n", + " [-2,3,0,4],\n", + " [-1,1,5,9] \n", + "]\n", + "N =[\n", + " [1,2,3],\n", + " [4,5,6],\n", + " [7,8,9]\n", + "]\n", + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Multiplication of a matrix with a vector

\n", + "\n", + "We define a matrix $ M $ and a column vector $ v $:\n", + "\n", + "$$\n", + " M = \\mymatrix{rrr}{-1 & 0 & 1 \\\\ -2 & -3 & 4 \\\\ 1 & 5 & 6} ~~~~~~\\mbox{and}~~~~~~ v = \\myrvector{1 \\\\ -3 \\\\ 2}.\n", + "$$\n", + "\n", + "The multiplication of $ M v $ is a new vector $ u $ shown as $ u = M v $:\n", + "
    \n", + "
  • The first entry of $u $ is the inner product of the first row of $ M $ and $ v $.
  • \n", + "
  • The second entry of $ u $ is the inner product of the second row of $M$ and $ v $.
  • \n", + "
  • The third entry of $ u $ is the inner product of the third row of $M$ and $v$.
  • \n", + "
\n", + "\n", + "Let's do the calculations in python." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# matrix M\n", + "M = [\n", + " [-1,0,1],\n", + " [-2,-3,4],\n", + " [1,5,6]\n", + "]\n", + "\n", + "# vector v\n", + "v = [1,-3,2]\n", + "\n", + "# the result vector u\n", + "u = []\n", + "\n", + "# for each row, we do an inner product\n", + "for i in range(3):\n", + " # inner product for one row is initiated\n", + " inner_result = 0 # this variable keeps the summation of the pairwise multiplications\n", + " for j in range(3): # the elements in the i-th row\n", + " inner_result = inner_result + M[i][j] * v[j]\n", + " # inner product for one row is completed\n", + " u.append(inner_result)\n", + "\n", + "print(\"M is\")\n", + "for i in range(len(M)):\n", + " print(M[i])\n", + "print()\n", + "print(\"v=\",v)\n", + "print()\n", + "print(\"u=\",u)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's check the calculations:\n", + "\n", + "$$\n", + " \\mbox{First row:}~~~~ \\biginner{ \\myrvector{-1 \\\\ 0 \\\\ 1} }{ \\myrvector{1 \\\\ -3 \\\\ 2} } = (-1)\\cdot 1 + 0 \\cdot (-3) + 1 \\cdot 2 = -1 + 0 + 2 = -1.\n", + "$$\n", + "$$\n", + " \\mbox{Second row:}~~~~ \\biginner{ \\myrvector{-2 \\\\ -3 \\\\ 4} }{ \\myrvector{1 \\\\ -3 \\\\ 2} } = (-2)\\cdot 1 + (-3) \\cdot (-3) + 4 \\cdot 2 = -2 + 9 + 8 = 15.\n", + "$$\n", + "$$\n", + " \\mbox{Third row:}~~~~ \\biginner{ \\myrvector{1 \\\\ 5 \\\\ 6} }{ \\myrvector{1 \\\\ -3 \\\\ 2} } = 1\\cdot 1 + 5 \\cdot (-3) + 6 \\cdot 2 = 1 - 15 + 12 = -2.\n", + "$$\n", + "\n", + "Then,\n", + "$$\n", + " v' = \\myrvector{-1 \\\\ 15 \\\\ -2 }.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Observations: \n", + "
    \n", + "
  • The dimension of the row of $ M $ is the same as the dimension of $ v $. Otherwise, the inner product is not defined.
  • \n", + "
  • The dimension of the result vector is the number of rows in $ M $, because we have an inner product for each row of $ M $
  • \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 3

\n", + "\n", + "Find $ u' = N u $ in python for the following matrix $ N $ and column vector $ u $:\n", + "\n", + "$$\n", + " N = \\mymatrix{rrr}{-1 & 1 & 2 \\\\ 0 & -2 & -3 \\\\ 3 & 2 & 5 \\\\ 0 & 2 & -2} ~~~~~~\\mbox{and}~~~~~~ u = \\myrvector{2 \\\\ -1 \\\\ 3}.\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Multiplication of two matrices

\n", + "\n", + "This is just the generalization of the procedure given above.\n", + "\n", + "Let's find matrix $ K = M \\cdot N $ for given matrices\n", + "$\n", + " M = \\mymatrix{rrr}{-1 & 0 & 1 \\\\ -2 & -1 & 2 \\\\ 1 & 2 & -2} ~~\\mbox{and}~~ \n", + " N = \\mymatrix{rrr}{0 & 2 & 1 \\\\ 3 & -1 & -2 \\\\ -1 & 1 & 0}.\n", + "$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remark that the matrix $ N $ has three columns: $ v_1 = \\myrvector{0 \\\\ 3 \\\\ -1} $, $ v_2 = \\myrvector{2 \\\\ -1 \\\\ 1} $, and $ v_3 = \\myrvector{1 \\\\ -2 \\\\ 0} $.\n", + "\n", + "We know how to calculate $ v_1' = M \\cdot v_1 $. \n", + "\n", + "Similarly, we can calculate $ v_2' = M \\cdot v_2 $ and $ v_3' = M \\cdot v_3 $. \n", + "\n", + "You may have already guessed that these new column vectors ($v_1'$, $v_2'$, and $v_3'$) are the columns of $ K $. \n", + "\n", + "Technically, the inner product of the i-th row of $ M $ and $ j $-th row of $ N $ gives the $(i,j)$-th entry of $ K $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 4

\n", + "\n", + "Find matrix $ K $.\n", + " \n", + "This is a challanging task. You may use triple nested for-loops. \n", + "\n", + "You may also consider to write a function taking two lists and returning their inner product." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# matrix M\n", + "M = [\n", + " [-1,0,1],\n", + " [-2,-1,2],\n", + " [1,2,-2]\n", + "]\n", + "\n", + "# matrix N\n", + "M = [\n", + " [0,2,1],\n", + " [3,-1,-2],\n", + " [-1,1,0]\n", + "]\n", + "\n", + "# matrix K\n", + "K = []\n", + "\n", + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Is $ A B = B A $?

\n", + "\n", + "It is a well-known fact that the order of numbers does not matter in multiplication.\n", + "\n", + "For example, $ (-3) \\cdot 4 = 4 \\cdot (-3) $.\n", + "\n", + "Is it also true for matrices? For any given two matrices $ A $ and $ B $, is $ A \\cdot B = B \\cdot A $?\n", + "\n", + "There are some examples of $A$ and $B$ such that $ A \\cdot B = B \\cdot A $.\n", + "\n", + "But this is not true for most of the cases, and so this statement is false. \n", + "\n", + "We can falsify this statement by using our programming skill.\n", + "\n", + "We can also follow a probabilistic strategy. \n", + "\n", + "The idea is as follows: Randomly find two example matrices $ A $ and $ B $ such that $ AB \\neq BA $.\n", + "\n", + "Remark that if $ AB = BA $, then $ AB - BA $ is a zero matrix." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 5

\n", + "\n", + "Randomly define two $ (2 \\times 2) $-dimensional matrices $A$ and $ B $. \n", + "\n", + "Then, find $ C= AB-BA $. If $ C $ is not a zero matrix, then we are done.\n", + "\n", + "Remark: With some chances, we may find a pair of $ (A,B) $ such that $ AB = BA $. \n", + " \n", + "In this case, we should repeat our experiment. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B22_Lists_Tensor_Product.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B22_Lists_Tensor_Product.ipynb new file mode 100644 index 000000000..4cb241d18 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B22_Lists_Tensor_Product.ipynb @@ -0,0 +1,357 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 02, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Matrices: Tensor Product

\n", + "\n", + "Tensor product is defined between any two matrices. The result is a new big matrix.\n", + "\n", + "Its formal definition is technical. Therefore, we use examples to descibe it. \n", + "\n", + "Let's start with a simple case.\n", + "\n", + "A vector is also a matrix. Therefore, tensor product can also be defined between two vectors or between one vector and one matrix." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Tensor product of two vectors

\n", + "\n", + "We have two vectors: $ u = \\myrvector{-2\\\\3} $ and $ v = \\myrvector{1 \\\\ 2 \\\\ -3} $.\n", + "\n", + "The tensor product of $u$ and $ v $ is denoted $ u \\otimes v $.\n", + "\n", + "We can consider the tensor product as extending $ u $ by $ v $:\n", + "\n", + "$$\n", + " u \\otimes v = \\myrvector{-2\\\\3} \\otimes \\myrvector{1 \\\\ 2 \\\\ -3} =\n", + " \\myrvector{ -2 \\cdot \\myrvector{1 \\\\ 2 \\\\ -3} \\\\ 3 \\cdot \\myrvector{1 \\\\ 2 \\\\ -3} } =\n", + " \\myrvector{ -2 \\\\ -4 \\\\ 6 \\\\ 3 \\\\ 6 \\\\ -9 }.\n", + "$$\n", + "\n", + "Here, $ -2 $ in $ u $ is replaced with the vector $ (-2 \\cdot v) $, and $ 3 $ in $ u $ is replaced with the vector $ 3 v $.\n", + "\n", + "Thus each entry of $ u $ is replaced by a 3-dimensional vector, and the dimension of the result vector is $ 6~(=2 \\cdot 3) $.\n", + "\n", + "Algorithmically, each element in $ u $ is replaced by the multiplication of this element with the vector $ v $.\n", + "\n", + "Let's find $ v \\otimes u $ in python." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# vector v\n", + "v = [1,2,3]\n", + "# vector u\n", + "u=[-2,3]\n", + "\n", + "vu = []\n", + "\n", + "for i in range(len(v)): # Each element of v will be replaced\n", + " for j in range(len(u)): # the vector u will come to the replaced place after multiplying with the entry there\n", + " vu.append( v[i] * u[j] )\n", + "\n", + "print(\"v=\",v)\n", + "print(\"u=\",u)\n", + "print(\"vu=\",vu)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 1

\n", + "\n", + "Find $ u \\otimes v $ and $ v \\otimes u $ for the given vectors $ u = \\myrvector{-2 \\\\ -1 \\\\ 0 \\\\ 1} $ and $ v = \\myrvector{ 1 \\\\ 2 \\\\ 3 } $." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Note:\n", + "\n", + "Tensor products are useful, when we have a system composed by two (or more) sub-systems.\n", + "\n", + "We will see the basic applications and usage of tensor products." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Tensor product of two matrices

\n", + "\n", + "The definition is the same.\n", + "\n", + "Let's find $ M \\otimes N $ and $ N \\otimes M $ for the given matrices\n", + "$\n", + " M = \\mymatrix{rrr}{-1 & 0 & 1 \\\\ -2 & -1 & 2 \\\\ 1 & 2 & -2} ~~\\mbox{and}~~ \n", + " N = \\mymatrix{rrr}{0 & 2 & 1 \\\\ 3 & -1 & -2 \\\\ -1 & 1 & 0}.\n", + "$\n", + "\n", + "$ M \\otimes N $: Each element of $ M $ will be replaced with the whole matrix $ N $ after multiplying with this element.\n", + "\n", + "$$\n", + " M \\otimes N =\n", + " \\mymatrix{rrr}{-1 & 0 & 1 \\\\ -2 & -1 & 2 \\\\ 1 & 2 & -2} \\otimes \\mymatrix{rrr}{0 & 2 & 1 \\\\ 3 & -1 & -2 \\\\ -1 & 1 & 0}\n", + " =\n", + " \\mymatrix{rrr}{ -1 \\mymatrix{rrr}{0 & 2 & 1 \\\\ 3 & -1 & -2 \\\\ -1 & 1 & 0} & 0 \\mymatrix{rrr}{0 & 2 & 1 \\\\ 3 & -1 & -2 \\\\ -1 & 1 & 0} & 1 \\mymatrix{rrr}{0 & 2 & 1 \\\\ 3 & -1 & -2 \\\\ -1 & 1 & 0} \\\\\n", + " -2 \\mymatrix{rrr}{0 & 2 & 1 \\\\ 3 & -1 & -2 \\\\ -1 & 1 & 0} & -1 \\mymatrix{rrr}{0 & 2 & 1 \\\\ 3 & -1 & -2 \\\\ -1 & 1 & 0} & 2 \\mymatrix{rrr}{0 & 2 & 1 \\\\ 3 & -1 & -2 \\\\ -1 & 1 & 0} \\\\\n", + " 1 \\mymatrix{rrr}{0 & 2 & 1 \\\\ 3 & -1 & -2 \\\\ -1 & 1 & 0} & 2 \\mymatrix{rrr}{0 & 2 & 1 \\\\ 3 & -1 & -2 \\\\ -1 & 1 & 0} & -2 \\mymatrix{rrr}{0 & 2 & 1 \\\\ 3 & -1 & -2 \\\\ -1 & 1 & 0}}\n", + "$$\n", + "\n", + "It is a boring task because of repetitions. \n", + "\n", + "Let us do this once by hand (in mind), and then check the result by python." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + " M \\otimes N = \\mymatrix{rrrrrrrrr}{\n", + " 0 & -2 & -1 & 0 & 0 & 0 & 0 & 2 & 1 \\\\\n", + " -3 & 1 & 2 & 0 & 0 & 0 & 3 & -1 & -2 \\\\\n", + " 1 & -1 & 0 & 0 & 0 & 0 & -1 & 1 & 0 \\\\\n", + " 0 & -4 & -2 & 0 & -2 & -1 & 0 & 4 & 2 \\\\\n", + " -6 & 2 & 4 & -3 & 1 & 2 & 6 & -2 & -4 \\\\\n", + " 2 & -2 & 0 & 1 & -1 & 0 & -2 & 2 & 0 \\\\\n", + " 2 & 1 & 0 & 1 & -1 & 0 & -2 & 2 & 0 \\\\\n", + " 0 & 2 & 1 & 0 & 4 & 2 & 0 & -4 & -2 \\\\\n", + " 3 & -1 & -2 & 6 & -2 & -4 & -6 & 2 & 4 \\\\\n", + " -1 & 1 & 0 & -2 & 2 & 0 & 2 & -2 & 0\n", + " }\n", + "$$\n", + "\n", + "Now, let's find the same matrix in python.\n", + "\n", + "This time we will use a four nested for-loops." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# matrix M\n", + "M = [ \n", + " [-1,0,1],\n", + " [-2,-1,2],\n", + " [1,2,-2]\n", + "]\n", + "\n", + "# matrix N\n", + "N = [\n", + " [0,2,1],\n", + " [3,-1,-2],\n", + " [-1,1,0]\n", + "]\n", + "\n", + "# MN will be (9x9)-dimensional matrix\n", + "# let's prepare it as a zero matrix\n", + "# this helps us to easily fill it \n", + "MN=[]\n", + "for i in range(9):\n", + " MN.append([])\n", + " for j in range(9):\n", + " MN[i].append(0)\n", + "\n", + "for i in range(3): # row of M\n", + " for j in range(3): # column of M\n", + " for k in range(3): # row of N\n", + " for l in range(3): # column of N\n", + " MN[i*3+k][3*j+l] = M[i][j] * N[k][l] \n", + "\n", + "print(\"M-tensor-N is\") \n", + "for i in range(9):\n", + " print(MN[i])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's find $ N \\otimes M $ in python.\n", + "\n", + "We use the same code by interchanging $ N $ and $ M $." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# matrix M and N were defined above\n", + "\n", + "# matrix NM will be prepared as a (9x9)-dimensional zero matrix\n", + "NM=[]\n", + "for i in range(9):\n", + " NM.append([])\n", + " for j in range(9):\n", + " NM[i].append(0)\n", + "\n", + "for i in range(3): # row of N\n", + " for j in range(3): # column of N\n", + " for k in range(3): # row of M\n", + " for l in range(3): # column of M\n", + " NM[i*3+k][3*j+l] = N[i][j] * M[k][l] \n", + "\n", + "print(\"N-tensor-M is\")\n", + "for i in range(9):\n", + " print(NM[i])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 2

\n", + "\n", + "Find $ A \\otimes B $ for the given matrices\n", + "$\n", + " A = \\mymatrix{rrr}{-1 & 0 & 1 \\\\ -2 & -1 & 2} ~~\\mbox{and}~~ \n", + " B = \\mymatrix{rr}{0 & 2 \\\\ 3 & -1 \\\\ -1 & 1 }.\n", + "$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 3

\n", + "\n", + "Find $ B \\otimes A $ for the given matrices\n", + "$\n", + " A = \\mymatrix{rrr}{-1 & 0 & 1 \\\\ -2 & -1 & 2} ~~\\mbox{and}~~ \n", + " B = \\mymatrix{rr}{0 & 2 \\\\ 3 & -1 \\\\ -1 & 1 }.\n", + "$\n", + "\n", + "You can use the code in your (our) solution for Task 2.\n", + "\n", + "But please be careful with the indices and range values, and how they are interchanged (!)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B24_One_Bit.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B24_One_Bit.ipynb new file mode 100644 index 000000000..80026c9e7 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B24_One_Bit.ipynb @@ -0,0 +1,539 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

One Bit

\n", + "\n", + "In daily life, we use decimal number system. It is also called base-10 system, because we have 10 digits:\n", + "\n", + "$ 0,~1,~2,~3,~4,~5,~6,~7,~8, \\mbox{ and } 9 $.\n", + "\n", + "In computer science, on the other hand, the widely used system is binary, which has only two digits:\n", + "\n", + "$ 0 $ and $ 1 $.\n", + "\n", + "One bit (or binary digit) is the basic unit of information used in computer science. \n", + "\n", + "It can also be seen as the smallest \"useful\" memory unit, which has two states named 0 and 1. \n", + "\n", + "One bit can be in (or store) either 0 or 1." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Four operators

\n", + "\n", + "How many different operators can be defined on a single bit?\n", + "\n", + "An operator, depending on the current state of the bit, updates the state of bit (the result may be the same state). \n", + "\n", + "We can apply four different operators to a single bit:\n", + "
    \n", + "
  1. Identity: $ I(0) = 0 $ and $ I(1) = 1 $
  2. \n", + "
  3. Negation: $ NOT(0) = 1 $ and $ NOT(1) = 0 $
  4. \n", + "
  5. Constant (Zero): $ ZERO(0) = 0 $ and $ ZERO(1) = 0 $
  6. \n", + "
  7. Constant (One): $ ONE(0) = 1 $ and $ ONE(1) = 1 $
  8. \n", + "
\n", + "The first operator is called IDENTITY, because it does not change the content/value of the bit.\n", + "\n", + "The second operator is named NOT, bacause it negates (flips) the value of bit. \n", + "\n", + "Remark that 0 and 1 also refers to Boolean values False and True, respectively, and, False is the negation of True, and True is the negation of False.\n", + "\n", + "The third (resp., fourth) operator returns a constant value 0 (resp., 1), whatever the input is." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Table representation

\n", + "\n", + "Let's represent the transition of each operator by a table. \n", + "\n", + "In each table,\n", + "
    \n", + "
  • the header (first row) representing the initial values,
  • \n", + "
  • the first column representing the final values,
  • \n", + "
  • we use 1 if there is a transition between two values, and,
  • \n", + "
  • we use 0 if there is no transition between two values.
  • \n", + "
\n", + "\n", + "The table representation of the identity operator is given below:\n", + "\n", + "$\n", + "I = \\begin{array}{c|cc} & \\mathbf{0} & \\mathbf{1} \\\\ \\hline \\mathbf{0} & 1 & 0 \\\\ \\mathbf{1} & 0 & 1 \\end{array}\n", + "$\n", + "\n", + "The values in bold are the initial and final values of the bits. The non-bold values represent the transitions.\n", + "
    \n", + "
  • The top-left non-bold 1 represents the transtion $ 0 \\rightarrow 0 $.
  • \n", + "
  • The bottom-right non-bold 1 represents the transtion $ 1 \\rightarrow 1 $.
  • \n", + "
  • The top-right non-bold 0 means that there is no transition from 1 to 0.
  • \n", + "
  • The bottom-left non-bold 0 means that there is no transition from 0 to 1.
  • \n", + "
\n", + "The reader may think the values 0 and 1 representing the transitions as True (On) and False (Off), respectively. \n", + "\n", + "Similarly, we can represent the other operators as below:\n", + "\n", + "$\n", + "NOT = \\begin{array}{c|cc} & \\mathbf{0} & \\mathbf{1} \\\\ \\hline \\mathbf{0} & 0 & 1 \\\\ \\mathbf{1} & 1 & 0 \\end{array}\n", + "~~~~~~~~\n", + "ZERO = \\begin{array}{c|cc} & \\mathbf{0} & \\mathbf{1} \\\\ \\hline \\mathbf{0} & 1 & 1 \\\\ \\mathbf{1} & 0 & 0 \\end{array}\n", + "~~~~~~~~\n", + "ONE = \\begin{array}{c|cc} & \\mathbf{0} & \\mathbf{1} \\\\ \\hline \\mathbf{0} & 0 & 0 \\\\ \\mathbf{1} & 1 & 1 \\end{array}\n", + ".\n", + "$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 1

\n", + "\n", + "Convience yourself with the correctness of each table." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Reversibility and Irreversibility

\n", + "\n", + "After applying Identity or NOT operatotor, we can easily determine the initial value by checking the final value. \n", + "
    \n", + "
  • In the case of Identity operator, we simply say the same value.
  • \n", + "
  • In the case of NOT operator, we simply say the other value, i.e., if the final value is 0 (resp., 1), then we say 1 (resp., 0).
  • \n", + "
\n", + "\n", + "However, we cannot know the initial value by checking the final value after applying ZERO or ONE operator. \n", + "\n", + "Based on this observation, we can classify the operators into two types: Reversible and Irreversible.\n", + "
    \n", + "
  • If we can recover the initial value(s) from the final value(s), then the operator is called reversible like Identity and NOT operators.
  • \n", + "
  • If we cannot know the initial value(s) from the final value(s), then the operator is called irreversible like ZERO and ONE operators.
  • \n", + "
\n", + "\n", + " This classification is important, because, as will be seen later, the quantum evolution operators are reversible. \n", + "\n", + "The identity operator does not have any affect on the computation, and so it is not interesting.\n", + "\n", + "But we will widely use NOT operator in our quantum algortihms. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Our first quantum circuit

\n", + "\n", + "For our quantum programs, we will design quantum circuits.\n", + "\n", + "As a warm-up example, here we design a circuit with a single quantum bit.\n", + "\n", + "We also highlight the details on designing quantum circuits along with our codes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# \n", + "# A quantum circuit is composed by quantum and classical bits.\n", + "#\n", + "\n", + "# here are the objects that we use to create a quantum circuit\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit\n", + "\n", + "# we use a quantum register to keep our quantum bits.\n", + "qreg = QuantumRegister(1) # in this example we will use a single quantum bit\n", + "\n", + "# To get an information from a quantum bit, it must be measured. (More details will appear.)\n", + "# The measurement result is stored classically.\n", + "# Therefore, we also use a classical regiser with classical bits\n", + "creg = ClassicalRegister(1) # in this example we will use a single classical bit\n", + "\n", + "# now we can define our quantum circuit\n", + "# it is composed by a quantum and a classical register\n", + "mycircuit = QuantumCircuit(qreg,creg)\n", + "\n", + "# we apply operators on quantum bits\n", + "# operators are also called as gates\n", + "# we apply NOT operator represented as \"x\"\n", + "# operator is a part of the circuit, and we should specify the quantum bit as the parameter\n", + "mycircuit.x(qreg[0]) # (quantum) bits are enumerated starting from 0\n", + "# NOT operator or x-gate is applied to the first qubit of the quantum register\n", + "\n", + "# let's run our codes until now, and then draw our circuit\n", + "print(\"Everything looks fine, let's continue ...\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we use matplotlib_circuit_drawer\n", + "# we shortly refer it as \"drawer\" in our codes\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "# let's draw our circuit now \n", + "drawer(mycircuit)\n", + "# re-execute me if you DO NOT see the circuit diagram" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Congratulations! if you see your diagram :-)\n", + "\n", + " Remak: Qiskit has its own counters to enumerate the objects ($ q2_0 $, $ c2_0 $, etc.). \n", + "
    \n", + "
  • They might be useful for debugging, but currently you can simply discard this part.\n", + "
  • You may also notice that when you re-run the same codes, the index of objects will be increased.\n", + "
\n", + "\n", + "The value of the quantum bit is 0 at the beginning. Technically, we denote is as $ \\ket{0} $, called ket-notation.\n", + "\n", + "The value of the classical bit is also 0 at the beginning. \n", + "\n", + "Classical or quantum, each bit is represented as a straight line. You may think of it as a wire.\n", + "\n", + "The x-gate is shown as a square.\n", + "\n", + "The value of the quantum bit is expected to be $ \\ket{1} $ after the operator.\n", + "\n", + "Let's measure the first qubit (define a mesurement operator), and then execute our circuit and see the result." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# measurement is defined by associating a quantum bit to a classical bit\n", + "mycircuit.measure(qreg[0],creg[0])\n", + "# the result will be stored in the classical bit\n", + "\n", + "print(\"Everything looks fine, let's continue ...\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's draw the circuit again to see how the measurement is defined\n", + "drawer(mycircuit)\n", + "# reexecute me if you DO NOT see the circuit diagram" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we are done with design of our circuit\n", + "# now we can execute it\n", + "# we execute quantum circuits many times (WHY?)\n", + "\n", + "# we use method \"execute\" and object \"Aer\" from qiskit library\n", + "from qiskit import execute, Aer\n", + "\n", + "# we create a job object for execution of the circuit\n", + "# there are three parameters\n", + "# 1. mycircuit\n", + "# 2. beckend on which it will be executed: we will use local simulator\n", + "# 3. how_many_times will it be executed, let's pick it as 1024\n", + "job = execute(mycircuit,Aer.get_backend('qasm_simulator'),shots=1024)\n", + "\n", + "# we can get the result of the outcome as follows\n", + "counts = job.result().get_counts(mycircuit)\n", + "print(counts)\n", + "\n", + "# usually quantum programs produce probabilistic outcomes " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We expect to see 1 in each execution, and so the output should be $ \\{\\mbox{'1'}:~1024\\} $. \n", + "\n", + "That is, the outcome 1 is measured 1024 times.\n", + "\n", + "The output is composed by pairs, and each pair showing the measurement outcome and how many times it was measured. \n", + "
\n", + "For example, if the output is $ \\{\\mbox{'0': 500, '1': 524}\\} $, then we know that the outcome 0 is measured 500 times and the outcome 1 is measured 524 times. \n", + "\n", + " Quantum programs usually give probabilistic outcomes. \n", + " \n", + "Therefore, we should execute them many times to get more reliable outcomes. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

My second quantum circuit

\n", + "\n", + "Let's create a quantum circuit with four quantum bits. \n", + "\n", + "We use almost the same code with small modifications. \n", + "\n", + "Our comments explain only the modifications." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# \n", + "# My second quantum circuit\n", + "#\n", + "\n", + "# we import all at once\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "# we will use 4 quantum bits and 4 classical bits\n", + "qreg2 = QuantumRegister(4)\n", + "creg2 = ClassicalRegister(4)\n", + "\n", + "mycircuit2 = QuantumCircuit(qreg2,creg2)\n", + "\n", + "# I will apply x-gate to the first quantum bit twice\n", + "mycircuit2.x(qreg2[0])\n", + "mycircuit2.x(qreg2[0])\n", + "\n", + "# I will apply x-gate to the fourth quantum bit once\n", + "mycircuit2.x(qreg2[3])\n", + "\n", + "# I will apply x-gate to the third quantum bit three times\n", + "mycircuit2.x(qreg2[2])\n", + "mycircuit2.x(qreg2[2])\n", + "mycircuit2.x(qreg2[2])\n", + "\n", + "# I will apply x-gate to the second quantum bit four times\n", + "mycircuit2.x(qreg2[1])\n", + "mycircuit2.x(qreg2[1])\n", + "mycircuit2.x(qreg2[1])\n", + "mycircuit2.x(qreg2[1])\n", + "\n", + "# if the size of quantum and classical registers are the same, we can define measurements with a single line code\n", + "mycircuit2.measure(qreg2,creg2)\n", + "# then each quantum bit and classical bit is associated with respect to their indices\n", + "\n", + "# let's run our codes until now, and then draw our circuit\n", + "\n", + "print(\"Everything looks fine, let's continue ...\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "drawer(mycircuit2)\n", + "# re-execute me if you DO NOT see the circuit diagram" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 2

\n", + "\n", + "Guess the outcome by checking the circuit.\n", + "\n", + "Then, compare your guess with the result obtained after executing our circuit 500 times." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "job = execute(mycircuit2,Aer.get_backend('qasm_simulator'),shots=500)\n", + "counts = job.result().get_counts(mycircuit2)\n", + "print(counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

An important technical note:

\n", + "\n", + "In Qiskit the outcomes are read from the classical register bottom to top \n", + "$$ creg[3],~creg[2],~creg[1],~creg[0] $$\n", + "and so, we see the reverse of what we expected. \n", + "\n", + "If you think the overall output as a single number, then it is assumed that the upper bits are the least significant bits." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Reverse the output

\n", + "\n", + "Let's write a method to print the reverse the outcomes as we expected.\n", + "\n", + "You may use this method later." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def print_outcomes(counts): # takes a dictionary variable\n", + " for outcome in counts: # for each key-value in dictionary\n", + " reverse_outcome = ''\n", + " for i in outcome: # each string can be considered as a list of characters\n", + " reverse_outcome = i + reverse_outcome # each new symbol comes before the old symbol(s)\n", + " print(reverse_outcome,\"is observed\",counts[outcome],\"times\")\n", + "\n", + "job = execute(mycircuit2,Aer.get_backend('qasm_simulator'),shots=1024)\n", + "counts = job.result().get_counts(mycircuit2) # counts is a dictionary object in python\n", + "print_outcomes(counts)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Pick a random number

\n", + "\n", + "In your first circuit design task, you will be asked to apply x-gate randomly.\n", + "\n", + "Here is one of the method to pick a random number in python." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "n = 20\n", + "r=randrange(n) # pick a number from the list {0,1,...,n-1}\n", + "print(r)\n", + "\n", + "# test this method by using a loop\n", + "for i in range(10):\n", + " print(randrange(n))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 3

\n", + "\n", + "Design a quantum circuit with 10 quantum bits and 10 classical bits.\n", + "\n", + "For each quantum bit, flip a coin, and apply x-gate if the outcome is head.\n", + "\n", + "Measure your quantum bits.\n", + "\n", + "Execute your circuit 128 times.\n", + "\n", + "Repeat this task as mush as you want, and enjoy your random choices." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B26_Coin_Flip.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B26_Coin_Flip.ipynb new file mode 100644 index 000000000..25eb95695 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B26_Coin_Flip.ipynb @@ -0,0 +1,212 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Coin Flip: A Probabilistic Bit

\n", + "\n", + "

A fair coin

\n", + "\n", + "A coin has two sides: Head and Tail.\n", + "\n", + "After flipping a coin, we can get a Head or Tail. We can represent these two cases by a single bit:\n", + "
    \n", + "
  • 0 represents Head
  • \n", + "
  • 1 represents Tail
  • \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Flipping a fair coin

\n", + "\n", + "If our coin is fair, then the probability of obtaining a Head or Tail is equal:\n", + "\n", + "$ p= \\dfrac{1}{2} = 0.5 $.\n", + "\n", + "Coin-flipping can be defined as an operator:\n", + "
    \n", + "
  • $ FairCoin(Head) = \\frac{1}{2} Head + \\frac{1}{2}Tail $
  • \n", + "
  • $ FairCoin(Tail) = \\frac{1}{2} Head + \\frac{1}{2}Tail $
  • \n", + "
\n", + "$\n", + "FairCoin = \\begin{array}{c|cc} & \\mathbf{Head} & \\mathbf{Tail} \\\\ \\hline \\mathbf{Head} & \\dfrac{1}{2} & \\dfrac{1}{2} \\\\ \\mathbf{Tail} & \\dfrac{1}{2} & \\dfrac{1}{2} \\end{array}\n", + "$\n", + "\n", + "Or, by using 0 and 1:\n", + "\n", + "$\n", + "FairCoin = \\begin{array}{c|cc} & \\mathbf{0} & \\mathbf{1} \\\\ \\hline \\mathbf{0} & \\dfrac{1}{2} & \\dfrac{1}{2} \\\\ \\mathbf{1} & \\dfrac{1}{2} & \\dfrac{1}{2} \\end{array}\n", + "$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 1: Simulating FairCoin in Python

\n", + "\n", + "Flip a fair coin 100 times. Calcuate the total number of heads and tails, and then compare them.\n", + "\n", + "Do the same experiment 1000 times.\n", + "\n", + "Do the same experiment 10,000 times.\n", + "\n", + "Do the same experiment 100,000 times.\n", + "\n", + "Do your results get close to the ideal case (the numbers of heads and tails are the same)?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# first we import a procedure for picking a random number\n", + "from random import randrange\n", + "# randrange(m) returns a number randomly from the list {0,1,...,m-1}\n", + "# randrange(10) returns a number randomly from the list {0,1,...,9}\n", + "# here is an example\n", + "r=randrange(5)\n", + "print(\"I picked a random number between 0 and 4, which is \",r)\n", + "\n", + "#\n", + "# your solution is here\n", + "#\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Flipping a biased coin

\n", + "\n", + "Our coin may have a bias. \n", + "\n", + "For example, the probability of getting head is greater than the probability of getting tail.\n", + "\n", + "Here is an example:\n", + "\n", + "$\n", + "BiasedCoin = \\begin{array}{c|cc} & \\mathbf{Head} & \\mathbf{Tail} \\\\ \\hline \\mathbf{Head} & 0.6 & 0.6 \\\\ \\mathbf{Tail} & 0.4 & 0.4 \\end{array}\n", + "$\n", + "\n", + "Or, by using 0 and 1 as the states:\n", + "\n", + "$\n", + "BiasedCoin = \\begin{array}{c|cc} & \\mathbf{0} & \\mathbf{1} \\\\ \\hline \\mathbf{0} & 0.6 & 0.6\\\\ \\mathbf{1} & 0.4 & 0.4 \\end{array}\n", + "$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 2: Simulating BiasedCoin in Python

\n", + "\n", + "Flip the following biased coin 100 times. Calcuate the total number of heads and tails, and then compare them.\n", + "\n", + "$\n", + "BiasedCoin = \\begin{array}{c|cc} & \\mathbf{Head} & \\mathbf{Tail} \\\\ \\hline \\mathbf{Head} & 0.6 & 0.6 \\\\ \\mathbf{Tail} & 0.4 & 0.4 \\end{array}\n", + "$\n", + "\n", + "\n", + "Do the same experiment 1000 times.\n", + "\n", + "Do the same experiment 10,000 times.\n", + "\n", + "Do the same experiment 100,000 times.\n", + "\n", + "Do your results get close to the ideal case $ \\mypar{ \\dfrac{ \\mbox{# of heads} }{ \\mbox{# of tails} } = \\dfrac{0.6}{0.4} = 1.50000000 } $?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# first we import a procedure for picking a random number\n", + "from random import randrange\n", + "#\n", + "# your solution is here\n", + "#\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B28_Coin_Flip_Game.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B28_Coin_Flip_Game.ipynb new file mode 100644 index 000000000..a882167c3 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B28_Coin_Flip_Game.ipynb @@ -0,0 +1,221 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

A Game with two biased coins

\n", + "\n", + "Your friend Asja has one euro and one cent. \n", + "\n", + "Both coins are biased, and the probabilities of getting heads and tails are as follows:\n", + "
    \n", + "
  • one euro: head with probability $ 0.6 $ and tail with probability $ 0.4 $.
  • \n", + "
  • one cent: head with probability $ 0.3 $ and tail with probability $ 0.7 $.
  • \n", + "
\n", + "\n", + "Asja flips her coins based on the following protocol: \n", + "
    \n", + "
  1. she starts with flipping one euro,
  2. \n", + "
  3. whenever she gets a head, she flips one euro, and
  4. \n", + "
  5. whenever she gets a tail, she flips one cent.
  6. \n", + "
\n", + "\n", + "By using a single bit, we summarize all possible transitions of this game as follows:\n", + "\n", + "$\n", + "GameCoins = \\begin{array}{c|cc} & \\mathbf{Head} & \\mathbf{Tail} \\\\ \\hline \\mathbf{Head} & 0.6 & 0.3\\\\ \\mathbf{Tail} & 0.4 & 0.7 \\end{array} = \\begin{array}{c|cc} & \\mathbf{0} & \\mathbf{1} \\\\ \\hline \\mathbf{0} & 0.6 & 0.3 \\\\ \\mathbf{1} & 0.4 & 0.7 \\end{array}\n", + "$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 1: Convience yourself

\n", + "\n", + "Please convience yourself about the correctness of transitions given in the table.\n", + "\n", + " Remark that there is no difference between getting head from one euro or getting head from one cent.\n", + " \n", + "Therefore, one bit is enough to represent all transitions.\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Tracing Asja's three coin tosses

\n", + "\n", + "Suppose that Asja secretly tosses her coins based on the defined protocol.\n", + "\n", + "By using python, we can calculate the probabilities of Asja getting head and tail after three coin tosses.\n", + "\n", + "Remark: In the previous two tasks, the ideal ratio was easy to calculate. We did our experiments and compared our results with the ideal ratio. \n", + "\n", + "Here we will calculate the exact probabilities (the ideal ratio) by using python. (We will not do experiment.)\n", + "\n", + "\n", + "We present our solution step by step." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# OUR SOLUTION\n", + "#\n", + "\n", + "# initial case\n", + "# We assume that the probability of getting head is 1 at the beginning,\n", + "# because Asja will start with one euro.\n", + "prob_head = 1\n", + "prob_tail = 0\n", + "\n", + "\n", + "#\n", + "# first coin-flip\n", + "#\n", + "\n", + "# if the last result was head\n", + "new_prob_head_from_head = prob_head * 0.6\n", + "new_prob_tail_from_head = prob_head * 0.4\n", + "\n", + "# if the last result was tail\n", + "# we know that prob_tail is 0 at the beginning \n", + "# but we still keep these two lines to have the same code for each iteration\n", + "new_prob_head_from_tail = prob_tail * 0.3\n", + "new_prob_tail_from_tail = prob_tail * 0.7\n", + "\n", + "# update the probabilities at the end of coin toss\n", + "prob_head = new_prob_head_from_head + new_prob_head_from_tail\n", + "prob_tail = new_prob_tail_from_head + new_prob_tail_from_tail\n", + "\n", + "#\n", + "# second coin-flip\n", + "#\n", + "# we do the same calculations\n", + "\n", + "new_prob_head_from_head = prob_head * 0.6\n", + "new_prob_tail_from_head = prob_head * 0.4\n", + "\n", + "new_prob_head_from_tail = prob_tail * 0.3\n", + "new_prob_tail_from_tail = prob_tail * 0.7\n", + "\n", + "prob_head = new_prob_head_from_head + new_prob_head_from_tail\n", + "prob_tail = new_prob_tail_from_head + new_prob_tail_from_tail\n", + "\n", + "#\n", + "# third coin-flip\n", + "#\n", + "# we do the same calculations\n", + "\n", + "new_prob_head_from_head = prob_head * 0.6\n", + "new_prob_tail_from_head = prob_head * 0.4\n", + "\n", + "new_prob_head_from_tail = prob_tail * 0.3\n", + "new_prob_tail_from_tail = prob_tail * 0.7\n", + "\n", + "prob_head = new_prob_head_from_head + new_prob_head_from_tail\n", + "prob_tail = new_prob_tail_from_head + new_prob_tail_from_tail\n", + "\n", + "# print prob_head and prob_tail\n", + "print(\"the probability of getting head\",prob_head)\n", + "print(\"the probability of getting tail\",prob_tail)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 2: Tracing ten biased coin tosses

\n", + "\n", + "By using python, calculate the probabilities of Asja getting head and tail after 10 coin tosses.\n", + "\n", + "$\n", + "GameCoins = \\begin{array}{c|cc} & \\mathbf{Head} & \\mathbf{Tail} \\\\ \\hline \\mathbf{Head} & 0.6 & 0.3\\\\ \\mathbf{Tail} & 0.4 & 0.7 \\end{array} = \\begin{array}{c|cc} & \\mathbf{0} & \\mathbf{1} \\\\ \\hline \\mathbf{0} & 0.6 & 0.3 \\\\ \\mathbf{1} & 0.4 & 0.7 \\end{array}\n", + "$\n", + "\n", + "Please use a loop in your solution." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B32_Probabilistic_States.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B32_Probabilistic_States.ipynb new file mode 100644 index 000000000..895dbba0c --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B32_Probabilistic_States.ipynb @@ -0,0 +1,260 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
\n", + "
I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
\n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Probabilistic States

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Suppose that Asja flips a fair coin secretly.\n", + "\n", + "Because we do not see the result, our information about the outcome will be probabilistic:\n", + "\n", + "$\\rightarrow$ The result is Head with probability $0.5$ and the result is Tail with probability $0.5$.\n", + "\n", + "If the coin has a bias $ \\dfrac{Pr(Head)}{Pr(Tail)} = \\dfrac{3}{1}$, then our information about the outcome is as follows:\n", + "\n", + "$\\rightarrow$ The result is Head with probability $ 0.75 $ and the result is Tail with probability $ 0.25 $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Solution: The probability of getting Head is three times of the probability of getting Tail.\n", + "
    \n", + "
  • The total probability is 1.
  • \n", + "
  • We divide 1 into four parts (three parts for Head and one part is for Tail),\n", + "
  • $ \\dfrac{1}{4} = 0.25$,
  • \n", + "
  • and then give three parts for Head ($0.75$) and one part for Tail ($0.25$).
  • \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Listing probabilities as a column

\n", + "\n", + "We have two different outcomes: Head (0) and Tail (1).\n", + "\n", + "Then, we can use a column of size 2 to hold the probabilities of getting Head and getting Tail.\n", + "\n", + "For the fair coin, our information after the coin-flip is $ \\myvector{0.5 \\\\ 0.5} $. \n", + "\n", + "For the biased coin, it is $ \\myvector{0.75 \\\\ 0.25} $.\n", + "\n", + "The first entry refers to the probability of getting Head, and the second entry refers to the probability of getting Tail.\n", + "\n", + " $ \\myvector{0.5 \\\\ 0.5} $ and $ \\myvector{0.75 \\\\ 0.25} $ are examples of 2-dimensional (column) vectors." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 1

\n", + "\n", + "Suppose that Balvis secretly flips a coin having bias $ \\dfrac{Pr(Head)}{Pr(Tail)} = \\dfrac{1}{4}$.\n", + "\n", + "Represent your information about the outcome as a column vector." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Task 2

\n", + "\n", + "Suppose that Fyodor secretly rolls a loaded (tricky) dice with the bias \n", + "\n", + "$$ Pr(1):Pr(2):Pr(3):Pr(4):Pr(5):Pr(6) = 7:5:4:2:6:1 . $$\n", + "\n", + "Represent your information on the result as a column vector. Remark that the size of your column should be 6.\n", + "\n", + "You may use python for your calculations." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# You may use python for your calculations.\n", + "#\n", + "all_portions = [7,5,4,2,6,1];\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Vector representation

\n", + "\n", + "Suppose that we have a system with 4 distiguishable states: $ s_1 $, $s_2 $, $s_3$, and $s_4$. \n", + "\n", + "We expect the system to be in one of them at any moment. \n", + "\n", + "By using the language of probability, we can also say that the system is in one of the states with probability 1, and in any other state with probabilty 0. \n", + "\n", + "Then, by using our column representation, we can show each state as a column vector:\n", + "\n", + "$$\n", + " s_1 = \\myvector{1\\\\ 0 \\\\ 0 \\\\ 0}, s_2 = \\myvector{0 \\\\ 1 \\\\ 0 \\\\ 0}, s_3 = \\myvector{0 \\\\ 0 \\\\ 1 \\\\ 0}, \n", + " \\mbox{ and } s_4 = \\myvector{0 \\\\ 0 \\\\ 0 \\\\ 1}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This representation helps us to represent our knowledge on a system when it is in more than one state with certain probabilities. \n", + "\n", + "Remember the case in which the coins are tossed secretly. \n", + "\n", + "For example, suppose that the system is in state $ s_1 $, $ s_2 $, $ s_3 $, and $ s_4 $ with probabilities $ 0.20 $, $ 0.25 $, $ 0.40 $, and $ 0.15 $, respectively. \n", + "\n", + "(The total probability should be 1, i.e. $ 0.20+0.25+0.40+0.15 = 1.00 $)\n", + "\n", + "Then, we can say that the system is in the following probabilistic state:\n", + "$$\n", + " \\myvector{ 0.20 \\\\ 0.25 \\\\ 0.40 \\\\ 0.15 },\n", + "$$\n", + "where the summation of entries must be 1." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Thus, we can show all information as a single object. \n", + "\n", + "Nicely, this probabilistic state can also be written as the following summation:\n", + "\n", + "$$\n", + " 0.20 \\cdot \\myvector{1\\\\ 0 \\\\ 0 \\\\ 0} + 0.25 \\cdot \\myvector{0\\\\ 1 \\\\ 0 \\\\ 0} + 0.40 \\cdot \\myvector{0\\\\ 0 \\\\ 1 \\\\ 0} + 0.15 \\cdot \\myvector{0\\\\ 0 \\\\ 0 \\\\ 1} = \\myvector{0.20\\\\ 0 \\\\ 0 \\\\ 0} + \\myvector{0\\\\ 0.25 \\\\ 0 \\\\ 0} + \\myvector{0\\\\ 0 \\\\0.40 \\\\ 0} + \\myvector{0\\\\ 0 \\\\ 0 \\\\ 0.15 } = \\myvector{ 0.20 \\\\ 0.25 \\\\ 0.40 \\\\ 0.15 }.\n", + "$$\n", + "\n", + "Here we use two basic arithmetic rules about the vectors:\n", + "
    \n", + "
  1. when a vector is multiplied with a number, then each entry of the vector is multiplied with this number, and,
  2. \n", + "
  3. when two or more vectors are added up, the summation is done on the same entries." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Task 3

    \n", + "\n", + "Verify the following equality.\n", + "\n", + "$$\n", + " 2 \\cdot \\mymatrix{r}{1\\\\-2\\\\3\\\\0} - 3 \\cdot \\mymatrix{r}{0\\\\4\\\\1\\\\-1} = \\mymatrix{r}{2 \\\\ -16 \\\\ 3 \\\\ 3}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Task 4

    \n", + "\n", + "For a system with 4 states, randomly create a probabilistic state, and print its entries, e.g., $ 0.16~~0.17~~0.02~~0.65 $.\n", + "\n", + "You may pick your random numbers between 0 and 100 (or 1000), and then divide each by 100 (or 1000) to represent it as a probability." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "\n", + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B36_Probabilistic_Operators.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B36_Probabilistic_Operators.ipynb new file mode 100644 index 000000000..878f3cd8b --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B36_Probabilistic_Operators.ipynb @@ -0,0 +1,520 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
    \n", + "
    I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
    \n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Probabilistic Operators

    \n", + "\n", + "Remember Asja's biased coins, and her coin-flipping protocol.\n", + "\n", + "$\n", + "GameCoins = \\begin{array}{c|cc} & \\mathbf{Head} & \\mathbf{Tail} \\\\ \\hline \\mathbf{Head} & 0.6 & 0.3\\\\ \\mathbf{Tail} & 0.4 & 0.7 \\end{array} = \\begin{array}{c|cc} & \\mathbf{0} & \\mathbf{1} \\\\ \\hline \\mathbf{0} & 0.6 & 0.3 \\\\ \\mathbf{1} & 0.4 & 0.7 \\end{array}\n", + "$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's trace Asja's outcomes after two coin flips.\n", + "\n", + " At the beginning: \n", + "\n", + " Remember the protocol:\n", + "
      \n", + "
    1. she starts with flipping one euro,
    2. \n", + "
    3. whenever she gets a head, she flips one euro, and
    4. \n", + "
    5. whenever she gets a tail, she flips one cent.
    6. \n", + "
    \n", + "
    \n", + "\n", + "She starts in state $ \\myvector{1 \\\\ 0} $.\n", + "\n", + "State 0 represents Head and state 1 represents Tail." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After one coin flip:\n", + "\n", + "The probabilities of getting head and tail are $0.6$ and $ 0.4 $. Thus, the new state is $ \\myvector{0.6 \\\\ 0.4} $.\n", + "\n", + "After two coin flip:\n", + "\n", + "The probabilities of getting head and tail are\n", + "\n", + "$$\n", + " \\begin{array}{lclcl}\n", + " 0.6 Head & \\rightarrow & 0.36 Head & + & 0.24 Tail \n", + " \\\\\n", + " 0.4 Tail & \\rightarrow & 0.12 Head & + & 0.28 Tail\n", + " \\\\\n", + " Total: & & 0.48 Head & + & 0.52 Tail\n", + " \\end{array} \n", + " ~~~~~~~~~~~~~~~~~~~~~\n", + " \\mypar{ \n", + " GameCoins = \\begin{array}{c|cc} & \\mathbf{Head} & \\mathbf{Tail} \\\\ \\hline \\mathbf{Head} & 0.6 & 0.3\\\\ \\mathbf{Tail} & 0.4 & 0.7 \\end{array}\n", + " }\n", + "$$\n", + "\n", + "Thus the new state is $ \\myvector{0.48 \\\\ 0.52} $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Coin-flipping protocol of Asja is a probabilistic operator.\n", + "\n", + "Similar to any operator, depending on the current state, Asja's coin-flipping protocol determines the next state.\n", + "\n", + "$$\n", + " \\myvector{1 \\\\ 0} \\xrightarrow{\\mbox{Asja's coin-flipping protocol}} \\myvector{0.6 \\\\ 0.4}\n", + " \\xrightarrow{\\mbox{Asja's coin-flipping protocol}} \\myvector{0.48 \\\\ 0.52}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A probabilistic operator evolves the system from any given probabilistic state to a probabilistic state.\n", + "\n", + "For example, Asja's coin-flipping protocol transforms $ \\myvector{ 0.8 \\\\ 0.2 } $ to $ \\myvector{ 0.54 \\\\ 0.46 } $.\n", + "\n", + "For the new state, we use the table $ GameCoins = \\begin{array}{c|cc} & \\mathbf{Head} & \\mathbf{Tail} \\\\ \\hline \\mathbf{Head} & 0.6 & 0.3\\\\ \\mathbf{Tail} & 0.4 & 0.7 \\end{array} $ and the current state $ \\myvector{ 0.8 \\\\ 0.2 } $:\n", + "\n", + "$$\n", + " \\myvector{ \\myarray{c}{0.6 \\cdot 0.8 \\\\ + \\\\ 0.3 \\cdot 0.2} \\\\ \\hline \\myarray{c}{0.4 \\cdot 0.8 \\\\ + \\\\ 0.7 \\cdot 0.2} } = \\myvector{ \\myarray{c}{0.48 \\\\ + \\\\ 0.06} \\\\ \\hline \\myarray{c}{0.32 \\\\ + \\\\ 0.14} } = \\myvector{ 0.54 \\\\ 0.46 }.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You may notice that the first entry of the new probabilistic state is the summation of the pairwise multiplications between the entries of the first row in the table and the entries of the probabilistic state.\n", + "
    • The first row of the table represents the transitions from all states to the first state.
    • \n", + "
    • If the system is in the first state with probability $0.8$, then its contribution to the first state in the new probabilistic state is $ (0.6 \\cdot 0.8) = 0.48 $.
    • \n", + "
    • Similarly, the contribution of the second state to the first state is $ (0.3 \\cdot 0.2) = 0.06 $.
    • \n", + "
    • Then both contributions are added up, $ (0.48 + 0.06) = 0.54 $.
    • \n", + "
    \n", + "\n", + "Similarly, the second entry of the new probabilistic state is the summation of the pairwise multiplications between the entries of the second row in the table and the entries of the probabilistic state.\n", + "
    • The second row of the table represents the transitions from all states to the second state.
    • \n", + "
    • The system is in the first state with probability $0.8$, then its contribution to the second state in the new probabilistic state is $ (0.4 \\cdot 0.8) = 0.32 $.
    • \n", + "
    • Similarly, the contribution of the second state to the second state is $ (0.7 \\cdot 0.2) = 0.14 $.
    • \n", + "
    • Then both contributions are added up, $ (0.32 + 0.14) = 0.46 $.
    • \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " You may have already noticed that this is a matrix-vector multiplication :-) \n", + "\n", + "If we represent $ GameCoins $ as a matrix: $ \\mymatrix{cc}{ 0.6 & 0.3 \\\\ 0.4 & 0.7 } $, then the new probabilistic state is calculated as\n", + "\n", + "$$\n", + " \\myvector{ 0.54 \\\\ 0.46 } = \\mymatrix{cc}{ 0.6 & 0.3 \\\\ 0.4 & 0.7 } \\myvector{ 0.8 \\\\ 0.2 }.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Task 1

    \n", + "\n", + "Please verify the multiplication." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Properties of a probabilistic operator

    \n", + "\n", + "What we have observed is generic for any probabilistic operator:\n", + "
      \n", + "
    • A probabilistic operator can be represented as a matrix.
    • \n", + "
    • Its $ j $-th column represents the transitions probabilities from the $ j $-th state to all states.
    • \n", + "
    • Its $i$-th row represents the transitions probabilities from all states to the $ i $-th state.
    • \n", + "
    • Therefore, the entry in the $ j $-th column and $ i $-th row represents the transition probability from the $j$-th state to the $i$-th state.
    • \n", + "
    \n", + "\n", + "Moreover,\n", + "
      \n", + "
    • each entry of a probabilistic operator must be between 0 and 1, and
    • \n", + "
    • any column summation must be 1.
    • \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Task 2

    \n", + "\n", + "Randomly construct a $ (3 \\times 3 ) $-dimensional probabilistic operator.\n", + "\n", + "That is, randomly determine the entries of the matrix that represents a probabilistic operator." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    The evolution of a probabilistic system

    \n", + "\n", + "If a system is probabilistic,\n", + "
      \n", + "
    • its state description at any time is probabilistic, and it is represented by a probabilistic state, and
    • \n", + "
    • its evolution is governed by probabilistic operators.
    • \n", + "
    \n", + "\n", + "When the system is in the probabilistic state $ v $ and the probabilistic operator $ A $ is applied, then the new probabilistic state is\n", + "\n", + "$$\n", + " v' = A \\cdot v.\n", + "$$\n", + "\n", + "The evolution of a probabilistic system is simplified to matrix vector multiplications." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Mathematical terms (names)

    \n", + "\n", + "There are mathematical terms for probabilistic state and operator.\n", + "\n", + "A probabilistic state is represented by a vector with nonnegative entries such that the summation of all entries is 1.\n", + "\n", + "A probabilistic operator is represented by a square* matrix with nonnegative entries such that the summation of every column is 1.\n", + "\n", + "Any such vector and matrix is also called stochastic.\n", + "\n", + "*Sqaure matrix is a matrix having the same number of row(s) and column(s)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Task 3

    \n", + "\n", + "Write a function in python for Asja's probabilistic operator $ \\mymatrix{cc}{ 0.6 & 0.3 \\\\ 0.4 & 0.7 } $ such that\n", + "
      \n", + "
    • it takes a probabilistic state as the input, and
    • \n", + "
    • it outputs the new probabilistic state.
    • \n", + "
    \n", + " \n", + "Then, test your function by applying it twice to the starting state $ \\myvector{1 \\\\ 0} $.\n", + "\n", + "Remember that: $ \n", + " \\myvector{1 \\\\ 0} \\xrightarrow{\\mbox{Asja's coin-flipping protocol}} \\myvector{0.6 \\\\ 0.4}\n", + " \\xrightarrow{\\mbox{Asja's coin-flipping protocol}} \\myvector{0.48 \\\\ 0.52}.\n", + "$\n", + "\n", + "If your function seems to work, then evolve your system for 3, 6, 9, 12, 24, 48, and 96 steps.\n", + "\n", + "Is there any pattern?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Task 4

    \n", + "\n", + "Write a function that takes a probabilistic operator and a probabilistic state, and then returns the new probabilistic state.\n", + "\n", + "Your function should work for any dimension.\n", + "\n", + "Test your function on $ \\mymatrix{ccc}{ 0.4 & 0.6 & 0 \\\\ 0.2 & 0.1 & 0.7 \\\\ 0.4 & 0.3 & 0.3 } $ and $ \\myvector{0.1 \\\\ 0.3 \\\\ 0.6} $. \n", + "\n", + "The new probabilistic state should be $ \\myvector{0.22 \\\\ 0.47 \\\\ 0.31} $.\n", + "\n", + "Then, evolve your system for 5, 10, 20, and 40 steps.\n", + "\n", + "The system should evolve to a fixed probabilistic state.\n", + "\n", + "Change your initial state to $ \\myvector{1 \\\\ 0 \\\\ 0} $, and see whether the converged state is the same or not." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# operator for the test\n", + "A = [\n", + " [0.4,0.6,0],\n", + " [0.2,0.1,0.7],\n", + " [0.4,0.3,0.3]\n", + "]\n", + "\n", + "# state for test\n", + "v = [0.1,0.3,0.6]\n", + "\n", + "#\n", + "# your solution is here\n", + "#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Two probabilistic bits

    \n", + "\n", + "Freivalds is a probabilistic system with two bits.\n", + "\n", + "Then it has four states: $ 00 $, $ 01 $, $ 10 $, and $ 11 $. \n", + "\n", + "If the first and second bits have two states, then they can be together in $ 2 \\cdot 2 = 4 $ different combinations of states:\n", + "
      \n", + "
    • 00: both bits are zeros,
    • \n", + "
    • 01: the first bit is zero, and the second bit is one,
    • \n", + "
    • 10: the first bit is one, and the second bit is zero, and,
    • \n", + "
    • 11: both bits are ones.
    • \n", + "
    \n", + " \n", + "Each different combination is a new state of the composite system, which is composed by two bits.\n", + "\n", + " As another example, three bits form a system with $ 2 \\cdot 2 \\cdot 2 = 8 $ states: $ 000 $, $ 001 $, $ 010 $, $ 011 $, $ 100 $, $ 101 $, $ 110 $, and $ 111 $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Freivalds' initial state (Optional)

    \n", + "\n", + "Freivalds starts in state $ \\myvector{ 0.5 \\\\ 0 \\\\ 0.5 \\\\ 0 } $.\n", + "\n", + "Freivalds symbol by symbol reads the strings composed by $ a $s and $ b $s." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Freivalds reads symbol $ a $

    \n", + "\n", + "When reading an $ a $ and in the state $ 00 $, Freivalds goes to states $ 01 $ and $ 11 $ with probabilities $ 0.25 $ and stays in state $ 00 $ with probabilty $ 0.5 $. \n", + "\n", + "When reading an $ a $ and in any other state, Freivalds stays in the same state with probability 1.\n", + "\n", + "Thus, we can define a probabilistic operator $ A $ for the actions of reading an $ a $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Task 5

    \n", + "\n", + "Is A the following matrix?\n", + "\n", + "$$\n", + " A = \\mymatrix{rccc}{ 0.5 & 0 & 0 & 0 \\\\ 0.25 & 1 & 0 & 0 \\\\ 0 & 0 & 1 & 0 \\\\ 0.25 & 0 & 0 & 1 }.\n", + "$$\n", + "\n", + " The columns and rows correspond to the states in order of $ 00 $, $ 01 $, $ 10 $, and $ 11 $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Freivalds reads symbol $ b $

    \n", + "\n", + "When reading a $ b $ and in the state $ 10 $, Freivalds goes to states $ 01 $ and $ 11 $ with probabilities $ 0.25 $ and stays in state $ 10 $ with probabilty $ 0.5 $. \n", + "\n", + "When reading a $ b $ and in any other state, Freivalds stays in the same state with probability 1.\n", + "\n", + "Thus, we can define a probabilistic operator $ B $ for the actions of reading a $ b $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Task 6

    \n", + "\n", + "Is B the following matrix?\n", + "\n", + "$$\n", + " B = \\mymatrix{rccc}{ 1 & 0 & 0 & 0 \\\\ 0 & 1 & 0.25 & 0 \\\\ 0 & 0 & 0.5 & 0 \\\\ 0 & 0 & 0.25 & 1 }.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Task 7

    \n", + "\n", + "A challenging task.\n", + "\n", + "Freivalds reads 50 random strings of length 40. \n", + "\n", + "Find the final probabilistic state for each string.\n", + "\n", + "Is there any relation between the numbers of $ a $s and $ b $s, say $ N_a $ and $ N_b $, and the probabilities of the first bit being in zero and one, say $ p_0 $ and $ p_1 $?\n", + "
      \n", + "
    • When $ N_a > N_b $, then is $ p_0 < p_1 $ or $ p_0 > p_1 $?
    • \n", + "
    • When $ N_a < N_b $, then is $ p_0 < p_1 $ or $ p_0 > p_1 $?
    • \n", + "
    \n", + "\n", + "Or simply check the signs of $ (N_a - N_b) $ and $ (p_0-p_1) $ for each string.\n", + "\n", + "Note that the multiplication of two numbers with the same signs is a positive number, and the multiplication of two numbers with the opposite signs gives a negative number." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# the initial state\n", + "initial = [0.5, 0, 0.5, 0]\n", + "\n", + "# probabilistic operator for symbol a\n", + "A = [\n", + " [0.5, 0, 0, 0],\n", + " [0.25, 1, 0, 0],\n", + " [0, 0, 1, 0],\n", + " [0.25, 0, 0, 1]\n", + "]\n", + "\n", + "# probabilistic operator for symbol b\n", + "B = [\n", + " [1, 0, 0, 0],\n", + " [0, 1, 0.25, 0],\n", + " [0, 0, 0.5, 0],\n", + " [0, 0, 0.25, 1]\n", + "]\n", + "\n", + "#\n", + "# your solution is here\n", + "#" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B40_Quantum_Coin_flipping.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B40_Quantum_Coin_flipping.ipynb new file mode 100644 index 000000000..9c2084a24 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B40_Quantum_Coin_flipping.ipynb @@ -0,0 +1,305 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
    \n", + "
    I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
    \n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Quantum Coin Flipping

    \n", + "\n", + "Welcome to quantum world :) \n", + "\n", + "We will do a series of experiments, and try to understand the behaviours of \"particles\" in quantum world." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    The first experiment

    \n", + "\n", + "We will trace the behaviour of a photon.\n", + "\n", + "For quantum coin-flipping, we use a beam splitter.\n", + "\n", + "For measurements, we use two photon detectors.\n", + "\n", + "
      \n", + "
    • Photon is our coin.
    • \n", + "
    • Beam splitter flips the photon.
    • \n", + "
    • Photon detectors are our eyes.
    • \n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      The setup

      \n", + "\n", + "We send photons to a beam splitter as shown below.\n", + "\n", + "We expect two behaviours: the beam splitter either transmits or reflects the photon.\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Experimental results

      \n", + "\n", + "After many experiments, we observe the photons in each photon detector almost evenly ($ \\approx \\% 50 $ and $ \\approx \\% 50 $).\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      The first interpretation

      \n", + "\n", + "So, the affect of a beam splitter is similar to fair coin.\n", + "\n", + "
        \n", + "
      • Head (state 0): Trasmitted
      • \n", + "
      • Tail (state 1): Reflected
      • \n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Model

      \n", + "\n", + "Thus, let's describe our first experiment by a single (probabilistic) bit.\n", + "\n", + "We start in state 0.\n", + "\n", + "With half probability, the photon transmits, and the state does not change.\n", + "\n", + "With half probability, the photon is reflected, and the state is flipped.\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      The second experiment

      \n", + "\n", + "Let's extend our experiment with two mirrors and another beam splitter.\n", + "\n", + "Then try to confirm our interpretation and model." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we have three photon detectors.\n", + "\n", + "By using our model described above, we expect to observe a photon \n", + "
        \n", + "
      • in $ A $ with probability $ 0.5 $,
      • \n", + "
      • and in $ B1 $ and $ B2 $ with probabilities $ 0.25 $.
      • \n", + "
      \n", + "\n", + "Thus, our prediction for the frequencies of observing the photons in $ A $, $ B1 $, and $ B2 $ are respectively\n", + "\n", + "$$\n", + " \\approx \\% 50, \\approx \\% 25, \\mbox{ and } \\approx \\% 25. \n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Experimental results

      \n", + "\n", + "Experiments confirm our predictions.\n", + "\n", + "Our model could explain the second experiment." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      The third experiment

      \n", + "\n", + "In the third experiment, we remove the photon detector $ A $.\n", + "\n", + "So we have only the detectors $ B1 $ and $ B2 $. \n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Our prediction

      \n", + "\n", + "The third setup is similar to flipping a fair coin twice.\n", + "\n", + "Our prediciton is to observe the photons in $ B1 $ and $ B2 $ almost evenly ($ \\approx \\% 50 $ and $ \\approx \\% 50 $)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Let's do the math of our prediction

      \n", + "\n", + "0) At the initial step, we are in state $ 0 $. If we use our vector representation, it is\n", + "\n", + "$$ v_0 = \\myvector{1 \\\\ 0}. $$\n", + "\n", + "1) We flip a fair coin. The new probabilistic state is expected to be in both states ($0$ and $1$) with half probability ($ \\frac{1}{2} = 0.5 $).\n", + "\n", + "$$\n", + " v_1 = \\myvector{\\frac{1}{2} \\\\ \\frac{1}{2}}\n", + " = \\mymatrix{cc}{ \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} } \n", + " \\myvector{1 \\\\ 0}.\n", + "$$\n", + "\n", + "Here the transitions of a fair coin can be represented by the matrix (table): $ \\mymatrix{cc}{ \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} } $ . \n", + "\n", + "2) Then, we flip a fair coin again. The new probabilistic state will be the same:\n", + "\n", + "$$\n", + " v_2 = \\myvector{\\frac{1}{2} \\\\ \\frac{1}{2}} = \n", + " \\mymatrix{cc}{ \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} } \n", + " \\myvector{\\frac{1}{2} \\\\ \\frac{1}{2}}.\n", + "$$\n", + "\n", + " Our predicition is fine with mathematical calculation. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Experimental results

      \n", + "\n", + "However, the experiments results do not confirm our prediction." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We observe the photons only in the detector $ B1 $, and we never observe any photon in the detector $ B2 $.\n", + "\n", + " How could this be possible?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " We have just observed how the classical physics (Newtonian mechanics) fails to explain quantum world!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We need a new way of explanation, called quantum mechanics.\n", + "\n", + "We can explain our experiments by using quantum mechanics.\n", + "\n", + "Welcome again to quantum world :-)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B42_Hadamard.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B42_Hadamard.ipynb new file mode 100644 index 000000000..ac682d256 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B42_Hadamard.ipynb @@ -0,0 +1,310 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
      \n", + "
      I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
      \n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Hadamard

      \n", + "\n", + "The operator for quantum coin-flipping is called Hadamard. \n", + "\n", + "It is referred as h-gate in Qiskit." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      The first experiment

      \n", + "\n", + "Let's implement the first experiment.\n", + "\n", + "Our quantum bit (qubit) starts in state 0, which is shown as $ \\ket{0} $.\n", + "\n", + " $ \\ket{\\cdot} $ is called ket-notation: Ket-notation was introduced to simplify the calculations in quantum mechanics." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      The circuit with a single Hadamard

      \n", + "\n", + "Let's desing a circuit with one qubit, and apply quantum coin-flipping once." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "# define a quantum register with one qubit\n", + "qreg1 = QuantumRegister(1)\n", + "\n", + "# define a classical register with one bit\n", + "# it stores the measurement result of the quantum part\n", + "creg1 = ClassicalRegister(1)\n", + "\n", + "# define our quantum circuit\n", + "mycircuit1 = QuantumCircuit(qreg1,creg1)\n", + "\n", + "# apply h-gate (Hadamard: quantum coin-flipping) to the first qubit\n", + "mycircuit1.h(qreg1[0])\n", + "\n", + "# measure the first qubit, and store the result in the first classical bit\n", + "mycircuit1.measure(qreg1,creg1)\n", + "\n", + "print(\"Everything looks fine, let's continue ...\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# draw the circuit\n", + "\n", + "drawer(mycircuit1)\n", + "# reexecute me if you DO NOT see the circuit diagram" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# execute the circuit 10000 times in the local simulator\n", + "\n", + "job = execute(mycircuit1,Aer.get_backend('qasm_simulator'),shots=10000)\n", + "counts1 = job.result().get_counts(mycircuit1)\n", + "print(counts1) # print the outcomes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The numbers of outcomes '0's and '1's are expected to be close to each other.\n", + "\n", + "\n", + "\n", + " As we have observed after this implementation, quantum systems are probabilistic." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      The third experiment

      \n", + "\n", + "Currently, the intermediate measurements are not possible to implement.\n", + "\n", + "Therefore, we (skip the second experiment and) implement the third experiment.\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      The circuit with two Hadamards

      \n", + "\n", + "We design a circuit with one qubit, and apply quantum coin-flipping twice." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "# define a quantum register with one qubit\n", + "qreg2 = QuantumRegister(1)\n", + "\n", + "# define a classical register with one bit\n", + "# it stores the measurement result of the quantum part\n", + "creg2 = ClassicalRegister(1)\n", + "\n", + "# define our quantum circuit\n", + "mycircuit2 = QuantumCircuit(qreg2,creg2)\n", + "\n", + "# apply h-gate (Hadamard: quantum coin-flipping) to the first qubit\n", + "mycircuit2.h(qreg2[0])\n", + "\n", + "# apply h-gate (Hadamard: quantum coin-flipping) to the first qubit once more\n", + "mycircuit2.h(qreg2[0])\n", + "\n", + "# measure the first qubit, and store the result in the first classical bit\n", + "mycircuit2.measure(qreg2,creg2)\n", + "\n", + "print(\"Everyhing looks fine, let's continue ...\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# draw the circuit\n", + "\n", + "drawer(mycircuit2)\n", + "# reexecute me if you DO NOT see the circuit diagram" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# execute the circuit 10000 times in the local simulator\n", + "\n", + "job = execute(mycircuit2,Aer.get_backend('qasm_simulator'),shots=10000)\n", + "counts2 = job.result().get_counts(mycircuit2)\n", + "print(counts2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The only outcome must be '0'.\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 1

      \n", + "\n", + "Remember that x-gate flips the value of a qubit.\n", + "\n", + "Design a quantum circuit with a single qubit.\n", + "\n", + "The qubit is initially set to $ \\ket{0} $.\n", + "\n", + "Set the value of qubit to $ \\ket{1} $ by using x-gate.\n", + "\n", + "Experiment 1: Apply one Hadamard gate, make measurement, and execute your program 10000 times.\n", + "\n", + "Experiment 2: Apply two Hadamard gates, make measurement, and execute your program 10000 times.\n", + "\n", + "Compare your results.\n", + "\n", + "The following two diagrams represent two different experiments." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
      " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "#\n", + "# your code is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B44_One_Qubit.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B44_One_Qubit.ipynb new file mode 100644 index 000000000..210105ed5 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B44_One_Qubit.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
      \n", + "
      I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
      \n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      One Qubit

      \n", + "\n", + "A qubit (quantum bit) has two states: state 0 and state 1.\n", + "\n", + "They are denoted by ket-notation:\n", + "\n", + "$ \\ket{0} $ and $ \\ket{1} $.\n", + "\n", + "We can show them as vectors:\n", + "\n", + "$ \\ket{0} = \\myvector{1 \\\\ 0} $ and $ \\ket{1} = \\myvector{0\\\\ 1} $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      NOT operator

      \n", + "\n", + "NOT operator flips the value of a qubit.\n", + "\n", + "We use capital letter for the matrix form of the operators:\n", + "\n", + "$ X = \\X$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "A technical note: Why is NOT operator referred as x-gate?\n", + " \n", + "In Bronze, we use only real numbers, but we should note that complex numbers are also used in quantum computing. \n", + " \n", + "When complex numbers are used, a qubit can be represented by a four dimensional real number valued vector, which is not possible to visualize.\n", + "\n", + "On the other hand, it is still possible to represent a qubit (with complex numbers) equivalently in three dimensions. \n", + "\n", + "This representation is called Bloch sphere. \n", + "\n", + "In three dimentions, we have axis: x, y, and z. \n", + "\n", + "X refers to the rotation with respect to x-axis.\n", + "\n", + "Similarly, we have the rotation with respect to y-axis and z-axis.\n", + "\n", + "In Bronze, we will also see the operator Z (z-gate).\n", + "\n", + "The operator Y is defined with complex numbers.\n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The action of $ X $ on the qubit:\n", + "\n", + "$ X \\ket{0} = \\ket{1} $. \n", + "\n", + "More explicitly, $ X \\ket{0} = \\X \\vzero = \\vone = \\ket{1} $.\n", + "\n", + "Similarly, $ X \\ket{1} = \\ket{0} $.\n", + "\n", + "More explicitly, $ X \\ket{1} = \\X \\vone = \\vzero = \\ket{0} $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Hadamard operator

      \n", + "\n", + "Hadamard operator ($ H $ or h-gate) looks like a fair coin-flipping.\n", + "\n", + "$$\n", + " H = \\hadamard.\n", + "$$\n", + "\n", + "But, there are certain dissimilarities:\n", + "
        \n", + "
      • we have a negative entry, and
      • \n", + "
      • instead of $ \\frac{1}{2} $, we have its square root $ \\mypar{ \\frac{1}{\\sqrt{2}} } $.
      • \n", + "
      \n", + "\n", + " Quantum systems can have negative transitions.\n", + "\n", + " Probabilistic system with negative values. How can this be possible? " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      One-step Hadamard

      \n", + "\n", + "Let's start in $ \\ket{0} $.\n", + "\n", + "After applying $ H $:\n", + "\n", + "$$\n", + " \\vhadamardzero = \\hadamard \\vzero = H \\ket{0}.\n", + "$$\n", + "\n", + "After measurement, we observe the zero and one states with equal probability $ \\frac{1}{2} $. \n", + "\n", + "How can this be possible when their values are $ \\frac{1}{\\sqrt{2}} $?\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start in $ \\ket{1} $.\n", + "\n", + "After applying $ H $:\n", + "\n", + "$$\n", + " \\vhadamardone = \\hadamard \\vone = H \\ket{1}.\n", + "$$\n", + "\n", + "After measurement, we observe the zero and one states with equal probability $ \\frac{1}{2} $. \n", + "\n", + "We obtain the same values even when one of the value is negative. \n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The absolute value of a negative value is positive.\n", + "\n", + "The square of a negative value is also positive.\n", + "\n", + "As we have observed, the second fact would help to read the measurement results.\n", + "\n", + " When a quantum system is measured, the probability of observing one state is the sqaure of its value.\n", + "\n", + "In order to distinguish the value of a state to be in from the probability of a state to be observed, the value of a state to be in is called its amplitude.\n", + "\n", + "In the above example, the amplitude of the zero and one states are respectively $ \\sqrttwo $ and $ -\\sqrttwo $.\n", + "\n", + "Their probabilities to be observed after measurement are $ \\onehalf $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 1

      \n", + "\n", + "What are the probabilities of observing the states $ \\ket{0} $ and $ \\ket{1} $ if our system is in $ \\myvector{-\\frac{3}{5} \\\\ - \\frac{4}{5}} $ or $ \\myvector{\\frac{3}{5} \\\\ \\frac{4}{5}} $ or $ \\myrvector{\\frac{1}{\\sqrt{3}} \\\\ - \\frac{\\sqrt{2}}{\\sqrt{3}}} $?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# you may use python \n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Quantum state

      \n", + "\n", + "What do we know at this point?\n", + "
        \n", + "
      • A quantum state can be represented by a vector, in which each entry can be zero, a positive value, or a negative value.
      • \n", + "
      • We can also say that the amplitude of any state can be zero, a positive value, or a negative value.
      • \n", + "
      • The probability of observing one state after measurement is the square of its amplitude.
      • \n", + "
      \n", + "\n", + "What else can we say?\n", + "\n", + "Can the entries of a quantum state be arbitrary?\n", + "\n", + "Do you remember the properties of a probabilistic state?" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B46_Quantum_State.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B46_Quantum_State.ipynb new file mode 100644 index 000000000..1f84b1b25 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B46_Quantum_State.ipynb @@ -0,0 +1,212 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
      \n", + "
      I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
      \n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Quantum State

      \n", + "\n", + "The overall probability must be 1 when we observe a quantum system.\n", + "\n", + "For example, the following vectors cannot be a valid quantum state:\n", + "\n", + "$$\n", + " \\myvector{ \\frac{1}{2} \\\\ \\frac{1}{2} } \n", + " \\mbox{ and }\n", + " \\myvector{ \\frac{\\sqrt{3}}{2} \\\\ \\frac{1}{\\sqrt{2}} }.\n", + "$$\n", + "\n", + "For the first vector: the probabilities of observing the states $\\ket{0} $ and $ \\ket{1} $ are $ \\frac{1}{4} $. \n", + "\n", + "So, the overall probability of getting a result is $ \\frac{1}{4} + \\frac{1}{4} = \\frac{1}{2} $, which is less than 1.\n", + "\n", + "For the second vector: the probabilities of observing the states $\\ket{0} $ and $ \\ket{1} $ are respectively $ \\frac{3}{4} $ and $ \\frac{1}{2} $. \n", + "\n", + "So, the overall probability of getting a result is $ \\frac{3}{4} + \\frac{1}{2} = \\frac{5}{4} $, which is greater than 1." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The summation of amplitude squares must be 1 for a valid quantum state." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In other words, a quantum state can be represented by a vector having length 1, and vice versa.\n", + "\n", + "The summation of amplitude squares gives the square of the length of vector.\n", + "\n", + "But, this summation is 1, and its sqaure root is also 1. So, we directly use the term length in the defintion.\n", + "\n", + "We represent a quantum state as $ \\ket{u} $ instead of $ u $.\n", + "\n", + "Remember the relation between the length and inner product: $ \\norm{u} = \\sqrt{\\inner{u}{u}} $.\n", + "\n", + "In quantum computation, we use almost the same notation for the inner product: $ \\braket{u}{u}$.\n", + "\n", + "$ \\norm{ \\ket{u} } = \\sqrt{ \\braket{u}{u} } = 1 $, or equivalently $ \\braket{u}{u} = 1 $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 1

      \n", + "\n", + "Let $a$ and $b$ be real numbers.\n", + "\n", + "If the folllowing vectors are valid quantum states, then what can be the values of $a$ and $b$?\n", + "\n", + "$$\n", + " \\ket{v} = \\myrvector{a \\\\ -0.1 \\\\ -0.3 \\\\ 0.4 \\\\ 0.5}\n", + " ~~~~~ \\mbox{and} ~~~~~\n", + " \\ket{u} = \\myrvector{ \\frac{1}{\\sqrt{2}} \\\\ \\frac{1}{\\sqrt{b}} \\\\ -\\frac{1}{\\sqrt{3}} }.\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your code is here or you may find the values by hand (in mind)\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Quantum Operators

      \n", + "\n", + "Once the quantum state is defined, the definition of quantum operator is very easy.\n", + "\n", + "Any length preserving matrix is a quantum operator, and vice versa." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 2

      \n", + "\n", + "Remember Hadamard operator:\n", + "\n", + "$$\n", + " H = \\hadamard.\n", + "$$\n", + "\n", + "Let's randomly create a 2-dimensional quantum state, and test whether Hadamard operator preserves the length or not.\n", + "\n", + "Write a function that returns a randomly created 2-dimensional quantum state:\n", + "
        \n", + "
      • Pick a random value between 0 and 100
      • \n", + "
      • Divide it by 100
      • \n", + "
      • Take sqaure root of it
      • \n", + "
      • Randomly determine its sign ($+$ or $-$)
      • \n", + "
      • This is the first entry of the vector
      • \n", + "
      • Find an appropriate value for the second entry
      • \n", + "
      • Randomly determine its sign ($+$ or $-$)
      • \n", + "
      \n", + "\n", + "Write a function that determines whether a given vector is a valid quantum state or not.\n", + "\n", + "(Due to precision problem, the summation of squares may not be exactly 1 but very close to 1, e.g., 0.9999999999999998.)\n", + "\n", + "Repeat 10 times:\n", + "
        \n", + "
      • Randomly create a quantum state
      • \n", + "
      • Multiply Hadamard matrix with the randomly created quantum state
      • \n", + "
      • Check whether the result quantum state is valid
      • \n", + "
      " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B48_Superposition.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B48_Superposition.ipynb new file mode 100644 index 000000000..ebaf081da --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B48_Superposition.ipynb @@ -0,0 +1,391 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
      \n", + "
      I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
      \n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Superposition

      \n", + "\n", + "There is no classical counterpart of the concept \"superposition\".\n", + "\n", + "But, we can still use a classical analogy that might help us to give some intuitions.\n", + "\n", + "

      Probability distribution

      \n", + "\n", + "Suppose that Asja starts in $ \\myvector{1\\\\0} $ and secretly applies the probabilistic operator $ \\mymatrix{cc}{ 0.3 & 0.6 \\\\ 0.7 & 0.4 } $.\n", + "\n", + "Because she applies her operator secretly, our information about her state is probabilistic, which is calculated as\n", + "\n", + "$$\n", + " \\myvector{0.3 \\\\ 0.7} = \\mymatrix{cc}{ 0.3 & 0.6 \\\\ 0.7 & 0.4 } \\myvector{1\\\\0}.\n", + "$$\n", + "\n", + "Asja is either in state 0 or in state 1.\n", + "\n", + "However, from our point of view, Asja is in state 0 and state 1 with probabilities $ 0.3 $ and $ 0.7 $, respectively.\n", + "\n", + "We can say that Asja in a probability distribution of states 0 and 1, being in both states at the same time.\n", + "\n", + "On the other hand, if we observe Asja's state, then our information about Asja becomes deterministic: either $ \\myvector{1 \\\\ 0} $ or $ \\myvector{0 \\\\ 1} $.\n", + "\n", + "We can say that after measurement the probabilistic state $ \\myvector{0.3 \\\\ 0.7} $ collapses to either $ \\myvector{1 \\\\ 0} $ or $ \\myvector{0 \\\\ 1} $.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      The third experiment

      \n", + "\n", + "Now, we can explain the following experiment.\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " The initial Step \n", + "\n", + "The photon is in state $ \\ket{v_0} = \\vzero $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " The first step \n", + "\n", + "Hadamard is applied:\n", + "\n", + "$ \\ket{v_1} = \\hadamard \\vzero = \\vhadamardzero $.\n", + "\n", + "At this point, the photon is in a superposition of state $ \\ket{0} $ and state $ \\ket{1} $, being in both states with the amplitudes $ \\frac{1}{\\sqrt{2}} $ and $ \\frac{1}{\\sqrt{2}} $, respectively.\n", + "\n", + "The state of photon is $ \\ket{v_1} = \\vhadamardzero $, and we can represent it also as follows:\n", + "\n", + "$ \\ket{v_1} = \\frac{1}{\\sqrt{2}} \\ket{0} + \\frac{1}{\\sqrt{2}} \\ket{1} $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " The second step \n", + "\n", + "Hadamard is applied again:\n", + "\n", + "We write the affect of Hadamard on states $ \\ket{0} $ and $ \\ket{1} $ as follows:\n", + "\n", + "$ H \\ket{0} = \\frac{1}{\\sqrt{2}} \\ket{0} + \\frac{1}{\\sqrt{2}} \\ket{1} $\n", + "\n", + "$ H \\ket{1} = \\frac{1}{\\sqrt{2}} \\ket{0} - \\frac{1}{\\sqrt{2}} \\ket{1} $\n", + "\n", + "This representation helps us to see clearly why the state $ \\ket{1} $ disappears.\n", + "\n", + "Now, let's see the affect of Hadamard on the quantum state $ \\ket{v_1} = \\frac{1}{\\sqrt{2}} \\ket{0} + \\frac{1}{\\sqrt{2}} \\ket{1} $:\n", + "\n", + "$ \\ket{v_2} = H \\ket{v_1} = H \\mybigpar{ \\frac{1}{\\sqrt{2}} \\ket{0} + \\frac{1}{\\sqrt{2}} \\ket{1} } = \\frac{1}{\\sqrt{2}} H \\ket{0} + \\frac{1}{\\sqrt{2}} H \\ket{1} $\n", + "\n", + "We can replace $ H\\ket{0} $ and $ H\\ket{1} $ as described above.\n", + "\n", + "$ \\ket{v_2} $ is formed by the summation of the following terms:\n", + "\n", + "$ \\frac{1}{\\sqrt{2}} H \\ket{0} = \\frac{1}{2} \\ket{0} + \\frac{1}{2} \\ket{1} $\n", + "\n", + "$ \\frac{1}{\\sqrt{2}} H \\ket{1} = \\frac{1}{2} \\ket{0} - \\frac{1}{2} \\ket{1} $\n", + "\n", + "The amplitude of $ \\ket{0} $ becomes 1, but the amplitude of $ \\ket{1} $ becomes 0 because of cancellation.\n", + "\n", + "$ \\ket{v_2} = 1 \\cdot \\ket{0} + 0 \\cdot \\ket{1} = \\ket{0} $.\n", + "\n", + "The photon was in both states at the same time with certain amplitudes.\n", + "\n", + "After the second Hadamard, the results are interfered with each other.\n", + "\n", + "The interference can be constructive or destructive.\n", + "\n", + "In our examples, the resulting $ \\ket{0} $s are interfered constructively, but the resulting $ \\ket{1} $s are interfered destructively." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Observations

      \n", + "\n", + "Probabilistic systems: If there is a nonzero transition to a state, then it contributes to the probability of this state positively. \n", + "\n", + "Quantum systems: If there is a nonzero transition to a state, then we cannot make such an interpretation without knowing the other transtions to this state.\n", + "\n", + "If it is the only transition, then it contributes to the amplitude (and probability) of the state, and it does not matter whether the sign of the transition is positive or negative.\n", + "\n", + "If there is more than one transition, then depending on the summation of all transitions, we can determine whether a specific transition contributes or not.\n", + "\n", + "As a simple rule, if the final amplitude of the state and nonzero transition have the same sign, then it is a positive contribution; and, if they have the opposite signs, then it is a negative contribution." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 1

      \n", + "\n", + "[on paper]\n", + "\n", + "Start in state $ \\ket{u_0} = \\ket{1} $.\n", + "\n", + "Apply Hadamard operator to $ \\ket{u_0} $, i.e, find $ \\ket{u_1} = H \\ket{u_0} $.\n", + "\n", + "Apply Hadamard operator to $\\ket{u_1}$, i.e, find $ \\ket{u_2} = H \\ket{u_1} $.\n", + "\n", + "Observe the constructive and destructive interferences, when calculating $ \\ket{u_2} $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Being in a superposition

      \n", + "\n", + "A quantum system can be in more than one state with nonzero amplitudes.\n", + "\n", + "Then, we say that our system is in a superposition of these states.\n", + "\n", + "When evolving from a superposition, the resulting transitions may affect each other constructively and destructively. \n", + "\n", + "This can happen only because of having both negative or positive amplitudes. \n", + "\n", + "Otherwise, all nonzero transitions are added up to each other as in probababilistic systems." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Measurement

      \n", + "\n", + "We can measure a quantum system, and then the system is observed in one of its states.\n", + "\n", + "This is the most basic measurement in quantum computing. \n", + "\n", + "(There are more generic measurement operators, but we will not cover them.)\n", + "\n", + "The probability of the system to be observed in a specified state is the square value of its amplitude.\n", + "
        \n", + "
      • If the amplitude of a state is zero, then this state cannot be observed.
      • \n", + "
      • If the amplitude of a state is nonzero, then this state can be observed.
      • \n", + "
      \n", + "\n", + "For example, if the system is in quantum state \n", + "\n", + "$$\n", + " \\myrvector{ -\\frac{\\sqrt{2}}{\\sqrt{3}} \\\\ \\frac{1}{\\sqrt{3}} },\n", + "$$\n", + "\n", + "then, after a measurement, we can observe the system in state $\\ket{0} $ with probability $ \\frac{2}{3} $ and in state $\\ket{1}$ with probability $ \\frac{1}{3} $.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Collapsing

      \n", + "\n", + "After the measurement, the system collapses to the observed state, and so the system is no longer in a superposition.\n", + "\n", + "Thus, the information kept in a superposition is lost. \n", + "\n", + "In the above example, when the system is observed in state $\\ket{0}$, then the new state becomes $ \\myvector{1 \\\\ 0} $. \n", + "\n", + "If it is observed in state $\\ket{1}$, then the new state becomes $ \\myvector{0 \\\\ 1} $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 2

      \n", + "\n", + "We have a quantum system with four states: $\\ket{00}$, $ \\ket{01} $, $\\ket{10}$, and $ \\ket{11} $.\n", + "\n", + "We can also say that our system has two qubits.\n", + "\n", + "\n", + "Suppose that the system is in the following state:\n", + "\n", + "$ \\myrvector{ \\dfrac{ 1 }{ \\sqrt{3} - \\sqrt{ 5 + 2\\sqrt{6}} } \\\\ \\\\ \\dfrac{1}{ \\sqrt{3} - \\sqrt{ 7 + 2\\sqrt{12} } } \\\\ \\\\\n", + " \\dfrac{ 1 }{ \\sqrt{5} - \\sqrt{ 13 + 2\\sqrt{40} } } \\\\ \\\\ \\dfrac{1}{ \\sqrt{ 7 } - \\sqrt{ 15 + 2 \\sqrt{56} } } }. $\n", + " \n", + " Find the probability of observing the system in state $\\ket{00}$, $ \\ket{01} $, $\\ket{10}$, or $ \\ket{11} $.\n", + " \n", + " You may write a function to calculate the dominator of each fraction automatically, where its value is determined by three values $a$, $ b$, and $ c $ by assuming the form $ \\sqrt{a} - \\sqrt{b + 2 \\sqrt{c} } $.\n", + " \n", + " Verify that the total probability is 1 (or almost 1)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Z-gate (operator)

      \n", + "\n", + "The indentity operator $ I = \\mymatrix{cc}{1 & 0 \\\\ 0 & 1} $ does not affect the computation.\n", + "\n", + "What about the following operator?\n", + "\n", + "$ Z = \\Z $.\n", + "\n", + "It is very similar to the identity operator.\n", + "\n", + "Consider the quantum state $ \\ket{u} = \\myvector{ \\frac{3}{5} \\\\ \\frac{4}{5} } $.\n", + "\n", + "Let's calculate the new quantum state after appying $ Z $ to $ \\ket{u} $:\n", + "\n", + "$ \\ket{u'} = Z \\ket{u} = \\Z \\myvector{ \\frac{3}{5} \\\\ \\frac{4}{5} } = \\myrvector{ \\frac{3}{5} \\\\ -\\frac{4}{5} } $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The quantum states $ \\ket{u} $ and $ \\ket{u'} $ look similar. \n", + "\n", + "The probabilities of observing the state 0 and state 1 are the same when the system is in $ \\ket{u} $ or $ \\ket{u'} $.\n", + "\n", + "On the other hand, they are far away from each other as shown below: \n", + "\n", + "\n", + "\n", + "For example, by applying Hadamard to each of them, the probability of observing the state 0 and state 1 may change (?)\n", + "\n", + "To observe this, we can do a simple experiment. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 3

      \n", + "\n", + "Create a quantum ciruit with 5 qubits.\n", + "\n", + "Apply h-gate (Hadamard operator) to each qubit.\n", + "\n", + "Apply z-gate ($Z$ operator) to randomly picked qubits. (e.g., $ mycircuit.z(qreg[i]) $)\n", + "\n", + "Apply h-gate to each qubit \n", + "\n", + "Measure each qubit.\n", + "\n", + "Execute your program 1000 times.\n", + "\n", + "Compare the outcomes of the qubits affected by z-gates, and the outcomes of the qubits not affected by z-gates.\n", + "\n", + "Does z-gate change the outcome?\n", + "\n", + "Why?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "# let's import randrange for random choices\n", + "from random import randrange\n", + "\n", + "#\n", + "# your code is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B56_Two_Qubits.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B56_Two_Qubits.ipynb new file mode 100644 index 000000000..ad92edb81 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B56_Two_Qubits.ipynb @@ -0,0 +1,531 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
      \n", + "
      I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
      \n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Two Qubits

      \n", + "\n", + "When we have a quantum system with two qubits, then we can represent its states as\n", + "\n", + "$ \\ket{00}, \\ket{01}, \\ket{10}, \\ket{11} $.\n", + "\n", + "The state $ \\ket{ab} $ means that \n", + "
        \n", + "
      • the first qubit is in state $ \\ket{a} $ and
      • \n", + "
      • the second qubit is in state $ \\ket{b} $,
      • \n", + "
      \n", + "where $ a,b \\in \\{0,1\\} $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Vector representation:

      \n", + " \n", + "The vector representations of $ \\ket{00}, \\ket{01}, \\ket{10}, \\ket{11} $ are as follows:\n", + "\n", + "$$\n", + " \\ket{00} = \\myvector{1 \\\\ 0 \\\\ 0 \\\\ 0},\n", + " ~~~~~~\n", + " \\ket{01} = \\myvector{0 \\\\ 1 \\\\ 0 \\\\ 0},\n", + " ~~~~~~\n", + " \\ket{10} = \\myvector{0 \\\\ 0 \\\\ 1 \\\\ 0},\n", + " ~~~ \\mbox{ and } ~~~\n", + " \\ket{11} = \\myvector{0 \\\\ 0 \\\\ 0 \\\\ 1}.\n", + "$$\n", + "\n", + "\n", + "\n", + "The relation between state $ \\ket{ab} $ and the states $ \\ket{a} $ and $ \\ket{b} $ is very simple:\n", + "\n", + "$ \\ket{ab} = \\ket{a} \\otimes \\ket{b} $. \n", + "\n", + "It is also shortly written as $ \\ket{ab} = \\ket{a} \\ket{b} $ by omitting the tensor product operator." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's quickly verify each vector representation. \n", + "\n", + "Remember that $ \\ket{0} = \\myvector{1 \\\\ 0} $ and $ \\ket{1} = \\myvector{0 \\\\ 1} $.\n", + "\n", + "$$\n", + " \\ket{00} = \\ket{0} \\otimes \\ket{0} = \\vzero \\otimes \\vzero = \\myvector{1 \\\\ 0 \\\\ 0 \\\\ 0}.\n", + "$$\n", + "\n", + "$$\n", + " \\ket{01} = \\ket{0} \\otimes \\ket{1} = \\vzero \\otimes \\vone = \\myvector{0 \\\\ 1 \\\\ 0 \\\\ 0}.\n", + "$$\n", + "\n", + "$$\n", + " \\ket{10} = \\ket{1} \\otimes \\ket{0} = \\vone \\otimes \\vzero = \\myvector{0 \\\\ 0 \\\\ 1 \\\\ 0}.\n", + "$$\n", + "\n", + "$$\n", + " \\ket{11} = \\ket{1} \\otimes \\ket{1} = \\vone \\otimes \\vone = \\myvector{0 \\\\ 0 \\\\ 0 \\\\ 1}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Applying Hadamards to both qubits

      \n", + "\n", + "Applying h-gate to the first and second qubits is the same as applying the following single operator on both qubits:\n", + "\n", + "$$\n", + " H^{\\otimes 2} = H \\otimes H = \\hadamard \\otimes \\hadamard = \\Htwo .\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Case 1: Let's find $ H^{\\otimes 2} \\ket{00} $ (in three different ways)

      \n", + "
        \n", + "
      • Direct matrix-vector multiplication:\n", + " $$\n", + " H^{\\otimes 2} \\ket{00} \n", + " = \\Htwo \\myvector{1 \\\\ 0 \\\\ 0 \\\\ 0} \n", + " = \\myvector{ \\frac{1}{2} \\\\ \\frac{1}{2} \\\\ \\frac{1}{2} \\\\ \\frac{1}{2} } .\n", + " $$
      • \n", + "
      • We calculate the quantum state of each state, and then find the quantum state of the composite system.\n", + " $$\n", + " H\\ket{0} \\otimes H \\ket{0} \n", + " = \\vhadamardzero \\otimes \\vhadamardzero \n", + " = \\myvector{ \\frac{1}{2} \\\\ \\frac{1}{2} \\\\ \\frac{1}{2} \\\\ \\frac{1}{2} }.\n", + " $$
      • \n", + "
      • We make calculations with $ \\ket{0} $ and $ \\ket{1} $.\n", + " $$\n", + " H \\ket{0} \\otimes H \\ket{0} \n", + " = \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} + \\frac{1}{\\sqrt{2}} \\ket{1} } \n", + " \\otimes \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} + \\frac{1}{\\sqrt{2}} \\ket{1} }\n", + " = \\frac{1}{2} \\ket{00} + \\frac{1}{2} \\ket{01} + \\frac{1}{2} \\ket{10} + \\frac{1}{2} \\ket{11} \n", + " = \\myvector{ \\frac{1}{2} \\\\ \\frac{1}{2} \\\\ \\frac{1}{2} \\\\ \\frac{1}{2} }.\n", + " $$\n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Case 2: Let's find $ H^{\\otimes 2} \\ket{01} $ (in three different ways)

      \n", + "
        \n", + "
      • Direct matrix-vector multiplication:\n", + " $$\n", + " H^{\\otimes 2} \\ket{01} \n", + " = \\Htwo \\myvector{0 \\\\ 1 \\\\ 0 \\\\ 0} \n", + " = \\myrvector{ \\frac{1}{2} \\\\ - \\frac{1}{2} \\\\ \\frac{1}{2} \\\\ - \\frac{1}{2} } .\n", + " $$
      • \n", + "
      • We calculate the quantum state of each state, and then find the quantum state of the composite system.\n", + " $$\n", + " H\\ket{0} \\otimes H \\ket{1} \n", + " = \\vhadamardzero \\otimes \\vhadamardone \n", + " = \\myrvector{ \\frac{1}{2} \\\\ - \\frac{1}{2} \\\\ \\frac{1}{2} \\\\ - \\frac{1}{2} }.\n", + " $$
      • \n", + "
      • We make calculations with $ \\ket{0} $ and $ \\ket{1} $.\n", + " $$\n", + " H \\ket{0} \\otimes H \\ket{1} \n", + " = \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} + \\frac{1}{\\sqrt{2}} \\ket{1} } \n", + " \\otimes \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} - \\frac{1}{\\sqrt{2}} \\ket{1} }\n", + " = \\frac{1}{2} \\ket{00} - \\frac{1}{2} \\ket{01} + \\frac{1}{2} \\ket{10} - \\frac{1}{2} \\ket{11} \n", + " = \\myrvector{ \\frac{1}{2} \\\\ - \\frac{1}{2} \\\\ \\frac{1}{2} \\\\ - \\frac{1}{2} }.\n", + " $$\n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Case 3: Let's find $ H^{\\otimes 2} \\ket{10} $ (in three different ways)

      \n", + "
        \n", + "
      • Direct matrix-vector multiplication:\n", + " $$\n", + " H^{\\otimes 2} \\ket{10} \n", + " = \\Htwo \\myvector{0 \\\\ 0 \\\\ 1 \\\\ 0} \n", + " = \\myrvector{ \\frac{1}{2} \\\\ \\frac{1}{2} \\\\ - \\frac{1}{2} \\\\ - \\frac{1}{2} } .\n", + " $$
      • \n", + "
      • We calculate the quantum state of each state, and then find the quantum state of the composite system.\n", + " $$\n", + " H\\ket{1} \\otimes H \\ket{0} \n", + " = \\vhadamardone \\otimes \\vhadamardzero \n", + " = \\myrvector{ \\frac{1}{2} \\\\ \\frac{1}{2} \\\\ - \\frac{1}{2} \\\\ - \\frac{1}{2} }.\n", + " $$
      • \n", + "
      • We make calculations with $ \\ket{0} $ and $ \\ket{1} $.\n", + " $$\n", + " H \\ket{1} \\otimes H \\ket{0} \n", + " = \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} - \\frac{1}{\\sqrt{2}} \\ket{1} } \n", + " \\otimes \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} + \\frac{1}{\\sqrt{2}} \\ket{1} }\n", + " = \\frac{1}{2} \\ket{00} + \\frac{1}{2} \\ket{01} - \\frac{1}{2} \\ket{10} - \\frac{1}{2} \\ket{11} \n", + " = \\myrvector{ \\frac{1}{2} \\\\ \\frac{1}{2} \\\\ - \\frac{1}{2} \\\\ -\\frac{1}{2} }.\n", + " $$\n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Case 4: Let's find $ H^{\\otimes 2} \\ket{11} $ (in three different ways)

      \n", + "
        \n", + "
      • Direct matrix-vector multiplication:\n", + " $$\n", + " H^{\\otimes 2} \\ket{00} \n", + " = \\Htwo \\myvector{0 \\\\ 0 \\\\ 0 \\\\ 1} \n", + " = \\myrvector{ \\frac{1}{2} \\\\ - \\frac{1}{2} \\\\ - \\frac{1}{2} \\\\ \\frac{1}{2} } .\n", + " $$
      • \n", + "
      • We calculate the quantum state of each state, and then find the quantum state of the composite system.\n", + " $$\n", + " H\\ket{1} \\otimes H \\ket{1} \n", + " = \\vhadamardone \\otimes \\vhadamardone \n", + " = \\myrvector{ \\frac{1}{2} \\\\ - \\frac{1}{2} \\\\ - \\frac{1}{2} \\\\ \\frac{1}{2} }.\n", + " $$
      • \n", + "
      • We make calculations with $ \\ket{0} $ and $ \\ket{1} $.\n", + " $$\n", + " H \\ket{1} \\otimes H \\ket{1} \n", + " = \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} - \\frac{1}{\\sqrt{2}} \\ket{1} } \n", + " \\otimes \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} - \\frac{1}{\\sqrt{2}} \\ket{1} }\n", + " = \\frac{1}{2} \\ket{00} - \\frac{1}{2} \\ket{01} - \\frac{1}{2} \\ket{10} + \\frac{1}{2} \\ket{11} \n", + " = \\myrvector{ \\frac{1}{2} \\\\ - \\frac{1}{2} \\\\ - \\frac{1}{2} \\\\ \\frac{1}{2} }.\n", + " $$\n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      CNOT operator

      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "CNOT is an operator defined on two qubits:\n", + "\n", + "$$\n", + " CNOT = \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} .\n", + "$$\n", + "\n", + "Its effect is very simple: if the state of the first qubit is one, then the state of the second qubit is flipped. \n", + "\n", + "If the state of the first bit is zero, then the state of the second qubit remains the same. \n", + "\n", + "In summary:\n", + "
        \n", + "
      • $ CNOT \\ket{00} = \\ket{00} $,
      • \n", + "
      • $ CNOT \\ket{01} = \\ket{01} $,
      • \n", + "
      • $ CNOT \\ket{10} = \\ket{11} $, and,
      • \n", + "
      • $ CNOT \\ket{11} = \\ket{10} $.
      • \n", + "
      \n", + "\n", + "CNOT refers to Controlled-NOT: NOT operator is applied in a controlled way." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      cx-gate

      \n", + "\n", + "In Qiskit, CNOT operator is represented as cx-gate.\n", + "\n", + "It takes two arguments: controller-qubit and target-qubit.\n", + "\n", + "Its implementation is as follows:\n", + "\n", + " x-gate (NOT operator) is applied to the target qubit that is CONTROLLED by the controller qubit. \n", + "\n", + "Let's apply CNOT to the states $ \\ket{00}, \\ket{01}, \\ket{10}, \\ket{11} $ in python." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "# we use four pairs of two qubits in order to see all results at once\n", + "# the first pair -> qubits with indices 0 and 1\n", + "# the second pair -> qubits with indices 2 and 3\n", + "# the third pair -> qubits with indices 4 and 5\n", + "# the fourth pair -> qubits with indices 6 and 7\n", + "qreg = QuantumRegister(8)\n", + "creg = ClassicalRegister(8)\n", + "mycircuit = QuantumCircuit(qreg,creg)\n", + "\n", + "# the first pair is already in |00>\n", + "\n", + "# the second pair is set to be in |01>\n", + "mycircuit.x(qreg[3])\n", + "\n", + "# the third pair is set to be in |10>\n", + "mycircuit.x(qreg[4])\n", + "\n", + "# the fourth pair is set to be in |11>\n", + "mycircuit.x(qreg[6])\n", + "mycircuit.x(qreg[7])\n", + "\n", + "# apply cx to each pair\n", + "for i in range(0,8,2): # i = 0,2,4,6\n", + " mycircuit.cx(qreg[i],qreg[i+1])\n", + "\n", + "# measure the quantum register\n", + "mycircuit.measure(qreg,creg)\n", + "\n", + "print(\"Everything looks fine, let's continue ...\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# draw the circuit\n", + "\n", + "drawer(mycircuit)\n", + "# re-run this cell if you DO NOT see the circuit diagram" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# execute the circuit 1000 times in the local simulator\n", + "\n", + "job = execute(mycircuit,Aer.get_backend('qasm_simulator'),shots=1000)\n", + "counts = job.result().get_counts(mycircuit)\n", + "# print the reverse of the output\n", + "for outcome in counts:\n", + " reverse_outcome = ''\n", + " for i in outcome:\n", + " reverse_outcome = i + reverse_outcome\n", + " print(reverse_outcome,\"is observed\",counts[outcome],\"times\")\n", + " print()\n", + " print(\"let's also split into the pairs\")\n", + " for i in range(0,8,2):\n", + " print(reverse_outcome[i:i+2])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 1

      \n", + "\n", + "Create a quantum curcuit with $ n=5 $ qubits.\n", + "\n", + "Set each qubit to $ \\ket{1} $.\n", + "\n", + "Repeat 4 times:\n", + "
        \n", + "
      • Randomly pick a pair of qubits, and apply cx-gate (CNOT operator) on the pair.
      • \n", + "
      \n", + "\n", + "Draw your circuit, and execute your program 100 times.\n", + "\n", + "Verify your measurement results by checking the diagram of the circuit. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "# import randrange for random choices\n", + "from random import randrange\n", + "\n", + "#\n", + "# your code is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 2

      \n", + "\n", + "Our task is to learn the behaviour of the following quantum circut by doing experiments.\n", + "\n", + "Our circuit has two qubits. \n", + "
        \n", + "
      • Apply Hadamard to the both qubits.\n", + "
      • Apply CNOT(first-qubit,second-qubit).\n", + "
      • Apply Hadamard to the both qubits.\n", + "
      • Measure the circuit.\n", + "
      \n", + "\n", + "Iteratively initialize the qubits to $ \\ket{00} $, $ \\ket{01} $, $ \\ket{10} $, and $ \\ket{11} $.\n", + "\n", + "Execute your program 100 times for each iteration, and then check the outcomes for each iteration. \n", + "\n", + "Verify that the overall circuit implements CNOT(second-qubit,first-qubit)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "#\n", + "# your code is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 3

      \n", + "\n", + "Our task is to learn the behaviour of the following quantum circut by doing experiments.\n", + "\n", + "Our circuit has two qubits. \n", + "
        \n", + "
      • Apply CNOT(first-qubit,second-qubit).\n", + "
      • Apply CNOT(second-qubit,first-qubit).\n", + "
      • Apply CNOT(first-qubit,second-qubit).\n", + "
      \n", + "\n", + "Iteratively initialize the qubits to $ \\ket{00} $, $ \\ket{01} $, $ \\ket{10} $, and $ \\ket{11} $.\n", + "\n", + "Execute your program 100 times for each iteration, and then check the outcomes for each iteration. \n", + "\n", + "Verify that the overall circuit swaps the values of the first and second qubits:\n", + "
        \n", + "
      • $\\ket{00} \\rightarrow \\ket{00} $
      • \n", + "
      • $\\ket{01} \\rightarrow \\ket{10} $
      • \n", + "
      • $\\ket{10} \\rightarrow \\ket{01} $
      • \n", + "
      • $\\ket{11} \\rightarrow \\ket{11} $
      • \n", + "
      " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "#\n", + "# your code is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B60_Superdense_Coding.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B60_Superdense_Coding.ipynb new file mode 100644 index 000000000..4e0a54891 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B60_Superdense_Coding.ipynb @@ -0,0 +1,224 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
      \n", + "
      I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
      \n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Superdense Coding

      \n", + "\n", + "Asja has a qubit, initially set to $ \\ket{0} $.\n", + "\n", + "Balvis has a qubit, initially set to $ \\ket{0} $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Entanglement

      \n", + " \n", + "Asja applies Hadamard operator to her qubit. \n", + "\n", + "The quantum state of Asja's qubit is $ \\vhadamardzero $.\n", + "\n", + "Then, Asja and Balvis combine their qubits. Their quantum state is\n", + "\n", + "$ \\vhadamardzero \\otimes \\vzero = \\myvector{ \\frac{1}{\\sqrt{2}} \\\\ 0 \\\\ \\frac{1}{\\sqrt{2}} \\\\ 0 } $.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Asja and Balvis apply CNOT operator on two qubits.\n", + "\n", + "The new quantum state is\n", + "\n", + "$ \\CNOT \\myvector{ \\frac{1}{\\sqrt{2}} \\\\ 0 \\\\ \\frac{1}{\\sqrt{2}} \\\\ 0 } = \\myvector{ \\frac{1}{\\sqrt{2}} \\\\ 0 \\\\0 \\\\ \\frac{1}{\\sqrt{2}} } = \\frac{1}{\\sqrt{2}}\\ket{00} + \\frac{1}{\\sqrt{2}}\\ket{11} $.\n", + "\n", + "At this moment, Asja's and Balvis' qubits are correlated to each other.\n", + "\n", + "If we measure both qubits, we can observe either state $ \\ket{00} $ or state $ \\ket{11} $. \n", + "\n", + "Suppose that Asja observes her qubit secretly. \n", + "
        \n", + "
      • When Asja sees the result $ \\ket{0} $, then Balvis' qubit also collapses to state $ \\ket{0} $. Balvis cannot observe state $ \\ket{1} $.
      • \n", + "
      • When Asja sees the result $ \\ket{1} $, then Balvis' qubit also collapses to state $ \\ket{1} $. Balvis cannot observe state $ \\ket{0} $.
      • \n", + "
      \n", + " \n", + "Experimental results have confirmed that this happens even if there is a physical distance between Asja's and Balvis' qubits. \n", + "\n", + "It seems correlated quantum particales can affect each other instantly, even if they are in the different part of the universe. \n", + "\n", + "If two qubits are correlated in this way, then we say that they are entangled.\n", + "\n", + " Technical note: \n", + " \n", + "If the quantum state of two qubits can be written as $ \\ket{u} \\otimes \\ket{v} $, then two qubits are not correlated, where $ \\ket{u} $ and $ \\ket{v} $ are the quantum states of the first and second qubits.\n", + "\n", + "On the other hand, if the quantum state of two qubits cannot be written as $ \\ket{u} \\otimes \\ket{v} $, then there is an entanglement between the qubits.\n", + "\n", + "\n", + " Entangled qubits can be useful " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      The quantum commmunication

      \n", + "\n", + "After having the entanglement, Balvis takes his qubit and goes away.\n", + "\n", + "Asja will send two bits of information by only sending her qubit.\n", + "\n", + "Now, we describe this protocol." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Asja has two bits of classical information: $ a,b \\in \\{0,1\\} $. \n", + "\n", + "There are four possible values for the pair $ (a,b) $: $ (0,0), (0,1), (1,0),\\mbox{ or } (1,1) $. \n", + "\n", + "If $a$ is 1, then Asja applies z-gate, i.e., $ Z = \\Z $, to her qubit.\n", + "\n", + "If $b$ is 1, then Asja applies x-gate (NOT operator) to her qubit.\n", + "\n", + "Then, Asja sends her qubit to Balvis." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      After the communication

      \n", + "\n", + "Balvis has both qubits.\n", + "\n", + "Balvis applies cx-gate (CNOT operator), where Asja's qubit is the controller.\n", + "\n", + "Then, Balvis applies h-gate (Hadamard operator) to Asja's qubit.\n", + "\n", + "Balvis measures both qubits. \n", + "\n", + "The measurement result will be exactly $ (a,b) $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 1

      \n", + "\n", + "Verify the correctness of the above protocol.\n", + "\n", + "For each pair of $ (a,b) \\in \\left\\{ (0,0), (0,1), (1,0),(1,1) \\right\\} $:\n", + "
        \n", + "
      • Create a quantum curcuit with two qubits: Asja's and Balvis' qubits.
      • \n", + "
      • Both are initially set to $ \\ket{0} $.
      • \n", + "
      • Apply h-gate (Hadamard) to the first qubit.
      • \n", + "
      • Apply cx-gate (CNOT) with parameters first-qubit and second-qubit.
      • \n", + "
      \n", + "\n", + "They are separated now.\n", + "\n", + "
        \n", + "
      • If $ a $ is 1, then apply z-gate to the first qubit.
      • \n", + "
      • If $ b $ is 1, then apply x-gate (NOT) to the first qubit.
      • \n", + "
      \n", + "\n", + "Asja sends her qubit to Balvis.\n", + "\n", + "
        \n", + "
      • Apply cx-gate (CNOT) with parameters first-qubit and second-qubit.
      • \n", + "
      • Apply h-gate (Hadamard) to the first qubit.
      • \n", + "
      • Measure both qubits, and compare the results with pair $ (a,b) $.
      • \n", + "
      " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "all_pairs = ['00','01','10','11']\n", + "\n", + "for pair in all_pairs:\n", + " #\n", + " # your code is here\n", + " #\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B64_Phase_Kickback.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B64_Phase_Kickback.ipynb new file mode 100644 index 000000000..9af44223d --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B64_Phase_Kickback.ipynb @@ -0,0 +1,269 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
      \n", + "
      I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
      \n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Phase Kickback

      \n", + "\n", + "We will observe a very interesting quantum affect here.\n", + "\n", + "We apply a Controlled-NOT operator, but the controller qubit will be affected (!)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 1

      \n", + "\n", + "Create a quantum circuit with two qubits.\n", + "\n", + "Set the state of the first qubit to $ \\ket{0} $.\n", + "\n", + "Set the state of the second qubit to $ \\ket{1} $.\n", + "\n", + "Apply Hadamard to both qubits.\n", + "\n", + "Apply CNOT operator, where the controller qubit is the first qubit and the target qubit is the second qubit.\n", + "\n", + "Apply Hadamard to both qubits.\n", + "\n", + "Measure the outcomes.\n", + "\n", + "We start in quantum state $ \\ket{01} $. What is the outcome?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "#\n", + "# your code is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      The affect of CNOT

      \n", + "\n", + "The quantum state of the first qubit before CNOT:\n", + "\n", + "$$\n", + " \\ket{0} \\xrightarrow{H} \\frac{1}{\\sqrt{2}} \\ket{0} + \\frac{1}{\\sqrt{2}} \\ket{1}.\n", + "$$\n", + "\n", + "The quantum state of the second qubit before CNOT:\n", + "\n", + "$$\n", + " \\ket{1} \\xrightarrow{H} \\frac{1}{\\sqrt{2}} \\ket{0} - \\frac{1}{\\sqrt{2}} \\ket{1}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The quantum state of the composite system:\n", + "\n", + "$$\n", + " \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} + \\frac{1}{\\sqrt{2}} \\ket{1} } \n", + " \\otimes\n", + " \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} - \\frac{1}{\\sqrt{2}} \\ket{1} }\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "CNOT affects when the first qubit has the value 1.\n", + "\n", + "Let's rewrite the composite state as below to explicitly represent the effect of CNOT.\n", + "\n", + "$$\n", + " \\frac{1}{\\sqrt{2}} \\ket{0} \\otimes \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} - \\frac{1}{\\sqrt{2}} \\ket{1} }\n", + " +\n", + " \\frac{1}{\\sqrt{2}} \\ket{1} \\otimes \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} - \\frac{1}{\\sqrt{2}} \\ket{1} }\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "CNOT flips the state of the second qubit.\n", + "\n", + "After CNOT, we have:\n", + "\n", + "$$\n", + " \\frac{1}{\\sqrt{2}} \\ket{0} \\otimes \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} - \\frac{1}{\\sqrt{2}} \\ket{1} }\n", + " +\n", + " \\frac{1}{\\sqrt{2}} \\ket{1} \\otimes \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{1} - \\frac{1}{\\sqrt{2}} \\ket{0} }\n", + "$$\n", + "\n", + "Remark that $\\ket{0}$ and $ \\ket{1} $ are swapped in the second qubit.\n", + "\n", + "If we write the quantum state of the second qubit as before, the sign of $ \\ket{1} $ in the first qubit should be flipped.\n", + "\n", + "Thus the last equation can be equivalently written as follows:\n", + "\n", + "$$\n", + " \\frac{1}{\\sqrt{2}} \\ket{0} \\otimes \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} - \\frac{1}{\\sqrt{2}} \\ket{1} }\n", + " -\n", + " \\frac{1}{\\sqrt{2}} \\ket{1} \\otimes \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} - \\frac{1}{\\sqrt{2}} \\ket{1} }\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before CNOT operator, the sign of $ \\ket{1} $ in the first qubit is positive. \n", + " \n", + "After CNOT operator, its sign changes to negative.\n", + "\n", + "This is called phase kickback" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      After CNOT

      \n", + "\n", + "It is easy to see from the last expression, the quantum states of the qubits are separable (no correlation):\n", + "\n", + "$$\n", + " \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} - \\frac{1}{\\sqrt{2}} \\ket{1} } \n", + " \\otimes\n", + " \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} - \\frac{1}{\\sqrt{2}} \\ket{1} }\n", + "$$\n", + "\n", + "If we apply Hadamard to each qubit, both qubits evolve to state $ \\ket{1} $.\n", + "\n", + "The final state is $ \\ket{11} $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 2

      \n", + "\n", + "Create a curcuit with 7 qubits.\n", + "\n", + "Set the states of the first six qubits to $ \\ket{0} $.\n", + "\n", + "Set the state of the last qubit to $ \\ket{1} $.\n", + "\n", + "Apply Hadamard operators to all qubits.\n", + "\n", + "Apply CNOT operator (first-qubit,last-qubit) \n", + "
      \n", + "Apply CNOT operator (fourth-qubit,last-qubit)\n", + "
      \n", + "Apply CNOT operator (fifth-qubit,last-qubit)\n", + "\n", + "Apply Hadamard operators to all qubits.\n", + "\n", + "Measure all qubits. \n", + "\n", + "For each CNOT operator, do we have phase-kickback affect?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "#\n", + "# your code is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B72_Rotations.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B72_Rotations.ipynb new file mode 100644 index 000000000..1d87c1809 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B72_Rotations.ipynb @@ -0,0 +1,481 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 07, 2018\n", + "
      \n", + "
      I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
      \n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Rotations

      \n", + "\n", + "We have a single qubit. \n", + "\n", + "Each quantum state of a qubit is a 2-dimensional vector.\n", + "\n", + "Which geometric object do all quantum states (real-valued) of a qubit form?\n", + "\n", + "We can randomly pick 100 quantum states, and put a point for each of them on 2-dimensional space. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "\n", + "# randomly create a 2-dimensional quantum state\n", + "def random_quantum_state():\n", + " first_entry = randrange(100)\n", + " first_entry = first_entry/100\n", + " first_entry = first_entry**0.5 # we found the first value before determining its sign\n", + " if randrange(2) == 0: \n", + " first_entry = -1 * first_entry\n", + " second_entry = 1 - (first_entry**2)\n", + " second_entry = second_entry**0.5\n", + " if randrange(2) == 0: \n", + " second_entry = -1 * second_entry\n", + " return [first_entry,second_entry]\n", + "\n", + "from matplotlib.pyplot import plot, show, figure # import the useful tool for drawing figures in python\n", + "\n", + "figure(figsize=(6,6), dpi=60) # size of the figure\n", + "\n", + "plot(0,0,'bo') # point the origin (0,0)\n", + "\n", + "for i in range(100):\n", + " quantum_state = random_quantum_state(); # random quantum state\n", + " plot(quantum_state[0],quantum_state[1],'bo') # put a point for the quantum state\n", + "\n", + "show() # show the diagram" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Unit circle

      \n", + "\n", + "All quantum states of a qubit form the unit circle.\n", + "\n", + "The length of each quantum state is 1.\n", + "\n", + "All points that are 1 unit away from the origin form the circle with radius 1 unit.\n", + "\n", + "We can draw it with python." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import the useful tool for drawing figures in python\n", + "from matplotlib.pyplot import plot, show, figure, Circle, axis, gca, annotate, arrow, text\n", + "\n", + "\n", + "figure(figsize=(6,6), dpi=80) # size of the figure\n", + "\n", + "gca().add_patch( Circle((0,0),1,color='black',fill=False) ) # define a circle\n", + "\n", + "plot(-1.3,0)\n", + "plot(1.3,0)\n", + "plot(0,1.3)\n", + "plot(0,-1.3)\n", + "\n", + "# axes\n", + "arrow(0,0,1.1,0,head_width=0.04, head_length=0.08)\n", + "arrow(0,0,-1.1,0,head_width=0.04, head_length=0.08)\n", + "arrow(0,0,0,-1.1,head_width=0.04, head_length=0.08)\n", + "arrow(0,0,0,1.1,head_width=0.04, head_length=0.08)\n", + "\n", + "show() # show the diagram" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Quantum operators on the unit circle

      \n", + "\n", + "A quantum operator preserves the length of the given vector. \n", + "\n", + "There are two types of operators defined on the unit circle: Rotations and Reflections.\n", + "\n", + "A rotation is defined with its angle. \n", + "\n", + "A full rotation is 360 degrees. \n", + "\n", + "It is also represented as $ 2 \\pi $, the length (circumference) of the unit circle.\n", + "\n", + "In scientific calculations, the second representation is more commonly used." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Rotations with ry-gate

      \n", + "\n", + "The ry-gate is used for rotation in 2-dimensional real-valued plane.\n", + "\n", + "If our angle is $ \\theta $, then we pass $ 2 \\theta $ to ry-gate (due to a technical reason).\n", + "\n", + "Then ry-gate exactly implements the rotation with angle $\\theta$. \n", + "\n", + "The default direction of a rotation by ry-gate is counterclockwise." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Python function for rotations

      \n", + "\n", + "We write a python function to implement the rotations, and then visualize the resulting quantum states.\n", + "\n", + "It takes two parameters: rotation_angle and number_of_rotations\n", + "\n", + "We start in state $ \\ket{0} $. \n", + "\n", + "Then, we implement the rotation specified times with the specified angle.\n", + "\n", + "After each rotation, we visualize the resulting quantum state.\n", + "\n", + "Please do not forget to execute our function before using it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def rotations(rotation_angle,number_of_rotations):\n", + " # import all necessary objects and methods for quantum circuits\n", + " from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + " from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + " # import the useful tool for drawing figures in python\n", + " from matplotlib.pyplot import plot, show, figure, Circle, axis, gca, annotate, arrow, text\n", + " # import the constant pi\n", + " from math import pi\n", + " \n", + " # we define a quantum circuit with one qubit and one bit\n", + " qreg1 = QuantumRegister(1) # quantum register with a single qubit\n", + " creg1 = ClassicalRegister(1) # classical register with a single bit\n", + " mycircuit1 = QuantumCircuit(qreg1,creg1) # quantum circuit with quantum and classical registers\n", + "\n", + " # create the plane\n", + " figure(figsize=(6,6), dpi=80) # size of the figure\n", + " gca().add_patch( Circle((0,0),1,color='black',fill=False) ) # draw the circle\n", + " # auxiliary points\n", + " plot(-1.3,0)\n", + " plot(1.3,0)\n", + " plot(0,1.3)\n", + " plot(0,-1.3)\n", + " # axes\n", + " arrow(0,0,1.1,0,head_width=0.04, head_length=0.08)\n", + " arrow(0,0,-1.1,0,head_width=0.04, head_length=0.08)\n", + " arrow(0,0,0,-1.1,head_width=0.04, head_length=0.08)\n", + " arrow(0,0,0,1.1,head_width=0.04, head_length=0.08)\n", + " # end of create the plane\n", + "\n", + " for i in range(number_of_rotations):\n", + " # iteratively apply the rotation \n", + " mycircuit1.ry(2*rotation_angle,qreg1[0]) \n", + " \n", + " # the following code is used to get the quantum state of the quantum register\n", + " job = execute(mycircuit1,Aer.get_backend('statevector_simulator'))\n", + " current_quantum_state=job.result().get_statevector(mycircuit1) \n", + " x_value = current_quantum_state[0].real # get the amplitude of |0>\n", + " y_value = current_quantum_state[1].real # get the amplitude of |1>\n", + " # show the quantum state as an arrow on the diagram\n", + " arrow(0,0,x_value,y_value,head_width=0.04, head_length=0.08,color='blue')\n", + "\n", + " # the following code is used to indicate the rotation number\n", + " if x_value<0: text_x_value=x_value-0.1\n", + " else: text_x_value=x_value+0.1\n", + " if y_value<0: text_y_value=y_value-0.1\n", + " else: text_y_value=y_value+0.1 \n", + " text(text_x_value,text_y_value,'r='+str(i+1))\n", + " # end of for-loop\n", + " show() # show the diagram\n", + "#end of function\n", + "\n", + "print(\"function 'rotations' is defined now, and so it can be used in the following part\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Test the function rotations

      \n", + "\n", + "Let's rotate the state $ \\ket{0} $ with angle pi/4 8 times." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# call function rotations 8 times with angle pi/4\n", + "\n", + "# import the constant pi\n", + "from math import pi\n", + " \n", + "rotations(pi/4,8)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 1

      \n", + "\n", + "Call function rotations with respect to the following scenarios." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Scenario 1

      \n", + "\n", + "rotation_angle = pi/4\n", + "
      \n", + "number_of_rotations = 16\n", + "\n", + "The same quantum states should be visited twice." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your code is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Scenario 2

      \n", + "\n", + "rotation_angle = pi/8\n", + "
      \n", + "number_of_rotations = 16\n", + "\n", + "Compared to pi/4, more quantum states should be visited on the unit circle." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your code is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Scenario 3

      \n", + "\n", + "rotation_angle = 3*pi/8\n", + "
      \n", + "number_of_rotations = 16\n", + "\n", + "The same states should be visited but in different order." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your code is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Scenario 4

      \n", + "\n", + "rotation_angle = pi\\*(2**0.5)\n", + "
      \n", + "number_of_rotations = 16\n", + "\n", + "The angle is an irrational multiple of pi. So, the same quantum state should not be visited." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your code is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Scenario 5

      \n", + "\n", + "Let's repeat Scenario 4 with more rotations.\n", + "\n", + "rotation_angle = pi\\*(2**0.5)\n", + "
      \n", + "number_of_rotations = 32 and then 64" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your code is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Scenario 6

      \n", + "\n", + "Create your own scenario (!)\n", + "\n", + "rotation_angle = pi*\n", + "
      \n", + "number_of_rotations = " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your code is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Preserving the angles

      \n", + "\n", + "Any quantum state on the unit circle can be specified by its angle with $x$-axis.\n", + "\n", + "Then, we define $ \\ket{u_1} $ and $ \\ket{u_2} $ as two quantum states with angles $ \\theta_1 $ and $ \\theta_2 $.\n", + "\n", + "The angle between two quantum states is $ \\theta_1 - \\theta_2 $.\n", + "\n", + "If we apply a rotation with angle $ \\theta $ to the both quantum states, then the new quantum states will have the angles of $ \\theta_1 + \\theta $ and $ \\theta_2 + \\theta $.\n", + "\n", + "It is easy to see that a rotation preserves the angle between two quantum states ($ \\theta_1 - \\theta_2 $ in our example)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Separability of orthogonal quantum states

      \n", + "\n", + "Suppose that $ \\theta_1 - \\theta_2 = \\frac{\\pi}{4} $ (90 degrees) in the above example.\n", + "\n", + "($ \\ket{u_1} $ and $ \\ket{u_2} $ are said to be orthogonal (perpendicular) to each other.)\n", + "\n", + "Then, there is a rotation with angle $ \\theta = -\\theta_2 $. \n", + "\n", + "If this rotation is applied to $ \\ket{u_1} $ and $ \\ket{u_2} $, the resulting quantum states will have the angles of $ \\theta_1 + (-\\theta_2) = \\frac{\\pi}{4} $ and $ \\theta_2 + (-\\theta_1) = 0 $, respectively.\n", + "\n", + "The resulting quantum states are $ \\ket{1} $ and $ \\ket{0} $. \n", + "\n", + "So, when we measure each of them, we get a different result with probability 1.\n", + "\n", + "Thus, $ \\ket{u_1} $ and $ \\ket{u_2} $ are perfectly separable.\n", + "\n", + "This fact is true for any two orthogonal quantum states." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B80_Reflections.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B80_Reflections.ipynb new file mode 100644 index 000000000..cedb93724 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B80_Reflections.ipynb @@ -0,0 +1,641 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 08, 2018\n", + "
      \n", + "
      I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
      \n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Reflections

      \n", + "\n", + "We have a single qubit, and all (real-valued) quantum states form the unit circle.\n", + "\n", + "Reflection is the second type of quantum operator on the unit circle.\n", + "\n", + "Reflections over the x-axis and y-axis are the basic examples." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Reflection over the x-axis and y-axis

      \n", + "\n", + "Let $ \\ket{u} = \\myvector{\\frac{3}{5} \\\\ \\frac{4}{5} } $ be a quantum state.\n", + "\n", + " \n", + "\n", + "Its reflection over x-axis will be $ \\ket{u_x} = \\myrvector{\\frac{3}{5} \\\\ - \\frac{4}{5} } $.\n", + "\n", + "Its reflection over y-axis will be $ \\ket{u_y} = \\myrvector{-\\frac{3}{5} \\\\ \\frac{4}{5} } $.\n", + "\n", + "Both cases can be easily seen from the figure above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we apply the same reflections once more, we get the original quantum state.\n", + "\n", + "The reflection on $x$-axis: The second entry of the vector is multiplied by $ (-1) $.\n", + "\n", + "Its matrix form is $ \\Z $.\n", + "\n", + "The reflection on $y$-axis: The first entry of the vector is multiplied by $ (-1) $.\n", + "\n", + "Its matrix form is $ \\mymatrix{rr}{ -1 & 0 \\\\ 0 & 1 } $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Reflection over an arbitrary axis

      \n", + "\n", + "The reflection axis can be arbitrary as shown below.\n", + "\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What we need to know is the angle between the original vector and the reflection axis.\n", + "\n", + "If this angle is $ \\theta $, then the original vector is rotated with angle $ -2\\theta $ to obtain the reflected vector over the specified axis.\n", + "\n", + "The reflected vector is reflected again to the original vector by rotation with angle $ 2 \\theta $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      The angle between two quantum states

      \n", + "\n", + "We use python to find this angle. \n", + "\n", + "Technical note:\n", + "\n", + "There is a formula to find the angle between two vectors $u$ and $v$: \n", + "\n", + "$ \\cos \\alpha = \\dfrac{(u,v)}{|u| \\cdot |v|} $, where $ (u,v) $ is the inner product of the vectors and $ |\\cdot| $ is the length of a given vector.\n", + "\n", + "If the vectors are quantum states, then their lengths are already 1. \n", + "\n", + "Thus the formula is $ \\cos \\alpha = \\braket{u}{v} \\Rightarrow \\alpha = \\arccos( \\braket{u}{v} ) $, where $ \\arccos $ is the inverse cosine function. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Define function angle_between_two_quantum_states

      \n", + "\n", + "This function return the angle (between $ 0 $ and $ \\pi $) between two quantum states.\n", + "\n", + "The inputs must be two quantum states, i.e., the vectors of length 1." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from math import acos # acos is the inverse of function cosine\n", + "from math import pi \n", + "\n", + "def angle_between_two_quantum_states(quantum_state1,quantum_state2):\n", + " inner_product = quantum_state1[0] * quantum_state2[0] + quantum_state1[1] * quantum_state2[1]\n", + " return acos(inner_product) \n", + "\n", + "print(\"function 'angle_between_two_quantum_states' is defined now, and so it can be used in the following part\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Test function angle_between_two_quantum_states

      \n", + "\n", + "We test the function in a few cases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"the angle between |0> and |1> is pi/2 (90 degree)\")\n", + "print(angle_between_two_quantum_states([1,0],[0,1]),\"is the angle between |0> and |1>\")\n", + "print(pi/2,\"is the value of pi/2\")\n", + "print()\n", + "\n", + "print(\"the angle between |0> and the quantum state [3/5,4/5] is around 0.295*pi\")\n", + "print(angle_between_two_quantum_states([3/5,4/5],[1,0]),\"is the angle between |0> and the quantum state [3/5,4/5]\")\n", + "print(0.295*pi,\"is the value of 0.295*pi\")\n", + "print()\n", + "\n", + "print(\"the angle between |0> and quantum state [-1/(2**0.5),-1/(2**0.5)] is 3pi/4 (135 degree)\")\n", + "print(angle_between_two_quantum_states([-1/(2**0.5),-1/(2**0.5)],[1,0]),\"is the angle between |0> and quantum state [-1/(2**0.5),-1/(2**0.5)]\")\n", + "print(3*pi/4,\"is the value of 3*pi/4\",)\n", + "print()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# OPTIONAL\n", + "# \n", + "# you may also test the function angle_between_two_quantum_states\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Visualization of reflection

      \n", + "\n", + "We randomly pick two quantum states $ \\ket{u} $ and $ \\ket{v} $.\n", + "\n", + "We find the quantum state $ \\ket{u_v} $, which is the reflection of $ \\ket{u} $ over the axis $ \\ket{v} $.\n", + "\n", + "We visualize the quantum states $ \\ket{u} $, $ \\ket{v} $, and $ \\ket{u_v} $.\n", + "\n", + "We write a function called \"reflection_game\" for this purpose.\n", + "\n", + "This function calls four other functions as subroutines:\n", + "
        \n", + "
      1. Function \"random_quantum_state\" that returns a randomly created a quantum state.
      2. \n", + "
      3. Function \"find_angle_of_a_quantum_state\" that returns an angle uniquely representing a given quantum state.
      4. \n", + "
      5. Function \"visualize_quantum_states\" that visualizes all given quantum states on the unit circle with their labels.
      6. \n", + "
      7. Function \"amplitudes_of_a_quantum_state\" that takes a quantum circuit having a (real-valued) qubit as the input, and then returns the amplitudes of the current quantum state.
      8. \n", + "
      \n", + "\n", + "We define each subroutine, and then the main function." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Define function random_quantum_state

      \n", + "\n", + "This function returns a randomly created quantum state on the unit circle." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from random import randrange\n", + "# randomly create a quantum state of a qubit\n", + "def random_quantum_state():\n", + " first_entry = randrange(100)\n", + " first_entry = first_entry/100\n", + " first_entry = first_entry**0.5\n", + " if randrange(2) == 0: # determine the sign of the first entry\n", + " first_entry = -1 * first_entry\n", + " second_entry = 1 - (first_entry**2)\n", + " second_entry = second_entry**0.5 # the second entry cannot be nonnegative\n", + " if randrange(2) == 0: # determine the sign\n", + " second_entry = -1 * second_entry\n", + " return [first_entry,second_entry]\n", + "\n", + "print(\"function 'random_quantum_state' is defined now, and so it can be used in the following part\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Define function find_angle_of_a_quantum_state

      \n", + "\n", + "This function returns the angle of a rotation that rotates the state $ \\ket{0} $ to the given quantum state.\n", + "\n", + "Such angle can be between 0 and $ 2\\pi $. Therefore, it uniquely defines a quantum state.\n", + "\n", + "The difference between this function and function \"angle_between_two_quantum_states\" can be observed from the figure below:\n", + "
        \n", + "
      • Function \"angle_between_two_quantum_states\" returns $ \\frac{3 \\pi}{4} $ as the angle between the vectors $ u $ and $ v $.
      • \n", + "
      • But function \"find_angle_of_a_quantum_state\" returns $ \\frac{5 \\pi}{4} $ as the angle of the rotation from vector $ u $ to $ v $.
      • \n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " \n", + "\n", + "If the second entry of the quantum state is positive, then both functions return the same angle.\n", + "\n", + "If the second entry of the quantum state is negative, then the functions return different values.\n", + "\n", + "However, we remark that the summation of both values are always $ 2 \\pi $ in the second case." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from math import pi \n", + "\n", + "def find_angle_of_a_quantum_state(quantum_state):\n", + " # find the angle between quantum_state and [1,0]\n", + " angle = angle_between_two_quantum_states(quantum_state,[1,0])\n", + " if quantum_state[1] < 0: # the angle is greater than pi\n", + " angle = 2 * pi - angle\n", + " return angle\n", + "\n", + "print(\"function 'find_angle_of_a_quantum_state' is defined now, and so it can be used in the following part\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Test function find_angle_of_a_quantum_state

      " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# find the angles of |0>, |1>, -|0>, and -|1>\n", + "print(find_angle_of_a_quantum_state([1,0]),\"is the angle of |0>, which should be 0*pi=\",0*pi)\n", + "print(find_angle_of_a_quantum_state([0,1]),\"is the angle of |1>, which should be pi/2=\",pi/2)\n", + "print(find_angle_of_a_quantum_state([-1,0]),\"is the angle of -|0>, which should be pi=\",pi)\n", + "print(find_angle_of_a_quantum_state([0,-1]),\"is the angle of -|1>, which should be 3*pi/2=\",3*pi/2)\n", + "print()\n", + "\n", + "# find the angle of H|0> = [1/2**0.5,1/2**0.5]\n", + "print(find_angle_of_a_quantum_state([1/2**0.5,1/2**0.5]),\"is the angle of H|0>, which should be pi/4=\",pi/4)\n", + "# find the angle of [-1/2**0.5,1/2**0.5], which is pi/2 more than the previous angle\n", + "print(find_angle_of_a_quantum_state([-1/2**0.5,1/2**0.5]),\"is pi/2 more than the previous angle, which should be 3*pi/4=\",3*pi/4)\n", + "# find the angle of [-1/2**0.5,-1/2**0.5], which is pi/2 more than the previous angle\n", + "print(find_angle_of_a_quantum_state([-1/2**0.5,-1/2**0.5]),\"is pi/2 more than the previous angle, which should be 5*pi/4=\",5*pi/4)\n", + "# find the angle of [-1/2**0.5,1/2**0.5], which is pi/2 more than the previous angle\n", + "print(find_angle_of_a_quantum_state([1/2**0.5,-1/2**0.5]),\"is pi/2 more than the previous angle, which should be 7*pi/4=\",7*pi/4)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Function visualize_quantum_states

      \n", + "\n", + "This function visualize the given quantum states on the unit circle.\n", + "\n", + "The input should be a list of quantum states with their labels, i.e., $ [ \\mbox{'label'}, \\mbox{the-first-amplitude}, \\mbox{the-second-amplitude} ] $." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def visualize_quantum_states(quantum_states):\n", + " # import the useful tool for drawing figures in pythpn\n", + " from matplotlib.pyplot import plot, show, figure, Circle, axis, gca, annotate, arrow, text\n", + " # import the constant pi\n", + " from math import pi\n", + " \n", + " figure(figsize=(6,6), dpi=80) # size of the figure\n", + " gca().add_patch( Circle((0,0),1,color='black',fill=False) ) # draw the circle\n", + " # auxiliary points\n", + " plot(-1.3,0)\n", + " plot(1.3,0)\n", + " plot(0,1.3)\n", + " plot(0,-1.3)\n", + " # axes\n", + " arrow(0,0,1.1,0,head_width=0.04, head_length=0.08)\n", + " arrow(0,0,-1.1,0,head_width=0.04, head_length=0.08)\n", + " arrow(0,0,0,-1.1,head_width=0.04, head_length=0.08)\n", + " arrow(0,0,0,1.1,head_width=0.04, head_length=0.08)\n", + " \n", + " # draw all quantum states\n", + "\n", + " for quantum_state in quantum_states:\n", + " # show the quantum state as an arrow on the diagram\n", + " state_name = quantum_state[0] # label of the quantum state \n", + " x_value = quantum_state[1] # amplitude of |0>\n", + " y_value = quantum_state[2] # amplitude of |1>\n", + " # draw the arrow\n", + " arrow(0,0,x_value,y_value,head_width=0.04, head_length=0.04,color='blue')\n", + "\n", + " # the following code is used to write the name of quantum states\n", + " if x_value<0: text_x_value=x_value-0.1\n", + " else: text_x_value=x_value+0.05\n", + " if y_value<0: text_y_value=y_value-0.1\n", + " else: text_y_value=y_value+0.05 \n", + " text(text_x_value,text_y_value,state_name)\n", + "\n", + " show() # show the diagram\n", + "# end of function\n", + "\n", + "print(\"function 'visualize_quantum_states' is defined now, and so it can be used in the following part\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Test function visualize_quantum_states

      " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# define a list of three quantum states with their labels\n", + "all_quantum_states =[\n", + " ['u',-1/2**0.5,-1/2**0.5],\n", + " ['v',3/5,4/5],\n", + " ['|1>',0,1]\n", + "]\n", + "\n", + "# visualize all quantum states\n", + "visualize_quantum_states(all_quantum_states)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Function amplitudes_of_a_quantum_state

      \n", + "\n", + "This function takes a quantum circuit having a (real-valued) qubit as the input, and then returns the amplitudes of the current quantum state." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def amplitudes_of_a_quantum_state(quantum_circuit):\n", + " # import all necessary objects and methods for quantum circuits\n", + " from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + " \n", + " # the following code is used to get the quantum state of a quantum circuit\n", + " job = execute(quantum_circuit,Aer.get_backend('statevector_simulator'))\n", + " current_quantum_state=job.result().get_statevector(quantum_circuit) \n", + " \n", + " # now we read the real parts of the amplitudes\n", + " the_first_amplitude = current_quantum_state[0].real # amplitude of |0>\n", + " the_second_amplitude = current_quantum_state[1].real # amplitude of |1>\n", + " \n", + " return[the_first_amplitude,the_second_amplitude]\n", + "# end of function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Function reflection_game

      \n", + "\n", + "This is the function to visualize the reflection" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def reflection_game():\n", + " # randomly construct u\n", + " u = random_quantum_state()\n", + " print(\"u is\",u)\n", + "\n", + " # randomly construct v\n", + " v = random_quantum_state()\n", + " print(\"v is\",v)\n", + "\n", + " print() \n", + " # the angle representing u uniquely\n", + " angle_of_u = find_angle_of_a_quantum_state(u)\n", + " print(\"the angle uniquely representing u is\",angle_of_u,\"=\",angle_of_u/pi*180,\"degrees\")\n", + "\n", + " # the angle representing v uniquely\n", + " angle_of_v = find_angle_of_a_quantum_state(v)\n", + " print(\"the angle uniquely representing v is\",angle_of_v,\"=\",angle_of_v/pi*180,\"degrees\")\n", + "\n", + " # the angle between u and v\n", + " angle_between_u_and_v = angle_of_u-angle_of_v\n", + " print(\"the angle between u and v is\",angle_between_u_and_v,\"=\",angle_between_u_and_v/pi*180,\"degrees\")\n", + "\n", + " #\n", + " #\n", + " # we find |u>, |v>, and |uv> by writing a quantum program\n", + " #\n", + " #\n", + " \n", + " # start in |0>\n", + " # rotate with u_angle to find |u>\n", + " # rotate with -angle_between_u_and_v to find |v>\n", + " # rotate with -angle_between_u_and_v once more to find the reflection of |u> over the axis |v>\n", + " # we use ry-gatefor the rotations\n", + "\n", + " # COPY-PASTE from the previous programs\n", + "\n", + " # import all necessary objects and methods for quantum circuits\n", + " from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + " from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + " \n", + "\n", + " # we define a quantum circuit with one qubit and one bit\n", + " qreg1 = QuantumRegister(1) # quantum register with a single qubit\n", + " creg1 = ClassicalRegister(1) # classical register with a single bit\n", + " mycircuit1 = QuantumCircuit(qreg1,creg1) # quantum circuits with quantum and classical registers\n", + "\n", + " # store all quantum states with their labels\n", + " all_quantum_states = [\n", + " ['0',1,0] # start with |0>\n", + " ]\n", + "\n", + " print()# print an empty line\n", + " \n", + " # 1)\n", + " # already started in |0>\n", + " # rotate with angle_of_u to find |u>\n", + " mycircuit1.ry(2*angle_of_u,qreg1[0]) \n", + " \n", + " # get the amplitudes of the current quantum state\n", + " [x_value,y_value] = amplitudes_of_a_quantum_state(mycircuit1)\n", + "\n", + " all_quantum_states.append(['u',x_value,y_value]) # add the quantum state u\n", + "\n", + " # 2)\n", + " # rotate with -angle_between_u_and_v to find |v>\n", + " mycircuit1.ry(-2*angle_between_u_and_v,qreg1[0]) \n", + "\n", + " # get the amplitudes of the current quantum state\n", + " [x_value,y_value] = amplitudes_of_a_quantum_state(mycircuit1)\n", + "\n", + " all_quantum_states.append(['v',x_value,y_value]) # add the quantum state v\n", + "\n", + "\n", + " # 3)\n", + " # rotate with -angle_between_u_and_v once more to find the reflection of |u> over the axis |v>\n", + " mycircuit1.ry(-2*angle_between_u_and_v,qreg1[0]) \n", + "\n", + " # get the amplitudes of the current quantum state\n", + " [x_value,y_value] = amplitudes_of_a_quantum_state(mycircuit1)\n", + "\n", + " all_quantum_states.append(['uv',x_value,y_value]) # add the quantum state uv\n", + "\n", + " print(\"all quantum states:\")\n", + " print(all_quantum_states)\n", + "\n", + " # visualize all quantum states\n", + " visualize_quantum_states(all_quantum_states)\n", + "# end of function\n", + "\n", + "print(\"function 'reflection game' is defined now, and so it can be used in the following part\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Play with reflection_game

      " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# game 1\n", + "reflection_game()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# game 2\n", + "reflection_game()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# game 3\n", + "reflection_game()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# game 4\n", + "reflection_game()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# game 5\n", + "reflection_game()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# games 6 - 20\n", + "for i in range(6,21):\n", + " reflection_game()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze/B88_Grovers_Search.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze/B88_Grovers_Search.ipynb new file mode 100644 index 000000000..b965fe882 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze/B88_Grovers_Search.ipynb @@ -0,0 +1,548 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
      \n", + "\tprepared by Abuzer Yakaryilmaz (QuSoft@Riga) | November 10, 2018\n", + "
      \n", + "
      I have some macros here. If there is a problem with displaying mathematical formulas, please run me to load these macros.
      \n", + "$ \\newcommand{\\bra}[1]{\\langle #1|} $\n", + "$ \\newcommand{\\ket}[1]{|#1\\rangle} $\n", + "$ \\newcommand{\\braket}[2]{\\langle #1|#2\\rangle} $\n", + "$ \\newcommand{\\inner}[2]{\\langle #1,#2\\rangle} $\n", + "$ \\newcommand{\\biginner}[2]{\\left\\langle #1,#2\\right\\rangle} $\n", + "$ \\newcommand{\\mymatrix}[2]{\\left( \\begin{array}{#1} #2\\end{array} \\right)} $\n", + "$ \\newcommand{\\myvector}[1]{\\mymatrix{c}{#1}} $\n", + "$ \\newcommand{\\myrvector}[1]{\\mymatrix{r}{#1}} $\n", + "$ \\newcommand{\\mypar}[1]{\\left( #1 \\right)} $\n", + "$ \\newcommand{\\mybigpar}[1]{ \\Big( #1 \\Big)} $\n", + "$ \\newcommand{\\sqrttwo}{\\frac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\dsqrttwo}{\\dfrac{1}{\\sqrt{2}}} $\n", + "$ \\newcommand{\\onehalf}{\\frac{1}{2}} $\n", + "$ \\newcommand{\\donehalf}{\\dfrac{1}{2}} $\n", + "$ \\newcommand{\\hadamard}{ \\mymatrix{rr}{ \\sqrttwo & \\sqrttwo \\\\ \\sqrttwo & -\\sqrttwo }} $\n", + "$ \\newcommand{\\vzero}{\\myvector{1\\\\0}} $\n", + "$ \\newcommand{\\vone}{\\myvector{0\\\\1}} $\n", + "$ \\newcommand{\\vhadamardzero}{\\myvector{ \\sqrttwo \\\\ \\sqrttwo } } $\n", + "$ \\newcommand{\\vhadamardone}{ \\myrvector{ \\sqrttwo \\\\ -\\sqrttwo } } $\n", + "$ \\newcommand{\\myarray}[2]{ \\begin{array}{#1}#2\\end{array}} $\n", + "$ \\newcommand{\\X}{ \\mymatrix{cc}{0 & 1 \\\\ 1 & 0} } $\n", + "$ \\newcommand{\\Z}{ \\mymatrix{rr}{1 & 0 \\\\ 0 & -1} } $\n", + "$ \\newcommand{\\Htwo}{ \\mymatrix{rrrr}{ \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} \\\\ \\frac{1}{2} & -\\frac{1}{2} & -\\frac{1}{2} & \\frac{1}{2} } } $\n", + "$ \\newcommand{\\CNOT}{ \\mymatrix{cccc}{1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0} } $\n", + "$ \\newcommand{\\norm}[1]{ \\left\\lVert #1 \\right\\rVert } $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Grover's Search

      \n", + "\n", + "Grover's search algorithm is one of the well-known quantum algorithms.\n", + "\n", + "It finds a marked element in an unsorted list quadratically better than the classical algorithms.\n", + "\n", + "Grover's search algorithm iteratively applies two reflections.\n", + "\n", + "Its implementation is complicated, but its explanation is easy.\n", + "\n", + "Here, we describe Grover's search algorithm, and then emulate it on the unit circle. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Representation of data

      \n", + "\n", + "Suppose that we have 16 elements in our list.\n", + "\n", + "The list has marked and unmarked elements. (A marked element refers to a searching item.)\n", + "\n", + "Each quantum state will be associated with a different index of the list.\n", + "\n", + "Four qubits have 16 different states ($ \\ket{0000}, \\ldots, \\ket{1111} $), and so we use 4 qubits.\n", + "\n", + "We assume that when we keep the whole list \"quantumly\", we can check whether an item is marked or not in a single step by using its index.\n", + "\n", + "For example, if the element associated with the state $ \\ket{1101} $ is marked, then we can detect this by changing the sign of this state.\n", + "\n", + "We remind that changing the sign of a quantum state is one of the basic opearations.\n", + "\n", + "In general, if we have a list of size $ 2^k $, then we can use $ k $ qubits and associate each state with one of the item in the list." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Search in parallel

      \n", + "\n", + "We can access each element in the list with one of the basis states.\n", + "\n", + "We start in state $ \\ket{0000} $.\n", + "\n", + "Then, we apply Hadamard to each qubit.\n", + "\n", + "Remember that $ \\ket{0000} = \\ket{0} \\otimes \\ket{0} \\otimes \\ket{0} \\otimes \\ket{0} $, or equivalently $ \\ket{0000} = \\ket{0}\\ket{0}\\ket{0}\\ket{0} $ by omitting tensor symbol.\n", + "\n", + "After Hadamard operator, our quantum state is\n", + "\n", + "$ \\ket{u} = H\\ket{0} \\otimes H\\ket{0} \\otimes H\\ket{0} \\otimes H\\ket{0} $, which is\n", + "\n", + "$$\n", + " \\ket{u} =\n", + " \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} + \\frac{1}{\\sqrt{2}} \\ket{1} } \\otimes\n", + " \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} + \\frac{1}{\\sqrt{2}} \\ket{1} } \\otimes\n", + " \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} + \\frac{1}{\\sqrt{2}} \\ket{1} } \\otimes\n", + " \\mypar{ \\frac{1}{\\sqrt{2}} \\ket{0} + \\frac{1}{\\sqrt{2}} \\ket{1} }.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From this tensor product, we can get every basis state of 4 qubits having the amplitude $ \\frac{1}{4} $:\n", + "\n", + "\n", + "$$\n", + " \\ket{u}= \\frac{1}{4} \\ket{0000} + \\frac{1}{4} \\ket{0001} + \\frac{1}{4} \\ket{0010} + \\frac{1}{4} \\ket{0011} \n", + " + \\cdots \\cdots + \\frac{1}{4} \\ket{1101} + \\frac{1}{4} \\ket{1110} + \\frac{1}{4} \\ket{1111}.\n", + "$$\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Thus, after Hadamard, we can access each index in parallel, \n", + "
           \n", + "because we are in a superposition of all basis states, or in a superposition of all indices of the list.\n", + "\n", + "However, the probability of observing any basis state at this moment is exponentially small: $ \\frac{1}{16} $. \n", + "\n", + "(It is $ \\frac{1}{2^k} $ if there are $ 2^k $ elements.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 1

      \n", + "\n", + "Design a quantum circuit with 4 qubits.\n", + "\n", + "Apply Hadamard to each qubit.\n", + "\n", + "Execute your circuit 1600 times.\n", + "\n", + "You should observe each basis state around 100 times.\n", + "\n", + "Reexecute your circuit 16000 times." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import all necessary objects and methods for quantum circuits\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute, Aer\n", + "from qiskit.tools.visualization import matplotlib_circuit_drawer as drawer\n", + "\n", + "#\n", + "# your solution is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Unit circle representation

      \n", + "\n", + "For representing quantum state $ \\ket{u} $, we need 16-dimensional space.\n", + "\n", + "But, we can map $\\ket{u} $ to 2-dimensional space.\n", + "\n", + "We have marked elements and unmarket elements. \n", + "\n", + "We can group the states associated with marked elements and the state associated with unmarked elements.\n", + "\n", + "Then, we can represent $ \\ket{u} $ as a summation of two quantum states $ \\ket{u} = a \\ket{u_{marked}} + b \\ket{u_{unmarked}} $.\n", + "\n", + "The states in $ \\ket{u_{marked}} $ and $ \\ket{u_{unmarked}} $ are different from each other.\n", + "\n", + "Therefore, they are orthogonal to each other. We can represent $ \\ket{u} = a \\ket{u_{marked}} + b \\ket{u_{unmarked}} $ in 2-dimension as below:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remark that if all elements are marked, then $ \\ket{u} = \\ket{u_{marked}} $, and if all elements are unmarked, then $ \\ket{u} = \\ket{u_{unmarked}}$.\n", + "\n", + "For example, if we have 3 marked elements in our example, then we can find our parameters as follows.\n", + "\n", + "Let the marked states be $ \\ket{marked1} , \\ket{marked2} , \\ket{marked3} $.\n", + "\n", + "Let the unmarked states be $ \\ket{unmarked1} , \\ket{unmarked2} , \\ldots, \\ket{unmarked13} $.\n", + "\n", + "In $ \\ket{u} $, each of this state has the amplitude $ \\frac{1}{\\sqrt{16}} $:\n", + "\n", + "$$\n", + " \\ket{u} = \\frac{1}{\\sqrt{16}} \\mypar{ \\ket{marked1} + \\ket{marked2} + \\ket{marked3} } +\n", + " \\frac{1}{\\sqrt{16}} \\mypar{ \\ket{unmarked1} + \\ket{unmarked2} + \\cdots + \\ket{unmarked13} }\n", + "$$\n", + "\n", + "Then, our parameters are\n", + "
        \n", + "
      • $ \\ket{u_{marked}} = \\frac{1}{\\sqrt{3}} \\mypar{ \\ket{marked1} + \\ket{marked2} + \\ket{marked3} } $ and
      • \n", + "
      • $ a = \\frac{\\sqrt{3}}{\\sqrt{16}} $; and,
      • \n", + "
      • $ \\ket{u_{unmarked}} = \\frac{1}{\\sqrt{13}} \\mypar{ \\ket{unmarked1} + \\ket{unmarked2} + \\cdots + \\ket{unmarked13} } $ and
      • \n", + "
      • $ b = \\frac{\\sqrt{13}}{\\sqrt{16}} $.
      • \n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The idea here is to select $ \\ket{u_{marked}} $ and $\\ket{u_{unmarked}} $ as quantum states, i.e., their lengths should be 1. \n", + "\n", + "In this way, we can also keep the ratio of $ \\frac{3}{13} $ as ratio of\n", + "
        \n", + "
      • the probability of observing a state in $ \\ket{u_{marked}} $ and
      • \n", + "
      • the probability of observing a state in $ \\ket{u_{unmarked}} $.
      • \n", + "
      \n", + "\n", + "Remark that the first probability is $ a^2 = \\frac{3}{16} $ and the second probability if $ b^2 = \\frac{13}{16} $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " So, in general, if we have $ 2^k $ elements and $ m $ of them are marked, then $ a = \\frac{\\sqrt{m}}{\\sqrt{2^k}} $ and $ b= \\frac{\\sqrt{2^k - m}}{\\sqrt{2^k}} $. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      The idea behind Grover's search

      \n", + "\n", + "The idea behind Grover's search algorithm is that \n", + "
        \n", + "
      • the amplitudes of the marked elements can be quickly amplified,
      • \n", + "
      • and so the probability of observing one of the marked element quickly approches to 1.
      • \n", + "
      \n", + "\n", + "For \"quick\" amplification, we iteratively applies two reflections to our quantum states. \n", + "\n", + "The first reflection is a clockwise rotation, and the second rotation is counterclockwise. \n", + "\n", + "The second rotation always rotates twice of the first rotation. \n", + "\n", + "Therefore, our quantum state moves counterclockwise direction after two reflections." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As an analogy, we consider the rotation on the unit circle with angle $ \\frac{\\pi}{8} $ that starts in $ \\ket{0} $. \n", + "
        \n", + "
      • After every 4 rotations, we visit in order $ \\ket{1} $, $ -\\ket{0} $, $ -\\ket{1} $, again $ \\ket{0} $, and so on.
      • \n", + "
      • Remark that the probability of observing the state $ \\ket{1} $ oscillates between increasing and decreasing while rotating.
      • \n", + "
      \n", + "\n", + "Similarly, when iterating Grover's search algorithm, we should be careful when to stop. \n", + "
        \n", + "
      • Because, after hitting a maximum value, these amplitudes are quickly decreased, and after hitting a minimum value, they are amplified again, and so on.
      • \n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      One iteration of the algorithm

      \n", + "\n", + "Once we have the unit circle representation, then we can describe the algorithm very easily.\n", + "\n", + "Grover's search algorithm simply iterates two reflection, which can be implemented as two rotations.\n", + "\n", + "The axis of the first reflection is the quantum state $ \\ket{u_{unmarked}} $.\n", + "\n", + "The axis of the second reflection is the first quantum state after Hadamard operators: $ \\ket{u} $.\n", + "\n", + "During all iterations, these axes are fixed. \n", + "\n", + "Remark that both of them depend on only the list and marked/unmarked elements." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Grover's search algorithm: \n", + "\n", + "Start in $ \\ket{u} $.\n", + "\n", + "Iteratively:\n", + "
        \n", + "
      1. Reflection over the first axis: Flip the sign of the states associated with the marked elements.\n", + "
      2. \n", + "
      3. Reflection over the second axis: Then, reflect the resulting quantum state over the $\\ket{u}$-axis.\n", + "
      4. \n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After the first reflection: the current quantum state rotates with angle $ -2 \\theta $.\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After the second reflection: the reflected state rotates with angle $ 4 \\theta $.\n", + "\n", + "\n", + "\n", + "Then, the angle of the new quantum state is $ 3 \\theta $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The second iteration:\n", + "
        \n", + "
      • The angle of the new quantum state is $ 3 \\theta $.
      • \n", + "
      • After the first reflection (rotation by $ -6 \\theta $): The reflected quantum state has angle $ -3 \\theta $.
      • \n", + "
      • The angle between the reflected quantum state and the second reflection axis is $ 4 \\theta $.\n", + "
      • With the second reflection, the reflected quantum state rotates $ 8 \\theta $.
      • \n", + "
      • Thus, the angle of the newest state will be $ 5\\theta $.
      • \n", + "
      \n", + "\n", + "Hence after each iteration the angle of the quantum state will be increased by $ 2 \\theta $." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this way, the quantum state iteratively approaches to $ \\ket{u_{marked}} $.\n", + "\n", + "If we do not stop the iterations, then it passes $ \\ket{u_{marked}} $, and starts to approaches $ - \\ket{u_{unmarked}} $.\n", + "\n", + "If the quantum state is sufficiently close to $ \\ket{u_{marked}} $ and we make a measurement, we can observe a marked element with high probability.\n", + "\n", + "This is also the place to stop the iterations." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 2: Emulating Grover's search

      \n", + "\n", + "For this task, you can use the methods given in notebook B80_Reflections.\n", + "\n", + "Set the value of $ k $ to 4. Then, the size of list is $ 2^k = 16 $.\n", + "\n", + "Pick the value of $ m $ as 3, the number of the marked elements.\n", + "\n", + "As described above, $ \\ket{u} = \\sqrt{\\frac{3}{16}} \\ket{u_{marked}} + \\sqrt{\\frac{13}{16}} \\ket{u_{unmarked}} $.\n", + "\n", + "Create a quantum circuit with single qubit.\n", + "\n", + "States $ \\ket{1} $ and $ \\ket{0} $ represents the quantum state $ \\ket{u_{marked}} $ and $ \\ket{u_{unmarked}}$, respectively.\n", + "\n", + "Then, $ \\ket{u} = \\sqrt{\\frac{13}{16}} \\ket{0} + \\sqrt{\\frac{3}{16}} \\ket{1} $.\n", + "\n", + "Determine the angle $ \\theta $, the angle between $ \\ket{u} $ and $ \\ket{0} $.\n", + "\n", + "Iterate Grover's search algorithm once by using your quantum circuit.\n", + "\n", + "For each reflection, use ry-gate (rotation).\n", + "
        \n", + "
      • Define a list to store all quantum states (with their labels) that will be visited.
      • \n", + "
      • Implement the first reflection on your qubit
      • \n", + "
      • Read the current quantum state and store it on your list
      • \n", + "
      • Implement the second reflection on your qubit
      • \n", + "
      • Read the current quantum state and store it on your list
      • \n", + "
      • Draw all visited quantum states with their labels
      • \n", + "
      • Execute your circuit 100 times
      • \n", + "
      \n", + "\n", + "Is this single iteration enough to observe state $ \\ket{1} $ more than state $ \\ket{0} $? " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your solution\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Taks 3

      \n", + "\n", + "For this task, you can use the methods given in notebook B80_Reflections .\n", + "\n", + "Set the value of $ k $ to 6. Then, the size of list is $ 2^k = 64 $.\n", + "\n", + "Pick the value of $ m $ as 1, the number of the marked elements.\n", + "\n", + "As described above, $ \\ket{u} = \\sqrt{\\frac{1}{64}} \\ket{u_{marked}} + \\sqrt{\\frac{63}{64}} \\ket{u_{unmarked}} $.\n", + "\n", + "Create a quantum circuit with single qubit.\n", + "\n", + "States $ \\ket{1} $ and $ \\ket{0} $ represents the quantum state $ \\ket{u_{marked}} $ and $ \\ket{u_{unmarked}}$, respectively.\n", + "\n", + "Then, $ \\ket{u} = \\sqrt{\\frac{63}{64}} \\ket{0} + \\sqrt{\\frac{1}{64}} \\ket{1} $.\n", + "\n", + "Determine the angle $ \\theta $, the angle between $ \\ket{u} $ and $ \\ket{0} $.\n", + "\n", + "Iterate Grover's search algorithm three times by using your quantum circuit.\n", + "\n", + "For each reflection, use ry-gate (rotation).\n", + "
        \n", + "
      • Define a list to store all quantum states (with their labels) that will be visited.
      • \n", + "
      • Iterate 3 times:\n", + "
          \n", + "
        • Implement the first reflection on your qubit
        • \n", + "
        • Read the current quantum state and store it on your list
        • \n", + "
        • Implement the second reflection on your qubit
        • \n", + "
        • Read the current quantum state and store it on your list
        • \n", + "
      • \n", + "
      • Draw all visited quantum states with their labels
      • \n", + "
      • Execute your circuit 100 times
      • \n", + "
      \n", + "\n", + "Is 3 iterations enough to observe state $ \\ket{1} $ more than state $ \\ket{0} $?\n", + "\n", + "Try 4, 5, 6, 7, 8, 9, and 10 iterations.\n", + "\n", + "What is the best iteration number?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# your code is here\n", + "#\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

      Task 4

      \n", + "\n", + "Repeat Task 3 for $ k = 8 $ and $ m = 1 $, but algorithmically find the best iteration number, say $B$. \n", + "\n", + "You may execute your circuit 1000 times to have more reliable results.\n", + "
      \n", + " Hint:\n", + "\n", + "For each iteration number, you may check how many times the state $ \\ket{1} $ is observed. \n", + "

      \n", + "This value should be at least 500.\n", + "\n", + "And, when this value starts to decrease, you may announce the previous iteration number as the best. \n", + "
      \n", + "
      \n", + "Our solution outputs $ B $ as 12 in every execution." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "click for our solution" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/bronze_getting_started.ipynb b/community/awards/teach_me_quantum_2018/bronze/bronze_getting_started.ipynb new file mode 100644 index 000000000..3ead95d4b --- /dev/null +++ b/community/awards/teach_me_quantum_2018/bronze/bronze_getting_started.ipynb @@ -0,0 +1,224 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Bronze: Your First Step to Quantum Programming\n", + "\n", + "**Authors:** Abuzer Yakaryilmaz (QuSoft@Riga) | revised by Katrina Kizenbaha (Riga TechGirls) | Martins Kalis (QuSoft@Riga)\n", + "\n", + "\n", + "### Testing: First Program \n", + "\n", + "There are two notebooks for testing your setup: \n", + "\n", + "Open the notebook [B02_cells_in_notebook.ipynb](bronze/B02_cells_in_notebook.ipynb). This is a very short tutorial on \"cells\" on Jupyter notebooks. Please read it, and complete the exercises at the end. \n", + "\n", + "Open the notebook [B04_hello_from_quantum_world.ipynb](bronze/B04_hello_from_quantum_world.ipynb). This is our test notebook for Qiskit. Please run each cell one by one. \n", + "\n", + "In this notebook, you may access IBM's simulator and prototype real quantum computer. If you would like to try them, then please read the following instructions:\n", + "\n", + "\n", + "#### Joining the IBM Q Experience: \n", + "In order to use IBM services, we should be a member of IBM Q Experience. \n", + "- Click https://quantumexperience.ng.bluemix.net/qx/community \n", + "- Click Sign In on the top-right corner to login into the system. If you are not a member, then first click Sign Up. \n", + "\n", + "After signing into the system, go to My Account by clicking the logo at the top-right corner and then My Account. \n", + "- Click Advanced tabs, where you can copy your API key, which is used when connecting to IBM platforms. \n", + "- Under Advanced tabs, you can also see IBM Q Backend Access (available to you, under maintenance, etc.) and your Units.\n", + "\n", + "If you are here, congratulations! Your system is ready for using Qiskit and Bronze ;-) \n", + " \n", + "### Python: Basics and Warm-Up \n", + "There are nine notebooks on python programming. \n", + "\n", + "The first one ([B06_Python_Quick_Reference.ipynb](bronze/B06_Python_Quick_Reference.ipynb)) is prepared as a quick reference on python. \n", + "\n", + "The next four notebooks are on the basic usage of python: variables, loops, conditionals, and lists. \n", + "- [B08_Python_Basics_Variables.ipynb](bronze/B08_Python_Basics_Variables.ipynb)\n", + "
      *solutions:* [`B08_Python_Basics_Variables_Solutions.ipynb`](bronze-solutions/B08_Python_Basics_Variables_Solutions.ipynb)\n", + "- [B10_Python_Basics_Loops.ipynb](bronze/B10_Python_Basics_Loops.ipynb)\n", + "
      *solutions:* [`B10_Python_Basics_Loops_Solutions.ipynb`](bronze-solutions/B10_Python_Basics_Loops_Solutions.ipynb)\n", + "- [B12_Python_Basics_Conditionals.ipynb](bronze/B12_Python_Basics_Conditionals.ipynb)\n", + "
      *solutions:* [`B12_Python_Basics_Conditionals_Solutions.ipynb`](bronze-solutions/B12_Python_Basics_Conditionals_Solutions.ipynb)\n", + "- [B14_Python_Basics_Lists.ipynb](bronze/B14_Python_Basics_Lists.ipynb)\n", + "
      *solutions:* [`B14_Python_Basics_Lists_Solutions.ipynb`](bronze-solutions/B14_Python_Basics_Lists_Solutions.ipynb)\n", + "\n", + "The last four notebooks are prepared for warming you up to the main tutorial. You can practice double dimensional lists, and (double, triple, quadruple) nested loops in the contexts of vectors, matrices, and basic operations on them. \n", + "- [B16_Lists_Vectors.ipynb](bronze/B16_Lists_Vectors.ipynb)\n", + "
      *solutions:* [`B16_Python_Lists_Vectors_Solutions.ipynb`](bronze-solutions/B16_Python_Lists_Vectors_Solutions.ipynb)\n", + "- [B18_Lists_Inner_Product.ipynb](bronze/B18_Lists_Inner_Product.ipynb)\n", + "
      *solutions:* [`B18_Python_Lists_Inner_Product_Solutions.ipynb`](bronze-solutions/B18_Python_Lists_Inner_Product_Solutions.ipynb)\n", + "- [B20_Lists_Matrices.ipynb](bronze/B20_Lists_Matrices.ipynb)\n", + "
      *solutions:* [`B20_Python_Lists_Matrices_Solutions.ipynb`](bronze-solutions/B20_Python_Lists_Matrices_Solutions.ipynb)\n", + "- [B22_Lists_Tensor_Product.ipynb](bronze/B22_Lists_Tensor_Product.ipynb)\n", + "
      *solutions:* [`B22_Python_Lists_Tensor_Product_Solutions.ipynb`](bronze-solutions/B22_Python_Lists_Tensor_Product_Solutions.ipynb)\n", + " \n", + "### Bronze: Your First Step to Quantum Programming \n", + "Bronze has sixteen notebooks for the main turorial:\n", + "\n", + "#### Basics of Probabilistic Computation:\n", + "\n", + "- [B24_One_Bit.ipynb](bronze/B24_One_Bit.ipynb)\n", + "
      *solutions:* [`B24_One_Bit_Solution.ipynb`](bronze-solutions/B24_One_Bit_Solution.ipynb)\n", + "- [B26_Coin_Flip.ipynb](bronze/B26_Coin_Flip.ipynb)\n", + "
      *solutions:* [`B26_Coin_Flip_Solutions.ipynb`](bronze-solutions/B26_Coin_Flip_Solutions.ipynb)\n", + "- [B28_Coin_Flip_Game.ipynb](bronze/B28_Coin_Flip_Game.ipynb)\n", + "
      *solutions:* [`B28_Coin_Flip_Game_Solution.ipynb`](bronze-solutions/B28_Coin_Flip_Game_Solution.ipynb)\n", + "- [B32_Probabilistic_States.ipynb](bronze/B32_Probabilistic_States.ipynb)\n", + "
      *solutions:* [`B32_Probabilistic_States_Solutions.ipynb`](bronze-solutions/B32_Probabilistic_States_Solutions.ipynb)\n", + "- [B36_Probabilistic_Operators.ipynb](bronze/B36_Probabilistic_Operators.ipynb)\n", + "
      *solutions:* [`B36_Probabilistic_Operators_Solutions.ipynb`](bronze-solutions/B36_Probabilistic_Operators_Solutions.ipynb)\n", + "\n", + "\n", + "#### Basics of Quantum Computation:\n", + "\n", + "- [B40_Quantum_Coin_flipping.ipynb](bronze/B40_Quantum_Coin_flipping.ipynb)\n", + "- [B42_Hadamard.ipynb](bronze/B42_Hadamard.ipynb)\n", + "
      *solutions:* [`B42_Hadamard_Solution.ipynb`](bronze-solutions/B42_Hadamard_Solution.ipynb)\n", + "- [B44_One_Qubit.ipynb](bronze/B44_One_Qubit.ipynb)\n", + "- [B46_Quantum_State.ipynb](bronze/B46_Quantum_State.ipynb)\n", + "
      *solutions:* [`B46_Quantum_State_Solutions.ipynb`](bronze-solutions/B46_Quantum_State_Solutions.ipynb)\n", + "- [B48_Superposition.ipynb](bronze/B48_Superposition.ipynb)\n", + "
      *solutions:* [`B48_Superposition_Solutions.ipynb`](bronze-solutions/B48_Superposition_Solutions.ipynb)\n", + "\n", + "#### First Results on Quantum Computation with Qiskit:\n", + "\n", + "- [B56_Two_Qubits.ipynb](bronze/B56_Two_Qubits.ipynb)\n", + "
      *solutions:* [`B56_Two_Qubits_Solutions.ipynb`](bronze-solutions/B56_Two_Qubits_Solutions.ipynb)\n", + "- [B60_Superdense_Coding.ipynb](bronze/B60_Superdense_Coding.ipynb)\n", + "
      *solutions:* [`B60_Superdense_Coding_Solution.ipynb`](bronze-solutions/B60_Superdense_Coding_Solution.ipynb)\n", + "- [B64_Phase_Kickback.ipynb](bronze/B64_Phase_Kickback.ipynb)\n", + "
      *solutions:* [`B64_Phase_Kickback_Solutions.ipynb`](bronze-solutions/B64_Phase_Kickback_Solutions.ipynb)\n", + "\n", + "#### Rotations and Reflections on Unit Circle & Grover Algorithm\n", + "\n", + "- [B72_Rotations.ipynb](bronze/B72_Rotations.ipynb)\n", + "- [B80_Reflections.ipynb](bronze/B80_Reflections.ipynb)\n", + "- [B88_Grovers_Search.ipynb](bronze/B88_Grovers_Search.ipynb)\n", + "
      *solutions:* [`B88_Grovers_Search_Solutions.ipynb`](bronze-solutions/B88_Grovers_Search_Solutions.ipynb) \n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "from os import listdir as ld\n", + "files = [ff for ff in ld('bronze') if ff[:1] == 'B']\n", + "sols = [ff for ff in ld('bronze-solutions') if ff[:1] == 'B']" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "files.sort()\n", + "sols.sort()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "- [B01_ Acknowledgements.ipynb](bronze/B01_ Acknowledgements.ipynb)\n", + "- [B02_cells_in_notebook.ipynb](bronze/B02_cells_in_notebook.ipynb)\n", + "- [B04_hello_from_quantum_world.ipynb](bronze/B04_hello_from_quantum_world.ipynb)\n", + "- [B06_Python_Quick_Reference.ipynb](bronze/B06_Python_Quick_Reference.ipynb)\n", + "- [B08_Python_Basics_Variables.ipynb](bronze/B08_Python_Basics_Variables.ipynb)\n", + "
      *solutions:* [`B08_Python_Basics_Variables_Solutions.ipynb`](bronze-solutions/B08_Python_Basics_Variables_Solutions.ipynb)\n", + "- [B10_Python_Basics_Loops.ipynb](bronze/B10_Python_Basics_Loops.ipynb)\n", + "
      *solutions:* [`B10_Python_Basics_Loops_Solutions.ipynb`](bronze-solutions/B10_Python_Basics_Loops_Solutions.ipynb)\n", + "- [B12_Python_Basics_Conditionals.ipynb](bronze/B12_Python_Basics_Conditionals.ipynb)\n", + "
      *solutions:* [`B12_Python_Basics_Conditionals_Solutions.ipynb`](bronze-solutions/B12_Python_Basics_Conditionals_Solutions.ipynb)\n", + "- [B14_Python_Basics_Lists.ipynb](bronze/B14_Python_Basics_Lists.ipynb)\n", + "
      *solutions:* [`B14_Python_Basics_Lists_Solutions.ipynb`](bronze-solutions/B14_Python_Basics_Lists_Solutions.ipynb)\n", + "- [B16_Lists_Vectors.ipynb](bronze/B16_Lists_Vectors.ipynb)\n", + "
      *solutions:* [`B16_Python_Lists_Vectors_Solutions.ipynb`](bronze-solutions/B16_Python_Lists_Vectors_Solutions.ipynb)\n", + "- [B18_Lists_Inner_Product.ipynb](bronze/B18_Lists_Inner_Product.ipynb)\n", + "
      *solutions:* [`B18_Python_Lists_Inner_Product_Solutions.ipynb`](bronze-solutions/B18_Python_Lists_Inner_Product_Solutions.ipynb)\n", + "- [B20_Lists_Matrices.ipynb](bronze/B20_Lists_Matrices.ipynb)\n", + "
      *solutions:* [`B20_Python_Lists_Matrices_Solutions.ipynb`](bronze-solutions/B20_Python_Lists_Matrices_Solutions.ipynb)\n", + "- [B22_Lists_Tensor_Product.ipynb](bronze/B22_Lists_Tensor_Product.ipynb)\n", + "
      *solutions:* [`B22_Python_Lists_Tensor_Product_Solutions.ipynb`](bronze-solutions/B22_Python_Lists_Tensor_Product_Solutions.ipynb)\n", + "- [B24_One_Bit.ipynb](bronze/B24_One_Bit.ipynb)\n", + "
      *solutions:* [`B24_One_Bit_Solution.ipynb`](bronze-solutions/B24_One_Bit_Solution.ipynb)\n", + "- [B26_Coin_Flip.ipynb](bronze/B26_Coin_Flip.ipynb)\n", + "
      *solutions:* [`B26_Coin_Flip_Solutions.ipynb`](bronze-solutions/B26_Coin_Flip_Solutions.ipynb)\n", + "- [B28_Coin_Flip_Game.ipynb](bronze/B28_Coin_Flip_Game.ipynb)\n", + "
      *solutions:* [`B28_Coin_Flip_Game_Solution.ipynb`](bronze-solutions/B28_Coin_Flip_Game_Solution.ipynb)\n", + "- [B32_Probabilistic_States.ipynb](bronze/B32_Probabilistic_States.ipynb)\n", + "
      *solutions:* [`B32_Probabilistic_States_Solutions.ipynb`](bronze-solutions/B32_Probabilistic_States_Solutions.ipynb)\n", + "- [B36_Probabilistic_Operators.ipynb](bronze/B36_Probabilistic_Operators.ipynb)\n", + "
      *solutions:* [`B36_Probabilistic_Operators_Solutions.ipynb`](bronze-solutions/B36_Probabilistic_Operators_Solutions.ipynb)\n", + "- [B40_Quantum_Coin_flipping.ipynb](bronze/B40_Quantum_Coin_flipping.ipynb)\n", + "- [B42_Hadamard.ipynb](bronze/B42_Hadamard.ipynb)\n", + "
      *solutions:* [`B42_Hadamard_Solution.ipynb`](bronze-solutions/B42_Hadamard_Solution.ipynb)\n", + "- [B44_One_Qubit.ipynb](bronze/B44_One_Qubit.ipynb)\n", + "- [B46_Quantum_State.ipynb](bronze/B46_Quantum_State.ipynb)\n", + "
      *solutions:* [`B46_Quantum_State_Solutions.ipynb`](bronze-solutions/B46_Quantum_State_Solutions.ipynb)\n", + "- [B48_Superposition.ipynb](bronze/B48_Superposition.ipynb)\n", + "
      *solutions:* [`B48_Superposition_Solutions.ipynb`](bronze-solutions/B48_Superposition_Solutions.ipynb)\n", + "- [B56_Two_Qubits.ipynb](bronze/B56_Two_Qubits.ipynb)\n", + "
      *solutions:* [`B56_Two_Qubits_Solutions.ipynb`](bronze-solutions/B56_Two_Qubits_Solutions.ipynb)\n", + "- [B60_Superdense_Coding.ipynb](bronze/B60_Superdense_Coding.ipynb)\n", + "
      *solutions:* [`B60_Superdense_Coding_Solution.ipynb`](bronze-solutions/B60_Superdense_Coding_Solution.ipynb)\n", + "- [B64_Phase_Kickback.ipynb](bronze/B64_Phase_Kickback.ipynb)\n", + "
      *solutions:* [`B64_Phase_Kickback_Solutions.ipynb`](bronze-solutions/B64_Phase_Kickback_Solutions.ipynb)\n", + "- [B72_Rotations.ipynb](bronze/B72_Rotations.ipynb)\n", + "- [B80_Reflections.ipynb](bronze/B80_Reflections.ipynb)\n", + "- [B88_Grovers_Search.ipynb](bronze/B88_Grovers_Search.ipynb)\n", + "
      *solutions:* [`B88_Grovers_Search_Solutions.ipynb`](bronze-solutions/B88_Grovers_Search_Solutions.ipynb)\n" + ] + } + ], + "source": [ + "for ss in files:\n", + " print('- ['+ss+'](bronze/'+ss+')')\n", + " tt = [ff for ff in sols if ff[:3]==ss[:3]]\n", + " if len(tt) > 0:\n", + " print('
      *solutions:* [`'+tt[0]+'`](bronze-solutions/'+tt[0]+')')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/bronze/images/Z_u.jpg b/community/awards/teach_me_quantum_2018/bronze/images/Z_u.jpg new file mode 100755 index 000000000..240a5ac04 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/Z_u.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/angle_with_zero_state.jpg b/community/awards/teach_me_quantum_2018/bronze/images/angle_with_zero_state.jpg new file mode 100755 index 000000000..e079c27b0 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/angle_with_zero_state.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/grover_first_reflection.jpg b/community/awards/teach_me_quantum_2018/bronze/images/grover_first_reflection.jpg new file mode 100755 index 000000000..b325ca6b6 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/grover_first_reflection.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/grover_second_reflection.jpg b/community/awards/teach_me_quantum_2018/bronze/images/grover_second_reflection.jpg new file mode 100755 index 000000000..25bfa86fc Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/grover_second_reflection.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/inner_v_u_-v_-u.jpg b/community/awards/teach_me_quantum_2018/bronze/images/inner_v_u_-v_-u.jpg new file mode 100755 index 000000000..feedd43b2 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/inner_v_u_-v_-u.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/length_-3_4-small.jpg b/community/awards/teach_me_quantum_2018/bronze/images/length_-3_4-small.jpg new file mode 100755 index 000000000..7cf95fe5e Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/length_-3_4-small.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/length_-3_4.jpg b/community/awards/teach_me_quantum_2018/bronze/images/length_-3_4.jpg new file mode 100755 index 000000000..55e58aa77 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/length_-3_4.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/length_v_u.jpg b/community/awards/teach_me_quantum_2018/bronze/images/length_v_u.jpg new file mode 100755 index 000000000..a9c5a4566 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/length_v_u.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/marked-unmarked.jpg b/community/awards/teach_me_quantum_2018/bronze/images/marked-unmarked.jpg new file mode 100755 index 000000000..2f396ed4c Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/marked-unmarked.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/photon1.jpg b/community/awards/teach_me_quantum_2018/bronze/images/photon1.jpg new file mode 100755 index 000000000..6820e962c Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/photon1.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/photon2.jpg b/community/awards/teach_me_quantum_2018/bronze/images/photon2.jpg new file mode 100755 index 000000000..827116d2d Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/photon2.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/photon3.jpg b/community/awards/teach_me_quantum_2018/bronze/images/photon3.jpg new file mode 100755 index 000000000..2c8931edd Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/photon3.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/photon3a.jpg b/community/awards/teach_me_quantum_2018/bronze/images/photon3a.jpg new file mode 100755 index 000000000..3af93659b Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/photon3a.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/photon3b.jpg b/community/awards/teach_me_quantum_2018/bronze/images/photon3b.jpg new file mode 100755 index 000000000..fb871edc8 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/photon3b.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/photon4.jpg b/community/awards/teach_me_quantum_2018/bronze/images/photon4.jpg new file mode 100755 index 000000000..f997e07d0 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/photon4.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/photon5.jpg b/community/awards/teach_me_quantum_2018/bronze/images/photon5.jpg new file mode 100755 index 000000000..c714b83de Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/photon5.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/photon6.jpg b/community/awards/teach_me_quantum_2018/bronze/images/photon6.jpg new file mode 100755 index 000000000..c48faae79 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/photon6.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/photon7.jpg b/community/awards/teach_me_quantum_2018/bronze/images/photon7.jpg new file mode 100755 index 000000000..2e477637f Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/photon7.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/photon8.jpg b/community/awards/teach_me_quantum_2018/bronze/images/photon8.jpg new file mode 100755 index 000000000..d43b950a7 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/photon8.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/photon9.jpg b/community/awards/teach_me_quantum_2018/bronze/images/photon9.jpg new file mode 100755 index 000000000..24d63b041 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/photon9.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/prediction1.jpg b/community/awards/teach_me_quantum_2018/bronze/images/prediction1.jpg new file mode 100755 index 000000000..be909d274 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/prediction1.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/reflected_vector.jpg b/community/awards/teach_me_quantum_2018/bronze/images/reflected_vector.jpg new file mode 100755 index 000000000..06607bce8 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/reflected_vector.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/reflection_axes.jpg b/community/awards/teach_me_quantum_2018/bronze/images/reflection_axes.jpg new file mode 100755 index 000000000..f91a30cf7 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/reflection_axes.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/reflections_x_y.jpg b/community/awards/teach_me_quantum_2018/bronze/images/reflections_x_y.jpg new file mode 100755 index 000000000..34399976a Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/reflections_x_y.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/state3.jpg b/community/awards/teach_me_quantum_2018/bronze/images/state3.jpg new file mode 100755 index 000000000..014535faa Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/state3.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/vector_-3_4-small.jpg b/community/awards/teach_me_quantum_2018/bronze/images/vector_-3_4-small.jpg new file mode 100755 index 000000000..e6f714b5f Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/vector_-3_4-small.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/vector_-3_4.jpg b/community/awards/teach_me_quantum_2018/bronze/images/vector_-3_4.jpg new file mode 100755 index 000000000..c23b4f39c Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/vector_-3_4.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/vector_-4_-5-small.jpg b/community/awards/teach_me_quantum_2018/bronze/images/vector_-4_-5-small.jpg new file mode 100755 index 000000000..02c3e8896 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/vector_-4_-5-small.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/vector_-4_-5.jpg b/community/awards/teach_me_quantum_2018/bronze/images/vector_-4_-5.jpg new file mode 100755 index 000000000..73aefdf11 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/vector_-4_-5.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/vector_1_2-small.jpg b/community/awards/teach_me_quantum_2018/bronze/images/vector_1_2-small.jpg new file mode 100755 index 000000000..da80f7132 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/vector_1_2-small.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/vector_1_2.jpg b/community/awards/teach_me_quantum_2018/bronze/images/vector_1_2.jpg new file mode 100755 index 000000000..0474decb0 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/vector_1_2.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/vector_3_4.jpg b/community/awards/teach_me_quantum_2018/bronze/images/vector_3_4.jpg new file mode 100755 index 000000000..2ea7339f7 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/vector_3_4.jpg differ diff --git a/community/awards/teach_me_quantum_2018/bronze/images/vectors_2_4_-1_-2.jpg b/community/awards/teach_me_quantum_2018/bronze/images/vectors_2_4_-1_-2.jpg new file mode 100755 index 000000000..74362898b Binary files /dev/null and b/community/awards/teach_me_quantum_2018/bronze/images/vectors_2_4_-1_-2.jpg differ diff --git a/community/awards/teach_me_quantum_2018/index.ipynb b/community/awards/teach_me_quantum_2018/index.ipynb new file mode 100644 index 000000000..b0d5bc172 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/index.ipynb @@ -0,0 +1,62 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Teach Me Quantum Award 2018: Top Submissions\n", + "\n", + "The 'Teach Me Quantum Award' sought out the best lecture materials using Qiskit. For information about the winning submissions, see [here](https://www.ibm.com/blogs/research/2019/01/ibmq-teach-quantum-winners/).\n", + "\n", + "In this folder you'll find the winning submissions (numbered below) as well as the other high-quality submissions (bullet points below). Note that these materials were prepared using previous versions of Qiskit. We are working to update them, and would appreciate any feedback on which ones to priortize. So don't be shy, and submit [an issue](https://github.com/Qiskit/qiskit-tutorials/issues) to share your comments.\n", + "\n", + "\n", + "\n", + "* [Teach Me Quantum](TeachMeQ/README.ipynb) by Miguel Ramalho.\n", + "\n", + "* [Quantum Machine Learning](qml_mooc/README.ipynb) by Peter Wittek.\n", + "\n", + "* [intro2qc](intro2qc/1.Introduction.ipynb) by Mirko Amico.\n", + "\n", + "* [Introduction to Quantum Computing with QISKit - a pratical guide](basic_intro2qc/QuantumComputingIntroduction.ipynb) by Carla Silva, Vanda Azevedo, Diogo Fernandes, and Inês Dutra.\n", + "\n", + "* [Bronze: Your First Step to Quantum Programming](bronze/bronze_getting_started.ipynb) by Abuzer Yakaryilmaz, Katrina Kizenbaha and Martins Kalis (QuSoft@Riga).\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/intro2qc/1.Introduction.ipynb b/community/awards/teach_me_quantum_2018/intro2qc/1.Introduction.ipynb new file mode 100644 index 000000000..f9f356a95 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/intro2qc/1.Introduction.ipynb @@ -0,0 +1,123 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1. Introduction " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Welcome to the journey of quantum computation! As a first step, let us review some general concepts related to this subject. \n", + "\n", + "## 1.1 Theory of computation\n", + "\n", + "First of all, we need to clarify what we mean by computation. A computation is defined as a mathematical calculation which involves a pre-defined sequence of steps. The first computation models used to solve certain mathematical problems, like the solution of quadratic equations, can actually be traced back to the time of the ancient Babylonians. To facilitate the process of computing, machines capable of helping to go through a computation were invented soon after. For example, one can think of the abacus, which was used for calculating many arithmetic operations.\n", + "The fundamental idea behind the use of machines for computation is the one-to-one correspondence between the states of the machine and the computational states at each step of the computation.\n", + "\n", + "\n", + "#### Turing Machine\n", + "\n", + "Computational machines can be designed following many different models. Among all, the most examined one is the Turing machine, which was formulated by Alan Turing [1]. Such a machine is made of three main parts: the memory, the input/output module and the instruction set. The memory is in the form of an infinitely long tape which is divided into cells; the input/output module is a \"head\", which moves along the tape and reads/writes symbols in each cell on the tape; the instruction set is a user-defined table of instructions specifying which action the head will do next. The machine executes a computation in the following way: each time the head reads in a symbol from the tape, then it gives an output based on the symbol read and the instruction set; the process either continues as the head moves forward or backwards, or it halts.\n", + "\n", + "\n", + "#### Circuit model of computation\n", + "\n", + "Another model for a computational machine is the circuit model of computation. This model enjoys an easier implementation in practice and is the one that has been adopted by modern digital computers. In the circuit model, the basic unit for computation is a gate. Gates implement specific elementary operations. When several gates are assembled together into a circuit, it becomes possible to calculate more complicated mathematical expressions. In this model, a computation is done by feeding the input values to a circuit and retrieving the output at the end of the circuit. \n", + "In the case of digital computers, gates compute Boolean logic operations (NOT, AND, OR, ...). Circuits can be designed to calculate Boolean expressions equivalent to all known arithmetic operations. \n", + "\n", + "One important characteristic of the gates in the circuit model is their reversibility/irreversibility. A reversible gate allows you to carry out the computation backwards and retrieve the inputs, given the output. In contrast, an irreversible gate does not allow to reconstruct the input from the output. This detail will be of importance in quantum computations, which must be done in a reversible manner.\n", + "\n", + "#### Reversible circuits\n", + "\n", + "A reversible circuit is a circuit that allows to retrieve the input values of the computation given its output values. A reversible circuit must involve a series of reversible gates. An example of a reversible logic gate is the NOT gate. For such a logic gate, it is always possible to reconstruct the input given the output.\n", + "\n", + "\n", + "#### Irreversible circuits\n", + "\n", + "On the contrary, irreversible circuits can only work in one direction and it is impossible to reconstruct the input values of the computation from the outputs. Given any circuit, a single irreversible gate is enough to make the entire circuit irreversible.\n", + "An example of an irreversible logic gate is the AND gate. The AND gate has four possible input combinations and generates two possible outputs. Therefore, for a given output there is no way to uniquely identify the input values. In general, it is possible to turn an irreversible logic gate into a reversible one by including the input in the output. An example of this procedure is the Toffoli gate. It takes three inputs: the two values used in the AND operation, and the third value which is simply zero. The output of the Toffoli gate also consists of three values: the copy of two inputs which are used in the computation and the result itself. Naturally, irreversible circuits lose information during the computation. According to Landauer's principle, there is a minimum entropy cost associated with the erasure of information. Therefore, irreversible computation dissipate energy in the form of heat." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1.2 Quantum mechanics\n", + "\n", + "Quantum mechanics is the theory of physics which provides a universal framework for the description of all natural phenomena. Its name, \"quantum\", has to do with the fact that the theory was developed for the description of atomic and subatomic particles, whose energy levels were found to be quantized in certain circumstances. But do not be mistaken, quantum mechanics is a completely general theory which can be used to make any predictions about the physical world. When dealing with macroscopic objects, however, the quantum mechanical description coincides with the classical one. Therefore, it is simpler to use classical theories for their description. \n", + "Quantum mechanics is in-famously known for the counter-intuitive features which arise because of the mathematical structure of the theory. The superposition principle and quantum entanglement are two examples of such quantum features which are of extreme importance in quantum computation. Although their existence is directly contained in the mathematics of the theory, an interpretation in terms of physical phenomena can be extremely difficult. These, and more, issues related to the interpretation of the mathematical characteristics of the theory in terms of the corresponding properties of the physical world are still today's subjects of much debate and thus will not be discussed in this lecture notes." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1.3 Quantum computation\n", + "\n", + "In the discussion of the theory of computation given above, we assumed that the machines implementing the computation behaved according to the classical laws of physics. This is true for most macroscopic objects operating in conditions familiar to us. \n", + "Since the beginning of the century, however, our ability to arrange the extreme conditions in order to observe quantum mechanical effects has increased dramatically. To the point that we are now able to manipulate quantum mechanical objects in a predictable manner. This allows us to implement computations on machines which behave according to the principles of quantum mechanics.\n", + "As mentioned earlier, quantum objects possess some very interesting and counter-intuitive features. Because of these features, like superposition and entanglement, machines built with quantum mechanical elements can do computation differently. Therefore, a computation which might take a long time to run on a Turing machine (and thus a digital computer), can take much less time on, say, a quantum Turing machine, a Turing machine improved to exploit the features of quantum mechanics. It is important to emphasize that not all mathematical problems can be solved faster on a quantum Turing machine. As of today, only a few quantum algorithms have been found which can speed-up the computation of the solution to certain mathematical problems, like factoring numbers.\n", + "\n", + "Similarly, to classical computation, quantum computation is implemented in actual machine following the circuit model of computation. Because of the reversibility inherent in the laws of quantum mechanics, quantum circuits must be made of reversible gates.\n", + "To carry out a quantum computation, a certain quantum state (a vector of complex values) is given as input to the quantum circuit. Then a sequence of quantum gates executes unitary operations (roughly speaking, equivalent to multiply by complex valued matrices) on the input state. The quantum state at the end of the circuit is measured to obtain the result of the computation. \n", + "\n", + "\n", + "\n", + "In the rest of the lecture notes, we will focus on the introduction of quantum mechanics, quantum computation and the first applications." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## In the next chapters..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These lecture notes provide an introduction to quantum computation for beginning undergraduate students. In the first part of the notes, corresponding to chapters 2,3 and 4, we introduce the fundamentals of quantum mechanics and quantum computation. Chapter 2 is devoted to the mathematics of quantum mechanics, linear algebra. In chapter 3, the fundamental ideas of quantum mechanics are introduced in an axiomatic way. The relation between the mathematical tools and their physical interpretation is made clearer. The basic elements of quantum computation are explained in chapter 4.\n", + "\n", + "The second part of the lecture notes delves more deeply into quantum computation and its applications. Starting from chapter 5, programming with QISKit is introduced. A template for writing quantum programs with QISKit is given and several examples are worked out. Chapter 6 provides the first examples of quantum algorithm which promise an advantage over their classical counterparts. The Deutsch, Bernstein-Vazirani and Simon algorithm are thoroughly reviewed. In chapter 7, other interesting applications of quantum computation are explored. Here the details of quantum teleportation, the possibility of transferring an unknown quantum state, and superdense coding, the communication of 2 classical bits through the transmission of a single entangled qubit, are given. The most famous quantum algorithm, Shor's, is explained in chapter 8. A useful protocol which exploits quantum features to improve the security of communication is shown in chapter 9. At the last stop of our journey, in chapter 10 we introduce quantum error correction." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "[1] A. M. Turing, Proceedings of the London Mathematical Society. Series 2, 442 230 (1937).\n", + "\n", + "[2] D. Deutsch Proceedings of the Royal Society of London. Series A, Mathematical and Physical Sciences Vol. 400, No. 1818 (Jul. 8, 1985), pp. 97-117" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/intro2qc/10.Quantum error correction.ipynb b/community/awards/teach_me_quantum_2018/intro2qc/10.Quantum error correction.ipynb new file mode 100644 index 000000000..0a3e4f555 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/intro2qc/10.Quantum error correction.ipynb @@ -0,0 +1,670 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
      " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "\n", + "HTML('''\n", + "
      ''')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 10. Quantum error correction\n", + "\n", + "In the last chapter, we saw how the impossibility of copying an unknown quantum state adds a layer of security to quantum communication when compared to classical ones. At first sight, this feature turns into a drawback once we step into the realm of error correction. In fact, classically one can protect information by making many copies of the bits of interest. The probability that an error will happen to all the copies quickly becomes extremely unlikely with an increasing number of copies. However, the no-cloning theorem prohibits us from using the same technique for quantum bits.\n", + "Interestingly, error correcting procedure exists also in quantum computation. In this case, quantum entanglement and quantum superposition are used as resources to fight against unwanted errors. In this chapter, we take a closer look at quantum error correction for the simple cases of a bit-flip error and a phase error following a five-qubit protocol outlined in Ref. [1]." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 10.1 The bit-flip error in the three-bit code\n", + "\n", + "\n", + "$$\\text{1. Error correcting circuit for a bit-flip error.}$$\n", + "\n", + "Let us analyze the case of transmission of quantum information, in the form of a qubit, through a noisy channel. Because of the presence of noise, an error could occur during the communication which could change the state of the qubit in an unpredictable way. We must be able to restore its state without measuring the qubit.\n", + "\n", + "\n", + "Let us make a few assumptions. First of all, we are going to assume that if more than one qubits are transferred, errors happen independently on each qubit. Also, here we are going to consider only single bit-flip ($X$) errors.\n", + "\n", + "Take the qubit we want to transfer to be in the state\n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi \\rangle= \\alpha\\lvert 0\\rangle +\\beta \\lvert 1\\rangle\n", + "\\end{equation}\n", + "\n", + "As a first step, we encode this qubit in a three-qubit entangled state using two extra ancilla qubits in the state $\\lvert 0 \\rangle$ and CNOT gates from the first qubits to the ancillas ($CX_{12}CX_{13}$)\n", + "\n", + "\\begin{equation}\n", + "\\lvert\\psi_1\\rangle=\\alpha\\lvert000\\rangle+\\beta\\lvert110\\rangle\n", + "\\end{equation}\n", + "\n", + "\n", + "The three qubits are then sent through the noisy communication channel and retrieved on the receiver's side. During the communication, a bit-flip error could have occurred on any of the three qubits giving one of the following states\n", + "\n", + "
        \n", + "
      1. \n", + "$\\lvert \\psi_{2} \\rangle =\\alpha\\lvert 000\\rangle+\\beta\\lvert 111\\rangle$\n", + "
      2. \n", + "\n", + "
      3. \n", + "$\\lvert \\psi_{2} \\rangle =\\alpha\\lvert100\\rangle+\\beta\\lvert011\\rangle$\n", + "
      4. \n", + "\n", + "
      5. \n", + "$\\lvert\\psi_{2} \\rangle =\\alpha\\lvert010\\rangle+\\beta\\lvert101\\rangle$\n", + "
      6. \n", + "\n", + "
      7. \n", + "$\\lvert\\psi_{2} \\rangle =\\alpha\\lvert001\\rangle+\\beta\\lvert110\\rangle$\n", + "
      8. \n", + "\n", + "
      \n", + "\n", + "\n", + "In order to correct the state received at the other end of the quantum communication channel from possible errors, two more ancilla qubits in the state $\\lvert 0\\rangle$ are added to the system. Moreover, they are entangled with the three bit received by using the following gates: $CX_{14}CX_{24}CX_{15}CX_{35}$. The state of the system is now\n", + "\n", + "\n", + "
        \n", + "
      1. \n", + "$\\lvert\\psi_{3} \\rangle =\\alpha \\lvert000 \\rangle \\lvert 00\\rangle+\\beta\\lvert111 \\rangle \\lvert 00\\rangle$\n", + "
      2. \n", + "\n", + "
      3. \n", + "$\\lvert\\psi_{3} \\rangle =\\alpha\\lvert001 \\rangle \\lvert 01\\rangle+\\beta\\lvert110 \\rangle \\lvert 01\\rangle$\n", + "
      4. \n", + "\n", + "
      5. \n", + "$\\lvert\\psi_{3} \\rangle =\\alpha\\lvert010 \\rangle \\lvert 10\\rangle+\\beta\\lvert101 \\rangle \\lvert 10\\rangle$\n", + "
      6. \n", + "\n", + "
      7. \n", + "$\\lvert\\psi_{3} \\rangle =\\alpha\\lvert100 \\rangle \\lvert 11\\rangle+\\beta\\lvert011 \\rangle \\lvert 11\\rangle$\n", + "
      8. \n", + "\n", + "
      \n", + "\n", + "The two ancilla qubits just added are then measured. They give the \"error syndrom\", which can be used to diagnose and then correct any error occurred on the three qubits. There are four possible outcomes for the error syndrome:\n", + "\n", + "\n", + "
        \n", + "
      1. \n", + "$00$: $\\lvert\\psi_{4} \\rangle =\\alpha \\lvert000 \\rangle +\\beta\\lvert111 \\rangle $\n", + "
      2. \n", + "\n", + "
      3. \n", + "$01$: $\\lvert\\psi_{4} \\rangle =\\alpha\\lvert001 \\rangle +\\beta\\lvert110 \\rangle$\n", + "
      4. \n", + "\n", + "
      5. \n", + "$10$: $\\lvert\\psi_{4} \\rangle =\\alpha\\lvert010 \\rangle +\\beta\\lvert101 \\rangle$\n", + "
      6. \n", + "\n", + "
      7. \n", + "$11$: $\\lvert\\psi_{4} \\rangle =\\alpha\\lvert100 \\rangle +\\beta\\lvert011 \\rangle$\n", + "\n", + "
      8. \n", + "\n", + "
      \n", + "\n", + "Therefore, the state of the three qubits can be corrected by applying the corresponding gate\n", + "\n", + "
        \n", + "
      1. \n", + "$00$: No correction is needed\n", + "
      2. \n", + "\n", + "
      3. \n", + "$01$: Apply $X$ gate to the third qubit\n", + "
      4. \n", + "\n", + "
      5. \n", + "$10$: Apply $X$ gate to the second qubit\n", + "
      6. \n", + "\n", + "
      7. \n", + "$11$: Apply $X$ gate to the first qubit\n", + "\n", + "
      8. \n", + "\n", + "
      \n", + "\n", + "After which the state of the system will be\n", + "\n", + "\\begin{equation}\n", + "\\lvert\\psi_5\\rangle=\\alpha\\lvert000\\rangle+\\beta\\lvert111\\rangle\n", + "\\end{equation}\n", + "\n", + "As originally sent. Now, to find the state of the qubit which was intended to be transferred, we decode it from the three-qubit state by disentangling the qubit with the two ancillas. Thus we apply $CX_{12}CX_{13}$ and obtain\n", + "\n", + "\\begin{equation}\n", + "\\lvert\\psi_6\\rangle = \\alpha\\lvert0\\rangle+\\beta\\lvert1\\rangle = \\lvert\\psi \\rangle\n", + "\\end{equation}\n", + "\n", + "We have successfully communicated the state of the qubit $\\lvert\\psi \\rangle$ through a noisy channel, protecting it from any single bit-flip error." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QISKit: implement the quantum error correction code for bit-flip error " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 1) Correct an X error on the second qubit in the state $ \\frac{1}{\\sqrt{2}}\\left( \\lvert 0 \\rangle + \\lvert 1 \\rangle \\right)$ " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "OPENQASM 2.0;\n", + "include \"qelib1.inc\";\n", + "qreg q[5];\n", + "creg c0[1];\n", + "creg c1[1];\n", + "creg c2[1];\n", + "h q[0];\n", + "cx q[0],q[1];\n", + "cx q[0],q[2];\n", + "x q[1];\n", + "cx q[0],q[3];\n", + "cx q[1],q[3];\n", + "cx q[0],q[4];\n", + "cx q[2],q[4];\n", + "measure q[3] -> c0[0];\n", + "measure q[4] -> c1[0];\n", + "if(c0==1) x q[1];\n", + "if(c1==1) x q[2];\n", + "cx q[0],q[1];\n", + "cx q[0],q[2];\n", + "measure q[0] -> c2[0];\n", + "\n", + "\n", + "The measured outcomes of the circuits are: {'0 0 1': 501, '1 0 1': 523}\n" + ] + } + ], + "source": [ + "from qiskit import *\n", + "\n", + "# Quantum program setup \n", + "Q_program = QuantumProgram()\n", + "\n", + "# Creating registers\n", + "q = Q_program.create_quantum_register('q', 5)\n", + "c0 = Q_program.create_classical_register('c0', 1)\n", + "c1 = Q_program.create_classical_register('c1', 1)\n", + "c2 = Q_program.create_classical_register('c2', 1)\n", + "\n", + "# Creates the quantum circuit\n", + "bit_flip = Q_program.create_circuit('bit_flip', [q], [c0,c1,c2])\n", + "\n", + "# Prepares qubit in the desired initial state \n", + "bit_flip.h(q[0])\n", + "\n", + "# Encodes the qubit in a three-qubit entangled state \n", + "bit_flip.cx(q[0], q[1])\n", + "bit_flip.cx(q[0], q[2])\n", + "\n", + "# Bit-flip error on the second qubit\n", + "bit_flip.x(q[1])\n", + "\n", + "# Adds additional two qubits for error-correction\n", + "bit_flip.cx(q[0], q[3])\n", + "bit_flip.cx(q[1], q[3])\n", + "bit_flip.cx(q[0], q[4])\n", + "bit_flip.cx(q[2], q[4])\n", + "\n", + "# Measure the two additional qubits\n", + "bit_flip.measure(q[3], c0[0])\n", + "bit_flip.measure(q[4], c1[0])\n", + "\n", + "# Do error correction\n", + "bit_flip.x(q[1]).c_if(c0, 1)\n", + "bit_flip.x(q[2]).c_if(c1, 1)\n", + "\n", + "# Decodes the qubit from the three-qubit entangled state \n", + "bit_flip.cx(q[0], q[1])\n", + "bit_flip.cx(q[0], q[2])\n", + "\n", + "# Check the state of the initial qubit\n", + "bit_flip.measure(q[0], c2[0])\n", + "\n", + "# Shows gates of the circuit\n", + "circuits = ['bit_flip']\n", + "print(Q_program.get_qasms(circuits)[0])\n", + "\n", + "# Parameters for execution on simulator\n", + "backend = 'local_qasm_simulator' \n", + "shots = 1024 # the number of shots in the experiment \n", + "\n", + "# Run the algorithm\n", + "result = Q_program.execute(circuits, backend=backend, shots=shots)\n", + "\n", + "#Shows the results obtained from the quantum algorithm \n", + "counts = result.get_counts('bit_flip')\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:', counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 10.2 The phase error in the three-bit code\n", + "\n", + "\n", + "$$\\text{2. Error correcting circuit for a phase error.}$$\n", + "\n", + "Consider now the case of a phase error. Phase error transforms the basis states as\n", + "\n", + "\\begin{eqnarray}\n", + "\\lvert 0 &\\rangle&\\rightarrow U\\lvert0\\rangle= e^{i\\phi}\\lvert 0 \\rangle \\notag \\\\\n", + "\\lvert 1 &\\rangle&\\rightarrow U\\lvert1\\rangle=e^{-i\\phi}\\lvert 1 \\rangle\n", + "\\end{eqnarray}\n", + "\n", + "Let us see how we can protect a qubit in the generic state $\\lvert \\psi \\rangle=\\lvert \\alpha \\lvert0\\rangle+ \\beta \\lvert1\\rangle$ from this kind of errors. We are going to assume again that phase error occurs independently on each qubit and that only single phase error may occur.\n", + "\n", + "Before sending the qubit through the noisy channel, we encode it in an entangled state similar to the previous one by using two ancillas in the state $\\lvert 0 \\rangle$. To do so we apply $CX_{12}CX_{13}$ and then Hadamard gate on all three qubits, obtaining the encoded state\n", + "\n", + "\\begin{eqnarray}\n", + "\\lvert \\psi_1 \\rangle = \\frac{1}{\\sqrt{2^3}}\\left\\{ \\alpha \\left[ (\\lvert0\\rangle+\\lvert1\\rangle)(\\lvert0\\rangle+\\lvert1\\rangle)(\\lvert0\\rangle+\\lvert1\\rangle) \\right] + \\beta \\left[ (\\lvert0\\rangle-\\lvert1\\rangle)(\\lvert0\\rangle-\\lvert1\\rangle)(\\lvert0\\rangle-\\lvert1\\rangle) \\right] \\right\\}\n", + "\\end{eqnarray}\n", + "\n", + "\n", + "The three qubits are then sent through the noisy communication channel and retrieved on the receiver's side. During the communication, a phase error could have occurred on any of the three qubits giving one of the following states\n", + "\n", + "
        \n", + "
      1. \n", + "$\\lvert \\psi_{2} \\rangle = \\frac{1}{\\sqrt{2^3}}\\left\\{ \\alpha \\left[ (\\lvert0\\rangle+\\lvert1\\rangle)(\\lvert0\\rangle+\\lvert1\\rangle)(\\lvert0\\rangle+\\lvert1\\rangle) \\right] + \\beta \\left[ (\\lvert0\\rangle-\\lvert1\\rangle)(\\lvert0\\rangle-\\lvert1\\rangle)(\\lvert0\\rangle-\\lvert1\\rangle) \\right] \\right\\}$\n", + "
      2. \n", + "\n", + "
      3. \n", + "$\\lvert \\psi_{2} \\rangle = \\frac{1}{\\sqrt{2^3}}\\left\\{ \\alpha \\left[ (e^{i\\phi}\\lvert0\\rangle+e^{-i\\phi}\\lvert1\\rangle)(\\lvert0\\rangle+\\lvert1\\rangle)(\\lvert0\\rangle+\\lvert1\\rangle) \\right] + \\beta \\left[ (e^{i\\phi} \\lvert0\\rangle-e^{-i\\phi}\\lvert1\\rangle)(\\lvert0\\rangle-\\lvert1\\rangle)(\\lvert0\\rangle-\\lvert1\\rangle) \\right] \\right\\}$\n", + "
      4. \n", + "\n", + "
      5. \n", + "$\\lvert \\psi_{2} \\rangle =\\frac{1}{\\sqrt{2^3}}\\left\\{ \\alpha \\left[ (\\lvert0\\rangle+\\lvert1\\rangle)(e^{i\\phi}\\lvert0\\rangle+e^{-i\\phi}\\lvert1\\rangle)(\\lvert0\\rangle+\\lvert1\\rangle) \\right] + \\beta \\left[ (\\lvert0\\rangle-\\lvert1\\rangle)(e^{i\\phi}\\lvert0\\rangle-e^{-i\\phi}\\lvert1\\rangle)(\\lvert0\\rangle-\\lvert1\\rangle) \\right] \\right\\}$\n", + "
      6. \n", + "\n", + "
      7. \n", + "$\\lvert \\psi_{2} \\rangle = \\frac{1}{\\sqrt{2^3}}\\left\\{ \\alpha \\left[ (\\lvert0\\rangle+\\lvert1\\rangle)(\\lvert0\\rangle+\\lvert1\\rangle)(e^{i\\phi} \\lvert0\\rangle+e^{-i\\phi}\\lvert1\\rangle) \\right] + \\beta \\left[ (\\lvert0\\rangle-\\lvert1\\rangle)(\\lvert0\\rangle-\\lvert1\\rangle)(e^{i\\phi} \\lvert0\\rangle-e^{-i\\phi}\\lvert1\\rangle) \\right] \\right\\}$\n", + "
      8. \n", + "\n", + "
      \n", + "\n", + "\n", + "In order to correct the state received at the other end of the quantum communication channel from possible errors, we first apply the Hadamard gate on all three qubits again. Giving:\n", + "\n", + "
        \n", + "
      1. \n", + "$\\lvert \\psi_{3} \\rangle = \\alpha \\lvert000\\rangle + \\beta \\lvert111\\rangle$\n", + "
      2. \n", + "\n", + "
      3. \n", + "$\\lvert \\psi_3 \\rangle = \\frac{1}{\\sqrt{2^3}}\\left\\{ \\alpha \\left[ (e^{i\\phi}\\lvert0\\rangle + e^{i \\phi} \\lvert1\\rangle + e^{-i\\phi}\\lvert0\\rangle - e^{-i\\phi}\\lvert1\\rangle) \\lvert00\\rangle \\right] + \\beta \\left[ (e^{i\\phi}\\lvert0\\rangle + e^{i\\phi}\\lvert1\\rangle - e^{-i\\phi}\\lvert 0 \\rangle + e^{-i\\phi}\\lvert 1 \\rangle) \\lvert11\\rangle \\right] \\right\\}$\n", + "
      4. \n", + "\n", + "
      5. \n", + "$\\lvert \\psi_{3} \\rangle =\\frac{1}{\\sqrt{2^3}}\\left\\{ \\alpha \\left[ \\lvert0\\rangle (e^{i\\phi}\\lvert0\\rangle + e^{i \\phi} \\lvert1\\rangle + e^{-i\\phi}\\lvert0\\rangle - e^{-i\\phi}\\lvert1\\rangle) \\lvert0\\rangle \\right] + \\beta \\left[ \\lvert1\\rangle (e^{i\\phi}\\lvert0\\rangle + e^{i \\phi} \\lvert1\\rangle + e^{-i\\phi}\\lvert0\\rangle - e^{-i\\phi}\\lvert1\\rangle) \\lvert1\\rangle \\right] \\right\\}$\n", + "
      6. \n", + "\n", + "
      7. \n", + "$\\lvert \\psi_3 \\rangle = \\frac{1}{\\sqrt{2^3}}\\left\\{ \\alpha \\left[ \\lvert00\\rangle (e^{i\\phi}\\lvert0\\rangle + e^{i \\phi} \\lvert1\\rangle + e^{-i\\phi}\\lvert0\\rangle - e^{-i\\phi}\\lvert1\\rangle) \\right] + \\beta \\left[ \\lvert11\\rangle (e^{i\\phi}\\lvert0\\rangle + e^{i\\phi}\\lvert1\\rangle - e^{-i\\phi}\\lvert 0 \\rangle + e^{-i\\phi}\\lvert 1 \\rangle) \\right] \\right\\}$\n", + "
      8. \n", + "\n", + "
      \n", + "\n", + "Expanding the phase as $e^{i \\phi} = \\cos \\phi + i \\sin \\phi$ and simplifying terms we obtain\n", + "\n", + "\n", + "
        \n", + "
      1. \n", + "$\\lvert \\psi_{3} \\rangle = \\alpha \\lvert000\\rangle + \\beta \\lvert111\\rangle$\n", + "
      2. \n", + "\n", + "
      3. \n", + "$\\lvert \\psi_3 \\rangle =\\alpha(\\cos \\phi \\lvert000 \\rangle+i\\sin \\phi \\lvert100\\rangle)+\\beta(\\cos \\phi \\lvert111\\rangle+i\\sin \\phi \\lvert011\\rangle)$\n", + "
      4. \n", + "\n", + "
      5. \n", + "$\\lvert \\psi_3 \\rangle =\\alpha(\\cos \\phi \\lvert000 \\rangle+i\\sin \\phi \\lvert010\\rangle)+\\beta(\\cos \\phi \\lvert111\\rangle+i\\sin \\phi \\lvert101\\rangle)$\n", + "
      6. \n", + "\n", + "
      7. \n", + "$\\lvert \\psi_3 \\rangle =\\alpha(\\cos \\phi \\lvert000 \\rangle+i\\sin \\phi \\lvert001\\rangle)+\\beta(\\cos \\phi \\lvert111\\rangle+i\\sin \\phi \\lvert110\\rangle)$\n", + "
      8. \n", + "\n", + "
      \n", + "\n", + "\n", + "\n", + "Two more ancilla qubits in the state $\\lvert 0\\rangle$ are added to the system. Moreover, they are entangled with the three bit received by using the following gates: $CX_{14}CX_{24}CX_{15}CX_{35}$. The state of the system is now\n", + "\n", + "\n", + "
        \n", + "
      1. \n", + "$\\lvert\\psi_{4} \\rangle =\\alpha \\lvert000 \\rangle \\lvert 00\\rangle+\\beta\\lvert111 \\rangle \\lvert 00\\rangle$\n", + "
      2. \n", + "\n", + "
      3. \n", + "$\\lvert\\psi_{4} \\rangle =\\alpha(\\cos \\phi \\lvert000 \\rangle \\lvert 00\\rangle+i\\sin \\phi \\lvert100 \\rangle \\lvert 11\\rangle)+\\beta(\\cos \\phi \\lvert111 \\rangle \\lvert 00\\rangle+i\\sin \\phi \\lvert011 \\rangle \\lvert 11\\rangle)$\n", + "
      4. \n", + "\n", + "
      5. \n", + "$\\lvert\\psi_{4} \\rangle =\\alpha(\\cos \\phi \\lvert000 \\rangle \\lvert 00\\rangle+i\\sin \\phi \\lvert010 \\rangle \\lvert 10\\rangle)+\\beta(\\cos \\phi \\lvert111 \\rangle \\lvert 00\\rangle+i\\sin \\phi \\lvert101 \\rangle \\lvert 10\\rangle)$\n", + "
      6. \n", + "\n", + "
      7. \n", + "$\\lvert\\psi_{4} \\rangle =\\alpha(\\cos \\phi \\lvert000 \\rangle \\lvert 00\\rangle+i\\sin \\phi \\lvert001 \\rangle \\lvert 01\\rangle)+\\beta(\\cos \\phi \\lvert111 \\rangle \\lvert 00\\rangle+i\\sin \\phi \\lvert110 \\rangle \\lvert 01\\rangle)$\n", + "
      8. \n", + "\n", + "
      \n", + "\n", + "The two ancilla qubits just added are then measured. They give the \"error syndrome\", which can be used to diagnose and then correct any error occurred on the three qubits. There are four possible outcomes for the error syndrome:\n", + "\n", + "\n", + "
        \n", + "
      1. \n", + "$00$: $\\lvert\\psi_{5} \\rangle =\\alpha \\lvert000 \\rangle +\\beta\\lvert111 \\rangle $\n", + "
      2. \n", + "\n", + "
      3. \n", + "$11$: $\\lvert\\psi_{5} \\rangle =\\alpha\\lvert100 \\rangle +\\beta\\lvert011 \\rangle$\n", + "
      4. \n", + "\n", + "
      5. \n", + "$10$: $\\lvert\\psi_{5} \\rangle =\\alpha\\lvert010 \\rangle +\\beta\\lvert101 \\rangle$\n", + "
      6. \n", + "\n", + "
      7. \n", + "$01$: $\\lvert\\psi_{5} \\rangle =\\alpha\\lvert001 \\rangle +\\beta\\lvert110 \\rangle$\n", + "
      8. \n", + "\n", + "
      \n", + "\n", + "Therefore, the state of the three qubits can be corrected by applying the corresponding gate\n", + "\n", + "
        \n", + "
      1. \n", + "$00$: No correction is needed\n", + "
      2. \n", + "\n", + "
      3. \n", + "$11$: Apply $X$ gate to the first qubit\n", + "
      4. \n", + "\n", + "
      5. \n", + "$10$: Apply $X$ gate to the second qubit\n", + "
      6. \n", + "\n", + "
      7. \n", + "$01$: Apply $X$ gate to the third qubit\n", + "\n", + "
      8. \n", + "\n", + "
      \n", + "\n", + "After which the state of the system will be\n", + "\n", + "\\begin{equation}\n", + "\\lvert\\psi_6\\rangle=\\alpha\\lvert000\\rangle+\\beta\\lvert111\\rangle\n", + "\\end{equation}\n", + "\n", + "As originally sent. Now, to find the state of the qubit which was intended to be transferred, we decode it from the three-qubit state by disentangling the qubit with the two ancillas. Thus we apply $CX_{12}CX_{13}$ and obtain\n", + "\n", + "\\begin{equation}\n", + "\\lvert\\psi_7\\rangle = \\alpha\\lvert0\\rangle+\\beta\\lvert1\\rangle = \\lvert\\psi \\rangle\n", + "\\end{equation}\n", + "\n", + "We have successfully communicated the state of the qubit $\\lvert\\psi \\rangle$ through a noisy channel, protecting it from any single phase error." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QISKit: implement the quantum error correction code for phase error " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2) Correct a Z error on the second qubit in the state $ \\frac{1}{\\sqrt{2}}\\left( \\lvert 0 \\rangle + \\lvert 1 \\rangle \\right)$ " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "OPENQASM 2.0;\n", + "include \"qelib1.inc\";\n", + "qreg q[5];\n", + "creg c0[1];\n", + "creg c1[1];\n", + "creg c2[1];\n", + "h q[0];\n", + "cx q[0],q[1];\n", + "cx q[0],q[2];\n", + "h q[0];\n", + "h q[1];\n", + "h q[2];\n", + "z q[1];\n", + "h q[0];\n", + "h q[1];\n", + "h q[2];\n", + "cx q[0],q[3];\n", + "cx q[1],q[3];\n", + "cx q[0],q[4];\n", + "cx q[2],q[4];\n", + "measure q[3] -> c0[0];\n", + "measure q[4] -> c1[0];\n", + "if(c0==1) x q[1];\n", + "if(c1==1) x q[2];\n", + "cx q[0],q[1];\n", + "cx q[0],q[2];\n", + "measure q[0] -> c2[0];\n", + "\n", + "\n", + "The measured outcomes of the circuits are: {'0 0 1': 550, '1 0 1': 474}\n" + ] + } + ], + "source": [ + "from qiskit import *\n", + "\n", + "# Quantum program setup \n", + "Q_program = QuantumProgram()\n", + "\n", + "# Creating registers\n", + "q = Q_program.create_quantum_register('q', 5)\n", + "c0 = Q_program.create_classical_register('c0', 1)\n", + "c1 = Q_program.create_classical_register('c1', 1)\n", + "c2 = Q_program.create_classical_register('c2', 1)\n", + "\n", + "# Creates the quantum circuit\n", + "bit_flip = Q_program.create_circuit('bit_flip', [q], [c0,c1,c2])\n", + "\n", + "# Prepares qubit in the desired initial state \n", + "bit_flip.h(q[0])\n", + "\n", + "# Encodes the qubit in a three-qubit entangled state \n", + "bit_flip.cx(q[0], q[1])\n", + "bit_flip.cx(q[0], q[2])\n", + "\n", + "# Go to Hadamard basis\n", + "bit_flip.h(q[0])\n", + "bit_flip.h(q[1])\n", + "bit_flip.h(q[2])\n", + "\n", + "# Phase error on the second qubit\n", + "bit_flip.z(q[1])\n", + "\n", + "# Converts phase error in bit-flip error\n", + "bit_flip.h(q[0])\n", + "bit_flip.h(q[1])\n", + "bit_flip.h(q[2])\n", + "\n", + "# Adds additional two qubits for error-correction\n", + "bit_flip.cx(q[0], q[3])\n", + "bit_flip.cx(q[1], q[3])\n", + "bit_flip.cx(q[0], q[4])\n", + "bit_flip.cx(q[2], q[4])\n", + "\n", + "# Measure the two additional qubits\n", + "bit_flip.measure(q[3], c0[0])\n", + "bit_flip.measure(q[4], c1[0])\n", + "\n", + "# Do error correction\n", + "bit_flip.x(q[1]).c_if(c0, 1)\n", + "bit_flip.x(q[2]).c_if(c1, 1)\n", + "\n", + "# Decodes the qubit from the three-qubit entangled state \n", + "bit_flip.cx(q[0], q[1])\n", + "bit_flip.cx(q[0], q[2])\n", + "\n", + "# Check the state of the initial qubit\n", + "bit_flip.measure(q[0], c2[0])\n", + "\n", + "# Shows gates of the circuit\n", + "circuits = ['bit_flip']\n", + "print(Q_program.get_qasms(circuits)[0])\n", + "\n", + "# Parameters for execution on simulator\n", + "backend = 'local_qasm_simulator' \n", + "shots = 1024 # the number of shots in the experiment \n", + "\n", + "# Run the algorithm\n", + "result = Q_program.execute(circuits, backend=backend, shots=shots)\n", + "\n", + "#Shows the results obtained from the quantum algorithm \n", + "counts = result.get_counts('bit_flip')\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:', counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "\n", + "
        \n", + "
      1. \n", + "Show the evolution of the state of the system for the transmission of the state $\\lvert 1 \\rangle$ through a noisy communication channel. Consider the case where:\n", + "\n", + "
          \n", + "
        1. \n", + "A bit-flip error occurs to the first qubit of the encoded state\n", + "
        2. \n", + "\n", + "
        3. \n", + "A phase error occurs to the third qubit of the encoded state\n", + "
        4. \n", + "
        \n", + "\n", + "
      2. \n", + "\n", + "\n", + "
      3. \n", + "Write a QISKit program that implements the exercises described above\n", + "
      4. \n", + "\n", + "
      " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "[1] A. M. Steane, arXiv:quant-ph/0304016v2 (2003).\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/intro2qc/2.Linear algebra.ipynb b/community/awards/teach_me_quantum_2018/intro2qc/2.Linear algebra.ipynb new file mode 100644 index 000000000..274370cb3 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/intro2qc/2.Linear algebra.ipynb @@ -0,0 +1,567 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2. Linear algebra\n", + "\n", + "This chapter is devoted to linear algebra and its translation to Dirac's notation. The importance of linear algebra for quantum computing comes from the fact that quantum mechanics, the theory which describes the physical world, can be formulated in matrix representations. This means that the state of a physical systems can be represented as a vector in a particular vector space (a Hilbert space) and to each property of the system in the physical world there correspond a matrix (operators) in the vector space. The time evolution of a state (vector), or its properties, are then extracted by acting with the corresponding operator (matrix) on the state. Thus, it is fundamental to have a basic understanding of linear algebra and its rules. \n", + "To simplify the vector and matrix notations typical of linear algebra, we introduce Dirac's notation. This allows to write the state of a system as a vector in the vector space in a compact way. The basics of linear algebra for Hilbert spaces in terms of both Dirac's notation and matrix representation are then reviewed. Finally, operators are discussed in detail.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.1 States\n", + "\n", + "A physical system is a part of the physical world which we wish to investigate. Thus, a physical system can be seen as a specific physical object, like an atom or a cat, or a more complicated entity, such as the atmosphere of the earth, separated from the rest of the natural world. Certain properties can be chosen to describe the state of a physical system at any given time. The values of these properties determine the specific state of the system. If these values change, the state of the system will also change. \n", + "\n", + "\n", + "### Vector space $\\mathcal{H}$\n", + "\n", + "In quantum mechanics, a physical system has a mathematical representation in terms of a complex vector space, also called a Hilbert space $\\mathcal{H}$. The characteristics of this vector space, like its dimensions, are determined by the properties chosen for the description of the state of the physical system. If one selects $n$ independent properties to describe a system, the vector space representing this system will have dimension $n$. A specific state of the system, or a specific set of values of the chosen properties of the system, is represented by a vector in the Hilbert space. We adopt Dirac's notation to denote vectors, thus a vector $\\vec{A}$ will be written as a \"ket\" vector $\\lvert A \\rangle$. Multiples of a vector describing a certain state, like $5\\lvert A \\rangle$ or $25i\\lvert A \\rangle$, will still describe the same state of the system. Thus, each state has an infinite number of ket vectors associated to it.\n", + "\n", + "\n", + "\n", + "$$\\text{1. Pictorial representation of a $n$ dimensional Hilbert space. The $n$ basis vectors $\\lvert e_i \\rangle$ are all orthogonal to each other. The state of a system $\\lvert \\psi \\rangle$ is a vector in the Hilbert space.}$$\n", + "\n", + "In linear algebra, a vector in an $n$ dimensional space can be represented as an array with $n$ entries in a column\n", + "\n", + "$$\n", + " \\lvert A \\rangle = \n", + " \\begin{pmatrix}\n", + " a_1 \\\\\n", + " a_2 \\\\\n", + " . \\\\\n", + " . \\\\\n", + " . \\\\\n", + " a_n \n", + " \\end{pmatrix} \n", + "$$\n", + "\n", + "\n", + "### Adjoint space $\\mathcal{H}^{\\ast}$\n", + "\n", + "We can imagine a vector space, the adjoint space $\\mathcal{H}^{\\ast}$, whose elements $\\langle A \\rvert$, called bra vectors, are in one-to-one correspondance with the vector space $\\mathcal{H}$. For each element $\\lvert A \\rangle$ of the vector space, there is a corresponding element $\\langle A \\rvert$ in the adjoint space.\n", + "\n", + "In matrix representation, to find the adjoint ($\\dagger$) of a matrix we take the complex conjugate ($\\ast$) of the entries and then transpose ($T$) the matrix \n", + "\n", + "$$\n", + "\\begin{pmatrix}\n", + " a_{11} & a_{12} & ... & a_{1n} \\\\\n", + " a_{21} & a_{22} & ... & a_{2n} \\\\\n", + " . & . & ... & . \\\\\n", + " . & . & ... & . \\\\\n", + " . & . & ... & . \\\\\n", + " a_{n1} & a_{n2} & ... & a_{nn} \n", + " \\end{pmatrix}^{\\dagger} = \n", + " \\begin{pmatrix}\n", + " a_{11}^{*} & a_{12}^{*} & ... & a_{1n}^{*} \\\\\n", + " a_{21}^{*} & a_{22}^{*} & ... & a_{2n}^{*} \\\\\n", + " . & . & ... & . \\\\\n", + " . & . & ... & . \\\\\n", + " . & . & ... & . \\\\\n", + " a_{n1}^{*} & a_{n2}^{*} & ... & a_{nn}^{*} \n", + " \\end{pmatrix}^{T} =\n", + " \\begin{pmatrix}\n", + " a_{11}^{*} & a_{21}^{*} & ... & a_{n1}^{*} \\\\\n", + " a_{12}^{*} & a_{22}^{*} & ... & a_{n2}^{*} \\\\\n", + " . & . & ... & . \\\\\n", + " . & . & ... & . \\\\\n", + " . & . & ... & . \\\\\n", + " a_{1n}^{*} & a_{2n}^{*} & ... & a_{nn}^{*} \n", + " \\end{pmatrix} \n", + "$$\n", + "\n", + "For vectors we have\n", + "\n", + "$$\n", + "\\begin{pmatrix}\n", + " a_{1} \\\\\n", + " a_{2} \\\\\n", + " . \\\\\n", + " .\\\\\n", + " . \\\\\n", + " a_{n} \n", + " \\end{pmatrix}^{\\dagger} = \n", + " \\begin{pmatrix}\n", + " a_{1}^{*} & a_{2}^{*} & ... & a_{n}^{*}\n", + " \\end{pmatrix}\n", + "$$\n", + "\n", + "In Dirac's notation, the adjoint of a ket vector $\\lvert A \\rangle $ is the corresponding bra vector $\\langle A \\rvert$: $\\langle A \\rvert = \\lvert A \\rangle^{\\dagger} $.\n", + "Thus bra vector correspond to row vectors in matrix representation.\n", + "\n", + "\n", + "\n", + "### Scalar product\n", + "\n", + "Given vectors and their adjoint, one can define a scalar product on the Hilbert space. \n", + "The scalar product is a complex number associated with a bra-ket pair. The scalar product of the vector $\\left\\vert A\\right\\rangle \\in \\mathcal{H}$ with the vector $\\left\\vert\n", + "B\\right\\rangle \\in \\mathcal{H}$ is defined as\n", + "\n", + "\n", + "\\begin{equation}\n", + "\\left\\langle A\\right\\vert B\\rangle = c \n", + "\\end{equation}\n", + "\n", + "where $c$ a complex number. In the matrix representation, the scalar product is calculated by summing the products of corresponding entries\n", + "\n", + "\n", + "\\begin{eqnarray}\n", + "\\left\\langle A\\right\\vert B\\rangle &=&\\left( \n", + "\\begin{array}{c}\n", + "a_{1} \\\\ \n", + "a_{2} \\\\ \n", + ". \\\\ \n", + ". \\\\ \n", + ". \\\\ \n", + "a_{n-1} \\\\ \n", + "a_{n}%\n", + "\\end{array}\n", + "\\right) \\cdot \\left( \n", + "\\begin{array}{c}\n", + "b_{1} \\\\ \n", + "b_{2} \\\\ \n", + ". \\\\ \n", + ". \\\\ \n", + ". \\\\ \n", + "b_{n-1} \\\\ \n", + "b_{n}%\n", + "\\end{array}\n", + "\\right)\n", + "=\\left( \n", + "\\begin{array}{ccccccc}\n", + "a_{1}^{\\ast } & a_{2}^{\\ast } & . & . & . & a_{n-1}^{\\ast } & a_{n}^{\\ast }%\n", + "\\end{array}%\n", + "\\right) \\left( \n", + "\\begin{array}{c}\n", + "b_{1} \\\\ \n", + "b_{2} \\\\ \n", + ". \\\\ \n", + ". \\\\ \n", + ". \\\\ \n", + "b_{n-1} \\\\ \n", + "b_{n}%\n", + "\\end{array}%\n", + "\\right) =\\sum_{i=1}^{n}a_{i}^{\\ast }b_{i}\n", + "\\end{eqnarray}\n", + "\n", + "\n", + "We say that $\\left\\vert A\\right\\rangle $ and $\\left\\vert B\\right\\rangle $\n", + "are orthogonal if\n", + "\n", + "\\begin{equation}\n", + "\\left\\langle A\\right\\vert B\\rangle =0. \n", + "\\end{equation}\n", + "\n", + "$\\left\\vert A\\right\\rangle $ is normalized if\n", + "\n", + "\\begin{equation}\n", + "\\left\\langle A\\right\\vert A\\rangle =1.\n", + "\\end{equation}\n", + "\n", + "Putting these two properties together, we say that two states $\\left\\vert A\\right\\rangle $ and $\\left\\vert B\\right\\rangle $ are orthonormal if\n", + "\n", + "\\begin{equation}\n", + "\\left\\langle A\\right\\vert B\\rangle =\\delta _{AB}, \n", + "\\end{equation}\n", + "\n", + "where $\\delta _{AB}$ is the Kronecker symbol, which is equal to one if $A=B$ and zero otherwise.\n", + "\n", + "\n", + "### Basis\n", + "\n", + "Let's say that a set of $n$ vectors $\\left\\{ \\left\\vert\n", + "e_{n}\\right\\rangle \\right\\} \\subseteq \\mathcal{H}$ forms an orthonormal\n", + "basis for $\\mathcal{H}$. Thus, $\\left\\langle e_{n}\\right\\vert e_{m}\\rangle\n", + "=\\delta _{nm}$. Every vector $\\left\\vert B\\right\\rangle $ from the Hilbert space $\\left\\vert B\\right\\rangle \\in \\mathcal{H}$ may be expanded in terms of this\n", + "orthonormal basis as\n", + "\n", + "\\begin{equation}\n", + "\\left\\vert B\\right\\rangle =\\sum_{i=1}^{n}b_{i}\\left\\vert e_{i}\\right\\rangle .\n", + "\\end{equation}\n", + "\n", + "The coefficients $b_{i}=\\left\\langle B\\right\\vert e_{i}\\rangle $ are the projections of $\\left\\vert B\\right\\rangle $ with respect to the basis $\\left\\{ \\left\\vert e_{n}\\right\\rangle\n", + "\\right\\}$.\n", + "\n", + "If $\\left\\{ \\left\\vert e_{n}\\right\\rangle \\right\\} \\subseteq \\mathcal{H}$ form an orthonormal\n", + "basis for $\\mathcal{H}$ then $\\left\\{ \\left\\langle e_{n}\\right\\vert \\right\\} \n", + "$ is an orthonormal basis for the adjoint space $\\mathcal{H}^{\\ast }$.\n", + "\n", + "\n", + "\n", + "### Tensor product\n", + "\n", + "One can consider the tensor product between two Hilbert spaces $\\mathcal{H}_A\\otimes \\mathcal{H}_B$. The basis for the new vector space obtained in this way is given by the tensor product of the bases of the two spaces.\n", + "\n", + "In general, the tensor product of any two vectors can be written in matrix form as\n", + "\n", + "\\begin{equation*}\n", + "\\left( \n", + "\\begin{array}{c}\n", + "a_0 \\\\ \n", + "a_1 \\\\\n", + ". \\\\\n", + ". \\\\\n", + ". \\\\\n", + "a_n\n", + "\\end{array}\n", + "\\right) \\otimes \\left( \n", + "\\begin{array}{c}\n", + "b_0 \\\\ \n", + "b_1\\\\\n", + ". \\\\\n", + ". \\\\\n", + ". \\\\\n", + "b_n\n", + "\\end{array}\n", + "\\right) = \\left( \n", + "\\begin{array}{c}\n", + "a_0b_0 \\\\ \n", + "a_0b_1 \\\\ \n", + ". \\\\\n", + ". \\\\\n", + ". \\\\\n", + "a_0b_n \\\\ \n", + ". \\\\\n", + ". \\\\\n", + ". \\\\\n", + "a_nb_0 \\\\ \n", + "a_nb_1 \\\\ \n", + ". \\\\\n", + ". \\\\\n", + ". \\\\\n", + "a_nb_n \\\\\n", + "\\end{array}\n", + "\\right)\n", + "\\end{equation*}\n", + "\n", + "In Dirac's notation, the tensor product between two vectors is simply written as\n", + "\n", + "$$ \\lvert A \\rangle \\otimes \\lvert B \\rangle = \\lvert A \\rangle \\lvert B \\rangle = \\lvert A , B \\rangle = \\lvert A B \\rangle $$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.2 Operators\n", + "\n", + "Operators are associated to physical properties of the system. More specifically, to find out the value of a property of the system, we \"act\" with the operator on the state of the system. The result of the operation encodes the value of the physical property associated to the operator for the system in a certain state.\n", + "\n", + "\n", + "$$\\text{2. In general, the effect of an operator $\\hat{O}$ acting on a state $\\lvert \\psi \\rangle$ is to rotate the vector corresponding to the state. Therefore, giving a new state $\\lvert \\psi' \\rangle$. }$$\n", + "\n", + "\n", + "Operators can be written in Dirac's notation as ket-bra pairs $\\lvert A\\rangle \\langle A\\rvert$, this is called an outer product. By writing an operator in this way, one can immediately see that when an operator acts on a state, this extracts the contribution of the state to the operator: $\\lvert A\\rangle \\langle A\\rvert \\lvert B \\rangle = \\langle A \\lvert B \\rangle \\lvert A\\rangle $.\n", + "\n", + "\n", + "In general, operators are denoted by a hat, therefore the operator associated with the outer product $\\lvert A\\rangle \\langle A\\rvert$ of the system is written as $\\hat{A}$. A generic operator $\\hat{O}$ can always be written in terms of a combination of outer products of the basis vectors of the Hilbert space\n", + "\n", + "\\begin{equation}\n", + "\\hat{O}=\\sum_{i,j=1}^{n}O_{ij}\\lvert\n", + "b_{i}\\rangle \\langle b_{j}\\rvert . \n", + "\\end{equation}\n", + "\n", + "\n", + "where $O_{ij}=\\langle b_{i}\\rvert \\hat{O} \\lvert b_{j} \\rangle $ are the matrix element and $\\left\\{\n", + "\\lvert b_{n}\\rangle \\right\\} $ is an orthonormal basis for the $n$ dimensional\n", + "vector space $\\mathcal{H}$. In other words, any linear operator can be\n", + "written as combination of all the possible outer products of the basis vectors $\\lvert b_{i}\\rangle \\langle b_{j}\\rvert $.\n", + "\n", + "\n", + "We have seen how operators can be written in terms of outer products of ket-bra vectors, in linear algebra terms an operator is a linear transformation on the Hilbert space. Recall that a linear transformation maps vectors in $\\mathcal{H}$ to vectors in $\\mathcal{H}$ and is written a sa matrix. To see this, let us see the matrix form of an operator\n", + "\n", + "\n", + "\\begin{equation*}\n", + "\\hat{O} = \\left( \n", + "\\begin{array}{cccccc}\n", + "O_{11} & O_{12} & . & . & O_{1,N-1} & O_{1N} \\\\ \n", + "O_{21} & O_{22} & . & . & . & . \\\\ \n", + ". & . & . & . & . & . \\\\ \n", + ". & . & . & . & . & . \\\\ \n", + "O_{N1} & O_{N2} & . & . & O_{N,N-1} & O_{NN} \\\\ \n", + "& & & & & \n", + "\\end{array}\n", + "\\right)\n", + "\\end{equation*}\n", + "\n", + "\n", + "In the matrix representation of the operator $\\hat{O}$, $O_{ij}$ is the matrix element in the $i^{th}$ row and $j^{th}$ column. \n", + "The action of the operator $\\hat{O}$ on a vector $\\lvert\n", + "A \\rangle $ is then written as\n", + "\n", + "\\begin{equation}\n", + "\\hat{O}\\lvert A\\rangle =\\sum_{i,j=1}^{n} O_{ij}\\lvert b_{i} \\rangle \\langle b_{j}\\rvert\n", + "A\\rangle =\\sum_{i,j=1}^{n} O_{ij} \\langle b_{j} \\rvert A \\rangle \\vert b_{i} \\rangle = \\sum_{i,j = 1}^{n} O_{ij} A_j \\lvert b_i \\rangle .\n", + "\\end{equation}\n", + "\n", + "\n", + "where $A_j$ is defined as $\\langle b_j \\lvert A \\rangle $, the component of $ \\lvert A \\rangle $ along $\\lvert b_j \\rangle $ .\n", + "\n", + "\n", + "\n", + "### Properties\n", + "\n", + "#### Linear\n", + "\n", + "Operators are linear:\n", + "\n", + "\\begin{equation}\n", + "\\hat{O}(c_{1}\\lvert A\\rangle +c_{2}\\lvert\n", + "B\\rangle )=c_{1}\\hat{O}\\lvert A\\rangle\n", + "+c_{2}\\hat{O}\\lvert B\\rangle . \n", + "\\end{equation}\n", + "\n", + "#### Hermitean\n", + "\n", + "Observables quantities in quantum mechanics are represented by Hermitean operators. Suppose that $\\hat{O}$ is an operator on $\\mathcal{H}$. The adjoint operator of $\\hat{O}$ is denoted by $\\hat{O}^{\\dagger }$ and it is defined as a linear operator on $\\mathcal{H}^{\\ast }$ that satisfies the following condition:\n", + "\n", + "\\begin{equation}\n", + "\\left( \\langle A \\rvert \\hat{O}^{\\dagger} \\lvert B \\rangle \\right) ^{\\dagger} = \\langle B \\rvert \\hat{O} \\lvert A \\rangle \n", + "\\end{equation}\n", + "\n", + "That is, Hermitean operators satisfy: $\\hat{O}=\\hat{O}^{\\dagger}$.\n", + "\n", + "\n", + "#### Unitary\n", + "\n", + "An operator $\\hat{U}^{-1}$ is the inverse of the operator $\\hat{U}$ if $\\hat{U}^{-1}\\hat{U}=\\hat{I},$ where $\\hat{I}$\n", + "is the identity operator. Also, an operator $\\hat{U}$ is unitary if $\\hat{U}^{\\dagger}=\\hat{U}^{-1}$ so that $\\hat{U}^{\\dagger}\\hat{U} = \\hat{I}$ .\n", + "Note that unitary operators can be formed by exponentiating Hermitean operators $\\hat{U} = e^{i\\hat{O}}$, so that\n", + "\n", + "\n", + "$$ \\hat{U}^{\\dagger} \\hat{U}= e^{-i\\hat{O}^{\\dagger}} e^{i\\hat{O}} = e^{-i\\left( \\hat{O}^{\\dagger}-\\hat{O}\\right)} = \\hat{I} $$\n", + "\n", + "since $\\hat{O}^{\\dagger}-\\hat{O}=0$ if $\\hat{O}$ is Hermitean.\n", + "\n", + "Time evolution operators in quantum mechanics are unitary.\n", + "\n", + "\n", + "\n", + "### Expectation value\n", + "\n", + "The value of the physical quantity corresponding to the operator $\\hat{O}$ for the system in a state $\\lvert A\\rangle $ is called the expectation value $\\langle \\hat{O} \\rangle$ of $\\hat{O}$. This is calculated as\n", + "\n", + "\\begin{equation}\n", + "\\langle \\hat{O} \\rangle =\\langle\n", + "A\\rvert \\hat{O} \\lvert A \\rangle = c \\; \\text{ (a\n", + "number)}. \n", + "\\end{equation}\n", + "\n", + "\n", + "The expectation value of an Hermitian operator is real:\n", + "\n", + "\\begin{equation}\n", + "\\langle \\hat{O}\\rangle ^{\\ast }=\\left( \\langle A\\rvert \\hat{O}\\lvert A\\rangle\n", + "\\right) ^{\\ast }=\\left( \\langle A\\rvert \\hat{O}^{\\dagger }\\lvert A\\rangle \\right) =\\langle A\\rvert \n", + "\\hat{O}\\lvert A\\rangle =\\langle \\hat{O}\\rangle \n", + "\\end{equation}\n", + "\n", + "\n", + "\n", + "\n", + "### Eigenstate and eigenvalues\n", + "\n", + "A vector $\\lvert A \\rangle $ is an eigenvector of an operator $\\hat{O}$ if\n", + "\n", + "\\begin{equation}\n", + "\\hat{O} \\lvert A \\rangle =a \\lvert A\\rangle\n", + "\\end{equation}\n", + "\n", + "where $a$ is a constant and is called the eigenvalue of $\\hat{O}$\n", + "corresponding to eigenvector $\\lvert A\\rangle$. It is easy to\n", + "prove that the eigenvalues of an Hermitean operator are real.\n", + "\n", + "\\begin{eqnarray}\n", + "\\hat{O}\\lvert A\\rangle &=&a\\lvert A\\rangle . \\\\\n", + "\\hat{O^{\\dagger }}\\lvert A\\rangle &=& a^{\\ast}\\lvert A\\rangle\n", + "\\end{eqnarray}\n", + "\n", + "Therefore, we have that $\\left(\\hat{O}-\\hat{O}^{\\dagger }\\right) \\lvert A\\rangle =(a-a^{\\ast })\\lvert\n", + "A\\rangle =0$. thus, $a=a^{\\ast }$.\n", + "\n", + "Also, one can prove that eigenvectors of the same Hermitean operator having\n", + "different eigenvalues are orthogonal.\n", + "\n", + "\n", + "\n", + "### Tensor product\n", + "\n", + "Tensor products of operators in matrix representation are calculated as\n", + "\n", + "\n", + "\\begin{eqnarray}\n", + "\\hat{A} \\otimes \\hat{B} & = &\\left( \n", + "\\begin{array}{cccccccc}\n", + "A_{11}B_{11} & ... & A_{11}B_{1q} & ... & ... & A_{1n}B_{11} & ... & A_{1n}B_{1q}\n", + "& \\\\ \n", + ". & . & . & . & . & . & . & . & \\\\ \n", + ". & . & . & . & . & . & . & . & \\\\ \n", + "A_{11}B_{p1} & ... & A_{11}B_{pq} & ... & ... & A_{1n}B_{p1} & ... & A_{1n}B_{pq}\n", + "& \\\\ \n", + ". & . & . & . & . & . & . & . & \\\\ \n", + ". & . & . & . & . & . & . & . & \\\\ \n", + "A_{m1}B_{11} & ... & A_{m1}B_{1q} & ... & ... & A_{mn}B_{11} & ... & A_{mn}B_{1q}\n", + "& \\\\ \n", + ". & . & . & . & . & . & . & . & \\\\ \n", + ". & . & . & . & . & . & . & . & \\\\ \n", + "A_{m1}B_{p1} & ... & A_{m1}B_{pq} & ... & ... & A_{mn}B_{p1} & ... & A_{mn}B_{pq}\n", + "& \\\\ \n", + "& & & & & & & \n", + "\\end{array}\n", + "\\right)\n", + "\\end{eqnarray}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "\n", + "
        \n", + "\n", + "
      1. \n", + "Find the bra (adjoint vector) corresponding to the following kets. Write it both in Dirac's notation and in matrix form\n", + "\n", + "
          \n", + "
        1. \n", + "$ \\lvert A \\rangle = \n", + " \\begin{pmatrix}\n", + " \\frac{i}{\\sqrt{2}} \\\\\n", + " 0 \\\\\n", + " 0 \\\\\n", + " \\frac{1}{\\sqrt{2}} \n", + " \\end{pmatrix} $\n", + "
        2. \n", + "\n", + "
        3. \n", + "$ \\lvert B \\rangle = \n", + " \\begin{pmatrix}\n", + " \\frac{i}{\\sqrt{3}} \\\\\n", + " 0 \\\\\n", + " \\frac{1}{\\sqrt{3}} \\\\\n", + " \\frac{1}{\\sqrt{3}} \n", + " \\end{pmatrix} $\n", + "
        4. \n", + "\n", + "
        5. \n", + "$ \\lvert C \\rangle = \n", + " \\begin{pmatrix}\n", + " \\frac{1-i\\sqrt{2}}{\\sqrt{6}} \\\\\n", + " \\frac{\\sqrt{3}}{\\sqrt{6}} \\\\\n", + " \\frac{1+i\\sqrt{2}}{\\sqrt{6}} \\\\\n", + " 0 \n", + " \\end{pmatrix} $\n", + "
        6. \n", + "
        \n", + "
      2. \n", + "\n", + "
      3. \n", + "Calculate the following scalar products using the kets given above\n", + "\n", + "
          \n", + "
        1. \n", + "$ \\langle A \\rvert B \\rangle $\n", + "
        2. \n", + "\n", + "
        3. \n", + "$ \\langle B \\rvert C \\rangle $\n", + "
        4. \n", + "\n", + "
        5. \n", + "$ \\langle A \\rvert C \\rangle $\n", + "
        6. \n", + "
        \n", + "
      4. \n", + "\n", + "
      5. \n", + "Consider a two-dimensional Hilbert space $\\mathcal{H}_2$ with basis vectors:\n", + "\n", + "$ \\lvert 0 \\rangle = \\begin{pmatrix}\n", + " 1 \\\\\n", + " 0 \n", + " \\end{pmatrix} $,\n", + " \n", + "$ \\lvert 1 \\rangle = \\begin{pmatrix}\n", + " 0 \\\\\n", + " 1 \n", + " \\end{pmatrix} $ \n", + " \n", + "Find a basis for the space $\\mathcal{H}_2 \\otimes \\mathcal{H}_2$ from the basis for $\\mathcal{H}_2$\n", + "\n", + "
      6. \n", + "\n", + "\n", + "
      7. \n", + "Consider the Pauli $\\hat{Z}$ operator\n", + "\n", + "$$ \\hat{Z} = \\lvert 0 \\rangle \\langle 0 \\rvert - \\lvert 1 \\rangle \\langle 1 \\rvert = \\begin{pmatrix}\n", + " 1 & 0\\\\\n", + " 0 & -1\n", + " \\end{pmatrix} $$\n", + "\n", + "
          \n", + "
        1. \n", + "Calculate the expectation value of $\\hat{Z}$ for a system in the state $\\lvert 0 \\rangle $ and $\\lvert 1 \\rangle $\n", + "
        2. \n", + "\n", + "
        3. \n", + " Check if $\\hat{Z}$ is Hermitean\n", + "
        4. \n", + "
        \n", + "
      8. \n", + "\n", + "\n", + "
      9. \n", + "Find the eigenvalues and the eigenstates of $\\hat{Z}$\n", + "
      10. \n", + "\n", + "\n", + "
      11. \n", + "Write the expression of the operator $\\hat{Z} \\otimes \\hat{Z}$ in matrix form\n", + "
      12. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "[1] P. A. M. Dirac, \"A new notation for quantum mechanics\". Mathematical Proceedings of the Cambridge Philosophical Society. 35 (3): 416–418 (1939). \n", + "\n", + "[2] P. A. M. Dirac, The Principles of Quantum Mechanics (1947 Clarendon Press, Oxford).\n", + "\n", + "[3] R. P. Feynman, R. B. Leighton, M. Sands, \"The Feynman Lectures on Physics III\". Reading, MA: Addison-Wesley (1965).\n" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/intro2qc/3.Quantum mechanics.ipynb b/community/awards/teach_me_quantum_2018/intro2qc/3.Quantum mechanics.ipynb new file mode 100644 index 000000000..8158f403f --- /dev/null +++ b/community/awards/teach_me_quantum_2018/intro2qc/3.Quantum mechanics.ipynb @@ -0,0 +1,299 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3. Quantum mechanics\n", + "\n", + "\n", + "Quantum mechanics is a theory which describes physical phenomena. The ideas behind quantum mechanics often appear counter intuitive and in conflict with our everyday experience of the world but they are particularly useful for understanding the behavior of particles at small scales, such as atoms and molecules. In fact, it was at these rather small scales that the breakdown of the classical laws of physics was first encountered. Nonetheless, the realm of quantum mechanics is not confined to the atomic world but it extends almost to all known scales (some problems arise in the interior of black holes and other exotic places for example). When dealing with objects of macroscopic size, the predictions of quantum mechanics agree with the one which can be made using classical laws of physics such as Newtonian mechanics and Maxwell's equations of the electromagnetic field. \n", + "\n", + "In the previous chapter, we encountered almost all the mathematical machinery needed to do calculations in quantum mechanics. In fact, in quantum mechanics physical systems and the interaction between them can be described using the matrix representation of the Hilbert space formalism. Here, we will make a connection between the mathematical concepts introduced and their relation to the physical world. The mathematics works extremely well, it has been tested countless times over the years without ever being unsuccessful in describing experiments. What has turned out to be very difficult is to associate an interpretation to the meaning of these mathematical abstractions. We will give here the standard and most widespread interpretation of the connection between the mathematical framework of quantum mechanics to our physical reality.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3.1 Postulates of quantum mechanics\n", + "\n", + "Here, we present quantum mechanics as a tool for a new paradigm of computing. Thus, we will introduce it in an axiomatic way and quickly put it to use. First, we introduce the axioms of the theory, then we describe the connection to the physical interpretation of these abstract concepts. \n", + "Let us briefly go over the axioms, or postulates, of quantum mechanics. These make up the mathematical foundation of the theory.\n", + "\n", + "
          \n", + "
        1. All the possible states of a system form an Hilbert space.
        2. \n", + "
        3. The wave function $\\lvert \\psi \\rangle$, which is a ket vector in the Hilbert space, encodes the state of the system. Complex linear combinations of the states of the system are still valid states of the system.
        4. \n", + "
        5. Physical properties of a system, called observables, are encoded into the real eigenvalues of Hermitian operators on a Hilbert space.
        6. \n", + "
        7. The evolution of the system in time is generated by a particular operator, the Hamiltonian. The Hamiltonian is the operator associated with the total energy of the system.
        8. \n", + "
        9. The expected value of a physical property $\\hat{F}$ of the system in the state $\\lvert \\psi \\rangle $ is found by calculating $ \\langle \\psi \\rvert \\hat{F} \\lvert \\psi \\rangle$.
        10. \n", + "
        \n", + "\n", + "Using the rules given above one can make accurate predictions about properties of interest in any given setting.\n", + "\n", + "#### Example\n", + "For example, consider a two-level system, a qubit, let us see how the postulates are used in this simple case.\n", + "The possible state of the qubit are either high/low (on/off, 1/0, up/down,..), so the Hilbert space is just made up by these two vectors $\\lvert 0 \\rangle$, $\\lvert 1 \\rangle$. One usually says that these form a \"basis\" for the Hilbert space, as any vector in the space can be found as a complex linear combination of these two. \n", + "\n", + "The state of the qubit is represented by a vector in this Hilbert space. The most general vector is $\\lvert \\psi \\rangle = \\alpha \\lvert 0 \\rangle + \\beta \\lvert 1 \\rangle $.\n", + "\n", + "Consider the Hamiltonian $\\hat{H} = E_0 \\hat{\\sigma}^{+}\\hat{\\sigma}^{-}$ for the system, where $\\hat{\\sigma}^{+} \\lvert 0 \\rangle = \\lvert 1 \\rangle $, $\\hat{\\sigma}^{+} \\lvert 1 \\rangle = 0 $ and $\\hat{\\sigma}^{-} \\lvert 1 \\rangle = \\lvert 0 \\rangle $, $\\hat{\\sigma}^{-} \\lvert 0 \\rangle = 0 $.\n", + "\n", + "The Hamiltonian encodes the energy of the system. Therefore, we can calculate the energy of the qubit in the state $\\lvert 0 \\rangle$: $E = \\langle 0 \\rvert \\hat{H} \\lvert 0 \\rangle = 0$.\n", + "On the other hand, if the qubit is in the \"on\" state $\\lvert 1 \\rangle$, its energy is: $E = \\langle 1 \\rvert \\hat{H} \\lvert 1 \\rangle = E_0$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3.2 The wave function\n", + "\n", + "The state of a system is described by a ket vector in Hilbert space, called wave function $\\vert \\psi\\left( \\vec{r} , t \\right)\\rangle $, where the vector $\\vec{r}$ specifies the position at time $t$. The wave function has the following properties:\n", + "
          \n", + "
        1. It is a complex function of $\\vec{r}$ and $t$.
        2. \n", + "
        3. It is a continuous function.
        4. \n", + "
        5. Generally its derivative is also continuous function.
        6. \n", + "
        7. Its modulo square, $\\left\\vert \\psi \\right\\vert ^{2}$, is integrable and has physical meaning as the probability of observing the system in the state represented by $\\lvert \\psi \\rangle$.
        8. \n", + "
        \n", + " \n", + "The wave function, being a ket vector, inherits the superposition principle. Therefore, it is possible to build any wave function as a weighted combination of other wave functions. \n", + "
          \n", + "
        1. If the system can be both in the state $\\vert \\psi_1 \\rangle $ and in state $\\vert \\psi_2 \\rangle $, then the total state of the system can be written as: $\\vert \\psi \\rangle = \\alpha_1 \\lvert \\psi_1 \\rangle + \\alpha_2 \\lvert \\psi_2 \\rangle $, \n", + "where $\\alpha_1$, $\\alpha_2$ are complex numbers whose modulo square represent the probability of finding the system in the corresponding states.
        2. \n", + "
        3. If the wave function is multiplied by any number $\\alpha \\neq 0$, the state described by the corresponding wave function will not change: $\\vert \\psi \\rangle \\leftrightarrow \\alpha \\lvert \\psi \\rangle$
        4. \n", + "
        \n", + " \n", + "The fact that the superposition principle applies to the states of a system does not have any analog in classical mechanics. A similar idea appears in the description of wave phenomena but it is difficult to understand it in terms of physical states. This is where the intuition we have about the physical world starts failing us. For instance, if one interprets $\\vert \\psi_1 \\rangle $ to mean that the system is located at site $1$ and $\\vert \\psi_2 \\rangle$ that the system is at site $2$, then the superposition state $\\vert \\psi \\rangle = \\alpha_1 \\lvert \\psi_1 \\rangle + \\alpha_2 \\lvert \\psi_2 \\rangle $ would mean that the system is located at two different sites at the same time. The role of the observation, or measurement, comes here into play to save us from the weirdness of the quantum world. Even though the system might be described as being in a superposition of several states, the system's properties won't be an average between the properties of the different states of the superposition. Whenever a measurement is performed, the system \"chooses\" one of the possible states in a non-deterministic way. Which means that when the system is measured, it will be found to be in a particular state of the superposition with a certain probability. This probability is given by the modulo square of the complex coefficient of that state. Therefore, when the system is actually measured, it will be found with probability $\\lvert \\alpha_1 \\rvert^2$ at site $1$ and with probability $\\lvert \\alpha_2 \\rvert^2$ at site $2$. To summarize, at any given time a system may be in a superposition of several different states. However, when a measurement is done on the system, the system will show the properties of one of the states of the superposition with a certain probability. \n", + " \n", + "A consequence of the superposition principle, is that the wave function, $\\vert \\psi \\rangle$, must be the solution of a linear equation. Thus, the equations describing the connection between the state of the system at one time and the state of the system at another time must be linear equations." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.3 The operators\n", + "\n", + "To each physical quantity $F$ corresponds an operator $\\hat{F}$. Operators specify a mathematical prescription that is carried out on the state. In the matrix representation, we say that operators \"act\" on states, meaning that we have to multiply the vector which represent the state by the matrix which represents the operator. The outcome is a new vector, which represents a new state of the system. The operation of finding the value of a quantity $F$ corresponding to a certain operator $\\hat{F}$ for the system in a state $\\vert \\psi \\rangle$ is denoted by the symbol $\\langle F \\rangle $ which is a short-hand notation for\n", + "\n", + "\n", + "\n", + "\\begin{equation}\n", + " \\langle \\hat{F} \\rangle \\equiv \\langle \\psi \\vert \\hat{F} \\vert \\psi \\rangle .\n", + "\\end{equation}\n", + "\n", + "To obtain the expected value of the property $F$ for the system in the state $\\lvert \\psi \\rangle$, one needs to decompose the state $\\lvert \\psi \\rangle$ in terms of the eigenstates $\\lvert \\phi_i \\rangle$ of the operator $\\hat{F}$. Those are the vectors that satisfy: \n", + "\n", + "\\begin{equation}\n", + "\\hat{F} \\lvert \\phi_i \\rangle = F_i \\lvert \\phi_i \\rangle .\n", + "\\end{equation}\n", + "\n", + "The decomposition of $\\lvert \\psi \\rangle$ in terms of the $\\lvert \\phi_i \\rangle$ then reads \n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi \\rangle = \\sum_i a_i \\lvert \\phi_i \\rangle,\n", + "\\end{equation}\n", + "\n", + "\n", + "where $a_i = \\langle \\phi_i \\vert \\psi \\rangle$. Once we have found $\\lvert \\psi \\rangle = \\sum_i a_i \\lvert \\phi_i \\rangle$, we can then find the expected value of $\\hat{F}$ for the system as\n", + "\n", + "\\begin{equation}\n", + " \\langle \\hat{F} \\rangle = \\sum_i \\vert a_i \\vert^2 F_i .\n", + "\\end{equation}\n", + "\n", + "\n", + "\n", + "Operators must have the following properties:\n", + "\n", + "
          \n", + "
        1. The principle of superposition must be satisfied\n", + " \t\t$\\hat{F} \\alpha_1 \\lvert \\psi_1 \\rangle + \\alpha_2 \\lvert \\psi_2 \\rangle = \\alpha_1 \\hat{F} \\lvert \\psi_1 \\rangle + \\alpha_2 \\hat{F} \\lvert \\psi_2 \\rangle $.\n", + "\t\t\n", + "\t\tThus, we require the operators to be linear.
        2. \n", + "
        3. The value of quantities represented by operators must be real\n", + " \n", + " \t\t$ \\langle \\hat{F} \\rangle = \\langle \\hat{F} \\rangle^{ *}$,\n", + "\t\t\n", + "\t\twhich means\n", + "\t\t\n", + "\t\t$ \\langle \\psi \\vert \\hat{F} \\vert \\psi \\rangle = \\left( \\langle \\psi \\vert \\hat{F} \\vert \\psi \\rangle \\right)^{*} = \\langle \\psi \\vert \\hat{F}^{\\dagger} \\vert \\psi \\rangle $,\n", + "\t\t\n", + "\t\tTherefore,\n", + "\t\t\n", + "\t\t$ \\hat{F} = \\hat{F}^{\\dagger} $.\n", + "\t\n", + "\t\tOperators are Hermitian.
        4. \n", + "
        " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3.4 The time evolution\n", + "\n", + "The evolution in time of the state $\\vert \\psi\\left( \\vec{r} , t \\right)\\rangle$ of the system is determined by its Hamiltonian operator. One way to mathematically describe the time evolution of the state of the system is with the Schrodinger equation\n", + "\n", + "\\begin{equation}\n", + " -i \\hbar \\frac{\\partial\\vert \\psi\\left( \\vec{r} , t \\right)\\rangle}{\\partial t} = \\hat{H} \\vert \\psi \\rangle .\n", + "\\end{equation}\n", + "\n", + "The equation above can be solved by specifying the Hamiltonian $\\hat{H}$ operator of the system and the initial state of the system $\\vert \\psi\\left( \\vec{r} , t = 0 \\right)\\rangle$. The Hamiltonian operator is the operator associated with the total energy of the system i.e. it is given by the sum of its potential and kinetic energy.\n", + "\n", + "The Schrodinger equation is one of the most important equations of modern physics. It provides an accurate description of all quantum systems which move at non-relativistic speed. In particular, a quantum computer is built by using the Schrodinger equation to understand the behavior of each of its quantum components.\n", + "\n", + "However, in quantum computing the picture is simpler and there is no need to use the Schrodinger equation to find the time-evolution of the system. The same happens in a classical computer, where Maxwell's equations are not needed to describe it but the rules of Boolean's logic for the electrical circuits suffice. So, in a quantum computation time evolves in steps where at each step some quantum gate is applied to the qubits. Therefore, the state of the qubits at some time $t$, after $k$ steps of the computation, is completely specified by the quantum circuit which is used in the computation.\n", + "\n", + "We can reconcile the two descriptions by introducing the \"time-evolution operator\" $\\hat{U}$, which is defined from his action on the state of the system at $t=0$:\n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi \\left( \\vec{r} , t \\right)\\rangle = \\hat{U} \\vert \\psi\\left( \\vec{r} , t=0 \\right)\\rangle\n", + "\\end{equation}\n", + "\n", + "In general, $\\hat{U}$ can be obtained by integrating the Schrodinger equation. For the case of a time-independent Hamiltonian one finds $\\hat{U}=e^{i\\hat{H}t/\\hbar}$\n", + "\n", + "In quantum computing, $\\hat{U}$ will be the product of all successive unitary operations encoded in the quantum gates of a circuit. Therefore, the time-evolution operator at time $t_k$, after $k$ steps of the computation, is $\\hat{U}(t=t_k) \\equiv \\hat{U}_k $ and the state of the system evolves as\n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi\\left( t_k \\right)\\rangle = \\hat{U}_k \\vert \\psi \\left( t_0 \\right)\\rangle\n", + "\\end{equation}\n", + "\n", + "\n", + "#### Example\n", + "\n", + "Consider the following quantum circuit\n", + "\n", + "\n", + "$$\\text{1. Quantum circuit.}$$\n", + "\n", + "Let's calculate the time-evolution operators at each time step in order to give the evolution of the state in time\n", + "$$\\hat{U}_1 = \\hat{I} $$\n", + "$$\\hat{U}_2 = \\hat{X} \\hat{I} $$\n", + "$$\\hat{U}_3 = \\hat{X} \\hat{X} \\hat{I} $$\n", + "\n", + "where $\\hat{X}$ is the quantum NOT gate which flips the state of a qubit $ \\lvert 0 \\rangle \\rightarrow \\lvert 1 \\rangle$, $ \\lvert 1 \\rangle \\rightarrow \\lvert 0 \\rangle$ \n", + "We initialize the system to the $\\lvert 0 \\rangle$ at the beginning of the computation, thus at time $t_0$ we have\n", + "$$\\lvert \\psi \\left( t_0 \\right)\\rangle = \\lvert 0 \\rangle$$\n", + "\n", + "At following times we find\n", + "$$\\lvert \\psi \\left( t_1 \\right)\\rangle = \\hat{U}_1 \\lvert 0 \\rangle = \\hat{I} \\lvert 0 \\rangle = \\lvert 0 \\rangle $$\n", + "$$\\lvert \\psi \\left( t_2 \\right)\\rangle = \\hat{U}_2 \\lvert 0 \\rangle = \\hat{X} \\hat{I} \\lvert 0 \\rangle = \\hat{X} \\lvert 0 \\rangle = \\lvert 1 \\rangle $$\n", + "$$\\lvert \\psi \\left( t_3 \\right)\\rangle = \\hat{U}_3 \\lvert 0 \\rangle = \\hat{X} \\hat{X} \\hat{I} \\lvert 0 \\rangle = \\hat{X} \\hat{X} \\lvert 0 \\rangle = \\hat{X} \\lvert 1 \\rangle = \\lvert 0 \\rangle $$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "\n", + "
          \n", + "\n", + "
        1. \n", + "Given the following wavefunctions describing the state of a system\n", + "\n", + "
            \n", + "
          1. \n", + "$ \\lvert \\psi \\left( \\vec{r} , t \\right)\\rangle = \\frac{1}{\\sqrt{2}} e^{i3t} \\lvert \\psi \\rangle_1 + \\frac{1}{\\sqrt{2}} e^{i3t} \\lvert \\psi \\rangle_2 $\n", + "
          2. \n", + "\n", + "
          3. \n", + "$ \\lvert \\psi \\left( \\vec{r} , t \\right)\\rangle = \\frac{1}{\\sqrt{8}} e^{i5t} \\lvert \\psi \\rangle_1 + \\frac{\\sqrt{5}}{\\sqrt{8}} e^{i5t} \\lvert \\psi \\rangle_2 + \\frac{\\sqrt{2}}{\\sqrt{8}} e^{i2t} \\lvert \\psi \\rangle_2 $\n", + "
          4. \n", + "\n", + "
          5. \n", + "$ \\lvert \\psi \\left( \\vec{r} , t \\right)\\rangle = \\frac{1}{\\sqrt{3}} e^{i2t} \\lvert \\psi \\rangle_1 + \\frac{\\sqrt{2}}{\\sqrt{3}} e^{i7t} \\lvert \\psi \\rangle_2 $\n", + "
          6. \n", + "\n", + "What is the probability that the system is in the state $\\lvert \\psi \\rangle_1$? and the probability of $\\lvert \\psi \\rangle_2$?\n", + "
          \n", + "\n", + "\n", + "
        2. \n", + "\n", + "\n", + "
        3. \n", + "Find the expectaion value of the operator $\\hat{X}$ for a qubit in the following states:\n", + "\n", + "
            \n", + "
          1. \n", + "$ \\lvert \\psi \\rangle = \\lvert 0 \\rangle$\n", + "
          2. \n", + "\n", + "
          3. \n", + "$ \\lvert \\psi \\rangle = \\lvert 1 \\rangle$\n", + "
          4. \n", + "\n", + "
          5. \n", + "$ \\lvert \\psi \\rangle = \\frac{1}{\\sqrt{2}} \\left( \\lvert 0 \\rangle + \\lvert 1 \\rangle \\right)$\n", + "
          6. \n", + "
          \n", + "\n", + "
        4. \n", + "\n", + "
        5. \n", + "Given a system in the initial state $\\lvert \\psi \\left( t_0 \\right)\\rangle = \\lvert 0 \\rangle$. Find the state of the system at following times, given the time evolution operators\n", + "\n", + "\n", + "
            \n", + "
          1. \n", + "$ \\hat{U}_1 = \\hat{X}$\n", + "
          2. \n", + "\n", + "
          3. \n", + "$ \\hat{U}_2 = \\hat{X}$\n", + "
          4. \n", + "\n", + "
          5. \n", + "$ \\hat{U}_3 = \\hat{X}$\n", + "
          6. \n", + "
          \n", + "\n", + "\n", + "
        6. \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
        " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "[1] P. A. M. Dirac, The Principles of Quantum Mechanics (1947 Clarendon Press, Oxford).\n", + "\n", + "[2] J. von Neumann, Mathematische Grundlagen der Quanten-Mechanik, Springer-Verlag, Berlin, 1932." + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/intro2qc/4.Quantum computation.ipynb b/community/awards/teach_me_quantum_2018/intro2qc/4.Quantum computation.ipynb new file mode 100644 index 000000000..dff87382b --- /dev/null +++ b/community/awards/teach_me_quantum_2018/intro2qc/4.Quantum computation.ipynb @@ -0,0 +1,886 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4. Quantum computation\n", + "\n", + "Quantum computation is a new way of doing computation which differs from the classical way. Classical computations can be implemented in several ways, the most successful one today is the circuit model of computation. This is how elements in modern computers are designed. In the circuit model, a computation is made by taking a string of bits as inputs, doing certain operations on them and giving a new string of bits as output. In the current paradigm, these operations are logical operations that follow Boole's logic. It was proved that one needs to be able to carry out a limited set of operation (namely \"NOT gate\", and \"AND gate\") in order to implement any operation (addition, multiplication, division, ... ) by a combination of operation from this set. This fundamental set of gates is called an \"elementary set of gates\" and is all that is required to be able to do any computation. Similarly to classical computation, quantum computation can be done using the circuit model of computation. In this case, bits are replaced by qubits and logic gates must be substituted with quantum gates which can operate on qubits while keeping intact their special quantum properties. Quantum circuits must be reversible due to the reversibility inherent in the laws of quantum mechanics. \n", + "A reversible circuit allows you to run the computation backwards and retrieve the inputs given the outputs. Classical computation can also be implemented using reversible gates but there are disadvantages with regards to the circuit size and complexity. Thus, modern computer are built with \"irreversible\" logic (which means it's impossible to run the computation backwards, see truth table of the \"AND\" gate for example) and this is the reason why the generate heat! In order to have reversible quantum gates, one must implement these gates using, what is called a \"unitary operation\", that is an operation which preserve the sum of the probabilities of seeing each of the measurable values of the qubits. Although, the probability of seeing any single outcome can change, their sum will always add up to one.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4.1 The qubit\n", + "\n", + "\n", + "In quantum computation the objects of the computation are quantum objects called qubits. Similarly to bits, when qubits are measured they can only take two values: $\\lvert 0 \\rangle$, $\\lvert 1 \\rangle $.\n", + "Where the brackets around the number points to the fact that these are quantum objects (see Dirac's notation). \n", + "In linear algebra representation, the state of a qubit is a vector in a two-dimensional Hilbert space. One of the possible basis for this space is the so-called computational basis which is formed by the eigenvector of the Pauli Z matrix (more details below), the $\\lvert 0 \\rangle$ and $\\lvert 1 \\rangle $ states. In matrix form, they can be written as\n", + "\n", + "$$\n", + " \\lvert 0 \\rangle = \n", + " \\begin{pmatrix}\n", + " 1 \\\\\n", + " 0 \n", + " \\end{pmatrix} \n", + "$$\n", + "\n", + "$$\n", + " \\lvert 1 \\rangle = \n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " 1 \n", + " \\end{pmatrix} \n", + "$$\n", + "\n", + "A generic vector $\\lvert \\psi \\rangle $ in the Hilbert space can then be constructed as a linear combination of the basis vectors\n", + "\n", + "$$\n", + " \\lvert \\psi \\rangle = \\alpha \\lvert 0 \\rangle + \\beta \\lvert 1 \\rangle = \n", + " \\begin{pmatrix}\n", + " \\alpha \\\\\n", + " \\beta \n", + " \\end{pmatrix} \n", + "$$\n", + "\n", + "where $\\alpha$ and $\\beta$ are two complex numbers.\n", + "\n", + "\n", + "### Superposition\n", + "\n", + "Differently from the regular bits stored in a computer, which can either take the value of $\"0\"$ or $\"1\"$, during a computation qubits can be in a state $\\lvert \\psi \\rangle$ which is a superposition of $\\lvert 0 \\rangle$ and $\\lvert 1 \\rangle$: \n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi \\rangle = \\alpha \\lvert 0 \\rangle + \\beta \\lvert 1 \\rangle ,\n", + "\\end{equation}\n", + "\n", + "\n", + "where $\\alpha$ and $\\beta$ are related to the probability of obtaining the corresponding outcome $\\lvert 0 \\rangle$ or $\\lvert 1 \\rangle$ when the qubit is measured to learn its value.\n", + "\n", + "\\begin{eqnarray}\n", + "\\text{P}(\\text{qubit state} = 0) = \\lvert \\alpha \\rvert^{2} \\\\ \\notag\n", + "\\text{P}(\\text{qubit state} = 1) = \\lvert \\beta \\rvert^{2} \n", + "\\end{eqnarray}\n", + "\n", + "Which means that the value of the qubit is not determined until it is measured. This is a counter-intuitive property of quantum mechanical objects. A qubit in a superposition of different states will behave as if it possess properties of all the states in the superposition. However, when measured, the qubit will be in one of the states of the superposition, with a probability given by the modulo square of the coefficient of the corresponding state.\n", + "\n", + "\n", + "### Multi-qubit state\n", + "\n", + "In quantum computation, one is generally interested in doing operations on a qubit register which contains a collection of qubits. To denote the state of an $n$ qubit register, one of the following equivalent notations is used:\n", + "\n", + "\\begin{equation}\n", + "\\lvert 0 \\rangle_1 \\otimes \\lvert 1 \\rangle_2 \\otimes ... \\otimes \\lvert 0 \\rangle_n \\equiv \\lvert 0, 1, ..., 0 \\rangle \\equiv \\lvert 01...0 \\rangle\n", + "\\end{equation}\n", + "\n", + "Where each of the zeros or ones correspond to the state of one of the qubit in the register and the index counts the qubit's number. The linear algebra meaning of all these notations (although less and less explicit going from left to right) is that the Hilbert space containing the state of the multi-qubit system is a tensor product $\\otimes$ of the Hilbert spaces of the single qubits and the state of the system is a Dirac ket vector in this tensor product space. That is, the state of the system is a tensor product of the state of the single qubits. So, if the Hilbert space of one qubit has dimension $2$, the Hilbert space of an $n$-qubit register has dimension $2^n$ \n", + "\n", + "As an example, let us consider the case of $n=2$ qubits. The matrix form of the basis of the 4-dimensional Hilbert space is given by the tensor product of the basis vectors of each of the single qubit spaces.\n", + "From the definition of tensor product between vectors given in Chapter 2, we have\n", + "\n", + "$$\n", + " \\lvert 00 \\rangle = \n", + " \\begin{pmatrix}\n", + " 1 \\\\\n", + " 0 \n", + " \\end{pmatrix} \\otimes\n", + " \\begin{pmatrix}\n", + " 1 \\\\\n", + " 0 \n", + " \\end{pmatrix} = \n", + " \\begin{pmatrix}\n", + " 1 \\cdot 1 \\\\\n", + " 1 \\cdot 0 \\\\\n", + " 0 \\cdot 1 \\\\\n", + " 0 \\cdot 0 \n", + " \\end{pmatrix} = \n", + " \\begin{pmatrix}\n", + " 1 \\\\\n", + " 0 \\\\\n", + " 0 \\\\\n", + " 0\n", + " \\end{pmatrix}\n", + "$$\n", + "\n", + "$$\n", + " \\lvert 01 \\rangle = \n", + " \\begin{pmatrix}\n", + " 1 \\\\\n", + " 0 \n", + " \\end{pmatrix} \\otimes\n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " 1 \n", + " \\end{pmatrix} = \n", + " \\begin{pmatrix}\n", + " 1 \\cdot 0 \\\\\n", + " 1 \\cdot 1 \\\\\n", + " 0 \\cdot 0 \\\\\n", + " 0 \\cdot 1 \n", + " \\end{pmatrix} = \n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " 1 \\\\\n", + " 0 \\\\\n", + " 0\n", + " \\end{pmatrix}\n", + "$$\n", + "\n", + "$$\n", + " \\lvert 10 \\rangle = \n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " 1 \n", + " \\end{pmatrix} \\otimes\n", + " \\begin{pmatrix}\n", + " 1 \\\\\n", + " 0 \n", + " \\end{pmatrix} = \n", + " \\begin{pmatrix}\n", + " 0 \\cdot 1 \\\\\n", + " 0 \\cdot 0 \\\\\n", + " 1 \\cdot 1 \\\\\n", + " 1 \\cdot 0 \n", + " \\end{pmatrix} = \n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " 0 \\\\\n", + " 1 \\\\\n", + " 0\n", + " \\end{pmatrix}\n", + "$$\n", + "\n", + "$$\n", + " \\lvert 11 \\rangle = \n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " 1 \n", + " \\end{pmatrix} \\otimes\n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " 1 \n", + " \\end{pmatrix} = \n", + " \\begin{pmatrix}\n", + " 0 \\cdot 0 \\\\\n", + " 0 \\cdot 1 \\\\\n", + " 1 \\cdot 0 \\\\\n", + " 1 \\cdot 1\n", + " \\end{pmatrix} = \n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " 0 \\\\\n", + " 0 \\\\\n", + " 1\n", + " \\end{pmatrix}\n", + "$$\n", + "\n", + "The extension to $n$ qubits is then straightforward, although tedious.\n", + "\n", + "### Entanglement\n", + "\n", + "Another interesting property of qubits, which departs from the classical world, is that they can be entangled. If qubits are entangled with each other, the value taken by each of them is strictly related to the value taken by the other. The correlations between the values of entangled qubits is so strong that it cannot be described by classical probability theory. This is one of the most peculiar features of quantum mechanics.\n", + "In a way, entangled qubits lose their identity as individual objects, as their properties now depend on the properties of the other qubits with which they are entangled. It's not possible to separate an entangled system in independent parts and it must be treated as a new unit (in quantum mechanical terms, the state of the whole system is not separable, it cannot be factorized as product state of the state of individual systems).\n", + "To see the difference between an entangled state and a non-entangle state, consider the following two possibilities for a two-qubit state:\n", + "
          \n", + "
        1. $\\frac{1}{\\sqrt{2}} \\left( \\lvert 0 \\rangle_1 \\otimes \\lvert 0 \\rangle_2 \\right) + \\frac{1}{\\sqrt{2}} \\left( \\lvert 0 \\rangle_1 \\otimes \\lvert 1 \\rangle_2 \\right) $
        2. \n", + " \n", + "
        3. $\\frac{1}{2} \\left( \\lvert 0 \\rangle_1 \\otimes \\lvert 0 \\rangle_2 \\right) + \\frac{1}{2} \\left( \\lvert 1 \\rangle_1 \\otimes \\lvert 1 \\rangle_2 \\right)$
        4. \n", + "
        \n", + "\n", + "The state shown in 1. can be manipulated so that it will look like the tensor product of the state of the first qubit and the state of the second qubit. In fact, we can rewrite 1. as: $ \\lvert 0 \\rangle_1 \\otimes \\frac{1}{\\sqrt{2}} \\left( \\lvert 0 \\rangle_2 + \\lvert 1 \\rangle_2 \\right) $. Thus, we can say that the first qubit is in the state $0$ and the second qubit is in an equal superposition of $0$ and $1$.\n", + "The same procedure cannot be done on the two-qubit state shown in 2. which cannot be manipulated so that the two-qubit state looks like a tensor product of the state of the first qubit and the state of the second qubit. Therefore, one cannot say anything about the state of a single qubit in state 2. but one has always to talk about the joint state of the two qubits. If one of them has value $0$ the other one will have value $0$ as well, and if one qubit has value $1$, the other qubit will have value $1$ too. This purely quantum correlation between the states of a system is what is called quantum entanglement. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4.2 Quantum gates\n", + "\n", + "\n", + "Quantum gates implement operations on qubits by keeping intact their quantum properties. They correspond to operators acting on the qubit register. Furthermore, they allow some of those properties to arise, for example by putting qubits in a superposition of states or entangling them with each other.\n", + "It was shown that, similarly to the classical case, it is only really necessary to be able to perform a finite set of quantum gates on the qubits to implement any possible operation on them by combining these particular quantum gates. The minimum set of quantum gates needed for computation is then called a \"universal set of quantum gates\". \n", + "\n", + "Let's see some quantum gates:\n", + "\n", + "### 4.2.1 One-qubit gates\n", + "\n", + "These gates act on one of the qubits in the qubit register, leaving all other qubits unaffected.\n", + "\n", + "#### Identity gate\n", + "The identity gate I leaves the state of a qubit unchanged. In matrix form this is just the identity matrix in a two-dimensional vector space\n", + "\n", + "\n", + "$$\\text{1. Identity gate.}$$\n", + "\n", + "$$\n", + " \\hat{I} = \n", + " \\begin{pmatrix}\n", + " 1 & 0\\\\\n", + " 0 & 1\n", + " \\end{pmatrix}\n", + "$$\n", + "\n", + "and its action on the state of a qubit is\n", + "\n", + "$$\n", + " \\hat{I} \\lvert 0 \\rangle = \n", + " \\begin{pmatrix}\n", + " 1 & 0\\\\\n", + " 0 & 1\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}\n", + " 1 \\\\\n", + " 0 \n", + " \\end{pmatrix} =\n", + " \\begin{pmatrix}\n", + " 1 \\\\\n", + " 0 \n", + " \\end{pmatrix} = \\lvert 0 \\rangle\n", + "$$\n", + "\n", + "$$\n", + " \\hat{I} \\lvert 1 \\rangle = \n", + " \\begin{pmatrix}\n", + " 1 & 0\\\\\n", + " 0 & 1\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " 1 \n", + " \\end{pmatrix} =\n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " 1 \n", + " \\end{pmatrix} = \\lvert 1 \\rangle\n", + "$$\n", + "\n", + "#### Pauli X gate\n", + "The X gate flips the state of a qubit from $\\lvert 0 \\rangle \\rightarrow \\lvert 1 \\rangle $ and $\\lvert 1 \\rangle \\rightarrow \\lvert 0 \\rangle $. It is the quantum analog of the NOT gate and it is sometimes referred to as the \"bit-flip gate\". When considering the Bloch sphere representation of a qubit, the X gate correspond to a $\\pi$ rotation around the y-axis. \n", + "\n", + "\n", + "$$\\text{2. X gate.}$$\n", + "\n", + "\n", + "In matrix representation, the X gate is\n", + "\n", + "$$\n", + " \\hat{X} = \n", + " \\begin{pmatrix}\n", + " 0 & 1\\\\\n", + " 1 & 0\n", + " \\end{pmatrix}\n", + "$$\n", + "\n", + "Its action on a qubit is \n", + "\n", + "$$\n", + " \\hat{X} \\lvert 0 \\rangle = \n", + " \\begin{pmatrix}\n", + " 0 & 1\\\\\n", + " 1 & 0\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}\n", + " 1 \\\\\n", + " 0 \n", + " \\end{pmatrix} =\n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " 1 \n", + " \\end{pmatrix} = \\lvert 1 \\rangle\n", + "$$\n", + "\n", + "$$\n", + " \\hat{X} \\lvert 1 \\rangle = \n", + " \\begin{pmatrix}\n", + " 0 & 1\\\\\n", + " 1 & 0\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " 1 \n", + " \\end{pmatrix} =\n", + " \\begin{pmatrix}\n", + " 1 \\\\\n", + " 0 \n", + " \\end{pmatrix} = \\lvert 0 \\rangle\n", + "$$\n", + "\n", + "\n", + "\n", + "#### Pauli Z gate\n", + "The Z gate flips the phase of a qubit if it is in the $\\lvert 1 \\rangle$ state. This correspond to a $\\pi$ rotation around the z-axis.\n", + "\n", + "\n", + "$$\\text{3. Z gate.}$$\n", + "\n", + "In matrix representation, the Z gate is\n", + "\n", + "$$\n", + "\\hat{Z} = \n", + "\\begin{pmatrix}\n", + "1 & 0\\\\\n", + "0 & -1\n", + "\\end{pmatrix}\n", + "$$\n", + "\n", + "The effect on the state of a qubit is\n", + "\n", + "$$\n", + " \\hat{Z} \\lvert 0 \\rangle = \n", + " \\begin{pmatrix}\n", + " 1 & 0\\\\\n", + " 0 & -1\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}\n", + " 1 \\\\\n", + " 0 \n", + " \\end{pmatrix} =\n", + " \\begin{pmatrix}\n", + " 1 \\\\\n", + " 0 \n", + " \\end{pmatrix} = \\lvert 0 \\rangle\n", + "$$\n", + "\n", + "$$\n", + " \\hat{Z} \\lvert 1 \\rangle = \n", + " \\begin{pmatrix}\n", + " 1 & 0\\\\\n", + " 0 & -1\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " 1 \n", + " \\end{pmatrix} =\n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " -1 \n", + " \\end{pmatrix} = - \\lvert 1 \\rangle\n", + "$$\n", + "\n", + "#### Pauli Y gate\n", + "The Y gate flips the state of a qubit and its phase and is sometimes called the \" bit- and phase-flip gate\". \n", + "\n", + "\n", + "$$\\text{4. Y gate.}$$\n", + "\n", + "The definition of the Y gate in matrix form is\n", + "\n", + "$$\n", + "\\hat{Y} = \n", + "\\begin{pmatrix}\n", + "0 & -i\\\\\n", + "i & 0\n", + "\\end{pmatrix}\n", + "$$\n", + "\n", + "The effect of the Y gate on the state of a qubit is\n", + "\n", + "$$\n", + " \\hat{Y} \\lvert 0 \\rangle = \n", + " \\begin{pmatrix}\n", + " 0 & -i\\\\\n", + " i & 0\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}\n", + " 1 \\\\\n", + " 0 \n", + " \\end{pmatrix} =\n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " i \n", + " \\end{pmatrix} = i \\lvert 1 \\rangle\n", + "$$\n", + "\n", + "$$\n", + " \\hat{Y} \\lvert 1 \\rangle = \n", + " \\begin{pmatrix}\n", + " 0 & -i\\\\\n", + " i & 0\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " 1 \n", + " \\end{pmatrix} =\n", + " \\begin{pmatrix}\n", + " -i \\\\\n", + " 0 \n", + " \\end{pmatrix} = -i \\lvert 0 \\rangle\n", + "$$\n", + "\n", + "As the name of the Y gate suggest, the Y gate itself is not an independent gate but it is the combination of the X and Z gate. In particular, let us consider\n", + "\n", + "$$\n", + " i\\hat{X}\\hat{Z} = \n", + " i \\begin{pmatrix}\n", + " 0 & 1\\\\\n", + " 1 & 0\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}\n", + " 1 & 0\\\\\n", + " 0 & -1\n", + " \\end{pmatrix} = \n", + " i \\begin{pmatrix}\n", + " 0 & -1\\\\\n", + " 1 & 0\n", + " \\end{pmatrix} = \n", + " \\begin{pmatrix}\n", + " 0 & -i\\\\\n", + " i & 0\n", + " \\end{pmatrix} = Y\n", + "$$\n", + "\n", + "\n", + "\n", + "#### Hadamard gate\n", + "The Hadamard gate H puts a qubit in an equal superposition of $\\lvert 0 \\rangle$ and $\\lvert 1 \\rangle$. \n", + "\n", + "\n", + "$$\\text{5. Hadamard gate.}$$\n", + "\n", + "Its matrix representation is\n", + "\n", + "$$\n", + "\\hat{H} =\n", + "\\frac{1}{\\sqrt{2}}\n", + "\\begin{pmatrix}\n", + "1 & 1\\\\\n", + "1 & -1\n", + "\\end{pmatrix}\n", + "$$\n", + "\n", + "Acting with the Hadamard gate on a qubit gives\n", + "\n", + "$$\n", + " \\hat{H} \\lvert 0 \\rangle = \n", + " \\frac{1}{\\sqrt{2}}\n", + " \\begin{pmatrix}\n", + " 1 & 1\\\\\n", + " 1 & -1\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}\n", + " 1 \\\\\n", + " 0 \n", + " \\end{pmatrix} =\n", + " \\frac{1}{\\sqrt{2}} \\begin{pmatrix}\n", + " 1 \\\\\n", + " 1 \n", + " \\end{pmatrix} = \\frac{1}{\\sqrt{2}} \\left( \\lvert 0 \\rangle + \\lvert 1 \\rangle \\right)\n", + "$$\n", + "\n", + "$$\n", + " \\hat{H} \\lvert 1 \\rangle = \n", + " \\frac{1}{\\sqrt{2}}\n", + " \\begin{pmatrix}\n", + " 1 & 1\\\\\n", + " 1 & -1\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}\n", + " 0 \\\\\n", + " 1 \n", + " \\end{pmatrix} =\n", + " \\frac{1}{\\sqrt{2}} \\begin{pmatrix}\n", + " 1 \\\\\n", + " -1 \n", + " \\end{pmatrix} = \\frac{1}{\\sqrt{2}} \\left( \\lvert 0 \\rangle - \\lvert 1 \\rangle \\right)\n", + "$$\n", + "\n", + "#### Rotations\n", + "Rotations around an axis ($R_x, R_y, R_z$): Rotates qubit state $\\lvert \\psi \\rangle = \\alpha \\lvert 0 \\rangle + \\beta \\lvert 1 \\rangle $, by changing the coefficients $\\alpha, \\beta$ in a way that depends on the angle of rotation.\n", + "\n", + "\n", + "$$\\text{6. Rotation gate around the $x$, $y$ and $z$ axis.}$$\n", + "\n", + "In matrix form\n", + "\n", + "$$\n", + "\\hat{R}_x(\\theta) = \n", + "\\begin{pmatrix}\n", + "\\cos(\\theta/2) & -i\\sin(\\theta/2)\\\\\n", + "-i\\sin(\\theta/2) & \\cos(\\theta/2)\n", + "\\end{pmatrix}\n", + "$$\n", + "\n", + "\n", + "$$\n", + "\\hat{R}_y(\\theta) = \n", + "\\begin{pmatrix}\n", + "\\cos(\\theta/2) & \\sin(\\theta/2)\\\\\n", + "\\sin(\\theta/2) & \\cos(\\theta/2)\n", + "\\end{pmatrix}\n", + "$$\n", + "\n", + "\n", + "$$\n", + "\\hat{R}_z(\\theta) = \n", + "\\begin{pmatrix}\n", + "1 & 0 \\\\\n", + "0 & e^{i \\theta}\n", + "\\end{pmatrix}\n", + "$$\n", + "\n", + "Their action is\n", + "\n", + " $$ \\hat{R}_x(\\theta) \\lvert \\psi \\rangle = \n", + " \\begin{pmatrix}\n", + " \\cos(\\theta/2) & -i\\sin(\\theta/2)\\\\\n", + " -i\\sin(\\theta/2) & \\cos(\\theta/2)\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}\n", + " \\alpha \\\\\n", + " \\beta \n", + " \\end{pmatrix} =\n", + " \\begin{pmatrix}\n", + " \\cos(\\theta/2) \\alpha -i\\sin(\\theta/2) \\beta\\\\\n", + " -i\\sin(\\theta/2) \\alpha + \\cos(\\theta/2) \\beta\n", + " \\end{pmatrix} = \\left( \\cos(\\theta/2) \\alpha -i\\sin(\\theta/2) \\right) \\lvert 0 \\rangle + \\left( -i\\sin(\\theta/2) \\alpha + \\cos(\\theta/2) \\beta \\right) \\lvert 1 \\rangle$$\n", + " \n", + "$$ \\hat{R}_y(\\theta) \\lvert \\psi \\rangle = \n", + " \\begin{pmatrix}\n", + " \\cos(\\theta/2) & \\sin(\\theta/2)\\\\\n", + " \\sin(\\theta/2) & \\cos(\\theta/2)\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}\n", + " \\alpha \\\\\n", + " \\beta \n", + " \\end{pmatrix} =\n", + " \\begin{pmatrix}\n", + " \\cos(\\theta/2) \\alpha + \\sin(\\theta/2) \\beta\\\\\n", + " \\sin(\\theta/2) \\alpha + \\cos(\\theta/2) \\beta\n", + " \\end{pmatrix} = \\left( \\cos(\\theta/2) \\alpha + \\sin(\\theta/2) \\right) \\lvert 0 \\rangle + \\left( \\sin(\\theta/2) \\alpha + \\cos(\\theta/2) \\beta \\right) \\lvert 1 \\rangle$$\n", + " \n", + " \n", + "$$ \\hat{R}_z(\\theta) \\lvert \\psi \\rangle = \n", + " \\begin{pmatrix}\n", + " 1 & 0 \\\\\n", + " 0 & e^{i \\theta}\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}\n", + " \\alpha \\\\\n", + " \\beta \n", + " \\end{pmatrix} =\n", + " \\begin{pmatrix}\n", + " \\alpha \\\\\n", + " e^{i \\theta} \\beta\n", + " \\end{pmatrix} = \\alpha \\lvert 0 \\rangle + e^{i \\theta} \\beta \\lvert 1 \\rangle $$\n", + "\n", + "\n", + "### 4.2.2 Multi-qubit gates\n", + "\n", + "\n", + "$$\\text{7. Two single-qubit gates. $X$ on the first qubit and $I$ on the second qubit.}$$\n", + "\n", + "If we are dealing with a qubit register that contains more than a single qubit, the operators on the whole register can be obtained by taking the tensor product of the operators acting on each qubit. To avoid lengthy calculations, we work out a few examples for a two-qubit register. We have shown above the form of the basis vector of a two-qubit register. \n", + "As an example, consider the matrix representation of the X gate on the first qubit is\n", + "\n", + "$$\n", + "\\hat{X} \\otimes \\hat{I} = \n", + "\\begin{pmatrix}\n", + "0 & 1 \\\\\n", + "1 & 0 \n", + "\\end{pmatrix} \\otimes\n", + "\\begin{pmatrix}\n", + "1 & 0 \\\\\n", + "0 & 1 \n", + "\\end{pmatrix} = \n", + "\\begin{pmatrix}\n", + "0 \\cdot 1 & 0 \\cdot 0 & 1 \\cdot 1 & 1 \\cdot 0 \\\\\n", + "0 \\cdot 0 & 0 \\cdot 1 & 1 \\cdot 0 & 1 \\cdot 1 \\\\\n", + "1 \\cdot 1 & 1 \\cdot 0 & 0 \\cdot 1 & 0 \\cdot 0 \\\\\n", + "1 \\cdot 0 & 1 \\cdot 1 & 0 \\cdot 0 & 0 \\cdot 1 \n", + "\\end{pmatrix} = \n", + "\\begin{pmatrix}\n", + "0 & 0 & 1 & 0\\\\\n", + "0 & 0 & 0 & 1\\\\\n", + "1 & 0 & 0 & 0\\\\\n", + "0 & 1 & 0 & 0\n", + "\\end{pmatrix}\n", + "$$\n", + "\n", + "The action of this operator on a two-qubit register will be\n", + "\n", + "$$\n", + "\\left( \\hat{X} \\otimes \\hat{I} \\right) \\lvert 00 \\rangle = \n", + "\\begin{pmatrix}\n", + "0 & 0 & 1 & 0\\\\\n", + "0 & 0 & 0 & 1\\\\\n", + "1 & 0 & 0 & 0\\\\\n", + "0 & 1 & 0 & 0\n", + "\\end{pmatrix}\n", + "\\begin{pmatrix}\n", + "1 \\\\\n", + "0\\\\\n", + "0\\\\\n", + "0\n", + "\\end{pmatrix} = \n", + "\\begin{pmatrix}\n", + "0 \\\\\n", + "0\\\\\n", + "1\\\\\n", + "0\n", + "\\end{pmatrix} = \n", + "\\lvert 10 \\rangle\n", + "$$\n", + "\n", + "Exactly as expected. If we now want to combine different type of single qubit gates, acting on the two-qubit register, we only need to calculate the tensor product between these operators to find what is their matrix representation.\n", + " \n", + "\n", + "\n", + "### 4.2.3 Two-qubit gates\n", + "\n", + "#### Control-NOT gate\n", + "\n", + "The most reknown two-qubit gate is the control-not gate or CNOT (CX) gate. The CX gate flips the state of a qubit (called $target$) conditionally on the state of another qubit (called $control$). \n", + "\n", + "\n", + "$$\\text{8. CNOT gate. The first qubit is the control and the second is the target.}$$\n", + "\n", + "The matrix representation of the CX gate is the following\n", + "\n", + "$$\n", + "\\hat{C}X_{12} = \n", + "\\begin{pmatrix}\n", + "1 & 0 & 0 & 0\\\\\n", + "0 & 1 & 0 & 0\\\\\n", + "0 & 0 & 0 & 1\\\\\n", + "0 & 0 & 1 & 0\n", + "\\end{pmatrix} \n", + "$$\n", + "\n", + "Let us see the effect of acting with the CX gate on a two-qubit register. In the matrix form shown above, the first qubit will be the control qubit and the second qubit will be the target qubit.\n", + "If the control qubit is in the state $\\lvert 0 \\rangle$, nothing is done to the target qubit. If the control qubit is in state $\\lvert 1 \\rangle$, the X gate (bit-flip) is applied to the target qubit.\n", + "\n", + "\n", + "$$\n", + "\\hat{C}X_{12} \\lvert 00 \\rangle = \n", + "\\begin{pmatrix}\n", + "1 & 0 & 0 & 0\\\\\n", + "0 & 1 & 0 & 0\\\\\n", + "0 & 0 & 0 & 1\\\\\n", + "0 & 0 & 1 & 0\n", + "\\end{pmatrix}\n", + "\\begin{pmatrix}\n", + "1 \\\\\n", + "0 \\\\\n", + "0 \\\\\n", + "0 \n", + "\\end{pmatrix} = \n", + "\\begin{pmatrix}\n", + "1 \\\\\n", + "0 \\\\\n", + "0 \\\\\n", + "0 \n", + "\\end{pmatrix} = \\lvert 00 \\rangle\n", + "$$\n", + "\n", + "$$\n", + "\\hat{C}X_{12} \\lvert 01 \\rangle = \n", + "\\begin{pmatrix}\n", + "1 & 0 & 0 & 0\\\\\n", + "0 & 1 & 0 & 0\\\\\n", + "0 & 0 & 0 & 1\\\\\n", + "0 & 0 & 1 & 0\n", + "\\end{pmatrix}\n", + "\\begin{pmatrix}\n", + "0 \\\\\n", + "1 \\\\\n", + "0 \\\\\n", + "0 \n", + "\\end{pmatrix} = \n", + "\\begin{pmatrix}\n", + "0 \\\\\n", + "1 \\\\\n", + "0 \\\\\n", + "0 \n", + "\\end{pmatrix} = \\lvert 01 \\rangle\n", + "$$\n", + "\n", + "$$\n", + "\\hat{C}X_{12} \\lvert 10 \\rangle = \n", + "\\begin{pmatrix}\n", + "1 & 0 & 0 & 0\\\\\n", + "0 & 1 & 0 & 0\\\\\n", + "0 & 0 & 0 & 1\\\\\n", + "0 & 0 & 1 & 0\n", + "\\end{pmatrix}\n", + "\\begin{pmatrix}\n", + "0 \\\\\n", + "0 \\\\\n", + "1 \\\\\n", + "0 \n", + "\\end{pmatrix} = \n", + "\\begin{pmatrix}\n", + "0 \\\\\n", + "0 \\\\\n", + "0 \\\\\n", + "1 \n", + "\\end{pmatrix} = \\lvert 11 \\rangle\n", + "$$\n", + "\n", + "$$\n", + "\\hat{C}X_{12} \\lvert 11 \\rangle = \n", + "\\begin{pmatrix}\n", + "1 & 0 & 0 & 0\\\\\n", + "0 & 1 & 0 & 0\\\\\n", + "0 & 0 & 0 & 1\\\\\n", + "0 & 0 & 1 & 0\n", + "\\end{pmatrix}\n", + "\\begin{pmatrix}\n", + "0 \\\\\n", + "0 \\\\\n", + "0 \\\\\n", + "1 \n", + "\\end{pmatrix} = \n", + "\\begin{pmatrix}\n", + "0 \\\\\n", + "0 \\\\\n", + "1 \\\\\n", + "0 \n", + "\\end{pmatrix} = \\lvert 10 \\rangle\n", + "$$\n", + "\n", + "There is also another way to write the action of the CNOT gate in Dirac's notation:\n", + "\n", + "$$\\hat{C}X_{12} \\lvert x, y \\rangle = \\lvert x, x \\oplus y \\rangle $$\n", + "\n", + "where $x,y= \\{ 0,1 \\}$. So that:\n", + "\n", + "\n", + "$$\\hat{C}X_{12} \\lvert 0, 0 \\rangle = \\lvert 0, 0 \\oplus 0 \\rangle = \\lvert 0, 0 \\rangle $$\n", + "\n", + "$$\\hat{C}X_{12} \\lvert 0, 1 \\rangle = \\lvert 0, 1 \\oplus 0 \\rangle = \\lvert 0, 1 \\rangle $$\n", + "\n", + "$$\\hat{C}X_{12} \\lvert 1, 0 \\rangle = \\lvert 0, 0 \\oplus 1 \\rangle = \\lvert 1, 1 \\rangle$$\n", + "\n", + "$$\\hat{C}X_{12} \\lvert 1, 1 \\rangle = \\lvert 1, 1 \\oplus 1 \\rangle = \\lvert 1, 0 \\rangle $$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "\n", + "
          \n", + "\n", + "
        1. \n", + "Consider the generic state of a qubit $\\lvert \\psi \\rangle = \\alpha \\lvert 0 \\rangle + \\beta \\lvert 1 \\rangle $. Give the values of $\\alpha$ and $\\beta$ (normalized to $\\lvert \\alpha \\rvert^2 + \\lvert \\beta \\rvert^2 = 1$) to represent the following ket-vectors\n", + "
            \n", + "
          1. \n", + "$ \\lvert 0 \\rangle $\n", + "
          2. \n", + "\n", + "
          3. \n", + "$ \\lvert 1 \\rangle $\n", + "
          4. \n", + "\n", + "
          5. \n", + "equal superposition of $\\lvert 0 \\rangle $ and $\\lvert 1 \\rangle$\n", + "
          6. \n", + "
          \n", + "
        2. \n", + "\n", + "\n", + "
        3. \n", + "Find the basis for the Hilbert space of three qubits (it has dimension 8) using the tensor product of the computational basis of the Hilbert space of a qubit. \n", + "
        4. \n", + "\n", + "\n", + "
        5. \n", + "Given a qubit in the state $\\lvert \\psi \\rangle = \\frac{\\sqrt{2}}{\\sqrt{6}} \\lvert 0 \\rangle + \\frac{\\sqrt{4}}{\\sqrt{6}} \\lvert 1 \\rangle$, Calculate:\n", + "\n", + "
            \n", + "
          1. \n", + "$ \\hat{X} \\lvert \\psi \\rangle $\n", + "
          2. \n", + "\n", + "
          3. \n", + "$\\hat{Z} \\lvert \\psi \\rangle$\n", + "
          4. \n", + "\n", + "
          5. \n", + "$\\hat{X} \\lvert \\psi \\rangle$\n", + "
          6. \n", + "\n", + "
          7. \n", + "$\\hat{Y} \\lvert \\psi \\rangle$\n", + "
          8. \n", + "\n", + "
          9. \n", + "$\\hat{H} \\lvert \\psi \\rangle$\n", + "
          10. \n", + "\n", + "
          \n", + "
        6. \n", + "\n", + "\n", + "
        7. \n", + "Calculate the following multi-qubit operators in matrix form\n", + "\n", + "
            \n", + "
          1. \n", + "$ X \\otimes X $\n", + "
          2. \n", + "\n", + "
          3. \n", + "$ H \\otimes H $\n", + "
          4. \n", + "\n", + "
          5. \n", + "$ H \\otimes Z $\n", + "
          6. \n", + "
          \n", + "
        8. \n", + "\n", + "\n", + "
        9. \n", + "Given a qubit in the state $\\lvert \\psi \\rangle = \\frac{\\sqrt{2}}{\\sqrt{6}} \\lvert 00 \\rangle + \\frac{\\sqrt{2}}{\\sqrt{6}} \\lvert 01 \\rangle + \\frac{\\sqrt{i}}{\\sqrt{6}} \\lvert 10 \\rangle + \\frac{\\sqrt{1}}{\\sqrt{6}} \\lvert 11 \\rangle$, Calculate $\\hat{C}X_{12} \\lvert \\psi \\rangle$, where the first qubit is the control qubit and the second qubit is the target qubit.\n", + "
        10. \n", + "\n", + "\n", + "
        \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "[1] R. Feynman, Simulating Physics with Computers, International Journal of Theoretical\n", + "Physics, Vol. 21, nos. 6/7, pp. 467{488 (1982).\n", + "\n", + "[2] M. A. Nielsen, and I. L. Chuang, 2000, Quantum Computation\n", + "and Quantum Information (Cambridge University Press, Cambridge).\n", + "\n", + "[3] A. Barenco et al., Phys. Rev. A 52, 3457 (1995)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/intro2qc/5. Writing a quantum program with QISKit.ipynb b/community/awards/teach_me_quantum_2018/intro2qc/5. Writing a quantum program with QISKit.ipynb new file mode 100644 index 000000000..dadd8795c --- /dev/null +++ b/community/awards/teach_me_quantum_2018/intro2qc/5. Writing a quantum program with QISKit.ipynb @@ -0,0 +1,781 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 5. Writing a quantum program with QISKit\n", + "\n", + "QISKit is an open-source python library developed by IBM [1,2] to write quantum programs which run on IBM's quantum computer or on a simulator. QISKit allows you to build a quantum circuit of choice, using the available quantum gates, and run the algorithm implemented by the circuit a desired number of times. In this way, statistics can be collected and interpreted in the framework of quantum mechanics.\n", + "\n", + "Quantum programs are objects (in the programming language sense) which include quantum and classical bit registers and a quantum circuit.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5.1 Template for running a quantum program\n", + "\n", + "To write a quantum algorithm in QISKit you can use the following template:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Initialization\n", + "\n", + "We have created a library called \"initialize\" which simplifies the task of initializing a quantum program. The following code creates a class which allows the user to initialize any quantum algorithm. The user needs only to specify the following parameters: the name of the quantum circuit, the number of qubits needed, the number of bits needed to store the results of measurements, the type of backend where the algorithm is run (simulator or quantum computer) and the number of times the algorithm is to be run." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from initialize import *\n", + "\n", + "my_algorithm = initialize(circuit_name = 'demo', qubit_number=2, bit_number=2, backend = 'local_qasm_simulator', shots = 1024)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Build the quantum circuit\n", + "\n", + "After initializing the circuit with the desired parameter, the user can then specify the sequence of quantum gates which make up the circuit." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "x\n", + "x\n", + "h\n", + "cx\n", + "measure\n", + "measure\n" + ] + } + ], + "source": [ + "#Append sequence of gates to the quantum circuit. \n", + "#For each gate, the qubits on which it is acting must be specified along with other gate-dependent parameters\n", + "\n", + "my_algorithm.q_circuit.x(my_algorithm.q_reg[0]) # apply the X gate to the first qubit\n", + "my_algorithm.q_circuit.x(my_algorithm.q_reg[1]) # apply the X gate to the second qubit\n", + "my_algorithm.q_circuit.h(my_algorithm.q_reg[0]) # apply the Hadamard gate to the first qubit\n", + "my_algorithm.q_circuit.cx(my_algorithm.q_reg[0],my_algorithm.q_reg[1]) # apply the CNOT gate using the first qubit as control and second qubit as target\n", + "my_algorithm.q_circuit.measure(my_algorithm.q_reg[0], my_algorithm.c_reg[0]) # measures the first qubit and store the result in the first bit\n", + "my_algorithm.q_circuit.measure(my_algorithm.q_reg[1], my_algorithm.c_reg[1]) # measures the second qubit and store the result in the second bit\n", + "\n", + "print('List of gates:')\n", + "for circuit in my_algorithm.q_circuit:\n", + " print(circuit.name)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Execute the algorithm\n", + "\n", + "Now that everything is ready, the user can run the quantum algorithm soecified by the steps above. " + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "The measured outcomes of the circuits are: {'01': 508, '10': 516}\n" + ] + } + ], + "source": [ + "#Execute the quantum algorithm\n", + "result = my_algorithm.Q_program.execute(my_algorithm.circ_name, backend=my_algorithm.backend, shots= my_algorithm.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "\n", + "counts = result.get_counts(my_algorithm.circ_name) ## you can declare/initiate q_name first at the time you initialize circuit,\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Note: \n", + "In the outcomes, qubits are ordered right to left. Therefore the right-most is the outcome of the measurement of the first qubit, the second from the right is for the second qubit, and so on." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5.2 Template for running a quantum program \n", + "\n", + "Here, and in the rest of the lecture notes, we will use a blue colored title to denote sections with exercises which can be done in QISKit. Below, you will find a series of simple quantum programs written to show how to use QISKit to solve some specific problem. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QISKit: create multi-qubit state with superposition and entanglement " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 1) Create the multi-qubit state $\\lvert 0101010 \\rangle$ " + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "x\n", + "x\n", + "x\n", + "measure\n", + "measure\n", + "measure\n", + "measure\n", + "measure\n", + "measure\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'0101010': 1024}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'multi', qubit_number=7, bit_number=7, backend = 'local_qasm_simulator', shots = 1024)\n", + "\n", + "#add gates to the circuit\n", + "my_alg.q_circuit.x(my_alg.q_reg[1]) # applies X gate to second qubit\n", + "my_alg.q_circuit.x(my_alg.q_reg[3]) # applies X gate to fourth qubit\n", + "my_alg.q_circuit.x(my_alg.q_reg[5]) # applies X gate to sixth qubit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures the first qubit and store the result in the first bit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[1], my_alg.c_reg[1]) # measures the second qubit and store the result in the second bit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[2], my_alg.c_reg[2]) # measures the third qubit and store the result in the third bit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[3], my_alg.c_reg[3]) # measures the fourth qubit and store the result in the fourth bit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[4], my_alg.c_reg[4]) # measures the fifth qubit and store the result in the fifth bit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[5], my_alg.c_reg[5]) # measures the sixth qubit and store the result in the sixth bit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[6], my_alg.c_reg[6]) # measures the seventh qubit and store the result in the seventh bit\n", + "\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2) Create the superposition state for two qubits $ \\frac{1}{2}\\left( \\lvert 00 \\rangle + \\lvert 01 \\rangle + \\lvert 10 \\rangle + \\lvert 11 \\rangle \\right)$ " + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "h\n", + "h\n", + "measure\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'00': 258, '01': 261, '10': 260, '11': 245}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'multi_super', qubit_number=2, bit_number=2, backend = 'local_qasm_simulator', shots = 1024)\n", + "\n", + "#add gates to the circuit\n", + "my_alg.q_circuit.h(my_alg.q_reg[0]) # applies H gate to first qubit\n", + "my_alg.q_circuit.h(my_alg.q_reg[1]) # applies X gate to second qubit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures the first qubit and store the result in the first bit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[1], my_alg.c_reg[1]) # measures the second qubit and store the result in the second bit\n", + "\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3) Create the entangled Bell $ \\frac{1}{\\sqrt{2}}\\left( \\lvert 00 \\rangle + \\lvert 11 \\rangle \\right)$ " + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "h\n", + "cx\n", + "measure\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'00': 515, '11': 509}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'bell', qubit_number=2, bit_number=2, backend = 'local_qasm_simulator', shots = 1024)\n", + "\n", + "#add gates to the circuit\n", + "my_alg.q_circuit.h(my_alg.q_reg[0]) # applies H gate to first qubit\n", + "my_alg.q_circuit.cx(my_alg.q_reg[0],my_alg.q_reg[1]) # applies CX gate using the first qubit as control and the second qubit as target\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures the first qubit and store the result in the first bit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[1], my_alg.c_reg[1]) # measures the second qubit and store the result in the second bit\n", + "\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QISKit: Show effects of single and two qubit gates " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 4) Use the X gate " + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "x\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'1': 1024}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'x_gate', qubit_number=1, bit_number=1, backend = 'local_qasm_simulator', shots = 1024)\n", + "\n", + "#add gates to the circuit\n", + "my_alg.q_circuit.x(my_alg.q_reg[0]) # applies X gate to first qubit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures the first qubit and store the result in the first bit\n", + "\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 5) Use the Y gate " + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "y\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'1': 1024}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'y_gate', qubit_number=1, bit_number=1, backend = 'local_qasm_simulator', shots = 1024)\n", + "\n", + "#add gates to the circuit\n", + "my_alg.q_circuit.y(my_alg.q_reg[0]) # applies Y gate to first qubit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures the first qubit and store the result in the first bit\n", + "\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 6) Use the H gate " + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "h\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'0': 540, '1': 484}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'h_gate', qubit_number=1, bit_number=1, backend = 'local_qasm_simulator', shots = 1024)\n", + "\n", + "#add gates to the circuit\n", + "my_alg.q_circuit.h(my_alg.q_reg[0]) # applies H gate to first qubit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures the first qubit and store the result in the first bit\n", + "\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 7) Use the $R_x$ gate " + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "rx\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'0': 867, '1': 157}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'rx_gate', qubit_number=1, bit_number=1, backend = 'local_qasm_simulator', shots = 1024)\n", + "\n", + "theta = 0.79 # angle of rotation pi/4\n", + "\n", + "#add gates to the circuit\n", + "my_alg.q_circuit.rx(theta, my_alg.q_reg[0]) # applies x-rotation of angle theta to first qubit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures the first qubit and store the result in the first bit\n", + "\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 8) Use the $CX_{12}$ gate " + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "cx\n", + "measure\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'00': 1024}\n", + "List of gates:\n", + "x\n", + "cx\n", + "measure\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'11': 1024}\n", + "List of gates:\n", + "x\n", + "cx\n", + "measure\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'10': 1024}\n", + "List of gates:\n", + "x\n", + "x\n", + "cx\n", + "measure\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'01': 1024}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "\n", + "for _ in range(4): # run over all possible initial states of two qubits\n", + "\n", + " #initialize quantum program\n", + " my_alg = initialize(circuit_name = 'cx_gate', qubit_number=2, bit_number=2, backend = 'local_qasm_simulator', shots = 1024)\n", + " \n", + " #add gates to the circuit\n", + " if _ == 1:\n", + " my_alg.q_circuit.x(my_alg.q_reg[0]) # applies X gate to first qubit (prepares state 10)\n", + " if _ == 2:\n", + " my_alg.q_circuit.x(my_alg.q_reg[1]) # applies X gate to second qubit (prepares state 01)\n", + " if _ == 3:\n", + " my_alg.q_circuit.x(my_alg.q_reg[0]) # applies X gate to first qubit\n", + " my_alg.q_circuit.x(my_alg.q_reg[1]) # applies X gate to second qubit (prepares state 11)\n", + " \n", + " my_alg.q_circuit.cx(my_alg.q_reg[0],my_alg.q_reg[1]) ## applies CX gate using the first qubit as control and the second qubit as target\n", + " my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures the first qubit and store the result in the first bit\n", + " my_alg.q_circuit.measure(my_alg.q_reg[1], my_alg.c_reg[1]) # measures the second qubit and store the result in the second bit\n", + "\n", + " print('List of gates:')\n", + " for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + " #Execute the quantum algorithm\n", + " result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + " #Show the results obtained from the quantum algorithm \n", + " counts = result.get_counts(my_alg.circ_name)\n", + "\n", + " print('\\nThe measured outcomes of the circuits are:',counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QISKit: Time-evolution of the qubit's state in a quantum circuit (example in sec. 3.4) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 9) Time $t=t_1$ " + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "id\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'0': 1024}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'evo_1', qubit_number=1, bit_number=1, backend = 'local_qasm_simulator', shots = 1024)\n", + "\n", + "#add gates to the circuit\n", + "my_alg.q_circuit.iden(my_alg.q_reg[0]) # applies U1\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures the first qubit and store the result in the first bit\n", + "\n", + "\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 10) Time $t=t_2$ " + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "id\n", + "x\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'1': 1024}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'evo_2', qubit_number=1, bit_number=1, backend = 'local_qasm_simulator', shots = 1024)\n", + "\n", + "#add gates to the circuit\n", + "my_alg.q_circuit.iden(my_alg.q_reg[0]) \n", + "my_alg.q_circuit.x(my_alg.q_reg[0]) # applies U2\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures the first qubit and store the result in the first bit\n", + "\n", + "\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 11) Time $t=t_3$ " + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "id\n", + "x\n", + "x\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'0': 1024}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'evo_3', qubit_number=1, bit_number=1, backend = 'local_qasm_simulator', shots = 1024)\n", + "\n", + "#add gates to the circuit\n", + "my_alg.q_circuit.iden(my_alg.q_reg[0]) \n", + "my_alg.q_circuit.x(my_alg.q_reg[0])\n", + "my_alg.q_circuit.x(my_alg.q_reg[0]) # applies U3\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures the first qubit and store the result in the first bit\n", + "\n", + "\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "[1] https://github.com/QISKit\n", + "\n", + "[2] https://qiskit.org/documentation/\n" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/intro2qc/6.First quantum algorithms.ipynb b/community/awards/teach_me_quantum_2018/intro2qc/6.First quantum algorithms.ipynb new file mode 100644 index 000000000..5dfe1a4ed --- /dev/null +++ b/community/awards/teach_me_quantum_2018/intro2qc/6.First quantum algorithms.ipynb @@ -0,0 +1,665 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
        " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "\n", + "HTML('''\n", + "
        ''')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 6. First quantum algorithms\n", + "\n", + "In this chapter, we will review the first quantum algorithms which initiated the field of quantum computing. These algorithms were worked out explicitly for the purpose of showing that there could be an advantage in using a quantum computer, rather than a classical one, to compute the solution to certain problems. Starting from Deutsch algorithm, which shows that a quantum computer can solve a problem in half the steps of a classical one. Going to Bernstein-Vazirani algorithm, where a linear speed-up for the specific problem solved was obtained. Ending with Simon's algorithm, which showed that there can be an exponential gain in the number of steps needed to solve another particular problem if a quantum computer is used instead of a classical one.\n", + "Let us now look more deeply in the problems that these algorithms solve and how they do it." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6.1 Deutsch’s algorithm\n", + "\n", + "The Deutsch algorithm was the first example of a quantum algorithm which performs better than the best classical algorithm. It showed that there can be advantages in using a quantum computer as a computational tool for a specific problem.\n", + "\n", + "Deutsch Algorithm solves the following problem: suppose that you are given a functions $f: \\{0,1\\} \\rightarrow \\{0,1\\} $ which takes $0$ or $1$ as input and outputs $0$ or $1$. The function itself can be as complicated as needed, the only requirement is that it takes a bit as input and outputs another bit. Given two different inputs $x$ and $y$, check if the function $f(x)$ is equal to $f(y)$.\n", + "\n", + "Let us first see how the classical algorithm solves the problem. The best way to do this classically is to evaluate $f(x)$ and $f(y)$ separately and then compare the results. This requires at least two calls to the function $f$, therefore we classify the solution as having complexity $2$.\n", + "\n", + "Let us take a look at a quantum algorithm which can solve the problem in only one step! The quantum circuit which implements the algorithm is the following \n", + "\n", + "\n", + "$$\\text{1. Quantum circuit for Deutsch's algorithm.}$$\n", + "\n", + "Where H are Hadamard gates and $\\text{Q}_f$ is the query function described by the action on a qubit $\\lvert x \\rangle$ as\n", + "$$ \\lvert x \\rangle \\rightarrow (-1)^{f(x)} \\lvert x \\rangle $$\n", + "\n", + "Now, let us go through the steps of the Deutsch algorithm:\n", + "\n", + "
          \n", + "
        1. The input qubit is initialized to the zero state \n", + " $$\\lvert \\psi_1 \\rangle = \\lvert 0 \\rangle $$
        2. \n", + "
        3. Apply Hadamard on the qubit to get the state $$\\lvert \\psi_2 \\rangle = \\frac{1}{\\sqrt{2}} \\left(\\lvert 0 \\rangle + \\lvert 1 \\rangle \\right) $$
        4. \n", + "
        5. We make a query $\\text{Q}_f$, \n", + " $$ \\lvert \\psi_3 \\rangle = \\frac{1}{\\sqrt{2}} \\left( (-1)^{f(0)} \\lvert 0 \\rangle + (-1)^{f(1)} \\lvert 1 \\rangle \\right) $$ \n", + " Thus, if $f(0) = f(1)$, (up to a global phase factor):\n", + " $$ \\lvert \\psi_3 \\rangle = \\frac{(-1)^{f(0)}}{\\sqrt{2}} \\left( \\lvert 0 \\rangle + \\lvert 1 \\rangle \\right) $$\n", + " \n", + " while if $f(0) \\neq f(1)$, (up to a global phase factor):\n", + " $$ \\lvert \\psi_3 \\rangle = \\frac{(-1)^{f(0)}}{\\sqrt{2}} \\left( \\lvert 0 \\rangle - \\lvert 1 \\rangle \\right) $$\n", + "
        6. \n", + " \n", + "
        7. Apply Hadamard again. If $f(0) = f(1)$:\n", + " $$ \\lvert \\psi_4 \\rangle = (-1)^{f(0)} \\lvert 0 \\rangle $$\n", + " \n", + " while if $f(0) \\neq f(1)$:\n", + " $$ \\lvert \\psi_4 \\rangle = (-1)^{f(0)} \\lvert 1 \\rangle $$\n", + "
        8. \n", + "
        9. Measuring the qubit will either give:\n", + " $$ \"0\", \\; \\; \\text{if} \\; f(0) = f(1)$$\n", + " \n", + " $$ \"1\", \\; \\; \\text{if} \\; f(0) \\neq f(1)$$\n", + "
        10. \n", + "
        \n", + "\n", + "Therefore by looking at the value of the measured qubit, we can tell whether $f(x) = f(y)$ or $f(0) \\neq f(1)$, solving the problem with only one query to the function $\\text{Q}_f$.\n", + "\n", + "Compared to the classical algorithm, the quantum algorithm takes half the number of steps! This might not seem much of an advantage but it is a first steps in proving the usefulness of quantum computation.\n", + "Also, if the input to the function is not just one bit but an $n$ bit string, it can be proven that the quantum algorithm will take $\\frac{n}{2}$ queries to the function (just run the algorithm on pair of bits) rather the $n$ steps needed for a classical algorithm.\n", + "\n", + "### Example\n", + "\n", + "In [4], the Deutsch algorithm was implemented on a real device. However, in order to do it two qubits were used, one is used as ancilla. In this way, the query function $Q_f$ was realized. Let us see how it works\n", + "\n", + "\n", + "\n", + "
          \n", + "
        1. The first qubit is initialized to zero and the second is initialized to one \n", + " $$\\lvert \\psi_1 \\rangle = \\lvert 0\\rangle \\lvert 1 \\rangle_a $$
        2. \n", + "
        3. Apply Hadamard on both qubits $$\\lvert \\psi_2 \\rangle = \\frac{1}{\\sqrt{2}} \\left(\\lvert 0 \\rangle + \\lvert 1 \\rangle \\right) \\frac{1}{\\sqrt{2}} \\left(\\lvert 0 \\rangle_a - \\lvert 1 \\rangle_a \\right) = \\frac{1}{2}\\left(\\lvert 0 \\rangle \\lvert 0 \\rangle_a - \\lvert 0 \\rangle \\lvert 1 \\rangle_a + \\lvert 1 \\rangle \\lvert 0 \\rangle_a - \\lvert 1 \\rangle \\lvert 1 \\rangle_a \\right) $$
        4. \n", + "
        5. The query function $\\text{Q}_f$ can be implemented in different ways. Let us consider the case where $f(0) = 0$ and $f(1)=1$, thus $Q_f = CX_{12}$ \n", + " $$ \\lvert \\psi_3 \\rangle = \\frac{1}{2} \\left(\\lvert 0 \\rangle \\lvert 0 \\oplus 0 \\rangle_a - \\lvert 0 \\rangle \\lvert 1 \\oplus 0 \\rangle_a + \\lvert 1 \\rangle \\lvert 0 \\oplus 1 \\rangle_a - \\lvert 1 \\rangle \\lvert 1 \\oplus 1 \\rangle_a \\right) = \\frac{1}{2}\\left(\\lvert 0 \\rangle \\lvert 0 \\rangle_a - \\lvert 0 \\rangle \\lvert 1 \\rangle_a + \\lvert 1 \\rangle \\lvert 1 \\rangle_a - \\lvert 1 \\rangle \\lvert 0 \\rangle_a \\right) $$ \n", + " Thus:\n", + " $$ \\lvert \\psi_3 \\rangle = \\frac{1}{\\sqrt{2}} \\left(\\lvert 0 \\rangle - \\lvert 1 \\rangle \\right) \\frac{1}{\\sqrt{2}} \\left(\\lvert 0 \\rangle_a - \\lvert 1 \\rangle_a \\right) $$\n", + " \n", + " \n", + "
        6. Apply Hadamard on both qubits again:\n", + " $$ \\lvert \\psi_4 \\rangle = \\lvert 1 \\rangle \\lvert 1 \\rangle_a $$\n", + "
        7. \n", + " \n", + "
        8. Measuring the first qubit will give $\"1\"$, therefore $ f(0) \\neq f(1)$\n", + " \n", + "
        9. \n", + "
        " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QISKit: implement the example of Deutsch algorithm " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 1) Use the query function $Q_f=CX_{12}$ " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "x\n", + "h\n", + "h\n", + "cx\n", + "h\n", + "h\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'1': 1024}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'deutsch', qubit_number=2, bit_number=1, backend = 'local_qasm_simulator', shots = 1024)\n", + "\n", + "#add gates to the circuit\n", + "my_alg.q_circuit.x(my_alg.q_reg[1]) # initializes ancilla qubit\n", + "\n", + "my_alg.q_circuit.h(my_alg.q_reg[0]) # applies H gate to first qubit\n", + "my_alg.q_circuit.h(my_alg.q_reg[1]) # applies H gate to second qubit\n", + "\n", + "my_alg.q_circuit.cx(my_alg.q_reg[0],my_alg.q_reg[1]) ## applies CX gate as the query function\n", + "\n", + "my_alg.q_circuit.h(my_alg.q_reg[0]) # applies H gate to first qubit\n", + "my_alg.q_circuit.h(my_alg.q_reg[1]) # applies H gate to second qubit \n", + "\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures the first qubit and store the result in the first bit\n", + "\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6.2 The Bernstein-Vazirani algorithm\n", + "\n", + "The second quantum algorithm which shows a quantum speed-up is the Bernstein-Vazirani algorithm. The algorithm solves the following problem: given a function $f: \\{0,1\\}^n \\rightarrow \\{0,1\\} $ which takes an $n$ bit string as input and outputs a single bit and has some structure. That is, there is a secret $n$ bit string $s \\in \\{0,1\\}^n$ which determines $f$. In particular, for an input $x$, $f(x) = s \\cdot x \\, \\text{(mod 2)}$. Find $s$.\n", + "\n", + "To find $s$ classically, we would have to call the function $f(x)$ $n$ times, each time determining one of the bits of $s$.\n", + "\n", + "On the other side, a quantum algorithm can solve the problem in only one step! giving a polynomial speed-up with respect to the classical algorithm. Let us see the quantum circuit which implements the corresponding algorithm.\n", + "\n", + "\n", + "$$\\text{2. Quantum circuit for the Bernstein-Vazirani algorithm}$$\n", + "\n", + "Where $\\text{Q}_f$ is the same query function as for the Deutsch algorithm, but now acting on $n$ qubits:\n", + "$$ \\lvert x \\rangle \\rightarrow (-1)^{f(x)} \\lvert x \\rangle $$\n", + "\n", + "The algorithm proceeds as follows\n", + "\n", + "
          \n", + "
        1. The input register is initialized to the zero state \n", + " $$\\lvert \\psi_1 \\rangle = \\lvert 0 \\rangle^{\\otimes n} $$
        2. \n", + " \n", + "
        3. Apply Hadamard on all qubits to get a uniform superposition of all $n$-bit strings \n", + " $$\\lvert \\psi_2 \\rangle = \\frac{1}{\\sqrt{2^n}} \\sum_{x \\in \\{0,1\\}^{n} } \\lvert x \\rangle $$
        4. \n", + " \n", + "
        5. We make a query $\\text{Q}_f$, \n", + " $$ \\lvert \\psi_3 \\rangle = \\frac{1}{\\sqrt{2^n}} \\sum_{x \\in \\{0,1\\}^{n} } (-1)^{f(x)} \\lvert x \\rangle = \\\\\n", + " = \\frac{1}{\\sqrt{2^n}} \\sum_{x \\in \\{0,1\\}^{n} } (-1)^{s_1 \\cdot x_1} ... (-1)^{s_n \\cdot x_n} \\lvert x \\rangle = \\\\\n", + " = \\frac{\\lvert 0 \\rangle + (-1)^{s_1} \\lvert 1 \\rangle }{\\sqrt{2}} \\otimes ... \\otimes \\frac{\\lvert 0 \\rangle + (-1)^{s_n} \\lvert 1 \\rangle }{\\sqrt{2}} $$\n", + " \n", + "
        6. \n", + " \n", + "
        7. Apply Hadamard on all qubits\n", + " \n", + " $$ \\lvert \\psi_4 \\rangle = \\lvert s_1 \\rangle ... \\lvert s_n \\rangle $$\n", + "
        8. \n", + "
        9. Measuring all $n$ qubits will give the secret $n$-bit string $s$\n", + "
        10. \n", + "
        \n", + "\n", + "As mentioned above, the quantum algorithm provides a polynomial speed-up against the best classical algorithm. Although the problem still feels like it is purposely designed so that it will be easier to solve on a quantum computer, at the time it was quite an achievement to prove that such a speed-up was even possible.\n", + "\n", + "### Example \n", + "\n", + "An example of realization of the Bernstein-Vazirani algorithm can be found in [7]. Again, the algorithm makes use of an ancilla qubit to implement the query function $Q_f$. Let us see the steps of the algorithm for $n=2$ qubits and a secret string $s=11$\n", + "\n", + "\n", + "\n", + "
          \n", + "
        1. The input registers are initialized to zero and the ancilla qubit to one \n", + " $$\\lvert \\psi_1 \\rangle = \\lvert 0 0 \\rangle \\lvert 1 \\rangle_a $$
        2. \n", + " \n", + "
        3. Apply Hadamard on all qubits\n", + " $$\\lvert \\psi_2 \\rangle = \\frac{1}{2} \\left( \\lvert 0 0 \\rangle + \\lvert 0 1 \\rangle + \\lvert 1 0 \\rangle + \\lvert 1 1 \\rangle \\right) \\frac{1}{\\sqrt{2}} \\left( \\lvert 0 \\rangle_a - \\lvert 1 \\rangle_a \\right) $$
        4. \n", + " \n", + "
        5. For the string $s=11$, the query function can be implemented as $\\text{Q}_f = CX_{1a}CX_{2a}$, \n", + " $$ \\lvert \\psi_3 \\rangle = \\frac{1}{2\\sqrt{2}} \\left[ \\lvert 0 0 \\rangle \\left( \\lvert 0 \\oplus 0 \\oplus 0 \\rangle_a - \\lvert 1 \\oplus 0 \\oplus 0 \\rangle_a \\right)+ \\lvert 0 1 \\rangle \\left( \\lvert 0 \\oplus 0 \\oplus 1 \\rangle_a - \\lvert 1 \\oplus 0 \\oplus 1 \\rangle_a \\right) + \\lvert 1 0 \\rangle \\left( \\lvert 0 \\oplus 1 \\oplus 0 \\rangle_a - \\lvert 1 \\oplus 1 \\oplus 0 \\rangle_a \\right) + \\lvert 1 1 \\rangle \\left( \\lvert 0 \\oplus 1 \\oplus 1 \\rangle_a - \\lvert 1 \\oplus 1 \\oplus 1 \\rangle_a \\right) \\right] $$\n", + " \n", + " Thus\n", + " $$ \\lvert \\psi_3 \\rangle = \\frac{1}{2\\sqrt{2}} \\left[ \\lvert 0 0 \\rangle \\left( \\lvert 0 \\rangle_a - \\lvert 1 \\rangle_a \\right) - \\lvert 0 1 \\rangle \\left( \\lvert 0 \\rangle_a - \\lvert 1 \\rangle_a \\right) - \\lvert 1 0 \\rangle \\left( \\lvert 0 \\rangle_a - \\lvert 1 \\rangle_a \\right) + \\lvert 1 1 \\rangle \\left( \\lvert 0 \\rangle_a - \\lvert 1 \\rangle_a \\right) \\right] \\\\\n", + " = \\frac{1}{2} \\left( \\lvert 0 0 \\rangle - \\lvert 0 1 \\rangle - \\lvert 1 0 \\rangle + \\lvert 1 1 \\rangle \\right) \\frac{1}{\\sqrt{2}} \\left( \\lvert 0 \\rangle_a - \\lvert 1 \\rangle_a \\right) \\\\\n", + " = \\frac{1}{\\sqrt{2}} \\left( \\lvert 0 \\rangle - \\lvert 1 \\rangle \\right)\\frac{1}{\\sqrt{2}} \\left( \\lvert 0 \\rangle - \\lvert 1 \\rangle \\right)\\frac{1}{\\sqrt{2}} \\left( \\lvert 0 \\rangle_a - \\lvert 1 \\rangle_a \\right)$$\n", + " \n", + "
        6. \n", + " \n", + "
        7. Apply Hadamard on all qubits\n", + " \n", + " $$ \\lvert \\psi_4 \\rangle = \\lvert 1 \\rangle \\lvert 1 \\rangle \\lvert 1 \\rangle $$\n", + "
        8. \n", + "
        9. Measuring the first two qubits will give the secret $2$-bit string $s = 11$\n", + "
        10. \n", + "
        " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QISKit: implement the example of the Bernstein-Vazirani algorithm " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2) Use the query function $Q_f=CX_{23}CX_{13}$ " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "x\n", + "h\n", + "h\n", + "h\n", + "cx\n", + "cx\n", + "h\n", + "h\n", + "h\n", + "measure\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'11': 1024}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'ber_vaz', qubit_number=3, bit_number=2, backend = 'local_qasm_simulator', shots = 1024)\n", + "\n", + "#add gates to the circuit\n", + "my_alg.q_circuit.x(my_alg.q_reg[2]) # initializes ancilla qubit\n", + "\n", + "my_alg.q_circuit.h(my_alg.q_reg[0]) # applies H gate to first qubit\n", + "my_alg.q_circuit.h(my_alg.q_reg[1]) # applies H gate to second qubit\n", + "my_alg.q_circuit.h(my_alg.q_reg[2]) # applies H gate to third qubit\n", + "\n", + "my_alg.q_circuit.cx(my_alg.q_reg[1],my_alg.q_reg[2]) ## applies CX gate as the query function\n", + "my_alg.q_circuit.cx(my_alg.q_reg[0],my_alg.q_reg[2]) ## applies CX gate as the query function\n", + "\n", + "my_alg.q_circuit.h(my_alg.q_reg[0]) # applies H gate to first qubit\n", + "my_alg.q_circuit.h(my_alg.q_reg[1]) # applies H gate to second qubit \n", + "my_alg.q_circuit.h(my_alg.q_reg[2]) # applies H gate to third qubit\n", + "\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures the first qubit and store the result in the first bit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[1], my_alg.c_reg[1]) # measures the second qubit and store the result in the second bit\n", + "\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6.3 Simon's algorithm\n", + "\n", + "Simon's algorithm was the first quantum algorithm to show an exponential speed-up versus the best classical algorithm in solving a specific problem. This inspired the quantum algorithm for the discrete Fourier transform, also known as quantum Fourier transform, which is used in the most famous quantum algorithm: Shor's factoring algorithm.\n", + "\n", + "Simon's algorithm solves the following problem: given a function $f: \\{0,1\\}^n \\rightarrow \\{0,1\\}^n $ which takes an $n$ bit string as input and outputs another $n$-bit string and has some secret structure $s\\in\\{0,1\\}^n$ and $s\\neq 0^{\\otimes n}$ such that given two different inputs $x$ and $y$, $f(x) = f(y)$ if and only if $y = x + s \\, \\text{mod 2}$. Find $s$.\n", + "\n", + "Classically, if the algorithms picks inputs at random it will learn when $f(x_i) = f(x_j)$ so that $s=x_i \\oplus x_j$ (where $\\oplus$ stands for \"bit-wise addition modulo 2\"). Each pair determines a bit of $s$, therefore we need to find $n$ pairs to discover the value of $s$. It can be shown that $\\approx 2^{\\frac{n}{2}}$ calls of $f$ are necessary to find $s$ with a classical algorithm.\n", + "\n", + "The quantum algorithm allows to find $s$ in $\\approx n$ calls to the function $f$. Let's see how\n", + "\n", + "\n", + "$$\\text{3. Quantum circuit for Simon's algorithm}$$\n", + "\n", + "Where $\\text{Q}_f$ acts on two quantum registers as:\n", + "$$ \\lvert x \\rangle \\lvert 0 \\rangle \\rightarrow \\lvert x \\rangle \\lvert f(x) \\rangle $$\n", + "\n", + "The algorithm involves the following steps\n", + "
          \n", + "
        1. Two $n$-qubit input registers are initialized to the zero state \n", + " $$\\lvert \\psi_1 \\rangle = \\lvert 0 \\rangle^{\\otimes n} \\lvert 0 \\rangle^{\\otimes n} $$
        2. \n", + " \n", + "
        3. Apply Hadamard on the first register\n", + " $$\\lvert \\psi_2 \\rangle = \\frac{1}{\\sqrt{2^n}} \\sum_{x \\in \\{0,1\\}^{n} } \\lvert x \\rangle\\lvert 0 \\rangle^{\\otimes n} $$
        4. \n", + " \n", + "
        5. We make a query $\\text{Q}_f$, \n", + " $$ \\lvert \\psi_3 \\rangle = \\frac{1}{\\sqrt{2^n}} \\sum_{x \\in \\{0,1\\}^{n} } \\lvert x \\rangle \\lvert f(x) \\rangle $$\n", + " \n", + "
        6. \n", + " \n", + "
        7. We measure the second register. A certain value of $f(x)$ will be observed. Because of the setting of the problem, the observed value $f(x)$ could correspond to two possible inputs: $x$ and $y = x \\oplus s $. Therefore the first register becomes\n", + " \n", + " $$ \\lvert \\psi_4 \\rangle = \\frac{1}{\\sqrt{2}} \\left( \\lvert x \\rangle + \\lvert y \\rangle \\right) $$\n", + " \n", + " where we omitted the second register since it has been measured.\n", + " \n", + "
        8. \n", + " \n", + " \n", + " \n", + "
        9. Apply Hadamard on the first register\n", + " \n", + " $$ \\lvert \\psi_5 \\rangle = \\frac{1}{\\sqrt{2^{n+1}}} \\sum_{z \\in \\{0,1\\}^{n} } \\left[ (-1)^{x \\cdot z} + (-1)^{y \\cdot z} \\right] \\lvert z \\rangle $$\n", + " \n", + "
        10. \n", + " \n", + "
        11. Measuring the first register will give an output if:\n", + " $$ (-1)^{x \\cdot z} = (-1)^{y \\cdot z} $$\n", + " Which means:\n", + " $$ x \\cdot z = y \\cdot z \\\\\n", + " x \\cdot z = \\left( x \\oplus s \\right) \\cdot z \\\\\n", + " x \\cdot z = x \\cdot z \\oplus s \\cdot z \\\\\n", + " s \\cdot z = 0$$\n", + " \n", + " A string $z$ whose inner product with $s$ will be measured.\n", + " Thus, repeating the algorithm $\\approx n$ times, one will be able to obtain $n$ different values of $z$ and the following system of equation can be written\n", + " \n", + " $$ \\begin{cases} s \\cdot z_1 = 0 \\\\ s \\cdot z_2 = 0 \\\\ ... \\\\ s \\cdot z_n = 0 \\end{cases}$$\n", + " \n", + " From which $s$ can be determined, for example by Gaussian elimination.\n", + " \n", + "
        12. \n", + "
        \n", + "\n", + "So, in this particular problem the quantum algorithm performs exponentially fewer steps than the classical one. Once again, it might be difficult to envision an application of this algorithm (although it inspired the most famous algorithm created by Shor) but this represent the first proof that there can be an exponential speed-up in solving a specific problem by using a quantum computer rather than a classical one.\n", + "\n", + "### Example\n", + "\n", + "Let's see the example of Simon's algorithm for 2 qubits. We take the secret string $s=11$, so that $f(x) = f(y)$ if $y = x \\oplus s$. The state of the qubit register evolves in the following way:\n", + "\n", + "\n", + "\n", + "
          \n", + "
        1. Two $2$-qubit input registers are initialized to the zero state \n", + " $$\\lvert \\psi_1 \\rangle = \\lvert 0, 0 \\rangle_1 \\lvert 0, 0 \\rangle_2 $$
        2. \n", + " \n", + "
        3. Apply Hadamard on the first register\n", + " $$\\lvert \\psi_2 \\rangle = \\frac{1}{2} \\left( \\lvert 0, 0 \\rangle_1 + \\lvert 0, 1 \\rangle_1 + \\lvert 1, 0 \\rangle_1 + \\lvert 1, 1 \\rangle_1 \\right) \\lvert 0, 0 \\rangle_2 $$
        4. \n", + " \n", + "
        5. For the string $s=11$, the query function can be implemented as $\\text{Q}_f = CX_{13}CX_{14}CX_{23}CX_{24}$, \n", + " $$ \\lvert \\psi_3 \\rangle = \\frac{1}{2} \\left( \\lvert 0, 0 \\rangle_1 \\lvert 0\\oplus 0 \\oplus 0, 0 \\oplus 0 \\oplus 0 \\rangle_2 + \\lvert 0 1 \\rangle_1 \\lvert 0\\oplus 0 \\oplus 1, 0 \\oplus 0 \\oplus 1 \\rangle_2 + \\lvert 1 0 \\rangle_1 \\lvert 0\\oplus 1 \\oplus 0, 0 \\oplus 1 \\oplus 0 \\rangle_2 + \\lvert 1 1 \\rangle_1 \\lvert 0\\oplus 1 \\oplus 1, 0 \\oplus 1 \\oplus 1 \\rangle_2 \\right) $$\n", + " \n", + " Thus\n", + " $$ \\lvert \\psi_3 \\rangle = \\frac{1}{2} \\left( \\lvert 0, 0 \\rangle_1 \\lvert 0, 0 \\rangle_2 + \\lvert 0 1 \\rangle_1 \\lvert 1, 1 \\rangle_2 + \\lvert 1 0 \\rangle_1 \\lvert 1 , 1 \\rangle_2 + \\lvert 1 1 \\rangle_1 \\lvert 0, 0 \\rangle_2 \\right) $$\n", + " \n", + " \n", + "
        6. \n", + " \n", + "
        7. We measure the second register. With $50\\%$ probability we will see either $\\lvert 0 , 0 \\rangle_2$ or $\\lvert 1 , 1 \\rangle_2$. For the sake of the example, let us assume that we see $\\lvert 1 , 1 \\rangle_2$. The state of the system is then\n", + " \n", + " $$ \\lvert \\psi_4 \\rangle = \\frac{1}{\\sqrt{2}} \\left( \\lvert 0 , 1 \\rangle_1 + \\lvert 1 , 0 \\rangle_1 \\right) $$\n", + " \n", + " where we omitted the second register since it has been measured.\n", + " \n", + "
        8. \n", + " \n", + " \n", + " \n", + "
        9. Apply Hadamard on the first register\n", + " \n", + " $$ \\lvert \\psi_5 \\rangle = \\frac{1}{2\\sqrt{2}} \\left[ \\left( \\lvert 0 \\rangle + \\lvert 1 \\rangle \\right) \\otimes \\left( \\lvert 0 \\rangle - \\lvert 1 \\rangle \\right) + \\left( \\lvert 0 \\rangle - \\lvert 1 \\rangle \\right) \\otimes \\left( \\lvert 0 \\rangle + \\lvert 1 \\rangle \\right) \\right] \\\\\n", + " = \\frac{1}{2\\sqrt{2}} \\left[ \\lvert 0, 0 \\rangle - \\lvert 0, 1 \\rangle + \\lvert 1 0 \\rangle - \\lvert 1 1 \\rangle + \\lvert 0, 0 \\rangle + \\lvert 0, 1 \\rangle - \\lvert 1 0 \\rangle - \\lvert 1 1 \\rangle \\right] \\\\\n", + " = \\frac{1}{\\sqrt{2}} \\left( \\lvert 0, 0 \\rangle - \\lvert 1, 1 \\rangle \\right)$$\n", + " \n", + "
        10. \n", + " \n", + "
        11. Measuring the first register will give either $\\lvert 0, 0 \\rangle$ or $\\lvert 1, 1 \\rangle$ with equal probability. If we see $\\lvert 1, 1 \\rangle$, then:\n", + " \n", + " $$ s \\cdot 11 = 0 $$\n", + " \n", + " This is one equation, but $s$ has two variables. Therefore, we need to repeat the algorithm other times to have enough equations that will allow us to determine $s$.\n", + " \n", + "
        12. \n", + "
        \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QISKit: implement the example of Simon algorithm " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3) Use the query function $Q_f=CX_{13}CX_{14}CX_{23}CX_{24}$ " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "h\n", + "h\n", + "cx\n", + "cx\n", + "cx\n", + "cx\n", + "measure\n", + "measure\n", + "h\n", + "h\n", + "measure\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'0000': 256, '0011': 266, '1100': 239, '1111': 263}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'simon', qubit_number=4, bit_number=4, backend = 'local_qasm_simulator', shots = 1024)\n", + "\n", + "#add gates to the circuit\n", + "\n", + "my_alg.q_circuit.h(my_alg.q_reg[0]) # applies H gate to first qubit\n", + "my_alg.q_circuit.h(my_alg.q_reg[1]) # applies H gate to second qubit\n", + "\n", + "my_alg.q_circuit.cx(my_alg.q_reg[0],my_alg.q_reg[2]) ## applies CX gate as the query function\n", + "my_alg.q_circuit.cx(my_alg.q_reg[0],my_alg.q_reg[3]) ## applies CX gate as the query function\n", + "my_alg.q_circuit.cx(my_alg.q_reg[1],my_alg.q_reg[2]) ## applies CX gate as the query function\n", + "my_alg.q_circuit.cx(my_alg.q_reg[1],my_alg.q_reg[3]) ## applies CX gate as the query function\n", + "\n", + "my_alg.q_circuit.measure(my_alg.q_reg[2], my_alg.c_reg[2]) # measures the third qubit \n", + "my_alg.q_circuit.measure(my_alg.q_reg[3], my_alg.c_reg[3]) # measures the fourth qubit\n", + "\n", + "my_alg.q_circuit.h(my_alg.q_reg[0]) # applies H gate to first qubit\n", + "my_alg.q_circuit.h(my_alg.q_reg[1]) # applies H gate to second qubit \n", + "\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures the first qubit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[1], my_alg.c_reg[1]) # measures the second qubit\n", + "\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "\n", + "
          \n", + "\n", + "
        1. \n", + "Show the step-by-step evolution of the state $\\lvert \\psi \\rangle = \\lvert 0 \\rangle$ through the Deutsch algorithm for $ f(0) = 1 $ and $ f(1) = 0$\n", + "
        2. \n", + "\n", + "\n", + "
        3. \n", + "Following the example of Deutsch algorithm given, show the step-by-step evolution of the state $\\lvert \\psi \\rangle = \\lvert 0, 0 \\rangle$ through the Deutsch algorithm where the query function is $\\text{Q}_f = X \\otimes I$\n", + "\n", + "
        4. \n", + "\n", + "
        5. \n", + "Write a QISKit program to run the Deutsch algorithm of problem 2.\n", + "
        6. \n", + "\n", + "\n", + "
        7. \n", + "Consider the Bernstein-Vazirani algorithm for two qubits and one ancilla register, with a query function $\\text{Q}_f = CX_{13}$. What is the secret string $s$ corresponding to $\\text{Q}_f$? \n", + "
        8. \n", + "\n", + "\n", + "
        9. \n", + "Write the step-by-step evolution of the state $\\lvert \\psi \\rangle = \\lvert 0 0 \\rangle \\lvert 1 \\rangle_a$ for problem 4.\n", + "
        10. \n", + "\n", + "
        11. \n", + "Write a QISKit program to run the Bernstein-Vazirani algorithm of problem 4.\n", + "
        12. \n", + "\n", + "
        13. \n", + "Find the gates needed to realize a query function for Simon's algorithm on two qubits such that the secret string is $s=01$\n", + "
        14. \n", + "\n", + "
        15. \n", + "Write the step-by-step evolution of the state $\\lvert \\psi \\rangle = \\lvert 0, 0 \\rangle_1 \\lvert 0, 0 \\rangle_2$ for problem 7.\n", + "
        16. \n", + "\n", + "
        17. \n", + "Write a QISKit program to run Simon's algorithm for problem 7.\n", + "
        18. \n", + "\n", + "
        " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "[1] D. Deutsch, Quantum Theory, the Church-Turing Principle and the Universal Quantum\n", + "Computer, Proc. R. Soc. Lond., Vol. A400, pp. 73{90 (1985).\n", + "\n", + "[2] D. Deutsch, “Quantum computational networks”, Proc. Roy. Soc. Lond. A 425, 73\n", + "(1989).\n", + "\n", + "[3] D. Deutsch, and R. Jozsa, “Rapid solution of problems by quantum computation”,\n", + "Proceedings of the Royal Society, London, vol. A439, 1992, pp. 553 – 558.\n", + "\n", + "[4] R. Gulde, M. Riebe, G.P.T. Lancaster, C. Becher, J. Eschner, H. Haffner and. F. Schmidt-Kaler, I.L. Chuang, and R. Blatt. Implementation of the Deutsch-Jozsa algorithm on an ion-trap quantum computer. Nature, 421:48 (2003).\n", + "\n", + "[5] E. Bernstein and U. Vazirani, in Proceedings of the 25th Annual\n", + "ACM Symposium on the Theory of Computing, ACM, New York, 1993, p. 11.\n", + "\n", + "[6] E. Bernstein and U. Vazirani, SIAM J. Comput. 26, 1411 (1997).\n", + "\n", + "[7] S. D. Fallek, C. D. Herold, B. J. McMahon, K. M. Maller, K. R. Brown, J. M. Amini, 1,5 Transport implementation of the Bernstein-Vazirani algorithm with ion qubits, New J. Phys. 18 (2016).\n", + "\n", + "[8] D. Simon, “On the power of quantum computation”, Proceedings of the 35th Annual\n", + "Symposium on the Foundations of Computer Science (IEEE Computer Society Press,\n", + "Los Alamitos, CA, 1994), p. 116." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/intro2qc/7.Quantum teleportation.ipynb b/community/awards/teach_me_quantum_2018/intro2qc/7.Quantum teleportation.ipynb new file mode 100644 index 000000000..e5078c108 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/intro2qc/7.Quantum teleportation.ipynb @@ -0,0 +1,600 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
        " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "\n", + "HTML('''\n", + "
        ''')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 7. Quantum teleportation\n", + "\n", + "\n", + "Quantum teleportation was first described in [1], it allows the transfer of an unknown quantum state of a qubit between two parties. In order to do so, the two parties, Alice and Bob, must first share an entangled pair of qubits in a Bell state. Alice can then transfer the unknown quantum state of a qubit to Bob by measuring her share of the entangled pair and the qubit she wants to transfer. Depending on the outcome of these measurements, she then tells Bob, through classical communication, which gates he should apply to his qubit in order to convert the state of his share of the entangled pair of qubit into the unknown state Alice wished to transfer.\n", + "Another algorithm, called superdense coding, which allows to encode 2 bits of classical information in one qubit has been described in [2]. This again involves two parties initially sharing an entangled pair of qubits in the Bell state. Alice can then apply any of the four Pauli gates (I,X,Y,Z) to her qubit and then send it to Bob. When Bob jointly measures the two qubits, he can learn which operator was used by Alice. Therefore, he can read 2 bits of information.\n", + "These algorithms are somewhat similar to each other, the key new feature of both is that they exploit the non-classical correlation arising in entangled states as a resource for communication." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 7.1 Quantum teleportation algorithm\n", + "\n", + "\n", + "$$\\text{1. Quantum circuit for quantum teleportation.}$$\n", + "\n", + "Let's take a look at the details of the quantum teleportation algorithm.\n", + "\n", + "
          \n", + "
        1. \n", + "Let us Assume that Alice (A) and Bob (B) each have a qubit from a shared entangled pair whose wave function is\n", + "\n", + "\\begin{equation}\n", + "\\lvert\\Phi^{+} \\rangle =\\frac{1}{\\sqrt{2}}( \\lvert 0\\rangle_A \\lvert 0 \\rangle_B+ \\lvert 1\\rangle_A \\lvert 1 \\rangle_B)\n", + "\\end{equation}\n", + "\n", + "Alice wants to teleport another qubit in an unknown quantum state $ \\lvert \\phi \\rangle$ to Bob.\n", + "\n", + "\\begin{equation}\n", + " \\lvert \\phi \\rangle=\\alpha \\lvert 0 \\rangle+\\beta \\lvert 1 \\rangle\n", + "\\end{equation}\n", + "\n", + "\n", + "The total wave function $ \\lvert \\psi_1 \\rangle$ of all the qubits is\n", + "\n", + " \n", + "\\begin{eqnarray}\n", + " \\lvert \\psi_1 \\rangle = \\lvert \\phi \\rangle \\otimes \\lvert\\Phi^{+} \\rangle =\\frac{1}{\\sqrt{2}}(\\alpha \\lvert 0 \\rangle_A +\\beta \\lvert 1 \\rangle_A)\\otimes ( \\lvert 0\\rangle_A \\lvert 0 \\rangle_B+ \\lvert 1\\rangle_A \\lvert 1 \\rangle_B)= \\\\\n", + "\\frac{1}{\\sqrt{2}}(\\alpha \\lvert 0 \\rangle_A \\lvert 0 \\rangle_A \\lvert 0 \\rangle_B +\\alpha \\lvert 0 \\rangle_A \\lvert 1 \\rangle_A \\lvert 1 \\rangle_B + \\beta \\lvert 1 \\rangle_A \\lvert 0 \\rangle_A \\lvert 0 \\rangle_B + \\beta \\lvert 1 \\rangle_A \\lvert 1 \\rangle_A \\lvert 1 \\rangle_B)\n", + "\\end{eqnarray}\n", + "
        2. \n", + "\n", + "
        3. \n", + "Next, Alice applies the CNOT gate to her two qubits using the unknown qubit as the control and the qubit from the entangled pair as the target\n", + "\n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi_2 \\rangle = \\frac{1}{\\sqrt{2}}(\\alpha \\lvert 0 \\rangle_A \\lvert 0 \\rangle_A \\lvert 0 \\rangle_B +\\alpha \\lvert 0 \\rangle_A \\lvert 1 \\rangle_A \\lvert 1 \\rangle_B + \\beta \\lvert 1 \\rangle_A \\lvert 1 \\rangle_A \\lvert 0 \\rangle_B + \\beta \\lvert 1 \\rangle_A \\lvert 0 \\rangle_A \\lvert 1 \\rangle_B)\n", + "\\end{equation}\n", + "
        4. \n", + "\n", + "
        5. \n", + "Then, Alice applies the Hadamard gate to the qubit in the unknown state\n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi_{3} \\rangle=\\frac{1}{\\sqrt{2^3}}(\\alpha \\lvert 0 \\rangle_A \\lvert 0 \\rangle_A \\lvert 0 \\rangle_B + \\alpha \\lvert 1 \\rangle_A \\lvert 0 \\rangle_A \\lvert 0 \\rangle_B + \\alpha \\lvert 0 \\rangle_A \\lvert 1 \\rangle_A \\lvert 1 \\rangle_B + \\alpha \\lvert 1 \\rangle_A \\lvert 1 \\rangle_A \\lvert 1 \\rangle_B+ \\beta \\lvert 0 \\rangle_A \\lvert 1 \\rangle_A \\lvert 0 \\rangle_B-\\beta \\lvert 1 \\rangle_A \\lvert 1 \\rangle_A \\lvert 0 \\rangle_B + \\beta \\lvert 0 \\rangle_A \\lvert 0 \\rangle_A \\lvert 1 \\rangle_B-\\beta \\lvert 1 \\rangle_A \\lvert 0 \\rangle_A \\lvert 1 \\rangle_B)\n", + "\\end{equation}\n", + "
        6. \n", + "\n", + "
        7. \n", + "Alice measures the state of her two qubits and communicate two bits of classical information to Bob to inform him of the outcome of her measurements. The system collapses to one of the four following states:\n", + "\n", + "
            \n", + "\n", + "
          1. \n", + "\\begin{equation}\n", + "\\lvert \\psi_{4} \\rangle=\\frac{1}{\\sqrt{2}}(\\alpha \\lvert 0 \\rangle_A \\lvert 0 \\rangle_A \\lvert 0 \\rangle_B + \\beta \\lvert 0 \\rangle_A \\lvert 0 \\rangle_A \\lvert 1 \\rangle_B)\n", + "\\end{equation}\n", + "
          2. \n", + "\n", + "
          3. \n", + "\\begin{equation}\n", + "\\lvert \\psi_{4} \\rangle=\\frac{1}{\\sqrt{2}}(\\alpha \\lvert 0 \\rangle_A \\lvert 1 \\rangle_A \\lvert 1 \\rangle_B + \\beta \\lvert 0 \\rangle_A \\lvert 1 \\rangle_A \\lvert 0 \\rangle_B)\n", + "\\end{equation}\n", + "
          4. \n", + "\n", + "
          5. \n", + "\\begin{equation}\n", + "\\lvert \\psi_{4} \\rangle=\\frac{1}{\\sqrt{2}}(\\alpha \\lvert 1 \\rangle_A \\lvert 0 \\rangle_A \\lvert 0 \\rangle_B - \\beta \\lvert 1 \\rangle_A \\lvert 0 \\rangle_A \\lvert 1 \\rangle_B)\n", + "\\end{equation}\n", + "
          6. \n", + "\n", + "
          7. \n", + "\\begin{equation}\n", + "\\lvert \\psi_{4} \\rangle=\\frac{1}{\\sqrt{2}}(\\alpha \\lvert 1 \\rangle_A \\lvert 1 \\rangle_A \\lvert 1 \\rangle_B - \\beta \\lvert 1 \\rangle_A \\lvert 1 \\rangle_A \\lvert 0 \\rangle_B)\n", + "\\end{equation}\n", + "
          8. \n", + "\n", + "
          \n", + "\n", + "\n", + "\n", + "
        8. \n", + "\n", + "
        9. \n", + "Depending on the values of the classical bits which Bob receives from Alice, he will apply one of four possible gates to his qubit\n", + "\n", + "
            \n", + "\n", + "
          1. \n", + "00: Bob applies the identity gate to his qubit and obtains (we neglect the measured qubits)\n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi_{5} \\rangle = I \\frac{1}{\\sqrt{2}}(\\alpha \\lvert 0 \\rangle_B + \\beta \\lvert 1 \\rangle_B) = \\lvert \\phi \\rangle\n", + "\\end{equation}\n", + "\n", + "
          2. \n", + "\n", + "
          3. \n", + "01: Bob applies the $X$ gate to his qubit\n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi_{5} \\rangle = X \\frac{1}{\\sqrt{2}}(\\alpha \\lvert 1 \\rangle_B + \\beta \\lvert 0 \\rangle_B) = \\frac{1}{\\sqrt{2}}(\\alpha \\lvert 0 \\rangle_B + \\beta \\lvert 1 \\rangle_B) = \\lvert \\phi \\rangle\n", + "\\end{equation}\n", + "\n", + "
          4. \n", + "\n", + "
          5. \n", + "10: Bob applies the $Z$ gate to his qubit\n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi_{5} \\rangle = Z \\frac{1}{\\sqrt{2}}(\\alpha \\lvert 0 \\rangle_B - \\beta \\lvert 1 \\rangle_B) = \\frac{1}{\\sqrt{2}}(\\alpha \\lvert 0 \\rangle_B + \\beta \\lvert 1 \\rangle_B) = \\lvert \\phi \\rangle\n", + "\\end{equation}\n", + "\n", + "
          6. \n", + "\n", + "
          7. \n", + "11: Bob applies the $X$ and the $Z$ gate to his qubit\n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi_{5} \\rangle = ZX \\frac{1}{\\sqrt{2}}(\\alpha \\lvert 1 \\rangle_B - \\beta \\lvert 0 \\rangle_B) = \\frac{1}{\\sqrt{2}}(\\alpha \\lvert 0 \\rangle_B + \\beta \\lvert 1 \\rangle_B) = \\lvert \\phi \\rangle\n", + "\\end{equation}\n", + "\n", + "
          8. \n", + "\n", + "
          \n", + "\n", + "
        10. \n", + "\n", + "
        \n", + "\n", + "Therefore, Bob is able to reproduce the state $\\lvert \\phi \\rangle$ on his qubit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QISKit: implement the quantum teleportation algorithm " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 1) Teleport a qubit in the state $\\frac{1}{\\sqrt{2}}( \\lvert 0 \\rangle+ \\lvert 1 \\rangle)$ " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "OPENQASM 2.0;\n", + "include \"qelib1.inc\";\n", + "qreg q[3];\n", + "creg c0[1];\n", + "creg c1[1];\n", + "creg c2[1];\n", + "h q[1];\n", + "cx q[1],q[2];\n", + "h q[0];\n", + "cx q[0],q[1];\n", + "h q[0];\n", + "measure q[0] -> c0[0];\n", + "measure q[1] -> c1[0];\n", + "if(c0==1) z q[2];\n", + "if(c1==1) x q[2];\n", + "measure q[2] -> c2[0];\n", + "\n", + "\n", + "The measured outcomes of the circuits are: {'0 0 0': 119, '0 0 1': 123, '0 1 0': 134, '0 1 1': 121, '1 0 0': 136, '1 0 1': 117, '1 1 0': 145, '1 1 1': 129}\n" + ] + } + ], + "source": [ + "from qiskit import *\n", + "\n", + "# Quantum program setup \n", + "Q_program = QuantumProgram()\n", + "\n", + "# Creating registers\n", + "q = Q_program.create_quantum_register('q', 3)\n", + "c0 = Q_program.create_classical_register('c0', 1)\n", + "c1 = Q_program.create_classical_register('c1', 1)\n", + "c2 = Q_program.create_classical_register('c2', 1)\n", + "\n", + "# Creates the quantum circuit\n", + "teleport = Q_program.create_circuit('teleport', [q], [c0,c1,c2])\n", + "\n", + "# Make the shared entangled state \n", + "teleport.h(q[1])\n", + "teleport.cx(q[1], q[2])\n", + "\n", + "# Prepare Alice's qubit\n", + "teleport.h(q[0])\n", + "\n", + "# Alice applies teleportation gates (or projects to Bell basis)\n", + "teleport.cx(q[0], q[1])\n", + "teleport.h(q[0])\n", + "\n", + "# Alice measures her qubits\n", + "teleport.measure(q[0], c0[0])\n", + "teleport.measure(q[1], c1[0])\n", + "\n", + "# Bob applies certain gates based on the outcome of Alice's measurements\n", + "teleport.z(q[2]).c_if(c0, 1)\n", + "teleport.x(q[2]).c_if(c1, 1)\n", + "\n", + "# Bob checks the state of the teleported qubit\n", + "teleport.measure(q[2], c2[0])\n", + "\n", + "# Shows gates of the circuit\n", + "circuits = ['teleport']\n", + "print(Q_program.get_qasms(circuits)[0])\n", + "\n", + "# Parameters for execution on simulator\n", + "backend = 'local_qasm_simulator' \n", + "shots = 1024 # the number of shots in the experiment \n", + "\n", + "# Run the algorithm\n", + "result = Q_program.execute(circuits, backend=backend, shots=shots)\n", + "\n", + "#Shows the results obtained from the quantum algorithm \n", + "counts = result.get_counts('teleport')\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:', counts)\n", + "\n", + "# credits to: https://github.com/QISKit/qiskit-tutorial" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 7.2 Superdense coding\n", + "\n", + "Here we take a look at the algorithm for superdense coding [2]. This quantum algorithm allows to transfer two bits of classical information just by transferring a qubit. The only requirement is that it is possible to generate an entangled pair of qubit in the Bell state $\\lvert\\Phi^{+} \\rangle$.\n", + "\n", + "\n", + "$$\\text{2. Quantum circuit for superdense coding.}$$\n", + "\n", + "The algorithm involves the following steps:\n", + "\n", + "
          \n", + "
        1. \n", + "As in the quantum teleportation algorithm, Alice and Bob share an entangled pair of qubit in the Bell state to start with.\n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi_1 \\rangle = \\lvert\\Phi^{+} \\rangle =\\frac{1}{\\sqrt{2}}( \\lvert 0\\rangle_A \\lvert 0 \\rangle_B+ \\lvert 1\\rangle_A \\lvert 1 \\rangle_B)\n", + "\\end{equation}\n", + "
        2. \n", + "\n", + "\n", + "
        3. \n", + "Depending on the two classical bits $b_0$, $b_1$ that Alice wants to send to Bob, Alice will apply on of four possible gates $X^{b_0}Z^{b_1}$ to her qubit\n", + "\n", + "
            \n", + "
          1. \n", + "$b_0b_1=00$: Alice applies $X^{0}Z^{0}=I$ to her qubit. The state of the system is now:\n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi_2 \\rangle =\\frac{1}{\\sqrt{2}}( \\lvert 0\\rangle_A \\lvert 0 \\rangle_B+ \\lvert 1\\rangle_A \\lvert 1 \\rangle_B)\n", + "\\end{equation}\n", + "
          2. \n", + "\n", + "
          3. \n", + "$b_0b_1=01$: Alice applies $X^{0}Z^{1}=Z$ to her qubit. The state of the system is now:\n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi_2 \\rangle =\\frac{1}{\\sqrt{2}}( \\lvert 0\\rangle_A \\lvert 0 \\rangle_B - \\lvert 1\\rangle_A \\lvert 1 \\rangle_B)\n", + "\\end{equation}\n", + "
          4. \n", + "\n", + "
          5. \n", + "$b_0b_1=10$: Alice applies $X^{1}Z^{0}=X$ to her qubit. The state of the system is now:\n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi_2 \\rangle =\\frac{1}{\\sqrt{2}}( \\lvert 1 \\rangle_A \\lvert 0 \\rangle_B+ \\lvert 0\\rangle_A \\lvert 1 \\rangle_B)\n", + "\\end{equation}\n", + "
          6. \n", + "\n", + "
          7. \n", + "$b_0b_1=11$: Alice applies $X^{1}Z^{1}=XZ$ to her qubit. The state of the system is now:\n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi_2 \\rangle =\\frac{1}{\\sqrt{2}}( \\lvert 1 \\rangle_A \\lvert 0 \\rangle_B - \\lvert 0\\rangle_A \\lvert 1 \\rangle_B)\n", + "\\end{equation}\n", + "
          8. \n", + "
          \n", + "\n", + "
        4. \n", + "\n", + "\n", + "
        5. \n", + "Now, Alice sends her qubit to Bob, who can read the two-bit message sent by Alice through her qubit by making a joint measurement of the two qubits in the Bell basis. Since the quantum computer available today can carry out measurement only in the standard (Z) basis, let us see how to convert a two-qubit measurement in the Bell basis into a two-qubit measurement in the standard basis.\n", + "\n", + "\n", + "$$\\text{3. Equivalence between different measurement bases.}$$\n", + "\n", + "\n", + "\n", + "Measuring two qubits in the Bell basis is equivalent to performing a CNOT gate $CX_{12}$, where the first qubit is the control qubit and the second qubit is the target one, and an Hadamard gate $H$ on the first qubit and then measuring in the standard basis. The quantum circuit with measurements in the standard basis is depicted in Fig. 4.\n", + "\n", + "\n", + "$$\\text{4. Superdense coding quantum circuit with measurements in the standard basis.}$$\n", + "\n", + "Bob's possible outcomes are: \n", + "\n", + "
            \n", + "
          1. \n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi_3 \\rangle =\\frac{1}{2}( \\lvert 0\\rangle_B \\lvert 0 \\rangle_B + \\lvert 1\\rangle_B \\lvert 0 \\rangle_B + \\lvert 0\\rangle_B \\lvert 0 \\rangle_B - \\lvert 1\\rangle_B \\lvert 0 \\rangle_B) = \\lvert 0\\rangle_B \\lvert 0 \\rangle_B\n", + "\\end{equation}\n", + "\n", + "Therefore, Bob decodes $b_0b_1=00$\n", + "
          2. \n", + "\n", + "
          3. \n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi_3 \\rangle =\\frac{1}{2}( \\lvert 0\\rangle_B \\lvert 0 \\rangle_B + \\lvert 1\\rangle_B \\lvert 0 \\rangle_B - \\lvert 0\\rangle_B \\lvert 0 \\rangle_B + \\lvert 1\\rangle_B \\lvert 0 \\rangle_B) = \\lvert 1\\rangle_B \\lvert 0 \\rangle_B\n", + "\\end{equation}\n", + "\n", + "Therefore, Bob decodes $b_0b_1=01$\n", + "
          4. \n", + "\n", + "
          5. \n", + "\\begin{equation}\n", + "\\lvert \\psi_3 \\rangle =\\frac{1}{2}( \\lvert 0\\rangle_B \\lvert 1 \\rangle_B - \\lvert 1\\rangle_B \\lvert 1 \\rangle_B + \\lvert 0\\rangle_B \\lvert 1 \\rangle_B + \\lvert 1\\rangle_B \\lvert 1 \\rangle_B) = \\lvert 0\\rangle_B \\lvert 1 \\rangle_B\n", + "\\end{equation}\n", + "\n", + "Therefore, Bob decodes $b_0b_1=10$\n", + "
          6. \n", + "\n", + "
          7. \n", + "\\begin{equation}\n", + "\\lvert \\psi_3 \\rangle =\\frac{1}{2}( \\lvert 0\\rangle_B \\lvert 1 \\rangle_B - \\lvert 1\\rangle_B \\lvert 1 \\rangle_B - \\lvert 0\\rangle_B \\lvert 1 \\rangle_B - \\lvert 1\\rangle_B \\lvert 1 \\rangle_B) = - \\lvert 1 \\rangle_B \\lvert 1 \\rangle_B\n", + "\\end{equation}\n", + "\n", + "Therefore, Bob decodes $b_0b_1=11$\n", + "
          8. \n", + "
          \n", + "\n", + "
        6. \n", + "\n", + "
        " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QISKit: implement the superdense coding algorithm " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3) Send the two bits $01$ through superdense coding " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "h\n", + "cx\n", + "x\n", + "cx\n", + "h\n", + "measure\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'10': 1024}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "from qiskit import *\n", + "\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'superdense', qubit_number=2, bit_number=2, backend = 'local_qasm_simulator', shots = 1024)\n", + "\n", + "#add gates to the circuit\n", + "\n", + "#creates a bell pair\n", + "my_alg.q_circuit.h(my_alg.q_reg[0]) # applies H gate to first qubit\n", + "my_alg.q_circuit.cx(my_alg.q_reg[0],my_alg.q_reg[1]) ## applies CX gate\n", + "\n", + "#Alice encodes 01\n", + "my_alg.q_circuit.x(my_alg.q_reg[0])\n", + "\n", + "#to measure in the Bell basis, Bob does the following operations before measuring in the standard basis\n", + "my_alg.q_circuit.cx(my_alg.q_reg[0],my_alg.q_reg[1]) ## applies CX gate\n", + "my_alg.q_circuit.h(my_alg.q_reg[0]) # applies H gate to first qubit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures the first qubit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[1], my_alg.c_reg[1]) # measures the second qubit\n", + "\n", + "\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)\n", + "\n", + "# credits to: https://github.com/QISKit/qiskit-tutorial" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "
          \n", + "
        1. \n", + "Show the step-by-step evolution of the total state of the system $\\lvert \\psi \\rangle$ for the quantum teleportation algorithm for the following states to be teleported:\n", + "\n", + "
            \n", + "\n", + "
          1. \n", + "$\\lvert 1 \\rangle$\n", + "
          2. \n", + "\n", + "
          3. \n", + "$\\frac{1}{\\sqrt{1}} ( \\lvert 0 \\rangle+ \\lvert 1 \\rangle )$\n", + "
          4. \n", + "\n", + "
          5. \n", + "$\\sqrt{\\frac{2}{3}} \\lvert 0 \\rangle+\\frac{1}{\\sqrt{3}} \\lvert 1 \\rangle$\n", + "
          6. \n", + "\n", + "
          \n", + "
        2. \n", + "\n", + "
        3. \n", + "Design quantum circuits for the quantum teleportation of the states given in problem 1.\n", + "
        4. \n", + "\n", + "
        5. \n", + "Write QISKit programs which implement the quantum teleportation algorithm for each state specified in problem 1.\n", + "
        6. \n", + "\n", + "
        7. \n", + "Alice wants to send 4 classical bits $b_0b_1b_2b_3=0110$ to Bob by sending only two qubits. Explain how this can be done. Then, design a quantum circuit which implements it.\n", + "
        8. \n", + "\n", + "
        9. \n", + "Show the step-by-step evolution of the total state of the system for the situation described in problem 4.\n", + "
        10. \n", + "\n", + "
        11. \n", + "Write a QISKit program which implements the superdense coding algorithm specified in problem 4.\n", + "
        12. \n", + "\n", + "\n", + "\n", + "
        \n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "[1] C. H. Bennett et al., Physical Review Letters, 70, 1895 (1993).\n", + "\n", + "[1] C. H. Bennett and S. J. Wiesner, Physical Review Letters, 69, 2881\n", + "(1992).\n", + "\n", + "\n", + "\n", + "\n", + "[3] K. Mattle et al., Physical Review Letters, 76, 4656 (1996).\n", + "\n", + "[4] M. Riebe et al., Nature, 429,734 (2004).\n", + "\n", + "[5] M. D. Barrett et al., Nature, 429, 737 (2004).\n", + "\n", + "[6] H. J. Kimble and S. J. van Euk, Nature, 429, 712 (2004).\n", + "\n", + "[7] M. B. Plenio and V. Vedral, Contemporary Physics, 39, 431 (1998).\n", + "\n", + "[8] D. Bouwmeester et al., Nature, 390, 575 (1997)\n", + "\n", + "[9] S. Fedortchenko, arXiv:1607.02398 (2016).\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/intro2qc/8.Shor's algorithm.ipynb b/community/awards/teach_me_quantum_2018/intro2qc/8.Shor's algorithm.ipynb new file mode 100644 index 000000000..ebf24f5b2 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/intro2qc/8.Shor's algorithm.ipynb @@ -0,0 +1,557 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
        " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "\n", + "HTML('''\n", + "
        ''')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 8. Shor's algorithm\n", + "\n", + "\n", + "Shor's factoring algorithm [1] is the most well-known example of a quantum algorithm outperforming the best known classical algorithms. The algorithm allows to factor a number $N_0$ which is the product of two prime numbers $N_0 = p \\cdot q$, in polynomial time. This is possible thanks to a theorem in number theory which turns the problem of finding factors into the problem of finding the period of a periodic function. Using the quantum Fourier transform (QFT), one can then find the period of this function with high probability and complete the factorization.\n", + "\n", + "The problem of factoring numbers has been studied for centuries and no efficient (polynomial time) algorithm has ever been found. The difficulty of factoring numbers is the basis on which the most widespread encryption standard, the RSA, is founded. Therefore, an algorithm which is capable of factoring numbers efficiently could have a huge impact on the security of electronic based interactions. The discovery of this algorithm by Peter Shor in 1994, led to an explosion of the field of quantum computation because of its important application. \n", + "\n", + "However, experimental implementation of the algorithm still remains a challenge because of the errors introduced by the large number of physical qubits and gates required to execute the algorithm. Proof of principle demonstration of Shor's factoring algorithm to factor the smallest number $N_0=15$ using five superconducting qubits have been done for setups like NMR [2], trapped ions [3], photons [4-6], photonic chips [7] and superconducting qubits [8,9]. These experiments show how complex is to implement the actual algorithm, as even for the smallest number which allows the algorithm to be run ($N_0=15$), extreme simplifications must be made to run the algorithm [10]. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 8.1 Mathematical preliminaries\n", + "\n", + "\n", + "\n", + "### 8.1.1 Modular arithmetic\n", + "When division between integers $a$ (the dividend) and $b$ (the divisor) is taught for the first time, one is usually introduced to the idea of quotient $q$ and remainder $r$. The quotient is the number of times the dividend $a$ contains the divisor $b$, the remainder is any left-over that added to the product of the quotient by the divisor returns the dividend, $r + q\\times b = a$ or $r = a - q\\times b$.\n", + "\n", + "#### Example:\n", + "Consider the case $a=40$ and $b=30$, let us find the quotient and the remainder of the division of $a$ by $b$. $40/30 \\rightarrow q = 1, \\, r = 13$,\n", + "\t\t \n", + "Therefore, the quotient is $q=1$ and the remainder is $r = 13$. \n", + "\t\n", + "\n", + "\n", + "By looking at the division between integers in this way, one can easily understand the fundamentals of modular arithmetic. Modular arithmetic is a set of rules for handling operations between integer numbers. In modular arithmetic, integers multiple of a fixed number $N_0$ are considered equivalent. Thus, by selecting an integer $N_0$, the set of all integers is restricted to the integers in the interval $\\left[ 0 , N_0-1 \\right]$. \n", + "To visualize this, one can think about a twelve-hours clock. In a clock, the only integers allowed lie in the interval $\\left[ 0 , 11 \\right]$, once this interval is exceeded one goes back at the beginning of the interval. Thus, $9+5 = 2 \\, \\left( mod \\, 12 \\right)$.\n", + "More formally, two integers $a$ and $b$ are congruent modulo $N_0$ if their difference $a-b$ is an integer multiple of $N_0$. That is, $a-b = r \\cdot N_0$, where $r$ is an integer, then $a \\equiv b \\, \\left( mod \\, N_0 \\right)$. \n", + "Equivalently, if $a \\equiv b \\, \\left( mod \\, N_0 \\right)$, then $\\frac{a-b}{N_0}$ has zero remainder. Or, $b \\, \\left( mod \\, N_0 \\right)$ is the remainder of the division $\\frac{b}{N_0}=a$. Thus, both numbers have the same remainder when divided by $N_0$.\n", + "\n", + "#### Example:\n", + "Equivalence of two integers modulo $N_0$:\n", + "$38 \\equiv 14 \\, \\left( mod \\, 12 \\right)$\n", + "$38 - 14 = 24 = 2 \\cdot 12 $\n", + "\n", + "Both $\\frac{38}{12}$ and $\\frac{14}{12}$ have remainder $2$.\n", + "\n", + "\n", + "\n", + "### 8.1.2 Continued Fraction Algorithm\n", + "\n", + "The continued fraction algorithm is used to reduce a fraction $\\frac{m}{n}$ to another fraction $\\frac{u}{t}$. In general, the algorithm allows to rewrite any irrational number as a finite/infinite sum of an integer part plus the reciprocal of a number.\n", + "So, consider the fraction $\\frac{m}{n}$, its continued fraction expansion is\n", + "\n", + "$$ \\frac{m}{n} = a_0 + \\frac{1}{a_1 + \\frac{1}{a_2+ \\frac{1}{a_3+\\frac{1}{1+\\frac{1}{a_4+\\frac{1}{a_5+\\frac{1}{...}}}}}}} $$\n", + "\n", + "Using the integers $a_i$, one can rewrite the fraction $\\frac{m}{n}$ as $\\frac{u}{t}$. To find $u_i$ and $t_i$ one can use the following formulas:\n", + "\n", + "$u_0 = a_0$, $u_1=1+a_0a_1$, ..., $u_n = a_n d_n + d_{n-2}$\n", + "$t_0=1$, $t_1 = a_1$, ..., $t_n =a_n t_{n−1} +t_{n−2}$ \n", + "\n", + "Which then give the possible approximations for $\\frac{m}{n}$:\n", + "\n", + "$\\frac{m}{n} \\approx \\frac{u_0}{t_0}$, $\\frac{m}{n} \\approx \\frac{u_1}{t_1}$, ..., $\\frac{m}{n} \\approx \\frac{u_n}{t_n}$\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 8.2 Factoring and order finding \n", + " \n", + " \n", + "The possibility of running an efficient algorithm for factoring a product of two prime number arises from: i. the connection between factoring and order finding, ii. the ability of quantum computers to deal efficiently with periodic functions.\n", + "In this Section, the connection between the problem of factoring and the problem of finding the period of a periodic function, also called $\\textit{order finding}$ is explained.\n", + "It is important to note that this equivalency holds in the realm of modular arithmetic.\n", + "Let us start from the concept of order of a number. Given an integer $a$, the order of $a$ is the smallest integer number $r$ for which the following condition holds\n", + "\n", + "\\begin{equation}\n", + "a^r \\text{mod} N_0 = 1 \\tag{1}\n", + "\\end{equation}\n", + " \n", + "\n", + "\n", + "#### Example:\n", + "Consider the case $a=2$ and $N_0=21$, let us find the order of $a$ by trying different exponents $r$ sequentially until \twe find the one for which condition (1) is satisfied:\n", + "\t$2^1 (\\text{mod} 21) = 2$, \n", + "\t$2^2 (\\text{mod} 21) = 4$, \n", + "\t$2^3 (\\text{mod} 21) = 8$, \n", + "\t$2^4 (\\text{mod} 21) = 16$,\n", + "\t$2^5 (\\text{mod} 21) = 11$, \n", + "\t$2^6 (\\text{mod} 21) = 1$.\n", + "\n", + "Therefore, the order of $a=2$ is $r=6$. \n", + "\t\n", + "\n", + "\n", + "Now that we have clarified what is the order of a number, let us explore the connection between order finding and factoring. \n", + "Start by rewriting Eq. (1) as $a^r - 1 \\text{mod} \\, N_0 = 0$, which means that $a^r - 1$ is a multiple of $N_0$. Assuming that $r$ is even, we can write $ a^r - 1 \\text{mod} \\, N_0 = \\left( a^{\\frac{r}{2}} - 1\\right)\\left( a^{\\frac{r}{2}} + 1\\right) \\text{mod} \\, N_0 $. Finally, we check if either $a^{\\frac{r}{2}} - 1$ or $a^{\\frac{r}{2}} + 1$ shares any factors with $N_0$. This can be checked tacking the greatest common divisor (gcd) of them, which outputs the biggest number that divides both inputs. If the output of $\\text{gcd}\\left( a^{\\frac{r}{2}} \\pm 1,N_0 \\right)$ is greater than one, than that's one of the factors. The other one being $N_0/ \\text{gcd}\\left( a^{\\frac{r}{2}} \\pm 1,N_0 \\right)$.\n", + "\n", + "#### Example:\n", + "Again consider the case $a=2$ and $N_0=21$, in the previous example we found that the order is $r = 6$. Let us now show how to find the two prime factors whose product gives $21$. \n", + "$2^6 - 1 (\\text{mod} \\, 21) = \\left( 2^3 +1 \\right)\\left( 2^3 -1 \\right) (\\text{mod} \\, 21) $.\n", + "We need to check if the two numbers $ \\left( 2^3 +1 \\right) = 9$ and $ \\left( 2^3 -1 \\right)=7$ have any factors in common with $21$.\n", + "Let's start by checking $ \\left( 2^3 +1 \\right)$: $\\text{gcd}\\left( 9, 21\\right) = 3$.\n", + "We obtained a $gcd \\neq 1$, which means that there is a common factor between $a^{\\frac{r}{2}} + 1$ and $N_0$. We can now calculate the first factor of $21$.\n", + "$\\text{factor}_1 = \\frac{21}{\\text{gcd}\\left( 9, 21\\right)} = \\frac{21}{3} = 7$.\n", + "The second factor follows immediately from $\\text{factor}_2 = \\frac{21}{\\text{factor}_1} = \\frac{21}{7} = 3$.\n", + "\n", + "Therefore, we find the two prime factors whose product is $N_0=21$, $\\text{factor}_1 = 7$ and $\\text{factor}_2 = 3$. Thus, the order of $a=2$ is $r=6$. \n", + "\t\n", + "\n", + "\n", + "It's important to notice that several assumptions are needed to translate the problem of factoring to the one of order finding. These are \"weak points\" of the algorithm, which fails to produce the correct result each time one of these assumptions is violated.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 8.3 Quantum Fourier transform\n", + "\n", + "The Quantum Fourier Transform (QFT) is the heart of Shor's factoring algorithm. Similarly to the discrete Fourier transform, which allows to compute the Fourier transform of a complex number, the QFT allows to compute the Fourier transform of a quantum state. This means that we can rewrite a generic state of a qubit register as a superposition of all the possible basis state vectors of the register, with a certain phase.\n", + "\n", + "The QFT of one of the basis states $\\lvert i \\rangle$ of an $n$ qubit register is\n", + "\n", + "\\begin{equation}\n", + "QFT \\lvert j \\rangle = \\frac{1}{2^{n/2}} \\sum_{k=0}^{2^{n}-1} e^{\\frac{2 \\pi i}{2^n} j k} \\lvert k \\rangle\n", + "\\end{equation}\n", + "\n", + "The QFT on a generic state can then be derived from this definition\n", + "\n", + "\\begin{equation}\n", + "QFT \\sum_{j=0}^{2^n-1} x_j \\lvert j \\rangle = \\sum_{k=0}^{2^{n}-1} \\sum_{l=0}^{2^{n}-1} x_l e^{\\frac{2 \\pi i}{2^n} l k} \\lvert k \\rangle\n", + "\\end{equation}\n", + "\n", + "By writing the basis state $\\lvert j \\rangle$ in binary representation we adopt the following convention: $\\lvert j_1 j_2 ... j_n \\rangle$ correspond to $j= j_1 2^{n-1}+j_2 2^{n-2} ... j_n 2^{0}$. Following the same convention, we can also write numbers smaller than one as $0.j_1 j_2 ... j_n$ meaning $j_1/2^{0} + j_2/2^{1} +...+ j_n/2^{n}$ a it is possible to rewrite the QFT in a very simple form\n", + "\n", + "\\begin{aligned}\n", + "QFT \\lvert j \\rangle & = \\frac{1}{2^{n/2}} \\sum_{k=0}^{2^{n}-1} e^{2 \\pi i jk / 2^n} \\lvert k \\rangle \\\\\n", + "& = \\frac{1}{2^{n/2}} \\sum_{k_1=0}^{1}...\\sum_{k_n=0}^{1} e^{2 \\pi i \\left(\\sum_{l=1}^{n} k_l 2^{-l}\\right) j} \\lvert k_1 ... k_n \\rangle \\\\\n", + "& = \\frac{1}{2^{n/2}}\\sum_{k_1=0}^{1}...\\sum_{k_n=0}^{1} \\bigotimes_{l=0}^n e^{2 \\pi i j k_l2^{-l} } \\lvert k_l \\rangle \\\\\n", + "& = \\frac{1}{2^{n/2}} \\bigotimes_{l=1}^n \\left(\\lvert 0 \\rangle + e^{2 \\pi i j 2^{-l} } \\lvert 1 \\rangle \\right) \\\\\n", + "& = \\frac{1}{2^{n/2}} \\left( \\lvert 0 \\rangle + e^{2 \\pi i[0.j_n]} \\lvert 1 \\rangle \\right) \\otimes \\left( \\lvert 0 \\rangle + e^{2 \\pi i[0.j_{n-1} j_{n}]} \\lvert 1 \\rangle \\right) \\otimes ...\\otimes \\left(\\lvert 0 \\rangle + e^{2 \\pi i[0.j_1j_2...j_{n-1}j_n]} \\lvert 1 \\rangle \\right)\n", + "\\end{aligned}\n", + "\n", + "By writing the QFT in this way, it is easy to find a circuit which implements it. The QFT turns out to be composed of very simple gates such as Hadamard and control-rotations around the z-axis between pairs of qubits $CR_k$.\n", + "\n", + "$$ CR_k =\n", + "\\begin{pmatrix} \n", + "1 & 0 & 0 & 0 \\\\\n", + "0 & 1 & 0 & 0 \\\\ \n", + "0 & 0 & 1 & 0 \\\\ \n", + "0 & 0 & 0 & e^{2 \\pi i/ 2^k}\n", + "\\end{pmatrix}$$\n", + "\n", + "\n", + "$$\\text{1. Quantum circuit for the Quantum Fourier Transform.}$$\n", + "\n", + "\n", + "#### Example: QFT on two qubits\n", + "Let us calculate the QFT in the case of $n=2$ qubits\n", + "\n", + "$$QFT\\lvert j_1j_2\\rangle = \\frac{1}{\\sqrt{8}} \\left(\\lvert 0 \\rangle + e^{2 \\pi i[0.j_2]} \\lvert 1 \\rangle\\right) \\otimes \\left(\\lvert 0 \\rangle + e^{2 \\pi i[0.j_1 j_2]} \\lvert 1 \\rangle \\right) $$\n", + "\n", + "The steps to creating the circuit for $\\lvert k_1k_2\\rangle = QFT\\lvert j_1j_2\\rangle$ would be:\n", + "\n", + "
          \n", + "
        1. \n", + "Apply an Hadamard to $\\lvert j_2 \\rangle$, giving the state $\\frac{1}{\\sqrt{2}}\\left(\\lvert 0 \\rangle + e^{2 \\pi i 0.j_2} \\lvert 1\\rangle\\right) = \\frac{1}{\\sqrt{2}}\\left(\\lvert 0 \\rangle + (-1)^{j_2} \\lvert 1 \\rangle\\right)$\n", + "
        2. \n", + "\n", + "
        3. \n", + "Apply a $CR_2$ from $\\lvert j_1 \\rangle$ to $\\lvert j_2 \\rangle$ and an Hadamard to $\\lvert j_1 \\rangle$, giving the state $\\frac{1}{\\sqrt{2}}\\left(\\lvert0\\rangle + e^{2 \\pi i[0.j_1j_2]} \\lvert1\\rangle\\right)$\n", + "
        4. \n", + "\n", + "
        5. \n", + "Measure the qubits in reverse order, that is $k_2$ corresponds to the first qubit, $k_1$ to the second qubit.\n", + "
        6. \n", + "
        \n", + "\n", + "\n", + "$$\\text{2. Quantum Fourier Transform for two qubits.}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# QISKIT: QFT code \n", + "\n", + "# calculate qft of two qubit as the example above" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QISKit: implement the quantum Fourier transform " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 1) Fourier transform of two qubits in the $\\lvert 00 \\rangle $ state " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "h\n", + "cu1\n", + "h\n", + "measure\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'00': 243, '01': 241, '10': 272, '11': 268}\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "\n", + "def qft(circ, q, n):\n", + " \"\"\"n-qubit QFT on q in circ.\"\"\"\n", + " for j in range(n):\n", + " for k in range(j):\n", + " circ.cu1(3.14/float(2**(j-k)), q[j], q[k])\n", + " circ.h(q[j])\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'fourier', qubit_number=2, bit_number=2, backend = 'local_qasm_simulator', shots = 1024)\n", + "\n", + "#add gates to the circuit\n", + "qft(my_alg.q_circuit, my_alg.q_reg, 2) # qft of input state\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures first qubit\n", + "my_alg.q_circuit.measure(my_alg.q_reg[1], my_alg.c_reg[1]) # measures second qubit\n", + "\n", + "# print list of gates in the circuit\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)\n", + "\n", + "# credits to: https://github.com/QISKit/qiskit-tutorial" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 8.4 Description of the algorithm\n", + "\n", + "\n", + "Shor's algorithm exploits both classical and quantum computation. Classical operations are carried out in steps where an efficient classical algorithm exists, while quantum operations are used to find the periodicity of the function needed to factor $N_0$. Here we present an outline of the algorithm.\n", + "\n", + "\n", + "$$\\text{3. Quantum circuit for Shor's algorithm.}$$\n", + "\n", + "\n", + "To run the algorithm, we need two quantum registers. One contains the order or period, called period register, and the other contains the results of the computation, called computational register. The size of both registers depends on the number $N_0$ to be factored. In particular, the period register should contain a number of qubits $n_p$ in the interval $2 \\text{log} N_0 \\leq n_p < 2 \\text{log} (2N_0) $ and the computational register should be large enough to be able to represent the number $N_0-1$, thus $n_q = \\text{log} (N_0-1)$.\n", + "\n", + "First, one needs to check if $N_0$ is even. If $N_0$ is even, one of the factor is $2$ and the other is $N_0/2$. \n", + "\n", + "\n", + "\n", + "If $N_0$ is odd, a base $a$ is picked randomly among the numbers from $0$ to $N_0-1$. Then, check if $a$ is a factor of $N_0$, by checking if gcd$\\left(a,N_0 \\right) \\neq 1$. If $a$ is has a common divisor with $N_0$, then one factor is given by gcd$\\left(a,N_0 \\right)$ and the other by $N_0/$gcd$\\left(a,N_0 \\right)$. If $a$ is co-prime with $N_0$ ( gcd$\\left(a,N_0 \\right) = 1$ ) then one needs to compute the function $a^x$ mod $N_0$, the modular exponentiation function (MEF), for $x=1,2,3,..Q-1$ where $N_0^2 \\leq Q < 2N_0^2$ and $Q=2^{n_p}$. \n", + "\n", + "At the beginning of the quantum algorithm used to compute the MEF we need two registers initialized to zero $\\lvert 00...0 \\rangle \\lvert 00...0 \\rangle $. The first register also known as the period register will stores all the possible values of the exponent $x$ by creating a uniform superposition of all possible bit strings through Hadamard gates on all qubits $\\frac{1}{\\sqrt{Q}} \\sum_{x=0}^{Q-1} \\lvert x \\rangle $, and the second register, called the computational register will store the results of the MEF $a^x$ mod $N_0$, $\\lvert a^x $ mod $ N_0 \\rangle$. Thus, after the first step, one has\n", + "\n", + "\\begin{equation}\n", + "\t\\frac{1}{\\sqrt{Q}} \\sum_{x=0}^{Q-1} \\lvert x \\rangle \\lvert a^x mod N_0 \\rangle\n", + "\\end{equation}\n", + "\n", + "Then, we apply the quantum Fourier transform (QFT) to the first register, so that $\\lvert x \\rangle \\rightarrow \\frac{1}{\\sqrt{Q}} \\sum_{s=0}^{Q-1} e^{\\frac{2\\pi i s x}{Q}}\\lvert s \\rangle$. As a result of the QFT, interference between all the possible states occurs and only the periodic ones survive. That is, if one measures the first register, one will see a value of $s$ such that $\\frac{sx}{Q}$ is an integer $d$ when $x$ a multiple of the period $r$. Which means that $\\frac{s}{Q}=\\frac{d}{r}$. By knowing the fraction $\\frac{s}{Q}$ one can find the value of $r$ through the continued fraction algorithm.\n", + "Now, if $r$ is odd or $r=0$, the algorithm fails and one needs to restart by picking a different base $a$. If $r$ is even, one can factorize $a^r - 1$ mod $N_0$ into $\\left( a^{\\frac{r}{2}} - 1\\right)\\left( a^{\\frac{r}{2}} + 1\\right)$ mod $N_0$. The final step is to check if $a^{\\frac{r}{2}} + 1 \\, \\text{mod} \\, N_0 \\neq -1$. If that's true, then $\\text{gcd}\\left(a^{\\frac{r}{2}} + 1,N_0 \\right)$ will be the first factor and $\\text{gcd}\\left(a^{\\frac{r}{2}} - 1,N_0 \\right)$ the other.\n", + "\n", + "\n", + "The execution of this version of the algorithm requires $n=log_2 \\left( N_0 \\right)$ qubits in the computational register to perform the modular exponentiation and another $2n$ qubits in the period register to perform the QFT. Thus, the algorithm requires a total number of $3n$ qubits." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 8.5 Example of Shor's factoring algorithm\n", + "\n", + "Let us see here an example of Shor's factoring algorithm for $N_0=21$. Since $21$ needs five bits to be represented in binary, we need at least $\\text{log}_2Q = 2*5$ qubits for factoring. \n", + "\n", + "
          \n", + " \n", + "
        1. Check if $N_0=21$ is even: $21 \\, \\text{mod} \\, 2=1$, $N_0$ is not even.
        2. \n", + " \n", + "
        3. Pick a base $a$ at random. Let's say $a=2$.
        4. \n", + " \n", + "
        5. Check if $a$ has any common factors with $N_0$: $\\text{gcd}\\left(a,N_0 \\right) = 1$, it doesn't.
        6. \n", + " \n", + "
        7. Initialize two qubit registers with $n_p = 2\\times5=10$ qubits, as $5$ qubits are needed to represent $21$ in binary. We call the first register the $period$ register and the second register the $computational$ register\n", + " $$ \\lvert \\psi \\rangle = \\lvert 0 \\rangle^{\\otimes 10}_p \\lvert 0 \\rangle^{\\otimes 10}_c $$
        8. \n", + " \n", + "
        9. Apply Hadamard gate on all ther qubits of the first register to create a uniform superposition of all $2^{10}$ possible values \n", + " $$ \\lvert \\psi \\rangle =\\frac{1}{\\sqrt{2^{10}}} \\sum_{x=0}^{2^{10}-1} \\lvert x \\rangle_p \\lvert 0 \\rangle_c $$
        10. \n", + " \n", + "
        11. Apply the modular exponentiation function $a^x \\, \\text{mod} \\, N_0$ on the second register, for each of the stored value of $x$ in the first register.\n", + " \n", + "$$ \\lvert \\psi \\rangle =\\frac{1}{\\sqrt{1024}} \\sum_{x=0}^{1023} \\lvert x \\rangle_p \\lvert 2^x \\, \\text{mod} \\, 21 \\rangle_c\n", + " = \\\\ = \\frac{1}{\\sqrt{1024}} \\left( \\lvert 0 \\rangle_p \\lvert 1 \\rangle_c + \\lvert 1 \\rangle_p \\lvert 2 \\rangle_c + \\lvert 2 \\rangle_p \\lvert 4 \\rangle_c + \\lvert 3 \\rangle_p \\lvert 8 \\rangle_c + \\lvert 4 \\rangle_p \\lvert 16 \\rangle_c + \\lvert 5 \\rangle_p \\lvert 11 \\rangle_c + \\lvert 6 \\rangle_p \\lvert 1 \\rangle_c + \\lvert 7 \\rangle_p \\lvert 2 \\rangle_c + \\lvert 8 \\rangle_p \\lvert 4 \\rangle_c ... \\right) $$\n", + " By looking at the values stored in the second register, we can find out what is their periodicity. In particular, it can be seen that the values start repeating with order $r=6$ (value of the first register). However, we need to do a few more steps to allow the quantum computer to find the answer by itself.
        12. \n", + " \n", + "
        13. To simplify the example, we will adopt the \"Principle of implicit measurement\": Without loss of generality, any qubits which are not measured at the end of the quantum circuit may be assumed to be measured. Thus, let us use the principle of implicit measurement on the second register. Since each term of the superposition has equal weight, each outcome is equally likely, therefore one will see one of the following values: $ \\lvert 1 \\rangle_c$ , $\\lvert 2 \\rangle_c$, $ \\lvert 4 \\rangle_c$, $\\lvert 8 \\rangle_c$, $\\lvert 16 \\rangle_c$, $\\lvert 11 \\rangle_c$; with probability $1/6$.\n", + " Assume that the state $ \\lvert 4 \\rangle_c$ is measured, then we are left with the composite state:\n", + " \n", + " $$ \\lvert \\psi \\rangle = \\frac{\\sqrt{6}}{\\sqrt{1024}} \\left( \\lvert 2 \\rangle_p \\lvert 4 \\rangle_c + \\lvert 8 \\rangle_p \\lvert 4 \\rangle_c + \\lvert 14 \\rangle_p \\lvert 4 \\rangle_c + \\lvert 20 \\rangle_p \\lvert 4 \\rangle_c ... \\right) $$
        14. \n", + " \n", + "
        15. Apply the QFT to the first register\n", + " $$ \\lvert x \\rangle_p \\rightarrow \\frac{1}{\\sqrt{1024}} \\sum_{s=0}^{1023} e^{2\\pi i \\frac{s x}{1024}}\\lvert s \\rangle_p $$\n", + " Which transform each of the terms in the period register as:\n", + " $$ \\lvert 2 \\rangle_p \\rightarrow \\frac{1}{\\sqrt{1024}} \\sum_{s=0}^{1023} e^{2\\pi i \\frac{2 s}{1024}}\\lvert s \\rangle_p $$\n", + " $$ \\lvert 8 \\rangle_p \\rightarrow \\frac{1}{\\sqrt{1024}} \\sum_{s=0}^{1023} e^{2\\pi i \\frac{8 s}{1024}}\\lvert s \\rangle_p $$\n", + " $$ \\lvert 14 \\rangle_p \\rightarrow \\frac{1}{\\sqrt{1024}} \\sum_{s=0}^{1023} e^{2\\pi i \\frac{14 s}{1024}}\\lvert s \\rangle_p $$\n", + " $$ \\lvert 20 \\rangle_p \\rightarrow \\frac{1}{\\sqrt{1024}} \\sum_{s=0}^{1023} e^{2\\pi i \\frac{20 s}{1024}}\\lvert s \\rangle_p $$\n", + " $$...$$\n", + " \n", + " So, we can write:\n", + " $$ \\lvert \\psi \\rangle = \\frac{\\sqrt{6}}{1024} \\sum_{s=0}^{1023} \\left( e^{2\\pi i \\frac{2s}{1024}} + e^{2\\pi i \\frac{8s}{1024}} + e^{2\\pi i \\frac{14s}{1024}} + e^{2\\pi i \\frac{20s}{1024}} ... \\right) \\lvert s \\rangle_p \\lvert 4 \\rangle_c = \\\\\n", + " = \\frac{\\sqrt{6}}{1024} \\sum_{s=0}^{1023} e^{2\\pi i \\frac{2s}{1024}} \\left( 1 + e^{2\\pi i \\frac{6s}{1024}} + e^{2\\pi i \\frac{12s}{1024}} + e^{2\\pi i \\frac{18s}{1024}} ... \\right) \\lvert s \\rangle_p \\lvert 4 \\rangle_c$$\n", + "
        16. \n", + "\n", + "
        17. Measure the period register. The probability of finding a certain value $\\lvert s \\rangle_p$ is:\n", + " $$ P(s) = \\lvert \\frac{\\sqrt{6}}{1024} e^{2\\pi i \\frac{2s}{1024}} \\left( 1 + e^{2\\pi i \\frac{6s}{1024}} + e^{2\\pi i \\frac{12s}{1024}} + e^{2\\pi i \\frac{18s}{1024}} ... \\right) \\rvert^2 $$\n", + " \n", + " Because of the possible sign difference between all different terms, the values of $s$ which have the highest likelyhood to be observed are the ones for which the phase terms all have the same sign and they add up. That is, $\\frac{s}{1024}=\\frac{d}{6}$, where $d$ is an integer. Therefore, a value $s=\\frac{1024 \\cdot d}{6}$ where $d=1,2,3,...$ will most likely be observed.\n", + " Let us assume that the value $s=853$ is measured.\n", + "
        18. \n", + "\n", + "
        19. To find the period from the value of $s$ measured, one then uses the continued fraction algorithm in the following way: we find the fraction $\\frac{d}{r}$ which approximates the fraction $\\frac{s}{Q}$ to a fixed precision $2*Q$\n", + " $$\\lvert \\frac{853}{1024} - \\frac{d}{r} \\rvert < \\frac{1}{2048} $$\n", + " So, let's find $d$ and $r$ with the continued fraction algorithm:\n", + " $$ \\frac{853}{1024} = 0 + \\frac{1}{1 + \\frac{1}{4+ \\frac{1}{1+\\frac{1}{1+\\frac{1}{1+\\frac{1}{84+\\frac{1}{2}}}}}}} $$\n", + " which gives as possible fractions $\\frac{d}{r}$: $\\frac{1}{1}$, $\\frac{4}{5}$, $\\frac{5}{6}$, ...\n", + " \n", + " imposing the condition written above, we find that the only fraction satisfying it is $\\frac{d}{r} = \\frac{5}{6}$. Therefore, the period is $r=6$!\n", + "
        20. \n", + " \n", + "
        21. Once the period has been found, we can find the factors of $N_0=21$ almost immediately. First check if $r$ is even then check if $a^{\\frac{r}{2}} + 1 \\, \\text{mod} \\, N_0 \\neq -1 $ :\n", + " $$ 6 \\, \\text{mod} \\, 2 = 0 $$\n", + " $$ 2^{\\frac{6}{2}} + 1 \\, \\text{mod} \\, 21 = 9$$\n", + " Therefore the two factors are: $ p = \\text{gcd}\\left(a^{\\frac{r}{2}} + 1,N_0 \\right)$ and $q = \\text{gcd}\\left(a^{\\frac{r}{2}} - 1,N_0 \\right)$\n", + " $$p = \\text{gcd}\\left(9,21 \\right) = 3$$\n", + " $$q = \\text{gcd}\\left(7,21 \\right) = 7$$\n", + "
        22. \n", + "\n", + "
        \n", + "\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "\n", + "
          \n", + "
        1. \n", + "Calculate the following modular expression:\n", + "\n", + "
            \n", + "
          1. \n", + "$ 54 \\, \\text{(mod 5)}$\n", + "
          2. \n", + "
          3. \n", + "$ 54 \\times 35 \\, \\text{(mod 17)}$\n", + "
          4. \n", + "
          5. \n", + "$ 9^{2} \\, \\text{(mod 6 )}$\n", + "
          6. \n", + "
          \n", + "
        2. \n", + "\n", + "
        3. \n", + "Rewrite the following fractions using the continued fraction algorithm\n", + "\n", + "
            \n", + "
          1. \n", + "$ \\frac{45}{251}$\n", + "
          2. \n", + "
          3. \n", + "$ \\frac{71}{385}$\n", + "
          4. \n", + "
          5. \n", + "$ \\frac{512}{1027}$\n", + "
          6. \n", + "
          \n", + "\n", + "
        4. \n", + "\n", + "
        5. \n", + "What is the minimum number of qubits needed to factor:\n", + "\n", + "
            \n", + "
          1. \n", + "$ 15 $\n", + "
          2. \n", + "\n", + "
          3. \n", + "$ 4,367,398 $\n", + "
          4. \n", + "
          \n", + "\n", + "
        6. \n", + "\n", + "
        7. \n", + "Derive the expression of the Quantum Fourier Transform of three qubits, similarly to how it is done in the example shown in Section 8.3\n", + "\n", + "
        8. \n", + "\n", + "
        9. \n", + "Following the steps highlighted in the example given in Section 8.5, show the factoring of $N_0=15$ with $a=2$.\n", + "
        10. \n", + "\n", + "
        11. \n", + "Write a QISKit program that calculates the QFT of three qubits in the state $\\lvert 010 \\rangle$ .\n", + "
        12. \n", + "\n", + "\n", + "
        " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "\n", + "[1] P. Shor, in Proc. 35th Annu. Symp. on the Foundations of\n", + "Computer Science, edited by S. Goldwasser (IEEE Computer\n", + "Society Press, Los Alamitos, California, 1994),\n", + "p. 124-134.\n", + "\n", + "\n", + "[2] L. M. K. Vandersypen, M. Steffen, G. Breyta, C. S. Yannoni,\n", + "M. H. Sherwood, and I. L. Chuang, Nature 414,\n", + "883 (2001).\n", + "\n", + "[3] Monz, T. et al., Science 351, 1068-1070 (2016).\n", + "\n", + "\n", + "[4] C. Y. Lu, D. E. Browne, T. Yang, and J. W. Pan, Physical\n", + "Review Letters 99, 250504 (2007).\n", + "\n", + "[5] E. Martin-Lopez, A. Laing, T. Lawson, R. Alvarez, X.-Q.\n", + "Zhou, and J. L. O'Brien, Nat Photon advance online publication (2012).\n", + "\n", + "[6] Lanyon, B. P. et al., Phys. Rev. Lett. 99, 250505 (2007).\n", + "\n", + "[7] A. Politi, J. C. F. Matthews, and J. L. O' Brien, Science 25, 1221 (2009).\n", + "\n", + "[8] E. Lucero, R. Barends, Y. Chen, J. Kelly, M. Mariantoni, A. Megrant, P. O'Malley, D. Sank, A. Vainsencher, J. Wenner, T. White, Y. Yin, A. N. Cleland and John M. Martinis, Nature Physics volume 8, 719-723 (2012).\n", + "\n", + "[9] P. J. Coles et al. (2018), arXiv:1804.03719.\n", + "\n", + "[10] J. A. Smolin, G. Smith, and A. Vargo, Nature (London) 499, 163-165 (2013).\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/intro2qc/9.Quantum criptography.ipynb b/community/awards/teach_me_quantum_2018/intro2qc/9.Quantum criptography.ipynb new file mode 100644 index 000000000..8c3b47782 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/intro2qc/9.Quantum criptography.ipynb @@ -0,0 +1,370 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
        " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "\n", + "HTML('''\n", + "
        ''')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 9. Quantum cryptography\n", + "\n", + "The advent of quantum computation, which introduces the possibility of using quantum mechanics for information processing, gave rise to the following question: can quantum information be shared more securely than classical information?\n", + "\n", + "In 1982, a very interesting property of quantum states was discovered [1,2]. This is the so-called \"no-cloning theorem\", which proved how the laws of quantum mechanics prohibit the copy of an unknown quantum state. Therefore, the no-cloning theorem assures us that qubits can hide the quantum information better than classical bits. \n", + "\n", + "This has important implication for example for secure communications, where it allows for the sharing of private keys which cannot be eavesdropped by a third party. We consider the first protocol, the BB84 protocol, which exploits the quantum mechanical properties of qubits for secure exchange of a secret key between two parties. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 9.1 No-cloning theorem\n", + "\n", + "Let us prove the no-cloning theorem, the fact that an unknown quantum state cannot be copied.\n", + "First let us clearly state our problem:\n", + "\n", + "We have a qubit in an unknown quantum state $\\lvert \\psi \\rangle$ and we wish to copy his state on another qubit initilized to the state $\\lvert s \\rangle$. Therefore, we want to implement the following quantum gate:\n", + "\n", + "\\begin{equation}\n", + "U\\lvert \\psi \\rangle \\lvert s \\rangle =\\lvert \\psi \\rangle \\lvert \\psi \\rangle \n", + "\\end{equation}\n", + "\n", + "Let us take the unknown quantum state to be \n", + "\n", + "\\begin{equation}\n", + "\\lvert \\psi \\rangle =\\alpha \\lvert 0 \\rangle + \\beta \\lvert 1 \\rangle \n", + "\\end{equation}\n", + "\n", + "where the amplitudes $\\alpha$ and $\\beta$ are unknown.\n", + "Therefore we have:\n", + "\n", + "\\begin{equation}\n", + "U\\lvert \\psi \\rangle \\lvert s \\rangle =\\lvert \\psi \\rangle \\lvert \\psi \\rangle = (\\alpha \\lvert 0\\rangle +\\beta \\lvert 1\\rangle) (\\alpha \\lvert 0\\rangle +\\beta \\lvert 1\\rangle) = (\\alpha^2 \\lvert 0\\rangle \\lvert 0\\rangle + \\alpha \\beta \\lvert 0\\rangle \\lvert 1\\rangle + \\beta \\alpha \\lvert 1 \\rangle \\lvert 0\\rangle + \\beta^2 \\lvert 1\\rangle \\lvert 1\\rangle)\n", + "\\tag{1}\n", + "\\end{equation}\n", + "\n", + "\n", + "Because of the linearity of operators, we can equivalently write:\n", + "\n", + "\\begin{equation}\n", + "U\\lvert \\psi \\rangle \\lvert s \\rangle = U(\\alpha \\lvert 0\\rangle + \\beta \\lvert 1\\rangle )\\lvert s\\rangle = U(\\alpha \\lvert 0\\rangle \\lvert s\\rangle + \\beta \\lvert 1\\rangle \\lvert s\\rangle )=\\alpha \\lvert 00\\rangle +\\beta \\lvert 11\\rangle \n", + "\\tag{2}\n", + "\\end{equation}\n", + "\n", + "Comparing Eqs. (1) and (2), one can see that we come to a contraddiction! Thus, the operation $U$ which copies an unknown quantum state of a qubit onto another qubit is not possible." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 9.2 BB84 protocol\n", + "\n", + "\n", + "$$\\text{1. BB84 protocol overview.}$$\n", + "\n", + "In Ref. [3], the first protocol for the distribution of a secret quantum key between two parties is described.\n", + "\n", + "First, let us assume that Alice and Bob may exchange qubits and classical information. Also, Alice can prepare a qubit in the $\\lvert 0 \\rangle$, $\\lvert 1 \\rangle$, $\\lvert + \\rangle = \\frac{1}{\\sqrt{2}} \\left( \\lvert 0 \\rangle + \\lvert 1 \\rangle\\right)$ and $\\lvert - \\rangle = \\frac{1}{\\sqrt{2}} \\left( \\lvert 0 \\rangle - \\lvert 1 \\rangle\\right)$ state, and Bob can measure in the standard (Z) $\\left\\{ \\lvert 0 \\rangle, \\lvert 1 \\rangle \\right\\}$ basis and in the Hadamard (H) $\\left\\{ \\lvert + \\rangle, \\lvert - \\rangle \\right\\} $ basis. Note that the two bases are non-orthogonal with respect to each other. Measuring in the $\\left\\{ \\lvert + \\rangle, \\lvert - \\rangle \\right\\} $ basis means that before the standard measurement in the $\\left\\{ \\lvert 0 \\rangle, \\lvert 1 \\rangle \\right\\} $ basis, Bob applies the Hadamard gate to the qubit. Thus\n", + "\n", + "\\begin{equation}\n", + "\\lvert + \\rangle =\\frac{1}{\\sqrt{2}}(\\lvert 0\\rangle +\\lvert 1\\rangle )\n", + "\\end{equation}\n", + "\n", + "gives $\\lvert 0 \\rangle$ when measured in the Hadamard basis, and\n", + "\n", + "\\begin{equation}\n", + "\\lvert - \\rangle =\\frac{1}{\\sqrt{2}}(\\lvert 0\\rangle -\\lvert 1\\rangle )\n", + "\\end{equation}\n", + "\n", + "gives $\\lvert 1 \\rangle$ when measured in the Hadamard basis.\n", + "\n", + "\n", + "\n", + "The protocol then works in the following way. Alice picks the bit that she wants to transmit to Bob, either $0$ or $1$. She then prepares a qubit in the corresponding state $\\lvert 0 \\rangle$ or $\\lvert 1 \\rangle$, respectively. After that, she randomly decides whether or not to transform her qubit from the standard (Z) basis to the Hadamard (H) basis by applying or not the Hadamard gate her qubit, thus preparing the state $\\lvert + \\rangle$ or $\\lvert - \\rangle$. \n", + "\n", + "Then Alice sends her first qubit to Bob. Bob receives Alice's qubit, selects one of the measurement bases at random and measures it. After that, Alice and Bob tell each other which basis they used through a classical communication channel. \n", + "\n", + "In general, for every qubit Alice sends to Bob there are four possible scenarios:\n", + "\n", + "
          \n", + "
        1. \n", + "Both Alice and Bob used the Hadamard basis.\n", + "
        2. \n", + "\n", + "
        3. \n", + "They both used the standard basis.\n", + "
        4. \n", + "\n", + "
        5. \n", + "Alice transformed to the Hadamard basis, and Bob measured in the standard basis.\n", + "
        6. \n", + "\n", + "
        7. \n", + "Alice used the standard basis, and Bob the Hadamard basis.\n", + "
        8. \n", + "
        \n", + "\n", + "When Alice and Bob agree on the same basis, they keep the transferred bit. When they disagree, they discard it. Thus, it is possible for Alice and Bob to securely communicate an $n$ bit private key using $2n$ qubits.\n", + "\n", + "\n", + "#### Example \n", + "\n", + "For example, let us consider the case where Alice wants to send the bit $0$. She prepares her qubit in the $\\lvert 0 \\rangle$ state and then randomly selects whether or not she applies the Hadamard gate to it. Let's say she does apply the Hadamard gate to her qubit, obtaining the $\\lvert + \\rangle$ state. \n", + "\n", + "Then, consider, the cased where Bob measures the qubit in the standard basis. After Bob's measurement, Alice and Bob communicate through the classical channel. Alice tells Bob that she applied the Hadamard gate to her qubit and Bob tells Alice that he measured it in the standard basis. So, they abandon the first bit.\n", + "\n", + "\n", + "$$\\text{2. Example of one application of the BB84 protocol. In this case, Alice and Bob will discard this bit.}$$\n", + "\n", + "\n", + "Next, Alice picks a second bit, $1$, encodes it into a qubit and selects at random whether to apply or not the Hadamard gate. Let us now assume that she does not apply the Hadamard gate. Thus, the qubit is in the state $\\lvert 1\\rangle $. Alice then sends her qubit to Bob. Bob selects at random one of his two measurement bases. Let us consider in this\n", + "case that he measures in the standard basis. As the qubit is in the state $\\lvert 1\\rangle $ the outcome of the measurement will be $1$. Thus, Bob chooses value $1$ for his second classical bit, the same as Alice did. Finally, Alice tells Bob that she did not apply the Hadamard gate, and Bob tells Alice that he measured in the standard basis. So, both Alice and Bob will use the bit with the value $1$ as the first bit in their secret key.\n", + "\n", + "\n", + "\n", + "$$\\text{3. Example of another application of the BB84 protocol.} \\\\ \\text{In this case, Alice and Bob successfully communicate the value of a bit.}$$\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QISKit: BB84 protocol " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 1) Show the communication of one bit " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of gates:\n", + "x\n", + "h\n", + "measure\n", + "\n", + "The measured outcomes of the circuits are: {'0': 1}\n", + "Alice and Bob don't agree the same basis, thus they discard the bit\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/anaconda/lib/python3.6/site-packages/qiskit/backends/local/qasm_simulator_cpp.py:89: DeprecationWarning: The behavior of getting statevector from simulators by setting shots=1 is deprecated and will be removed. Use the local_statevector_simulator instead, or place explicit snapshot instructions.\n", + " DeprecationWarning)\n" + ] + } + ], + "source": [ + "from initialize import *\n", + "import random\n", + "\n", + "#initialize quantum program\n", + "my_alg = initialize(circuit_name = 'bb84', qubit_number=1, bit_number=1, backend = 'local_qasm_simulator', shots = 1)\n", + "\n", + "#add gates to the circuit\n", + "\n", + "# Alice encodes the bit 1 into a qubit\n", + "my_alg.q_circuit.x(my_alg.q_reg[0])\n", + "\n", + "# Alice randomly applies the Hadamard gate to go to the Hadamard basis\n", + "a = random.randint(0,1)\n", + "if a==1:\n", + " my_alg.q_circuit.h(my_alg.q_reg[0])\n", + " \n", + "# Bob randomly applies the Hadamard gate to go to the Hadamard basis\n", + "b = random.randint(0,1)\n", + "if b==1:\n", + " my_alg.q_circuit.h(my_alg.q_reg[0])\n", + "\n", + "my_alg.q_circuit.measure(my_alg.q_reg[0], my_alg.c_reg[0]) # measures first qubit\n", + "\n", + "# print list of gates in the circuit\n", + "print('List of gates:')\n", + "for circuit in my_alg.q_circuit:\n", + " print(circuit.name)\n", + "\n", + "#Execute the quantum algorithm\n", + "result = my_alg.Q_program.execute(my_alg.circ_name, backend=my_alg.backend, shots= my_alg.shots)\n", + "\n", + "#Show the results obtained from the quantum algorithm \n", + "counts = result.get_counts(my_alg.circ_name)\n", + "\n", + "print('\\nThe measured outcomes of the circuits are:',counts)\n", + "\n", + "if a == b:\n", + " print('Alice and Bob agree on the basis, thus they keep the bit')\n", + "else: \n", + " print(\"Alice and Bob don't agree the same basis, thus they discard the bit\")\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "### QISKit: EPR protocol " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#### 3) Show the communication of one bit " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "\n", + "
          \n", + "\n", + "
        1. \n", + "Alice wants to send Bob the following private key\n", + "\n", + "\\begin{equation}\n", + "101011\n", + "\\end{equation}\n", + "\n", + "She encodes those bits into the correspondig states of qubits and performs the gates H-H-I-I-I-H on each qubit. Bob measures the qubits in the following bases: Z-H-H-Z-H-H\n", + "\n", + "
            \n", + "
          1. \n", + "Find the possible outcomes of Bob's measurements\n", + "
          2. \n", + "\n", + "
          3. \n", + "Find the bits of the private key accepted by Alice and Bob\n", + "
          4. \n", + "
          \n", + "\n", + "
        2. \n", + "\n", + "
        3. \n", + "Imagine that a third party, Eve, intercepts Alice's qubits. She measures the intercepted qubit by randomly selecting either the Hadamard or the standard basis and then forwards the qubits to Bob.\n", + "\n", + "
            \n", + "
          1. \n", + "Is it possible for Eve to find out the bit that Alice is sending to Bob without being discovered?\n", + "
          2. \n", + "\n", + "
          3. \n", + "What is the probability that Eve successfully finds out the value of a bit?
          4. \n", + "
          \n", + "\n", + "
        4. \n", + "\n", + "
        5. \n", + "Write a QISKit program for the transmission of a 1024 bits provate key between Alice and Bob\n", + "
        6. \n", + "\n", + "
        " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "[1] D. Dieks, Physics Letters A, 92, 271 (1982).\n", + "\n", + "[2] W. K. Wootters and W. H. Zurek, Nature, 299.802 (1982).\n", + "\n", + "[3] C. H. Bennett and G. Brassard, In Proceedings of IEEE International Conference on Computers, Systems and Signal Processing, volume 175, page 8. New York, 1984." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/intro2qc/Qconfig.py b/community/awards/teach_me_quantum_2018/intro2qc/Qconfig.py new file mode 100755 index 000000000..9dbf714e8 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/intro2qc/Qconfig.py @@ -0,0 +1,2 @@ +APItoken="paste your API token here" +config = { "url": 'https://quantumexperience.ng.bluemix.net/api'} diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/10/bit_flip/bit_flip.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/10/bit_flip/bit_flip.001.jpeg new file mode 100755 index 000000000..42d1c8eac Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/10/bit_flip/bit_flip.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/10/bit_flip1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/10/bit_flip1.jpeg new file mode 100755 index 000000000..a074da20c Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/10/bit_flip1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/10/bit_flip2.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/10/bit_flip2.jpeg new file mode 100755 index 000000000..3f44e12a1 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/10/bit_flip2.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/10/phase_error/phase_error.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/10/phase_error/phase_error.001.jpeg new file mode 100755 index 000000000..37ec51410 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/10/phase_error/phase_error.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/10/phase_error1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/10/phase_error1.jpeg new file mode 100755 index 000000000..c33a47873 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/10/phase_error1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/10/phase_error2.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/10/phase_error2.jpeg new file mode 100755 index 000000000..58e40a8d9 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/10/phase_error2.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/2/hilbert_space/hilbert_space.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/2/hilbert_space/hilbert_space.001.jpeg new file mode 100755 index 000000000..b494d4fff Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/2/hilbert_space/hilbert_space.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/2/hilbert_space1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/2/hilbert_space1.jpeg new file mode 100755 index 000000000..70b6b8576 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/2/hilbert_space1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/2/operator/operator.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/2/operator/operator.001.jpeg new file mode 100755 index 000000000..dc844c5f0 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/2/operator/operator.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/2/operator1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/2/operator1.jpeg new file mode 100755 index 000000000..be5c0fdba Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/2/operator1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/2/operator2.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/2/operator2.jpeg new file mode 100755 index 000000000..c89428912 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/2/operator2.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/3/example/example.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/3/example/example.001.jpeg new file mode 100755 index 000000000..213dbb032 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/3/example/example.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/3/example1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/3/example1.jpeg new file mode 100755 index 000000000..bf8489a94 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/3/example1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/CX/CX.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/CX/CX.001.jpeg new file mode 100755 index 000000000..5132a934e Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/CX/CX.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/CX1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/CX1.jpeg new file mode 100755 index 000000000..bca94f8f5 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/CX1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/H/H.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/H/H.001.jpeg new file mode 100755 index 000000000..475609b72 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/H/H.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/H1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/H1.jpeg new file mode 100755 index 000000000..ee00bcbc4 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/H1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/I/I.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/I/I.001.jpeg new file mode 100755 index 000000000..59154f6c3 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/I/I.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/I1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/I1.jpeg new file mode 100755 index 000000000..631337844 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/I1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/R/R.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/R/R.001.jpeg new file mode 100755 index 000000000..5801c933b Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/R/R.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/R1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/R1.jpeg new file mode 100755 index 000000000..f3693b273 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/R1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/X/X.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/X/X.001.jpeg new file mode 100755 index 000000000..aa8ed2cfb Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/X/X.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/X1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/X1.jpeg new file mode 100755 index 000000000..55f5f73c5 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/X1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/Y/Y.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/Y/Y.001.jpeg new file mode 100755 index 000000000..e959804a3 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/Y/Y.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/Y1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/Y1.jpeg new file mode 100755 index 000000000..277376f2a Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/Y1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/Z/Z.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/Z/Z.001.jpeg new file mode 100755 index 000000000..f0025e4c4 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/Z/Z.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/Z1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/Z1.jpeg new file mode 100755 index 000000000..f2b37b290 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/Z1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/multi_qubit/multi_qubit.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/multi_qubit/multi_qubit.001.jpeg new file mode 100755 index 000000000..64585ab2b Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/multi_qubit/multi_qubit.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/4/multi_qubit1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/multi_qubit1.jpeg new file mode 100755 index 000000000..554e668e6 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/4/multi_qubit1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/5/deutsch/deutsch2.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/deutsch/deutsch2.jpeg new file mode 100755 index 000000000..a745ce260 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/deutsch/deutsch2.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/5/deutsch2.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/deutsch2.jpeg new file mode 100755 index 000000000..a745ce260 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/deutsch2.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/5/deutsch_ex/deutsch_ex.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/deutsch_ex/deutsch_ex.001.jpeg new file mode 100755 index 000000000..f213536ec Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/deutsch_ex/deutsch_ex.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/5/deutsch_ex1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/deutsch_ex1.jpeg new file mode 100755 index 000000000..af50fe8fd Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/deutsch_ex1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/5/simon/simon.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/simon/simon.001.jpeg new file mode 100755 index 000000000..fc34f98ec Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/simon/simon.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/5/simon1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/simon1.jpeg new file mode 100755 index 000000000..c4d57396b Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/simon1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/5/simon_ex/simon_ex.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/simon_ex/simon_ex.001.jpeg new file mode 100755 index 000000000..a061a8a4f Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/simon_ex/simon_ex.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/5/simon_ex1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/simon_ex1.jpeg new file mode 100755 index 000000000..8618478ea Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/simon_ex1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/5/simon_ex2.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/simon_ex2.jpeg new file mode 100755 index 000000000..2cfffacd8 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/simon_ex2.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/5/vazirani/vazirani.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/vazirani/vazirani.001.jpeg new file mode 100755 index 000000000..c30435b4e Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/vazirani/vazirani.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/5/vazirani1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/vazirani1.jpeg new file mode 100755 index 000000000..17b9b41f4 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/vazirani1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/5/vazirani_ex/vazirani_ex.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/vazirani_ex/vazirani_ex.001.jpeg new file mode 100755 index 000000000..7967576d2 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/vazirani_ex/vazirani_ex.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/5/vazirani_ex1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/vazirani_ex1.jpeg new file mode 100755 index 000000000..e355343ae Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/5/vazirani_ex1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/6/bell_st/bell_st.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/bell_st/bell_st.001.jpeg new file mode 100755 index 000000000..aa918aaa2 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/bell_st/bell_st.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/6/bell_st1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/bell_st1.jpeg new file mode 100755 index 000000000..0a4ea9007 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/bell_st1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/6/superdense/superdense.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/superdense/superdense.001.jpeg new file mode 100755 index 000000000..7d2312acb Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/superdense/superdense.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/6/superdense1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/superdense1.jpeg new file mode 100755 index 000000000..91b45782a Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/superdense1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/6/superdense3.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/superdense3.jpeg new file mode 100755 index 000000000..719220dbd Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/superdense3.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/6/superdense_st/superdense_st.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/superdense_st/superdense_st.001.jpeg new file mode 100755 index 000000000..ff8727d70 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/superdense_st/superdense_st.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/6/superdense_st1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/superdense_st1.jpeg new file mode 100755 index 000000000..b26369f64 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/superdense_st1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/6/teleportation/teleportation.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/teleportation/teleportation.001.jpeg new file mode 100755 index 000000000..7a7e75757 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/teleportation/teleportation.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/6/teleportation1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/teleportation1.jpeg new file mode 100755 index 000000000..117d63893 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/teleportation1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/6/teleportation2.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/teleportation2.jpeg new file mode 100755 index 000000000..34b93723f Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/teleportation2.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/6/teleportation_bell/teleportation_bell.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/teleportation_bell/teleportation_bell.001.jpeg new file mode 100755 index 000000000..7052705a5 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/teleportation_bell/teleportation_bell.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/6/teleportation_bell1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/teleportation_bell1.jpeg new file mode 100755 index 000000000..38a659c59 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/6/teleportation_bell1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/8/QFT/QFT.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/8/QFT/QFT.001.jpeg new file mode 100755 index 000000000..a9bbc1eae Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/8/QFT/QFT.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/8/QFT1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/8/QFT1.jpeg new file mode 100755 index 000000000..7c0b3a148 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/8/QFT1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/8/QFT_ex/QFT_ex.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/8/QFT_ex/QFT_ex.001.jpeg new file mode 100755 index 000000000..6be6a77fb Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/8/QFT_ex/QFT_ex.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/8/QFT_ex1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/8/QFT_ex1.jpeg new file mode 100755 index 000000000..b809e6fa2 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/8/QFT_ex1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/8/shor/shor.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/8/shor/shor.001.jpeg new file mode 100755 index 000000000..e220c6c3d Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/8/shor/shor.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/8/shor1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/8/shor1.jpeg new file mode 100755 index 000000000..c54c621f9 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/8/shor1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84/bb84.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84/bb84.001.jpeg new file mode 100755 index 000000000..4aec989f8 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84/bb84.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb841.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb841.jpeg new file mode 100755 index 000000000..6f5b24022 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb841.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_eve/bb84_eve.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_eve/bb84_eve.001.jpeg new file mode 100755 index 000000000..c3695cfa5 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_eve/bb84_eve.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_eve1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_eve1.jpeg new file mode 100755 index 000000000..c50df7388 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_eve1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_ex/bb84_ex.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_ex/bb84_ex.001.jpeg new file mode 100755 index 000000000..85855ae14 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_ex/bb84_ex.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_ex1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_ex1.jpeg new file mode 100755 index 000000000..82d34c6ab Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_ex1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_ex_2/bb84_ex_2.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_ex_2/bb84_ex_2.001.jpeg new file mode 100755 index 000000000..59067b282 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_ex_2/bb84_ex_2.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_ex_21.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_ex_21.jpeg new file mode 100755 index 000000000..6f07a5b58 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/bb84_ex_21.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/9/epr/epr.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/epr/epr.001.jpeg new file mode 100755 index 000000000..359f04258 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/epr/epr.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/9/epr2.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/epr2.jpeg new file mode 100755 index 000000000..046296cbe Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/epr2.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/9/private/private.001.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/private/private.001.jpeg new file mode 100755 index 000000000..6d6def0a0 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/private/private.001.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/figures/9/private1.jpeg b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/private1.jpeg new file mode 100755 index 000000000..0f25daf14 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/intro2qc/figures/9/private1.jpeg differ diff --git a/community/awards/teach_me_quantum_2018/intro2qc/initialize.py b/community/awards/teach_me_quantum_2018/intro2qc/initialize.py new file mode 100755 index 000000000..cb45bc790 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/intro2qc/initialize.py @@ -0,0 +1,20 @@ +from qiskit import * + +class initialize: + def __init__(self, circuit_name, qubit_number, bit_number, backend, shots): + self.shots = shots # the number of times the algorithm is going to be run + self.backend = backend # the backend selected to run the algorithm + self.circ_name = circuit_name + self.qubit_num = qubit_number + self.bit_num = bit_number + + # Define the specifcs of the quantum program + + # Create a quantum register. This will contain the qubits on which the algorithm is run + self.q_reg = QuantumRegister(self.qubit_num,'q') + + # Create a classical register. This will store the result of measurements of the qubits + self.c_reg = ClassicalRegister(self.bit_num,'c') + + # Create quantum circuit + self.q_circuit = QuantumCircuit(self.q_reg,self.c_reg,name='test') diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/00_Course_Introduction.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/00_Course_Introduction.ipynb new file mode 100644 index 000000000..64a6243b0 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/00_Course_Introduction.ipynb @@ -0,0 +1,97 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Course overview\n", + "\n", + "The lecture notes and coding examples are presented in Jupyter notebooks. This ensures that the physics of a topic is immediately made operational in code and that you can try making changes to verify that you understand the underlying concepts. These notebooks are meant to be complementary to the video lectures, video quizzes, and assignments. \n", + "\n", + "The goal of this course is to show what benefits quantum technologies can provide to machine learning. In particular, we split this goal to the following objectives:\n", + "\n", + "1. **Quantum systems**. Quantum states, evolution, measurements, closed and open quantum systems. Basics of quantum many-body physics.\n", + "\n", + "2. **Quantum computing**. Quantum computing paradigms and implementations. Know the limitation of current and near-future quantum technologies and the kind of the tasks where they outperform or are expected to outperform classical computers. Variational circuits. Uses of quantum annealing.\n", + "\n", + "3. **Classical-quantum hybrid learning algorithms**. Encoding classical information in quantum systems. Discrete optimization in machine learning. Variational models in unsupervised learning. Kernel methods. Sampling and probabilistic models. \n", + "\n", + "4. **Coherent learning protocols**. Quantum phase estimation and quantum matrix inversion. Gaussian processes on a quantum computer. Self-exponentiation and quantum principal component analysis. Preparing a Gram matrix.\n", + "\n", + "Quantum computing has two main paradigms, the gate model and quantum annealing:\n", + "\n", + "\"The\n", + "\n", + "As you will see, the two are quite different, but there are overlaps in what you can use them for. Both paradigms have a lot to offer to machine learning, and therefore we will study both.\n", + "\n", + "Each module in the course has several notebooks. To execute them, you have to install a handful of packages -- the details are in the subsequent sections of this notebook. The notebooks often have references to previous notebooks and therefore it is recommended to study them in order. The way quantum computing packages are structured, it is inevitable that some gate operations are used prior to their formal introduction. We kept these forward references to a minimum, but if you feel lost in the beginning, just refer to the notebook on circuits.\n", + "\n", + "# Environment\n", + "\n", + "We recommend you to use the [Anaconda distribution](https://www.anaconda.com/download/), as it will simplify installing packages. The rest of this notebook assumes that you use Anaconda.\n", + "\n", + "We recommend you to create a virtual environment for the course to avoid any interference with your usual Python environment. The course uses Python 3 and the code will not work under Python 2. The recommended version is >=3.5. Execute this command from the command line to create a new environment for the course: `conda create -n qmlmooc python=3.7`. Once it installs some basic packages, activate the environment by `conda activate qmlmooc`. \n", + "\n", + "# Packages\n", + "\n", + "Almost all packages can be installed with conda: `conda install jupyter matplotlib networkx numpy scikit-learn scipy`.\n", + "\n", + "The only packages not available are the ones produced by quantum hardware vendors. We will use many of their packages. You can install these with pip: `pip install dwave-networkx dimod minorminer qiskit qiskit-aqua`. As a quick sanity check, if you can execute the following cell without error messages, you should not face problems with the rest of the notebooks:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:29:52.113807Z", + "start_time": "2018-11-19T19:29:51.038010Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], + "source": [ + "import matplotlib\n", + "import networkx\n", + "import numpy\n", + "import sklearn\n", + "import scipy\n", + "\n", + "import dwave_networkx\n", + "import dimod\n", + "import minorminer\n", + "import qiskit\n", + "import qiskit_aqua" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/00_Introduction to Qiskit.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/00_Introduction to Qiskit.ipynb new file mode 100644 index 000000000..06d1924db --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/00_Introduction to Qiskit.ipynb @@ -0,0 +1,483 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Getting started\n", + "\n", + "[Qiskit](https://www.qiskit.org/) is a comprehensive suite of a language allowing you to define circuits, a simulator, a collection of quantum algorithms, among other important components. For setting it up on your computer, please refer to the Qiskit documentation. Here we spell out the details of Qiskit that are critical for the rest of the notebooks.\n", + "\n", + "The most basic elements are quantum and classical register, and the quantum circuit:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:31:22.021333Z", + "start_time": "2018-11-19T19:31:21.244869Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], + "source": [ + "from qiskit import ClassicalRegister, QuantumRegister, QuantumCircuit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The classical registers hold measurement results. The quantum circuit takes gates that operate on the quantum registers. Once we define our algorithm in terms of gates and measurements, we need to execute the circuit:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:31:22.027087Z", + "start_time": "2018-11-19T19:31:22.023937Z" + } + }, + "outputs": [], + "source": [ + "from qiskit import execute" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The execution can happen on the quantum processing unit or on a classical simulator. We will rely on the simulator, which is called Aer in qiskit. If you want to try the algorithms we construct on the actual quantum hardware, you will need to set up tokens and manage your computational time, since you have a restricted amount of credit each day. This is the main reason we rely on Aer instead:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:31:22.046301Z", + "start_time": "2018-11-19T19:31:22.028982Z" + } + }, + "outputs": [], + "source": [ + "from qiskit import BasicAer" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This simulator has multiple backends, allowing us to do simulations with slightly different purposes, as we will see later.\n", + "\n", + "Qiskit is overly generously with numerical precision, which we suppress for the sake of better readability of the output:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:31:22.068246Z", + "start_time": "2018-11-19T19:31:22.048704Z" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "np.set_printoptions(precision=3, suppress=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Backends\n", + "\n", + "The most straightforward simulator backend does exactly what we would expect: it runs a quantum algorithm and writes the measurement results to classical registers. After running a circuit a few times on the simulator, we can inspect the statistics of the results. This backend is called `qasm_simulator`:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:31:22.088792Z", + "start_time": "2018-11-19T19:31:22.071616Z" + } + }, + "outputs": [], + "source": [ + "backend = BasicAer.get_backend('qasm_simulator')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us build the simplest possible circuit that has no gates and only a measurement on a single qubit, writing out the result to a single classical register:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:31:22.165317Z", + "start_time": "2018-11-19T19:31:22.091536Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "q = QuantumRegister(1)\n", + "c = ClassicalRegister(1)\n", + "circuit = QuantumCircuit(q, c)\n", + "circuit.measure(q[0], c[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We execute this circuit on the simulator and observe the statistics:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:31:22.237384Z", + "start_time": "2018-11-19T19:31:22.168525Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'0': 100}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "job = execute(circuit, backend, shots=100)\n", + "result = job.result()\n", + "result.get_counts(circuit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remember that the qubit registers are always initialized as $|0\\rangle$. Not surprisingly, out of a hundred executions, we get 0 a hundred times. If you executed this on the quantum processor, you might get some 1s -- that would be due to noise.\n", + "\n", + "If this was the only simulator backend, we would have a hard time debugging our quantum algorithms. Why? We would have to reconstruct the quantum state based on the measurements we make, which is not a trivial task in general. True, this is the only option we have on the actual hardware, but in a simulator, we have one more possibility: we could actually inspect the simulated quantum state (the wavefunction). Qiskit provides a backend for doing this called `statevector_simulator`." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:31:22.245468Z", + "start_time": "2018-11-19T19:31:22.240650Z" + } + }, + "outputs": [], + "source": [ + "backend = BasicAer.get_backend('statevector_simulator')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this case, we do not have to add measurements, unless the protocol we are implementing uses a measurement in its internal operation. So we can build a circuit without a measurement and inspect the quantum state directly. With this backend, an empty circuit needs at least an identity operation (`iden`), otherwise a simulation would throw an error." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:31:22.293374Z", + "start_time": "2018-11-19T19:31:22.248278Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1.+0.j 0.+0.j]\n" + ] + } + ], + "source": [ + "circuit = QuantumCircuit(q, c)\n", + "circuit.iden(q[0])\n", + "job = execute(circuit, backend)\n", + "state = job.result().get_statevector(circuit)\n", + "print(state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So in this case, we see it is the $|0\\rangle$ state, as opposed to observing just the measurement statistics. This is especially important because the type of measurements we can perform are extremely restricted: technically speaking, we always measure in the computational basis. This means that, for instance, the states $|1\\rangle$ and $-|1\\rangle$ are indistinguishable based on the measurement statistics." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Visualization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are three handy ways of visualizing what we are doing. The first one is drawing the circuit:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:31:23.135544Z", + "start_time": "2018-11-19T19:31:22.296300Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/tools/visualization/_circuit_visualization.py:206: DeprecationWarning: The current behavior for the default output will change in a future release. Instead of trying latex and falling back to mpl on failure it will just use \"text\" by default\n", + " '\"text\" by default', DeprecationWarning)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit.tools.visualization import circuit_drawer\n", + "q = QuantumRegister(1)\n", + "c = ClassicalRegister(1)\n", + "circuit = QuantumCircuit(q, c)\n", + "circuit.measure(q[0], c[0])\n", + "circuit_drawer(circuit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This gives a quick sanity check to see whether we correctly implemented some circuit.\n", + "\n", + "The second one shows the operation on the Bloch sphere, which is especially important for beginners to understand how rotations happen. Qiskit has a built-in function to plot a state on the Bloch sphere. This visualization method relies on the state vector simulator backend. For instance, let's compare the initial state $|0\\rangle$ and the Hadamard gate applied to it:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:31:24.105595Z", + "start_time": "2018-11-19T19:31:23.142061Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Initial state\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit.tools.visualization import plot_bloch_multivector\n", + "backend = BasicAer.get_backend('statevector_simulator')\n", + "circuit = QuantumCircuit(q, c)\n", + "circuit.iden(q[0])\n", + "job = execute(circuit, backend)\n", + "state = job.result().get_statevector(circuit)\n", + "print(\"Initial state\")\n", + "plot_bloch_multivector(state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After the Hadamard gate:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "After a Hadamard gate\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circuit.h(q[0])\n", + "job = execute(circuit, backend)\n", + "state = job.result().get_statevector(circuit)\n", + "print(\"After a Hadamard gate\")\n", + "plot_bloch_multivector(state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The third way of visualizing what happens is plotting the statistics of measurement results. Arguably, this is the most important for practical applications and debugging. This visualization needs the `qasm_simulator` backend." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:31:24.455598Z", + "start_time": "2018-11-19T19:31:24.109562Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Initial state statistics\n", + "Statistics if we apply a Hadamard gate\n" + ] + }, + { + "data": { + "image/png": "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l/Cd73xngPZg5DFAJekwcNppp9HS0sK6detob29n0aJFXHjhha/p88ILL+x/v3jxYt7whtLjk9vb27nqqqu4/PLLufjii/f3yUxaWlr2v//e977HrFmzBmFvRoZBfZyZJKmYUaNGceutt3LZZZfR0dHBlVdeSX19PbfccgsNDQ28853v5M4772Tx4sWMGjWKSZMm8ZWvfAWARx55hCVLlrB161a+9a1vAaXDtnPnzuW6665j586dZCbz5s3j85///FDu5mHF21i8jUWS1Im3sUiSNIAMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwMnkJR1xPnHPpKEuQQPg1qu3DervcwR6hHv88cd505vexOmnn85tt93WY79HH32U6upqli1bBsCDDz7IwoUL978mT57MihUr2Llz52vaZ86cyU033TRYuyNJg8YR6BGso6ODT3ziEyxatIi6ujrOP/98LrzwQk455ZTX9Nu5cyd33nknp59++v6297znPbznPe8BYNWqVVx55ZXMnz8fgB/+8If7+5133nlcdNFFg7A3kjS4HIEewZYuXcpJJ53E9OnTGTNmDJdeeimLFy8+oN8tt9zCDTfcwFFHHdXtdh566CHe/e53H9D+3HPP0dbWxllnndXvtUvSUDNAj2Ctra2ccMIJ+z/X1dXR2tr6mj4///nP2bhxI+94xzt63M7DDz/MpZdeekD7Qw89xCWXXEJE9F/RkjRMGKBHsO4ept457H7961/zqU99is997nM9buPpp59m3LhxzJkz54BlixYt6nZkKkkjgQF6BKurq2Pjxo37P2/atInjjz9+/+eXXnqJpqYmLrroIhYsWMDTTz/NlVdeuf9CIug5JFeuXElHRwennnrqwO6EJA0RA/QIdtppp9HS0sK6detob29n0aJFXHjhhfuXT5w4kTVr1tDY2EhjYyNnnHEG3/zmN2loaABKI9RHH320x8O33bVL0khhgB7BRo0axa233spll13GmWeeycUXX0x9fT233HJLtxcTdbVkyRLq6uqYPn36AcseeeQRD99KGtGiu/NgR4qGhoZ84oknhroMSYPMiRRGpv6aSKG6unppZp5xsH6OQCVJKsAAlSSpAANUkqQCDFBJkgowQCVJKsAAlSSpAANUkqQCDFBJkgowQCVJ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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit.tools.visualization import plot_histogram\n", + "backend = BasicAer.get_backend('qasm_simulator')\n", + "q = QuantumRegister(1)\n", + "c = ClassicalRegister(1)\n", + "circuit = QuantumCircuit(q, c)\n", + "circuit.measure(q[0], c[0])\n", + "job = execute(circuit, backend, shots=1000)\n", + "print(\"Initial state statistics\")\n", + "plot_histogram(job.result().get_counts(circuit))\n", + "circuit = QuantumCircuit(q, c)\n", + "circuit.h(q[0])\n", + "circuit.measure(q[0], c[0])\n", + "job = execute(circuit, backend, shots=1000)\n", + "print(\"Statistics if we apply a Hadamard gate\")\n", + "plot_histogram(job.result().get_counts(circuit))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we can see, the 'perfect' nature of the simulator is reflected again in getting all 0s for the initial state, and a distribution very close to uniform after applying the Hadamard gate. In a longer circuit on real quantum hardware, these statistics would be heavily affected by noise." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/01_Classical and Quantum Probability Distributions.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/01_Classical and Quantum Probability Distributions.ipynb new file mode 100644 index 000000000..808ba9515 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/01_Classical and Quantum Probability Distributions.ipynb @@ -0,0 +1,890 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Probability theory is a cornerstone for machine learning. We can think of quantum states as probability distributions with certain properties that make them different from our classical notion of probabilities. Contrasting these properties is an easy and straightforward introduction to the most basic concepts we need in quantum computing.\n", + "\n", + "Apart from probability theory, linear algebra is also critical for many learning protocols. As we will see, geometry and probabilities are intrinsically linked in quantum computing, but geometric notions are also familiar in dealing with classical probability distributions. This notebook first talks about classical probabilities and stochastic vectors, and introduces quantum states as a natural generalization.\n", + "\n", + "Throughout this course, we will assume finite probability distributions and finite dimensional spaces. This significantly simplifies notation and most quantum computers operate over finite dimensional spaces, so we do not lose much in generality.\n", + "\n", + "\n", + "# Classical probability distributions\n", + "\n", + "Let us toss a biased coin. Without getting too technical, we can associate a random variable $X$ with the output: it takes the value 0 for heads and the value 1 for tails. We get heads with probability $P(X=0) = p_0$ and tails with $P(X=1) = p_1$ for each toss of the coin. In classical, Kolmogorovian probability theory, $p_i\\geq 0$ for all $i$, and the probabilities sum to one: $\\sum_i p_i = 1$. Let's sample this distribution" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:47:57.736024Z", + "start_time": "2018-11-19T19:47:57.668891Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 1 1 1\n", + " 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0\n", + " 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "n_samples = 100\n", + "p_1 = 0.2\n", + "x_data = np.random.binomial(1, p_1, (n_samples,))\n", + "print(x_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We naturally expect that the empirically observed frequencies also sum to one:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:47:57.747061Z", + "start_time": "2018-11-19T19:47:57.741685Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0000000000000004\n" + ] + } + ], + "source": [ + "frequency_of_zeros, frequency_of_ones = 0, 0\n", + "for x in x_data:\n", + " if x:\n", + " frequency_of_ones += 1/n_samples\n", + " else:\n", + " frequency_of_zeros += 1/n_samples\n", + "print(frequency_of_ones+frequency_of_zeros)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since $p_0$ and $p_1$ must be non-negative, all possible probability distributions are restricted to the positive orthant. The normalization constraint puts every possible distribution on a straight line. This plot describes all possible probability distributions by biased and unbiased coins." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:47:58.253755Z", + "start_time": "2018-11-19T19:47:57.751818Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "p_0 = np.linspace(0, 1, 100)\n", + "p_1 = 1-p_0\n", + "fig, ax = plt.subplots()\n", + "ax.set_xlim(-1.2, 1.2)\n", + "ax.set_ylim(-1.2, 1.2)\n", + "ax.spines['left'].set_position('center')\n", + "ax.spines['bottom'].set_position('center')\n", + "ax.spines['right'].set_color('none')\n", + "ax.spines['top'].set_color('none')\n", + "ax.set_xlabel(\"$p_0$\")\n", + "ax.xaxis.set_label_coords(1.0, 0.5)\n", + "ax.set_ylabel(\"$p_1$\")\n", + "ax.yaxis.set_label_coords(0.5, 1.0)\n", + "plt.plot(p_0, p_1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We may also arrange the probabilities in a vector $\\vec{p} = \\begin{bmatrix} p_0 \\\\ p_1 \\end{bmatrix}$. Here, for notational convenience, we put an arrow above the variable representing the vector, to distinguish it from scalars. You will see that quantum states also have a standard notation that provides convenience, but goes much further in usefulness than the humble arrow here.\n", + "\n", + "A vector representing a probability distribution is called a *stochastic vector*. The normalization constraint essentially says that the norm of the vector is restricted to one in the $l_1$ norm. In other words, $||\\vec{p}||_1 = \\sum_i |p_i| = 1$. This would be the unit circle in the $l_1$ norm, but since $p_i\\geq 0$, we are restricted to a quarter of the unit circle, just as we plotted above. We can easily verify this with numpy's norm function:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:47:58.267761Z", + "start_time": "2018-11-19T19:47:58.257885Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p = np.array([[0.8], [0.2]])\n", + "np.linalg.norm(p, ord=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We know that the probability of heads is just the first element in the $\\vec{p}$, but since it is a vector, we could use linear algebra to extract it. Geometrically, it means that we project the vector to the first axis. This projection is described by the matrix $\\begin{bmatrix} 1 & 0\\\\0 & 0\\end{bmatrix}$. The length in the $l_1$ norm gives the sought probability:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:47:58.296678Z", + "start_time": "2018-11-19T19:47:58.272116Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.8" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Π_0 = np.array([[1, 0], [0, 0]])\n", + "np.linalg.norm(Π_0.dot(p), ord=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can repeat the process to get the probability of tails:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:47:58.312414Z", + "start_time": "2018-11-19T19:47:58.301148Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.2" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Π_1 = np.array([[0, 0], [0, 1]])\n", + "np.linalg.norm(Π_1.dot(p), ord=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The two projections play an equivalent role to the values 0 and 1 when we defined the probability distribution. In fact, we could define a new random variable called $\\Pi$ that can take the projections $\\Pi_0$ and $\\Pi_1$ as values and we would end up with an identical probability distribution. This may sound convoluted and unnatural, but the measurement in quantum mechanics is essentially a random variable that takes operator values, such as projections." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What happens when we want to transform a probability distribution to another one? For instance, to change the bias of a coin, or to describe the transition of a Markov chain. Since the probability distribution is also a stochastic vector, we can apply a matrix on the vector, where the matrix has to fulfill certain conditions. A left *stochastic matrix* will map stochastic vectors to stochastic vectors when multiplied from the left: its columns add up to one. In other words, it maps probability distributions to probability distributions. For example, starting with a unbiased coin, the map $M$ will transform the distribution to a biased coin:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:47:58.328764Z", + "start_time": "2018-11-19T19:47:58.316399Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9999999999999999" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p = np.array([[.5], [.5]])\n", + "M = np.array([[0.7, 0.6], [0.3, 0.4]])\n", + "np.linalg.norm(M.dot(p), ord=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One last concept that will come handy is entropy. A probability distribution's entropy is defined as $H(p) = - \\sum_i p_i \\log p_i$. Let us plot it over all possible probability distributions of coin tosses:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:47:58.829415Z", + "start_time": "2018-11-19T19:47:58.337314Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEMCAYAAADXiYGSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xd81dX9x/HXJ5NMCBkQSEIgQNgECNMF4gCL0FZUtFi1VhxVS6vtT63aVu3WamsFxVHcgNQqWNAKgqDsEUaAQJgJATIIgex1fn8kaooIlyT3njs+z8eDR3Nvvvnet98m93PPOd9zjhhjUEoppc7Fz3YApZRSnkELhlJKKYdowVBKKeUQLRhKKaUcogVDKaWUQ7RgKKWUcogWDKWUUg7RgqGUUsohWjCUUko5JMB2gOaKiYkxycnJtmMoL1VdW09VbR1VtfVU1dZTU1tPTZ2huq6e+rOsjlBTlAtAYHTCWc/vL0Kgvx+B/kJggB/BAX4EB/gTHOBHUIB+jlPOs3HjxkJjTGxzftZjC0ZycjIbNmywHUN5OGMMewvK2HSwmK2HT5CZd5JdR05RUVP31TEdQgNJiAohvm0Indq2IS6yDVGhQUSFBtI2JJDQ4ABCAv1pE+jHlEnjAZi34CPq6g2VtXVUVDf8O1FRQ3F5NcVl1Rw7WcWRkkqOlFSQc7yck5W1VAFVQFiQP73jI+nbKZL+Ce0Y0iWK5OhQRMTORVJeRUQONvdnPbZgKNUcxhiyjp3i8z2FrN5bxMZDxZworwEgIjiA3p0iuX5oIn3iI0mJC6NbTDhRYUEOnz+4sXWQ2D70vDIdL6tmX2EZ2fml7Dpyksy8k8zfmMtrqxv+ttuHBTGkSxSjUqK5qEcMKbHhWkCUy2nBUF6vrKqWlXsK+GRHPp/tLqCwtAqAbjFhXNmnI0O6RDG4SxTdYsLw82vZm/Ajjzxy3j8jIkSHBxMdHszQ5PZfPV9fb9hbUMqGg8VsPFjMuv3H+WTHMQA6RAYzumccl/XpwIXdYwgJ8m9RbqUcIZ66Wm16errRLin1bU5V1vDfzGN8uDWPL7KLqK6rp21IIJf0jOXCHjFc2D2GTu1CbMc8bznHy/kiu5CVewpZsbuAU1W1BAf4cVGPWK4eGM9lvTsQFqyfA9W3E5GNxpj0Zv2sFgzlLWrq6lm2K5/3Nh3m06x8qmvr6dwuhHH9OnJZ7w6kJ0cR6O/cAeWMjAwA0tLSnPo60DAw39DqOMpHmUc5drKKkEB/xvaO45rBCVzcMxb/FraYlPfRgqF82t6CUuatz+Ffmw5TWFpFTHgwEwbEc/XATgxOaufSvv7Ro0cDsHz5cpe9JjR0X60/cJyFW/P4z9YjFJfX0DGyDdcM6cz16UkkRTs+pqK8W0sKhrZdlUeqqzcs25XPa6sPsHJPIQF+wqW94rguPZFLUmOd3pJwN35+wvBu0QzvFs1jE/qydOcx5m3IYebyvcxYvpcxqXHcPCqZi7rHtHicRvkuLRjKo1RU1zFvQw4vf76PnOMVdIxswwNX9OS6oYnERbSxHc8tBAX4Mb5/POP7x3OkpIJ31uXw9tpD3PzqOrrFhHHbRV25ZnACbQJ1oFydH+2SUh7hRHk1s1cd4LVVBygur2FIlyhuu7Arl/fp4FatCVtdUudSXVvP4u1HeOXz/WzNLSEmPJhbL0jmppFdiGwTaDueciHtklJe60R5NS+v3M/sVQcorarlst5x3HlJCulNbj9V5xYU4MektM5MHNiJ1XuLeGHFPv7ycRYvfraXH1/UjVsvSCZCC4c6B21hKLdUWlXLSyv28ern+zlVVct3+sdz39gepHaMsB3trFatWgXAqFGjLCc5t+2HS3h2yR6W7DxG25BApl3cjR9d0FXndHg5vUtKeY2aunreWXeIvy3ZQ1FZNeP6dmT65T3o1THSdjSvtS23hGeX7Gbprnw6RAbz88t7MnlIot6S66W0YCiPZ4xh6c58frdoJ/sLyxjetT0PX9WbgYntbEc7L57Uwjjd+gPH+f2inWw+dIKeHcJ5dEIfLurRrDXqlBvTgqE82t6CUh5fuIPPdhfQPS6ch6/qxZjUOI9cK8ldB70dZYzho+1H+eNHuzhYVM4VfTrwyHf66DwOL6KD3sojlVfX8rele3hl5X5Cgvx5bEIfbhrZxa3uevI1IsL4/vFc2juOVz7fzz8+zeayZz7jzktSuHt0it6K6+O0YCgrlmXl8+j728ktruC69AR+Oa4XMeHBtmOpRsEB/tw9ujvfH5TAHxbv5O9L9/Dhljye/F4/RqXE2I6nLNGPcsqlikqruPedzdz6z/UEB/gx746R/HnyQC0Wbqpj2zb8bcog3rhtGLX1hhtfWssD726hpHFJeOVbtIWhXGbxtiM88v52TlbW8LPLenLn6G4EB2gXhye4qEcs//3Zxfx96R5eXLGPlXsK+OP3BzCmV5ztaMqFdNBbOV1xWTW/XpDJgi159O/clqeuHej28ymay5Wr1dqyLbeE+9/NYPexUq4dksCjV/fR2eIeRO+SUm5rVXYhP5+3haKyKu67tAd3jk7RQW0vUFVbx9+X7mHm8r10ahfC36akMaSLzr73BC0pGPqXq5yiuraePyzayQ9eWUtosD//vvsC7h3bw+uLxZIlS1iyZIntGE4XHODPL67sxbt3jkIErn1hNc98spvaunrb0ZQTaQtDtbqc4+X85O1NbM0t4cbhSTz6nT4+s9yEp8/DaI5TlTX8+oNM3tt8mPQuUTx34yDi23reboa+QlsYym38N/MoV/19JQcKy3hh6hB+/73+PlMsfFVEm0D+en0af5uSxs4jJ/nO3z9nxe4C27GUE2jBUK2ipq6eJz/cwbQ3NtI1Joz/3HcR4/p1tB1LudCktM4suPdCYsODufmf63j6v1nU1XtmD4Y6My0YqsWKSquY+vJaXv58Pz8c2YV37xxJYntdSsIXpcSG8/5PLmDy4ASe+zSbH81er3M2vIhLCoaIjBORLBHJFpEHv+WY60Rkh4hkisjbrsilWm774RIm/uMLMnJO8Mz1A3l8Uj+dW+HjQoL8+cu1A/nd9/qxam8hE5//nN3HTtmOpVqB0we9RcQf2A1cDuQC64EbjDE7mhzTA5gHXGqMKRaROGNM/tnOq4Pe9n2QcZhfzt9KdFgQL96UTv+EtrYjWZeVlQVAamqq5STuYcOB49z11ibKq2r56/VpXNlXuyltc/dB72FAtjFmnzGmGpgDTDrtmNuB540xxQDnKhbKLmMMz3yym5/OyWBgYjsW3HuhFotGqampWiyaSE9uz8J7LqR7hwjufHMjs1bsxVPvzFSuKRidgZwmj3Mbn2uqJ9BTRL4QkTUiMs4FuVQzVNbU8dM5Gfxt6R4mD0ngzduG6zpQTSxcuJCFCxfajuFWOrZtw9xpI7iqfzy/X7SLh97bRo3O1/BIrlhL6kybGpz+ESMA6AGMBhKAlSLSzxhz4n9OJDINmAaQlJTU+knVWRWXVfPj1zew8WAxvxyXyl2XpHjknhXO9PTTTwNw9dVXW07iXtoE+vPclEF0iwnjuU+zySkuZ+bUIbqkiIdxRQsjF0hs8jgByDvDMR8YY2qMMfuBLBoKyP8wxswyxqQbY9JjY3UnMFfKOV7ONS+sYtvhEmb8YDB3j+6uxUKdFz8/4f4rUnn62oGs3Xec615YzbGTlbZjqfPgioKxHughIl1FJAiYAiw47Zj3gTEAIhJDQxfVPhdkUw7IzCvh+zNXUXiqird+PJyr+sfbjqQ82DVDEnj1lqHkHC/n+zNWkZ1fajuScpDTC4Yxpha4B/gY2AnMM8ZkisjjIjKx8bCPgSIR2QEsA35hjClydjZ1bqv3FnH9i2sI8BPm3zWKocm6wJxquYt7xjL3jpFU1dYx+YVVbD5UbDuScoCuJaW+1ae7jnHXm5tIah/K67cN0/WBHOCLa0m1xKGicm56dS0Fp6p4+eZ03c3PBdz9tlrlgRZuyWPa6xvp2SGCuXeM1GLhoDfeeIM33njDdgyPkRQdyrt3jCQhKoRb/rmeJTuO2Y6kzkILhvqGuesPcd+czQxOiuLt24fTPizIdiSPkZiYSGJi4rkPVF+Ji2zD3Gkj6dWxYa7Ggi2n3xOj3IUWDPU/3l57iP/71zYu6hHLaz8aRoTe9nhe5s6dy9y5c23H8DhRYUG89ePhDO4SxfQ5m/kg47DtSOoMtGCor7y55iAP/3sbl/aK46UfDtFlyZth5syZzJw503YMjxTRJpDZtw5lWNf2/GxuBv/enGs7kjqNFgwFwBurD/DI+9sZ2yuOmVMH6wKCyorQoAD+ecswRnSL5ufztvCvjVo03IkWDMXbaw/x6AeZXNY7jhlaLJRlIUH+vHLzUEalRPPA/C3aPeVGtGD4uPc25fKr97cxJjWWGT8YosVCuYWQIH9e/uFQhiW35+fztvDR9qO2Iym0YPi0RduO8MC7WxjZLZqZU4cQFKC/Dsp9hAT588otQxmQ0JZ739nEsixdxNo2fYfwUct25XPfOw23zr70w3TaBGrLojXMnz+f+fPn247hNcKDA5h96zB6dojgzjc2snqvLgBhkxYMH9Swqc1GesdH8uqtQwkLdsWixb4hJiaGmBidrdya2oYE8sZtw0lqH8rtr29g++ES25F8lhYMH5N19BQ/mr2eTm1DmH3rUF1eupXNnj2b2bNn247hddqHBfH6bcNoGxLILf9cx4HCMtuRfJIWDB+Sc7ycH766lpAgf1770TCideOjVqcFw3ni24bw+m3DqDdw06trydel0V1OC4aPKC6r5uZX11FRXcdrPxpGYvtQ25GUOm8pseH885ahFJVW88NX13GqssZ2JJ+iBcMHVNbUcfvrG8g9UcHLNw+lV8dI25GUaraBie14YeoQsvNLufutTbrdqwtpwfBy9fWG++dtYcPBYv563UCGddX9LJTnu7hnLL//Xn9W7inkV//ehqdu0+Bp9PYYL/enj3bxn21HeGh8LyYM6GQ7jlKt5rqhieQUl/Pcp9kkRoVy79hv7OqsWpkWDC/29tpDvLhiH1NHJDHt4m624/iERYsW2Y7gU35+eU9yiyt4+pPdJEWHMimts+1IXk0LhpdavbeIxz7YziU9Y/nN1X0REduRfEJoqN5M4Eoiwp+uGcDh4gp+MX8rXaLDSEtsZzuW19IxDC90sKiMu97aSHJMGM/dOIgAf/2/2VVmzJjBjBkzbMfwKUEBfsycOpi4iGCmvb6BoyV6u62z6DuJlzlZWcNtrzXsdf7Kzek6Mc/F5s2bx7x582zH8DnR4cG8cvNQyqpquf31DVRU19mO5JW0YHiR+nrD9DkZHCgsY+YPhtAlOsx2JKVcJrVjBH+/YRDb80r4xfwteueUE2jB8CLPLtnNp7vy+fXVfRiZEm07jlIuN7Z3B355ZS8+3HqEl1busx3H67ikYIjIOBHJEpFsEXnwDN+/RUQKRCSj8d+PXZHLm3yceZS/f5rNtUMSmDqii+04Sllz5yXduKp/R/64eBef7ym0HcerOL1giIg/8DwwHugD3CAifc5w6FxjTFrjv5edncubZOeXcv+8LQxIaMsT3+2nd0QpnyYi/GXyQLrHhXPvO5vIOV5uO5LXcEULYxiQbYzZZ4ypBuYAk1zwuj6htKqWO97YQHCAHy9MHaL7Wli2fPlyli9fbjuGzwsLDuDFm9KprTfc+eZGKmt0ELw1uKJgdAZymjzObXzudNeIyFYRmS8iiS7I5fGMMTz03jb2F5bx3I2D6NQuxHYkpdxG15gwnr0+jcy8k/x24Q7bcbyCKwrGmfpHTr99YSGQbIwZACwBXjvjiUSmicgGEdlQUFDQyjE9z5trD7FwSx73X5HKqBTdtMcdPPXUUzz11FO2Y6hGY3t34M5LUnhn3SH+vTnXdhyP54qCkQs0bTEkAHlNDzDGFBljqhofvgQMOdOJjDGzjDHpxpj02NhYp4T1FFtzT/DEwh2MTo3lrktSbMdRjT788EM+/PBD2zFUEw9c0ZNhye15+L3t7Dl2ynYcj+aKgrEe6CEiXUUkCJgCLGh6gIjEN3k4Edjpglweq6Sihp+8vYmY8CCeuS4NPz8d5Fbq2wT4+/HcjYMIC/bnrrc2UVZVazuSx3J6wTDG1AL3AB/TUAjmGWMyReRxEZnYeNh9IpIpIluA+4BbnJ3LUxljePBfWzlyopLnbhxMVFiQ7UhKub0OkW3425RB7C0o5bcLM23H8VguWXzQGLMIWHTac481+foh4CFXZPF0c9bnsHj7UR4c34shXaJsx1HKY1zQPYZ7xnTnuU+zubBHLBMH6nL/50tnenuQPcdO8duFmVzYPYZpF+ly5e4oJCSEkBC9W81d/XRsDwYnteNX723T+RnNoAXDQ1TW1HHvO5sJCwrgr9cN1HELN7V48WIWL15sO4b6FgH+fvxtyiAQuG/OZt3e9TxpwfAQf1y8i11HT/HUtQOJi2xjO45SHiuxfSh/+H5/Nh86wbNLdtuO41G0YHiAz3YXMHvVAW69IJkxveJsx1Fn8cQTT/DEE0/YjqHOYcKATlyXnsDM5XvZcOC47TgeQwuGmysuq+YX726hR1w4/zeul+046hyWLl3K0qVLbcdQDnjs6r50jgrh5/O2UKq32jpEC4YbM8bwyAfbKS6v5pnr03SdKKVaUXhwAH+9Lo2c4nKe/FCXDnGEFgw3tmBLHv/ZeoTpl/WkX+e2tuMo5XWGJrfnjotTmLM+hyU7jtmO4/a0YLipIyUVPPL+doZ0ieKOi/UWWqWc5WeX96B3fCQPvreVotKqc/+AD9OC4Ya+XIW2pq6ep68dSIC//t/kKaKjo4mO1t0OPUlwgD/PXD+Qkooafr1AZ4GfjUtmeqvz869Nh1meVcCvr+5Dcozuy+1J/vWvf9mOoJqhV8dI7ru0B09/spsJA44wrl/8uX/IB+lHVzdztKSS3y7MZFhye24emWw7jlI+487RKfTtFMkj72+nuKzadhy3pAXDjRhjePjfDV1Rf5o8QGdze6CHHnqIhx7SZdE8UaC/H09dO5AT5TX8RhcoPCMtGG7k/YzDfLorn19c2Yuu2hXlkVavXs3q1attx1DN1Ds+knsv7cEHGXn8N/Oo7ThuRwuGmygqreLxhTsYnNSOW0Yl246jlM+6e0wKvTpG8OgH2zlVWWM7jlvRguEmfvefnZRW1fLHawbgr11RSlkT6O/Hn64ZQP6pKv7ycZbtOG5FC4YbWLmngPc2H+bOS1Lo2SHCdhylfN7AxIaW/htrDrLxYLHtOG5DC4ZlFdV1/Orf2+kWE8ZPxnS3HUe1UEJCAgkJCbZjqFZw/xWpxEe24eH3tlFdq8uggxYM655duptDx8v5/ff761pRXuDNN9/kzTfftB1DtYLw4ACe+G4/so6dYtaKvbbjuAUtGBbtOnqSl1fu57r0BEZ009nBSrmbsb078J3+8fz902wOFpXZjmOdFgxLjDE89n4mEW0CeHB8b9txVCuZPn0606dPtx1DtaJHJ/Qh0E/4zYJMjDG241ilBcOS9zYdZt2B4/zfuF60DwuyHUe1koyMDDIyMmzHUK2oY9s2/OzynizLKuC/Pr6irRYMC0oqavjD4p2kJbbj+vRE23GUUudw86hkUjtE8PjCHZRX++5mS1owLHj6v1kcL6vmye/20+U/lPIAgf5+PPHdfhw+UcE/Ps22HccalxQMERknIlkiki0iD57luMkiYkQk3RW5bNh+uIQ31xxk6oguuimSUh5kWNf2fH9QZ15auY+9BaW241jh9IIhIv7A88B4oA9wg4j0OcNxEcB9wFpnZ7LFGMNvF2bSLjSI+69ItR1HOUHPnj3p2bOn7RjKSR66qjdtAvx9dktXV7QwhgHZxph9xphqYA4w6QzHPQH8Gah0QSYrPtx6hPUHivnFlam0DQm0HUc5waxZs5g1a5btGMpJYiOCuW9sD5ZlFbBsV77tOC7nioLRGchp8ji38bmviMggINEY8+HZTiQi00Rkg4hsKCgoaP2kTlRRXccfFu2kT3wk1+lAt1Ie6+ZRyXSNCeOJ/+ygps63ZoC7omCcaVT3q5uZRcQPeAa4/1wnMsbMMsakG2PSY2NjWzGi881asY+8kkp+fXUfXVzQi02bNo1p06bZjqGcKCjAj0cn9GZfQRmvrz5oO45LuaJg5AJNP1InAHlNHkcA/YDlInIAGAEs8KaB77wTFcz8LJvvDIhnuM7o9mq7d+9m9+7dtmMoJxuTGsclPWN5dsluikqrbMdxGVcUjPVADxHpKiJBwBRgwZffNMaUGGNijDHJxphkYA0w0RizwQXZXOJPH+3CGHhofC/bUZRSrUBEeHRCbyqq63j6E9/5gOD0gmGMqQXuAT4GdgLzjDGZIvK4iEx09uvbtiXnBB9k5HH7Rd1IiAq1HUcp1Uq6x0UwdUQX5q7PYc+xU7bjuIRL5mEYYxYZY3oaY1KMMb9rfO4xY8yCMxw72ltaF8YYfrdoJzHhQdw5OsV2HKVUK7tvbA9CA/354+JdtqO4hM70dqIlO/NZt/84P72sJ+HBAbbjKBdIS0sjLS3NdgzlIu3Dgrh7THeW7spn9d4i23GcTjx19cX09HSzYYP7NkRq6+q58tkVGODj6RcT6K+1WSlvVFlTx6VPLSc6PJgPfnKB2y/3IyIbjTHNuqlI38WcZM76HPYWlPHguF5aLJTyYm0C/XngylS2HS5h4da8c/+AB9N3Micorarl2SW7Gda1PZf36WA7jnKhqVOnMnXqVNsxlIt9N60zfTtF8uePsqiqrbMdx2m0YDjBq5/vp7C0mofG90LEvZunqnXl5uaSm5trO4ZyMT8/4aHxvTl8ooK31hyyHcdptGC0suKyal5asY8r+nRgUFKU7ThKKRe5sEcMo1KieX5ZNqVV3rlnhhaMVvbCZ3spra7lgSt1NVqlfM0vrkylqKyaVz/fbzuKU2jBaEVHSyqZveoA30vrTM8OEbbjKKVcbFBSFJf36cBLK/ZRXFZtO06rO2fBEJGeoh3xDnnu0z3UG8PPLtf9EHzVyJEjGTlypO0YyqIHrkiltLqWFz7baztKq3NkNtl7QKKI7Aa2AVu//F9jjGetMe5EB4vKmLs+hxuHJ5HYXpcA8VV/+MMfbEdQlqV2jOB7aZ2ZveoAt17QlY5t29iO1GrO2cIwxvQD4oC7gauBFOBhYJuIHHVuPM/xt6V7CPAX7hnT3XYUpZRl0y/rSV294fll3rX/t0NjGMaYKmPMeqDUGHOvMWasMaYj0Nu58TzD/sIy3t98mJtGdCEu0ns+Tajzd80113DNNdfYjqEsS4oO5dr0BOauz+FISYXtOK3mfAe9/2cdEWNMcStm8VjPLd1DUIAf0y7WBQZ9XVFREUVF3r+mkDq3u0d3p94YZi73nrEMRwa9/yEitzVuo6qD36fZV1DK+xkNrYvYiGDbcZRSbiKxfUMrY84672llONLC2AoMAp4FIkRkh4i8KyK/FZHrnRvP/f3j02xtXSilzsjbWhmODHrPMsbcY4y5xBgTA1wB/BMoByY4O6A7+7J18cORydq6UEp9Q0MrI9FrWhnnPXHPGJPbuCHSn4wxNzkjlKf4unXRzXYU5SbGjh3L2LFjbcdQbuQnY1KoN4YZyzy/laG7+jTToaJy3s84zI8u6EpMuLYuVINHH33UdgTlZhKiGu+Y2pDDvZd29+g7KXVpkGZ6YcVeAvz8uF1bF0qpc7jzkhRq6+p5xcPXmNKC0QzHTlYyf0Muk9MT6ODBnxZU6xs/fjzjx4+3HUO5mS7RYUwY0Ik31xzkRLnnrjGlBaMZXvl8P7X19dypd0ap01RUVFBR4fmDm6r13TU6hbLqOl5bddB2lGbTgnGeTpRX8+aag0wc2ImkaF0zSinlmN7xkVzWO45/rtpPmYful+GSgiEi40QkS0SyReTBM3z/ThHZJiIZIvK5iPRxRa7mmL3qAOXVddw1WteMUkqdn7vHdOdEeQ3vrPPMXfmcXjBExB94HhgP9AFuOENBeNsY098Ykwb8Gfirs3M1R1lVLbNXHeCy3h1I7aj7XSilzs/gpChGdGvPSyv3eeTe365oYQwDso0x+4wx1cAcYFLTA4wxJ5s8DOO0Navcxdz1OZwor+HuMTp2oc5swoQJTJjg0/NZ1TncPbo7x05W8cHmPNtRzpsr5mF0BnKaPM4Fhp9+kIj8BPg5EARc6oJc56W2rp5Xv9jP0OQoBute3epbPPDAA7YjKDd3UY8YenWM4OXP93FtegKetD+dK1oYZ7oa32hBGGOeN8akAP8HPHLGE4lME5ENIrKhoMC1ezd9lHmU3OIKfnyRzrtQSjWfiHD7Rd3YfayUz3Z71h50rigYuUBik8cJwNnaYnOA757pG43rWqUbY9JjY2NbMeLZGWN4acU+usaEcVnvDi57XeV5Ro8ezejRo23HUG7u6oGd6BAZzEsr99mOcl5cUTDWAz1EpKuIBAFTgAVNDxCRHk0efgfY44JcDlt/oJgtuSX86MKu+Pt5TvNRKeWeggL8uGVUV77ILiIzr8R2HIc5vWAYY2qBe4CPgZ3APGNMpog8LiITGw+7R0QyRSSDhnGMm52d63zMWrGPqNBAJg9OsB1FKeUlbhyeRFiQPy+v9JzlQlyy+KAxZhGw6LTnHmvy9U9dkaM59haUsnTXMe4d052QIH/bcZRSXqJtSCDXDU3kjdUH+eW4VOLbhtiOdE460/scXv18P4H+ftw0Mtl2FKWUl/nRBV2pN4bZqw7YjuIQXd78LErKa3hv02EmDeykGyQph1x33XW2IygPktg+lCv7dmTOuhymj+3p9r0YWjDO4t2NOVTU1HHzqGTbUZSHuPvuu21HUB7m5lHJLN5+lA8yDjNlWJLtOGelXVLfoq7e8Prqg6R3iaJf57a24ygPUV5eTnl5ue0YyoMM79qeXh0jmL3qAMa45SIXX9GC8S2WZ+Vz6Hi5ti7Uebnqqqu46qqrbMdQHkREuHlUMruOnmLd/uO245yVFoxvMXvVATpEBjOuX0fbUZRSXu67aZ1pGxLIa6sP2I5yVlowzmBvQSkr9xQydXgXAv31EimlnCskyJ8pQxP5OPMYeSfcdwMufTc8g9dXHSBXOR6pAAASLklEQVTI348bhrv3AJRSyntMHdEFYwxvrXXfHfm0YJymtKqW+RtzmTAgnphwvZVWKeUaie1DGdu7A++sy3HbvTL0ttrTfJBxmLLqOqaO7GI7ivJAt9xyi+0IyoPdNKILn+w4xkfbjzIprbPtON+gBeM076w7RK+OEQxKbGc7ivJAWjBUS1zYPYak9qG8s+6QWxYM7ZJqYmvuCbYfPsmNw5M8alMT5T4KCwspLCy0HUN5KD8/YcqwRNbsO87eglLbcb5BC0YTb689REigP98d5H6VXXmGyZMnM3nyZNsxlAe7dkgiAX7CO2sP2Y7yDVowGp2qrGHBljyuHhhPZJtA23GUUj4qNiKYK/t2ZP6mXCpr3GvwWwtGo/cz8iivruPG4TrYrZSy64ZhSZwor+Gj7UdtR/kfWjBo2IL17bWH6BMfycAEXTdKKWXXqJRoukSH8rabdUtpwQC25Jaw84gOdiul3IOfn3DDsCTWHThOdv4p23G+ogUDmLs+hzaBfkxK62Q7ivJwd911F3fddZftGMoLTB6SQICfMG9Dru0oX/H5eRiVNXV8uCWPq/rFE6GD3aqFrr/+etsRlJeICQ/m0l5xvLfpML+8MpUAN1jXzn4Cyz7OPMqpqlompyfYjqK8QE5ODjk5ObZjKC8xeUgChaVVfLa7wHYUQAsG8zfmkhAVwoiu0bajKC9w0003cdNNN9mOobzEmF5xRIcFMX+je3RL+XTBOHyigs+zC7lmcAJ+fjrYrZRyL4H+fnx3UGeW7DzG8bJq23FcUzBEZJyIZIlItog8eIbv/1xEdojIVhFZKiIumQzx7025GNPQ7FNKKXc0eUgCNXWGBRmHbUdxfsEQEX/geWA80Ae4QUT6nHbYZiDdGDMAmA/82dm5jDHM35jLiG7tSWwf6uyXU0qpZukdH0m/zpHM32S/W8oVLYxhQLYxZp8xphqYA0xqeoAxZpkxprzx4RrA6R/5Nxws5kBROZOHJDr7pZRSqkUmD05g++GT7Dxy0moOVxSMzkDT20ZyG5/7NrcBi52aCJi/IZfQIH/G657dqhXdf//93H///bZjKC8zKa0zgf7Cu5bnZLhiHsaZRpPNGQ8UmQqkA5d8y/enAdMAkpKav31qZU0di7YdYXy/eMKCfX4qimpFV199te0IygtFhQVxaa84FmzJ41ff6Y2/pZt0XNHCyAWa9vskAHmnHyQilwG/AiYaY6rOdCJjzCxjTLoxJj02NrbZgZZn5XOqqlZndqtWl5WVRVZWlu0YygtNSutMYWkVq/cWWcvgioKxHughIl1FJAiYAixoeoCIDAJepKFY5Ds70IItecSEBzEqRedeqNZ1xx13cMcdd9iOobzQpb3iCA8OYMEWe3dLOb1gGGNqgXuAj4GdwDxjTKaIPC4iExsP+wsQDrwrIhkisuBbTtdipyprWLIznwkDOrnFVHullHJEm0B/ruzbkcXbj1rbJ8MlHfjGmEXAotOee6zJ15e5IgfAx5nHqK6t5+qB2h2llPIsE9M68a9NuSzPKmCchRt2fO4j9oIteSREhTA4qZ3tKEopdV4uSIkmOiyIhVu+MQzsEj5VMApLq/giu5BJaZ103wullMcJ8PdjwoB4luw8xqnKGte/vstf0aJF245QV2+YOPBs00CUar5HHnnEdgTl5SamdeK11Qf5ZMcxvj/Ytcsa+VTB+CAjj14dI0jtGGE7ivJSl13msuE45aMGJ0WREBXCBxl5Li8YPtMllVtczsaDxTrYrZwqIyODjIwM2zGUFxMRJg7sxOfZhRSVnnHKmtP4TMH4aPtRACYMiLecRHmz6dOnM336dNsxlJe7qn88dfWGJTuPufR1fapg9I6PpEt0mO0oSinVIn07RZLYPoTFjR+EXcUnCkb+yUo2HipmXF9daFAp5flEhHF9O/JFdiEnXXi3lE8UjI93HMMYGN9fC4ZSyjuM6xdPTZ3h051OX03pK75RMLYfpVtMGD3iwm1HUUqpVjEosR0dIoO/Gp91Ba+/rba4rJrV+4q44+JuOllPOd3vf/972xGUj/DzE67s25F5G3Ior64lNMj5b+de38JYsvMYdfWG8f307ijlfKNGjWLUqFG2YygfMa5fRypr6lmxu8Alr+f1BeOj7Ufp3C6Efp0jbUdRPmDVqlWsWrXKdgzlI4YltycqNNBld0t5dZfUqcoaVu4p5KaRXbQ7SrnEww8/DMDy5cvtBlE+IcDfjyv6dGTRtiNU1dYRHODv1Nfz6hbGsqwCquvqrSwDrJRSrjCuX0dOVdXyRXah01/LqwvGJzuOERMexOCkKNtRlFLKKUZ1jyY8OIBPdjj/9lqvLRi1dQ0DQaNT46xtmK6UUs4WHODPhd1jWJ6VjzHGqa/ltQVjc84JSipqGJMaZzuKUko51ZhesRwpqWTX0VNOfR2vHfT+dFc+AX7CRT1jbEdRPuTZZ5+1HUH5oC8/GH+6K5/e8c67I9RrWxjLduWTnhxFZJtA21GUD0lLSyMtLc12DOVj4iLb0K9zJMuznDuO4ZUFI+9EBbuOntLuKOVyS5YsYcmSJbZjKB80JjWOjQeLOVFe7bTX8MqCsayxyl7aSwuGcq0nn3ySJ5980nYM5YPG9Iqj3sBnTpz17Z0FY1cBCVEhdNfFBpVSPmJgQjvahwWxPMvDC4aIjBORLBHJFpEHz/D9i0Vkk4jUisjklrxWZU0dX2QXMiY1Tmd3K6V8hr+fcEnPWJZn5VNX75zba51eMETEH3geGA/0AW4QkT6nHXYIuAV4u6Wvt3b/cSpq6rQ7Sinlc8b0iqO4vIaMnBNOOb8rWhjDgGxjzD5jTDUwB5jU9ABjzAFjzFagvqUvtmxXPsEBfozoFt3SUymllEe5uEcMftLwPugMrpiH0RnIafI4FxjenBOJyDRgGkBSUtIZj1melc+olGhCgpy7CJdSZ/Liiy/ajqB8WLvQIIZ0iWJZVj4PXJna6ud3RQvjTAMJzepgM8bMMsakG2PSY2Njv/H93OJyDhSVc1GPb35PKVdITU0lNbX1/1CVctRFPWLZceQkxWWtf3utKwpGLpDY5HECkOeMF1q9twiAkSnaHaXsWLhwIQsXLrQdQ/mwkSnRGANr9xe1+rldUTDWAz1EpKuIBAFTgAXOeKHV+4qICg0ktUOEM06v1Dk9/fTTPP3007ZjKB82MKEdIYH+X32Abk1OLxjGmFrgHuBjYCcwzxiTKSKPi8hEABEZKiK5wLXAiyKS2YzXYc3eIkamROOnq9MqpXxUUIAf6clRrN7X+gXDJYsPGmMWAYtOe+6xJl+vp6GrqtkOHS8nr6SSu/TuKKWUjxuZEs2fP8qisLSKmPDgVjuv18z01vELpZRqMLLxg/OaVm5leE/B2FdEbEQwKbG6HIhSyrf179yW8OCAVh/H8Ir9MIwxrN5bxIhu0bociLLqjTfesB1BKQL8/RjqhHEMr2hh7C0oI/9U1VfNMKVsSUxMJDEx8dwHKuVkI1Oi2VdQxrGTla12Tq8oGF9W0VE6fqEsmzt3LnPnzrUdQylGpTTsNtqa3VJeUTDW7C0ivm0bukSH2o6ifNzMmTOZOXOm7RhK0Ts+ksg2rTuO4fEFwxjDmn1FjNTxC6WU+oq/nzC8W3SrjmN4fMHYfayUorJqRmh3lFJK/Y+R3aI5dLyc3OLyVjmfxxeMzYeKARia3N5yEqWUci/Duja8L7bW/hgeXzAy804SHhxAl/Y6fqGUUk316BBOgJ+QmXeyVc7n8fMwMvNK6BMfqetHKbcwf/582xGU+kpwgD89OkS0WsHw6BZGXb1h55FT9OkUaTuKUgDExMQQExNjO4ZSX+nbKZIdeSUY0/J9vj26YBwoKqOipo6+WjCUm5g9ezazZ8+2HUOpr/TtFElhaTUFp6pafC6PLhhfNrP6dmprOYlSDbRgKHfz5ftja3RLeXjBKCHQX+gepwsOKqXUmfSOb9hQLjOvpMXn8uiCsSPvJD07RBAU4NH/GUop5TQRbQLpEh2qLYzMvJM6fqGUUufQt1OkbxeMmrp6jpdV6/iFUkqdQ99ObTl0vJyTlTUtOo/HzsOorKkD0BaGciuLFi0690FKudiXUw92tLCV4bEFo6KmHn+BXvFaMJT7CA3VFQeU++nbSgXDY7ukKqrrSI4OIzzYY2ue8kIzZsxgxowZtmMo9T/iItoQEx7c4nEMzy0YNXU6w1u5nXnz5jFv3jzbMZT6hoaB75bdWuuSgiEi40QkS0SyReTBM3w/WETmNn5/rYgkn+ucNXX1On6hlFIO6tspkuz80hadw+kFQ0T8geeB8UAf4AYR6XPaYbcBxcaY7sAzwJ8cObfeIaWUUo7p26kttfUtW0/KFS2MYUC2MWafMaYamANMOu2YScBrjV/PB8aKA9vnaQtDKaUc0xrvl64oGJ2BnCaPcxufO+MxxphaoAQ46xZ6AX5CTHhwK8ZUSinvldQ+tMU3CbniFqMztRRObxc5cgwiMg2Y1viwSkS2tzCbt4gBCm2HcBNucS3cZH95t7gWbkKvxddSm/uDrigYuUBik8cJQN63HJMrIgFAW+D46ScyxswCZgGIyAZjTLpTEnsYvRZf02vxNb0WX9Nr8TUR2dDcn3VFl9R6oIeIdBWRIGAKsOC0YxYANzd+PRn41LTGbh9KKaVajdNbGMaYWhG5B/gY8AdeNcZkisjjwAZjzALgFeANEcmmoWUxxdm5lFJKnR+XTJM2xiwCFp323GNNvq4Erj3P085qhWjeQq/F1/RafE2vxdf0Wnyt2ddCtOdHKaWUIzx2aRCllFKu5fYFwxnLingqB67Fz0Vkh4hsFZGlItLFRk5XONe1aHLcZBExIuK1d8g4ci1E5LrG341MEXnb1RldxYG/kSQRWSYimxv/Tq6ykdPZRORVEcn/tqkH0uDvjddpq4gMdujExhi3/UfDIPleoBsQBGwB+px2zN3AC41fTwHm2s5t8VqMAUIbv77Ll69F43ERwApgDZBuO7fF34sewGYgqvFxnO3cFq/FLOCuxq/7AAds53bStbgYGAxs/5bvXwUspmEO3AhgrSPndfcWhtOWFfFA57wWxphlxpjyxodraJjz4o0c+b0AeAL4M1DpynAu5si1uB143hhTDGCMyXdxRldx5FoY4Ms1MtryzTlhXsEYs4IzzGVrYhLwummwBmgnIvHnOq+7FwynLCvioRy5Fk3dRsMnCG90zmshIoOARGPMh64MZoEjvxc9gZ4i8oWIrBGRcS5L51qOXIvfAFNFJJeGOzfvdU00t3O+7yeA+++412rLingBh/87RWQqkA5c4tRE9pz1WoiIHw2rHt/iqkAWOfJ7EUBDt9RoGlqdK0WknzHmhJOzuZoj1+IGYLYx5mkRGUnD/K9+xph658dzK81633T3Fsb5LCvC2ZYV8QKOXAtE5DLgV8BEY0yVi7K52rmuRQTQD1guIgdo6KNd4KUD347+jXxgjKkxxuwHsmgoIN7GkWtxGzAPwBizGmhDwzpTvsah95PTuXvB0GVFvnbOa9HYDfMiDcXCW/up4RzXwhhTYoyJMcYkG2OSaRjPmWiMafYaOm7Mkb+R92m4IQIRiaGhi2qfS1O6hiPX4hAwFkBEetNQMApcmtI9LAB+2Hi31AigxBhz5Fw/5NZdUkaXFfmKg9fiL0A48G7juP8hY8xEa6GdxMFr4RMcvBYfA1eIyA6gDviFMabIXmrncPBa3A+8JCI/o6EL5hZv/IApIu/Q0AUZ0zhe82sgEMAY8wIN4zdXAdlAOXCrQ+f1wmullFLKCdy9S0oppZSb0IKhlFLKIVowlFJKOUQLhlJKKYdowVBKKeUQLRhKKaUcogVDKaWUQ9x64p5SnkBE5tCwNk8y0BG42xjzH6uhlHICbWEo1XIDgX3GmOHAD2iYVauU19GZ3kq1gIiE0LA+UaIxplJE2gNrgTRgBlANLDfGvGUxplKtQlsYSrVMP2CPMebLTZoG07DT2/eB+caY2wGvW89L+SYtGEq1zEAgSUTaiEgY8Fsa9uJI4OsNaupshVOqNWnBUKplBgJvActpWF57pjHmCxr2G/hyi1z9O1NeQccwlGoBEVkB3G6MyTrt+TDgHzTsJ/65jmEob6AFQ6kWEJHDNAx4+9oWn8oHacFQSinlEO1bVUop5RAtGEoppRyiBUMppZRDtGAopZRyiBYMpZRSDtGCoZRSyiFaMJRSSjlEC4ZSSimH/D+TGPzg/fJboAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ϵ = 10e-10\n", + "p_0 = np.linspace(ϵ, 1-ϵ, 100)\n", + "p_1 = 1-p_0\n", + "H = -(p_0*np.log(p_0) + p_1*np.log(p_1))\n", + "fig, ax = plt.subplots()\n", + "ax.set_xlim(0, 1)\n", + "ax.set_ylim(0, -np.log(0.5))\n", + "ax.set_xlabel(\"$p_0$\")\n", + "ax.set_ylabel(\"$H$\")\n", + "plt.plot(p_0, H)\n", + "plt.axvline(x=0.5, color='k', linestyle='--')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we can see that the entropy is maximal for the unbiased coin. This is true in general: the entropy peaks for the uniform distribution. In a sense, this is the most unpredictable distribution: if we get heads with probability 0.2, betting tails is a great idea. On the other hand, if the coin is unbiased, then a deterministic strategy is of little help in winning. Entropy quantifies this notion of surprise and unpredictability." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum states\n", + "\n", + "A classical coin is a two-level system: it is either heads or tails. At a first look a quantum state is a probability distribution, and the simplest case is a two-level state, which we call a qubit. Just like the way we can write the probability distribution as a column vector, we can write a quantum state as a column vector. For notational convenience that will become apparent later, we write the label of a quantum state in what is called a ket in the Dirac notation. So for instance, for some qubit, we can write \n", + "\n", + "$$\n", + "|\\psi\\rangle = \\begin{bmatrix}\n", + " a_0 \\\\\n", + " a_1 \\\\\n", + "\\end{bmatrix}.\n", + "$$\n", + "\n", + "In other words, a ket is just a column vector, exactly like the stochastic vector in the classical case. Instead of putting an arrow over the name of the variable to express that it is a vector, we use the ket to say that it is a column vector that represents a quantum state. There's more to this notation, as we will see.\n", + "\n", + "The key difference to classical probability distributions and stochastic vectors is the normalization constraint. The square sum of their absolute values adds up to 1:\n", + "\n", + "$$\n", + "\\sqrt{|a_0|^2+|a_1|^2}=1,\n", + "$$\n", + "\n", + "where $a_0, a_1\\in \\mathbb{C}$. In other words, we are normalizing in the $l_2$ norm instead of the $l_1$ norm. Furthermore, we are no longer restricted to the positive orthant: the components of the quantum state vector, which we call *probability amplitudes*, are complex valued.\n", + "\n", + "Let us introduce two special qubits, corresponding to the canonical basis vectors in two dimensions: $|0\\rangle$ and $|1\\rangle$.\n", + "\n", + "$$\n", + "|0\\rangle = \\begin{bmatrix}\n", + " 1 \\\\\n", + " 0 \\\\\n", + "\\end{bmatrix}, \\,\\,\\, |1\\rangle = \\begin{bmatrix}\n", + " 0 \\\\\n", + " 1 \\\\\n", + "\\end{bmatrix}.\n", + "$$\n", + "\n", + "This basis is also called the computational basis in quantum computing.\n", + "\n", + "We can expand an arbitrary qubit state in this basis:\n", + "\n", + "$$\n", + "|\\psi\\rangle = \\begin{bmatrix}\n", + " a_0 \\\\\n", + " a_1 \\\\\n", + "\\end{bmatrix}=a_0\\begin{bmatrix}\n", + " 1 \\\\\n", + " 0 \\\\\n", + "\\end{bmatrix} + \n", + "a_1\\begin{bmatrix}\n", + " 0 \\\\\n", + " 1 \\\\\n", + "\\end{bmatrix}=\n", + "a_0|0\\rangle+a_1|1\\rangle.\n", + "$$\n", + "\n", + "This expansion in a basis is called a superposition. If we sample the qubit state, we obtain the outcome 0 with probability $|a_0|^2$, and 1 with probability $|a_1|^2$. This is known as the Born rule; you will learn more about measurements and this rule in a subsequent notebook.\n", + "\n", + "For now, let's take a look at how we can simulate classical coin tossing on a quantum computer. Let's start with a completely biased case where we get heads with probability 1. This means that our qubit $|\\psi\\rangle=|0\\rangle$. We create a circuit of a single qubit and a single classical register where the results of the sampling (measurements) go." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:47:59.562010Z", + "start_time": "2018-11-19T19:47:58.831645Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], + "source": [ + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import execute\n", + "from qiskit import BasicAer\n", + "from qiskit.tools.visualization import plot_histogram, plot_bloch_multivector\n", + "\n", + "import numpy as np\n", + "π = np.pi\n", + "\n", + "backend = BasicAer.get_backend('qasm_simulator')\n", + "\n", + "q = QuantumRegister(1)\n", + "c = ClassicalRegister(1)\n", + "circuit = QuantumCircuit(q, c)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Any qubit is initialized in $|0\\rangle$, so if we measure it rightaway, we should get our maximally biased coin." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:47:59.567831Z", + "start_time": "2018-11-19T19:47:59.563751Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circuit.measure(q, c)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us execute it a hundred times and study the result" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:47:59.619731Z", + "start_time": "2018-11-19T19:47:59.569854Z" + } + }, + "outputs": [], + "source": [ + "job = execute(circuit, backend, shots=100)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:47:59.632356Z", + "start_time": "2018-11-19T19:47:59.623850Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'0': 100}" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result = job.result()\n", + "result.get_counts(circuit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As expected, all of our outcomes are 0. To understand the possible quantum states, we use the Bloch sphere visualization. Since the probability amplitudes are complex and there are two of them for a single qubit, this would require a four-dimensional space. Now since the vectors are normalized, this removes a degree of freedom, allowing a three-dimensional representation with an appropriate embedding. This embedding is the Bloch sphere. It is slightly different than an ordinary sphere in three dimensions: we identify the north pole with the state $|0\\rangle$, and the south pole with $|1\\rangle$. In other words, two orthogonal vectors appear as if they were on the same axis -- the axis Z. The computational basis is just one basis: the axes X and Y represent two other bases. Any point on the surface of this sphere is a valid quantum state. This is also true the other way around: every pure quantum state is a point on the Bloch sphere. Here it 'pure' is an important technical term and it essentially means that the state is described by a ket (column vector). Later in the course we will see other states called mix states that are not described by a ket (you will see later that these are inside the Bloch sphere).\n", + "\n", + "To make it less abstract, let's plot our $|0\\rangle$ on the Bloch sphere:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:00.005920Z", + "start_time": "2018-11-19T19:47:59.635003Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "backend_statevector = BasicAer.get_backend('statevector_simulator')\n", + "circuit = QuantumCircuit(q, c)\n", + "circuit.iden(q[0])\n", + "job = execute(circuit, backend_statevector)\n", + "plot_bloch_multivector(job.result().get_statevector(circuit))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-01T17:22:30.580690Z", + "start_time": "2018-11-01T17:22:30.567499Z" + } + }, + "source": [ + "Compare this sphere with the straight line in the positive orthant that describes all classical probability distributions of coin tosses. You can already see that there is a much richer structure in the quantum probability space.\n", + "\n", + "Let us pick another point on the Bloch sphere, that is, another distribution. Let's transform the state $|0\\rangle$ to $\\frac{1}{\\sqrt{2}}(|0\\rangle + |1\\rangle)$. This corresponds to the unbiased coin, since we will get 0 with probability $|\\frac{1}{\\sqrt{2}}|^2=1/2$, and the other way around. There are many ways to do this transformation. We pick a rotation around the Y axis by $\\pi/2$, which corresponds to the matrix $\\frac{1}{\\sqrt{2}}\\begin{bmatrix} 1 & -1\\\\1 & 1\\end{bmatrix}$." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:00.139079Z", + "start_time": "2018-11-19T19:48:00.008309Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circuit = QuantumCircuit(q, c)\n", + "circuit.ry(π/2, q[0])\n", + "circuit.measure(q, c)\n", + "job = execute(circuit, backend, shots=100)\n", + "plot_histogram(job.result().get_counts(circuit))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To get an intuition why it is called a rotation around the Y axis, let's plot it on the Bloch sphere:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:00.377553Z", + "start_time": "2018-11-19T19:48:00.141442Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circuit = QuantumCircuit(q, c)\n", + "circuit.ry(π/2, q[0])\n", + "job = execute(circuit, backend_statevector)\n", + "plot_bloch_multivector(job.result().get_statevector(circuit))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It does exactly what it says: it rotates from the north pole of the Bloch sphere.\n", + "\n", + "Why is interesting to have complex probability amplitudes instead of non-negative real numbers? To get some insight, take a look what happens if we apply the same rotation to $|1\\rangle$. To achieve this, first we flip $|0\\rangle$ to $|1\\rangle$ by applying a NOT gate (denoted by X in quantum computing) and then the rotation." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:00.622667Z", + "start_time": "2018-11-19T19:48:00.379562Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circuit = QuantumCircuit(q, c)\n", + "circuit.x(q[0])\n", + "circuit.ry(π/2, q[0])\n", + "job = execute(circuit, backend_statevector)\n", + "plot_bloch_multivector(job.result().get_statevector(circuit))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can verify that the result is $\\frac{1}{\\sqrt{2}}(-|0\\rangle + |1\\rangle)$. That is, the exact same state as before, except that the first term got a minus sign: it is a negative probability amplitude. Note that the difference cannot be observed from the statistics:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:00.747978Z", + "start_time": "2018-11-19T19:48:00.624958Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circuit.measure(q, c)\n", + "job = execute(circuit, backend, shots=100)\n", + "plot_histogram(job.result().get_counts(circuit))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It still looks like an approximately biased coin. Yet, that negative sign -- or any complex value -- is what models *interference*, a critically important phenomenon where probability amplitudes can interact in a constructive or a destructive way. To see this, if we apply the rotation twice in a row on $|0\\rangle$, we get another deterministic output, $|1\\rangle$, although in between the two, it was some superposition. " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:00.906121Z", + "start_time": "2018-11-19T19:48:00.752622Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circuit = QuantumCircuit(q, c)\n", + "circuit.ry(π/2, q[0])\n", + "circuit.ry(π/2, q[0])\n", + "circuit.measure(q, c)\n", + "job = execute(circuit, backend, shots=100)\n", + "plot_histogram(job.result().get_counts(circuit))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Many quantum algorithms exploit interference, for instance, the seminal [Deutsch-Josza algorithm](https://en.wikipedia.org/wiki/Deutsch–Jozsa_algorithm), which is among the simplest to understand its significance." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# More qubits and entanglement\n", + "\n", + "We have already seen that quantum states are probability distributions normed to 1 in the $l_2$ norm and we got a first peek at interference. If we introduce more qubits, we see another crucial quantum effect emerging. To do that, we first have to define how we write down the column vector for describing two qubits. We use a tensor product, which, in the case of qubits, is equivalent to the Kronecker product. Given two qubits, $|\\psi\\rangle=\\begin{bmatrix}a_0\\\\a_1\\end{bmatrix}$ and $|\\psi'\\rangle=\\begin{bmatrix}b_0\\\\b_1\\end{bmatrix}$, their product is $|\\psi\\rangle\\otimes|\\psi'\\rangle=\\begin{bmatrix}a_0b_0\\\\ a_0b_1\\\\ a_1b_0\\\\ a_1b_1\\end{bmatrix}$. Imagine that you have two registers $q_0$ and $q_1$, each can hold a qubit, and both qubits are in the state $|0\\rangle$. Then this composite state would be described by according to this product rule as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:00.928395Z", + "start_time": "2018-11-19T19:48:00.913259Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1],\n", + " [0],\n", + " [0],\n", + " [0]])" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "q0 = np.array([[1], [0]])\n", + "q1 = np.array([[1], [0]])\n", + "np.kron(q0, q1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the $|0\\rangle\\otimes|0\\rangle$ state, which we often abbreviate as $|00\\rangle$. The states $|01\\rangle$, $|10\\rangle$, and $|11\\rangle$ are defined analogously, and the four of them give the canonical basis of the four dimensional complex space, $\\mathbb{C}^2\\otimes\\mathbb{C}^2$.\n", + "\n", + "Now comes the interesting and counter-intuitive part. In machine learning, we also work we high-dimensional spaces, but we never construct it as a tensor product: it is typically $\\mathbb{R}^d$ for some dimension $d$. The interesting part of writing the high-dimensional space as a tensor product is that not all vectors in can be written as a product of vectors in the component space.\n", + "\n", + "Take the following state: $|\\phi^+\\rangle = \\frac{1}{\\sqrt{2}}(|00\\rangle+|11\\rangle)$. This vector is clearly in $\\mathbb{C}^2\\otimes\\mathbb{C}^2$, since it is a linear combination of two of the basis vector in this space. Yet, it cannot be written as $|\\psi\\rangle\\otimes|\\psi'\\rangle$ for some $|\\psi\\rangle$, $|\\psi'\\rangle\\in\\mathbb{C}^2$.\n", + "\n", + "To see this, assume that it can be written in this form. Then\n", + "\n", + "$$\n", + "|\\phi^+\\rangle = \\frac{1}{\\sqrt{2}}(|00\\rangle+|11\\rangle) = \\begin{bmatrix}a_0b_0\\\\ a_0b_1\\\\ a_1b_0\\\\ a_1b_1\\end{bmatrix} = a_0b_0|00\\rangle + a_0b_1|01\\rangle + a_1b_0|10\\rangle + a_1b_1|11\\rangle.\n", + "$$\n", + "\n", + "$|01\\rangle$ and $|10\\rangle$ do not appear on the left-hand side, so their coefficients must be zero: $a_1b_0=0$ and $a_0b_1=0$. This leads to a contradiction, since $a_1$ cannot be zero ($a_1b_1=1$), so $b_0$ must be zero, but $a_0b_0=1$. Therefore $|\\phi^+\\rangle$ cannot be written as a product.\n", + "\n", + "States that cannot be written as a product are called entangled states. This is the mathematical form of describing a phenomenon of strong correlations between random variables that exceed what is possible classically. Entanglement plays a central role in countless quantum algorithms. A simple example is [quantum teleportation](https://en.wikipedia.org/wiki/Quantum_teleportation). We will also see its applications in quantum machine learning protocols.\n", + "\n", + "We will have a closer look at entanglement in a subsequent notebook on measurements, but as a teaser, let us look at the measurement statistics of the $|\\phi^+\\rangle$ state. The explanation of the circuit preparing it will also come in a subsequent notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:01.146195Z", + "start_time": "2018-11-19T19:48:00.930859Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "q = QuantumRegister(2)\n", + "c = ClassicalRegister(2)\n", + "circuit = QuantumCircuit(q, c)\n", + "circuit.h(q[0])\n", + "circuit.cx(q[0], q[1])\n", + "circuit.measure(q, c)\n", + "job = execute(circuit, backend, shots=100)\n", + "plot_histogram(job.result().get_counts(circuit))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that 01 or 10 never appear in the measurement statistics." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Further reading\n", + "\n", + "Chapter 9 in Quantum Computing since Democritus by Scott Aaronson describes a similar approach to understanding quantum states -- in fact, the interference example was lifted from there." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/02_Measurements_and_Mixed_States.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/02_Measurements_and_Mixed_States.ipynb new file mode 100644 index 000000000..210ba69b7 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/02_Measurements_and_Mixed_States.ipynb @@ -0,0 +1,566 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A measurement is a central concept in quantum mechanics. An easy way to think about it as a sample from a probability distribution: it is a random variable with a number of outcomes, each outcome is produced with a certain probability. \n", + "\n", + "Measurement connect the quantum world to our classical one: we cannot directly observe the quantum state in nature, we can only gather statistics about it with measurements. It sounds like a harsh boundary between a quantum and a classical system that can only be bridged by measurement. The reality is more subtle: unless a quantum system is perfectly isolated, it interacts with its surrounding environment. This leads to introduction of mixed states, which in one limit recover classical probabilities.\n", + "\n", + "\n", + "# More on the bra-ket notation\n", + "\n", + "Before we take a deep dive into what measurements are, we need to introduce one more notation to complement the ket: it called a bra and it is denoted by $\\langle\\psi|$ for some quantum state $|\\psi\\rangle$. Together they form the bra-ket or Dirac notation. A bra is the conjugate transpose of a ket, and the other way around. This also means that a bra is a row vector. For instance, this is the bra for $|0\\rangle$" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:29.966399Z", + "start_time": "2018-11-19T19:48:29.899076Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "|0> ket:\n", + " [[1]\n", + " [0]]\n", + "<0| bra:\n", + " [[1 0]]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "zero_ket = np.array([[1], [0]])\n", + "print(\"|0> ket:\\n\", zero_ket)\n", + "print(\"<0| bra:\\n\", zero_ket.T.conj())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This makes it very easy to write dot products: if we write a bra followed by a ket, that is exactly what the dot product is. This is so common that we often drop one of the vertical bars, and just write $\\langle 0|0\\rangle$, for instance. Since quantum states are normalized, the inner product of any quantum state with itself is always one:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:29.987334Z", + "start_time": "2018-11-19T19:48:29.968450Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1]])" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zero_ket.T.conj().dot(zero_ket)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similarly, orthogonal vectors always give 0. E.g. $\\langle 0|1\\rangle$:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:30.000810Z", + "start_time": "2018-11-19T19:48:29.989605Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0]])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "one_ket = np.array([[0], [1]])\n", + "zero_ket.T.conj().dot(one_ket)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What about a ket and a bra? That is going to be a matrix: essentially the outer product of the two vectors. Here's $|0\\rangle\\langle 0|$:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:30.023616Z", + "start_time": "2018-11-19T19:48:30.004334Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 0],\n", + " [0, 0]])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zero_ket.dot(zero_ket.T.conj())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This should look familiar: it is a projection to the first element of the canonical basis. It is true in general that $|\\psi\\rangle\\langle\\psi|$ is going to be a projector to $|\\psi\\rangle$. It is very intuitive: take some other quantum state $|\\phi\\rangle$ and apply the matrix $|\\psi\\rangle\\langle\\psi|$ on it: $|\\psi\\rangle\\langle\\psi|\\phi\\rangle$. Now the right-most two terms are a bra and a ket, so it is a dot product: the overlap between $|\\phi\\rangle$ and $|\\psi\\rangle$. Since this is a scalar, it just scales the left-most term, which is the ket $|\\psi\\rangle$, so in effect, we projected $|\\phi \\rangle$ on this vector." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Measurements\n", + "\n", + "A measurement in quantum mechanics is an operator-valued random variable. The theory of measurements is rich and countless questions about them are still waiting to be answered. Most quantum computers that we have today, however, only implement one very specific measurement, which makes our discussion a lot simpler. This measurement is in the canonical basis. In other words, the measurement contains two projections, $|0\\rangle\\langle 0|$ and $|1\\rangle\\langle 1|$, and this measurement can be applied to any of the qubits of the quantum computer.\n", + "\n", + "We already saw how applying a projection on a vector works. If we want to make a scalar value of that, we need to add a bra to the left. For instance, for some state $|\\psi\\rangle$, we get a scalar for $\\langle\\psi|0\\rangle\\langle 0|\\psi\\rangle$. This is called the expectation value of the operator $|0\\rangle\\langle 0|$. To put this in context, let us apply the projection $|0\\rangle\\langle 0|$ on the superposition $\\frac{1}{\\sqrt{2}}(|0\\rangle + |1\\rangle)$, which is the column vector $\\frac{1}{\\sqrt{2}}\\begin{bmatrix} 1\\\\ 1\\end{bmatrix}$." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:30.040800Z", + "start_time": "2018-11-19T19:48:30.027650Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.5]])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ψ = np.array([[1], [1]])/np.sqrt(2)\n", + "Π_0 = zero_ket.dot(zero_ket.T.conj())\n", + "ψ.T.conj().dot(Π_0.dot(ψ))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That is exactly one half, the square of the absolute value of the probability amplitude corresponding to $|0\\rangle$ in the superposition! This is the mathematical formalism of what we had said earlier: given a state $|\\psi\\rangle = a_0|0\\rangle + a_1|1\\rangle$, we get an output $i$ with probability $|a_i|^2$. This is known as the *Born rule*. Now we have a recipe to extract probabilities with projections. This is exactly what is implemented in the quantum simulator. The measurement in the simulator is what we described here. Let's create an equal superposition with the Hadamard gate (see a later notebook for quantum circuits), apply the measurement, and observe the statistics:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:31.136144Z", + "start_time": "2018-11-19T19:48:30.043322Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n", + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n", + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + }, + { + "data": { + "text/plain": [ + "
        " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import execute\n", + "from qiskit import BasicAer\n", + "from qiskit.tools.visualization import plot_histogram\n", + "\n", + "backend = BasicAer.get_backend('qasm_simulator')\n", + "q = QuantumRegister(1)\n", + "c = ClassicalRegister(1)\n", + "circuit = QuantumCircuit(q, c)\n", + "circuit.h(q[0])\n", + "circuit.measure(q, c)\n", + "job = execute(circuit, backend, shots=100)\n", + "plot_histogram(job.result().get_counts(circuit))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You see that the outcome is random, with roughly half of the outcomes being 0.\n", + "\n", + "There is something additional happening. The measurement has a random outcome, but once it is performed, the quantum state is in the corresponding basis vector. That is, the superposition is destroyed. This is referred to as the collapse of the wavefunction. It is the subject of many ongoing debates and research results how and why it happens, but what matters to us is that we can easily calculate the quantum state after the measurement. Just projecting it to the basis vector is insufficient, since that would not be normalized, so we have to renormalize it. Mathematically it is expressed by the somewhat convoluted expression $\\frac{|i\\rangle\\langle i|\\psi\\rangle}{\\sqrt{\\langle\\psi|i\\rangle\\langle i|\\psi\\rangle}}$ if we observe the output $i$. For instance, if we observe zero after measuring the superposition $\\frac{1}{\\sqrt{2}}(|0\\rangle + |1\\rangle)$, the state after the measurement will be" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:31.147404Z", + "start_time": "2018-11-19T19:48:31.139100Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1.],\n", + " [0.]])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ψ = np.array([[np.sqrt(2)/2], [np.sqrt(2)/2]])\n", + "Π_0 = zero_ket.dot(zero_ket.T.conj())\n", + "probability_0 = ψ.T.conj().dot(Π_0.dot(ψ))\n", + "Π_0.dot(ψ)/np.sqrt(probability_0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which is just a very long way of saying we get $|0\\rangle$.\n", + "\n", + "You can easily see this by putting two measurements in a sequence on the same qubit. The second one will always give the same outcome as the first. The first one is random, but the second one will be determined, since there will be no superposition in the computational basis after the first measurement. Let's simulate this by writing out the results of the two measurements into two different classical registers:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:31.191892Z", + "start_time": "2018-11-19T19:48:31.149393Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'00': 39, '11': 61}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "c = ClassicalRegister(2)\n", + "circuit = QuantumCircuit(q, c)\n", + "circuit.h(q[0])\n", + "circuit.measure(q[0], c[0])\n", + "circuit.measure(q[0], c[1])\n", + "job = execute(circuit, backend, shots=100)\n", + "job.result().get_counts(circuit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There is no output like 01 or 10." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Measuring multiqubit systems\n", + "\n", + "Most quantum computers implement local measurements, which means that each qubit is measured separately. So if we have a two qubit system where the first qubit is in the equal superposition and the second one is in $|0\\rangle$, that is, we have the state $\\frac{1}{\\sqrt{2}}(|00\\rangle + |01\\rangle)$, we will observe 0 and 0 as outcomes of the measurements on the two qubits, or 0 and 1. " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:31.367295Z", + "start_time": "2018-11-19T19:48:31.193956Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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rFmzhtbWVu68807e8IY3PK/Nk08+eeD94sWLOemkkwBobW3loosu4rzzzuNtb3vbgTYRwWmnncZdd90FwLe//W3OOeecfvg2Q0O/zgcqSSrmyCOP5DOf+QzvfOc72bdvHxdeeCG1tbUsWrSIuro63vjGN3LjjTeyePFijjzySMaNG8eXvvQlAH7wgx/wwAMPsHnzZr71rW8B8KUvfYl58+Zx1VVX8f73v59FixYxb9483vOe9wzk1zykOB+o84FKktpwPlBJkvqQASpJUgEGqCRJBRigkiQVYIBKklSAASpJUgEGqCRJBRigkiQVYIBKklSAAXqY626G+/3uuusuqqurqa+vB2DPnj1cfvnlvPrVr+aVr3wlX/jCFyruU5IOZQboYaynM9xv376dG2+8kZNPPvnAsrvuuovdu3dz//33c88993DTTTexdu3aHvcpSYc6A/Qw1tMZ7hctWsQVV1zBUUcddWBZRLBz50727t3LM888w/Dhwxk9enSP+5SkQ52zsRzGOprhfunSpc9r86tf/YonnniC17/+9Vx//fUHlr/lLW/hJz/5CbW1tezatYtrrrmGcePG9ahPaaB95BvjBroE9YHPXLylX3+fAXoY6242+meffZaPf/zjB6ZEamvp0qVUVVWxYsUKfvvb3/KmN72JM844wxnuJR02DNDDWHcz3P/ud7+jsbGRN7/5zQA89dRTXHjhhdx2221873vf43Wvex3Dhg1jwoQJvOIVr6C+vp7jjz++yz4laajwGuhhrLsZ7seMGcOqVatoaGigoaGBBQsWcNttt1FXV8fkyZO59957yUx27NjBww8/zEknndRtn5I0VHgEehjryQz3nXnf+97HBz/4QU499VQyk3e/+93MmTMHoMM+JWmoiY6uWR0u6urqcsmSJQNdhqR+5k1EQ1Nv3URUXV29NDMXdNfOU7iSJBVggEqSVIABKklSAQaoJEkFGKCSJBVggEqSVIABKklSAQaoJEkFGKCSJBVggEqSVIABKklSAQ4m3wscV3No6u/JeSUdWjwClSSpAANUkqQCDFBJkgowQCVJKsAAlSSpAANUkqQCDFBJkgowQCVJKqDfAzQiLo+IxyPimYhYGhGn93C70yJib0Qsb7f8vRGRHbyO6ptvIElSPwdoRJwHXAcsAuqAB4DFETGlm+3GATcD/6+TJjuBmravzHymt+qWJKm9/j4CvRK4KTO/lpmNmfkhoAW4rJvt/gX4BvBgJ+szM59s++rFmiVJeoF+C9CIGA6cDNzdbtXdwKldbHc5cBxwTRfdj4yINRGxLiJ+FBF1B12wJEld6M/B5I8FqoAN7ZZvAM7saIOImAd8EnhVZu6LiI6aNQGXAA3AaODPgPsjYn5mruygz0uBSwFqamp45JFHAJg0aRKjRo1i1apVAIwdO5bp06dTX18PQFVVFfPnz6epqYkdO3YAUFtby+bNmwEHkx+KGhsb2bVrFwCzZ89m48aNbNy4EYCpU6cSEaxevRqA8ePHU1NTw/LlpUv0I0aMYM6cOTz22GPs3r0bgLlz59LS0sKmTZsAmDZtGpnJmjVrAJgwYQITJkxgxYoVAIwcOZLa2lqWLVvGnj17AJg/fz5r165ly5bSQPfTp0+ntbWVdevWATBx4kSqq6tpbGwE4Oijj2bWrFk0NDSwb98+AOrq6mhubmbr1q0AzJgxg507d7J+/XqgtF+MGTOGpqYmAEaPHs3MmTOpr68nM4kI6urqWLlyJdu3bwdg1qxZbNu2jZaWFuDg9qcNG0r/i5g8eTLDhw+nubkZgHHjxjFlyhQaGhoAGDZsGPPmzSv0d9LQtGnTpl7Zn3oqMrOXv0InvyhiEvAEsDAz72uz/JPABZn5knbtRwCPAP+QmbeUl10FvDMz53bxe6qAR4F7MvOKrmqqq6vLJUuWFPxGz3E2lqHJ2ViGLvfZoam39tnq6uqlmbmgu3b9eQT6NLCP0unYtl7EC49KoXQz0Gzg6xHx9fKyI4CIiL3AOZnZ/nQw5SPVh4GZvVa5JEnt9Ns10MxsBZYCZ7VbdRalu3HbewKYB7yszesGYFX5fUfbEKXzvC+ldHOSJEl9or8n1P48cEtEPATcD3wAmEQpGImImwEy86LM3AO0f+bzKWB3Zi5vs+yTwC+AlcAY4ApKAdrdnb2SJBXWrwGambdHxHjgE5RO0S6ndCp2TblJl8+DduIY4EZKp4a3AvWUrrM+1AslS5LUof4+AiUzvwx8uZN1Z3Sz7VXAVe2WfRj4cO9UJ0lSzzgWriRJBRigkiQVYIBKklSAASpJUgEGqCRJBRigkiQVYIBKklSAASpJUgEGqCRJBRigkiQVYIBKklSAASpJUgEGqCRJBRigkiQVUFGARsS7IuLsNp//T0Ssi4ifRkRN75cnSdLgVOkR6FX730TEy4GPAf8EDAM+13tlSZI0uFU6ofZUoKn8/lzgB5n5mYi4G/hpr1YmSdIgVukR6DPA6PL71wE/K7/f2ma5JElDXqVHoPcBn4uInwMLgHeWl58E/E9vFiZJ0mBW6RHoB4FWSsH5gcxcX17+RjyFK0k6jFR0BJqZ64A3d7D8z3utIkmSDgEVPwcaEUdFxDsj4q8j4pjyshMjorr3y5MkaXCq6Ag0ImZQunHo94BjgDuA3wKXlT+/v7cLlCRpMKr0CPRa4G5gIrCrzfJ/A17bW0VJkjTYVXoX7qnAqzJzX0S0Xb4WmNRrVUmSNMgVGQt3WAfLplB6FlSSpMNCpQF6N3Blm88ZEWOAq4Ef91pVkiQNcpWewr0SuCcimoCjgNuBGcAG4F29XJskSYNWpc+Bro+IlwEXAC+ndAR7I3BbZu7qcmNJkoaQSo9AKQflv5ZfkiQdlroN0Ih4O/DDzNxTft+pzLyz1yqTJGkQ68kR6HeB44Cnyu87k0BVbxQlSdJg122AZuYRHb2XJOlwVlEgRsTCiHhB6EZEVUQs7L2yJEka3Co9orwH6GjQ+GPK6yRJOixUGqBB6Vpne+OBHQdfjiRJh4YePcYSEf9WfpvArRGxu83qKmAu8EAv1yZJ0qDV0+dAN5V/BrCF58/E0gr8HPhaL9YlSdKg1qMAzcw/AoiI1cBnM9PTtZKkw1qlQ/ld3VeFSJJ0KOnJSES/Al6TmVsiYhkd30QEQGa+tDeLkyRpsOrJEej3gP03DXU1EpEkSYeNnoxEdHVH7yVJOpw5NJ8kSQX05Bpol9c92/IaqCTpcNHT2VgkSVIbFV0DlSRJJV4DlSSpAJ8DlSSpAJ8DlSSpAJ8DlSSpgIrGwt0vIk4EassfGzPzN71XkiRJg19FARoR44F/Ad4CPPvc4vgRcElmbup0Y0mShpBK78L9Z2AGcDpwVPm1EDgB5wOVJB1GKg3Q1wN/nJn3Z+be8ut+4E/K67oVEZdHxOMR8UxELI2I07to+5qIeCAiNkXEroj4dUT8ZQft3hERKyJid/nnuRV+L0mSKlJpgG4EOppMeyfQ7enbiDgPuA5YBNQBDwCLI2JKJ5v8DvgnSke5s4FrgKsj4vI2fZ4C3A7cBrys/POOiHhlD7+TJEkVqzRA/w64NiKO37+g/P5z5XXduRK4KTO/lpmNmfkhoAW4rKPGmbk0M7+dmY9l5uOZeSvwU0qnkPf7c+CezPxUuc9PAf9RXi5JUp8oMpj8CcDqiHii/Pl44BngRZSukXbWz3DgZOCz7VbdDZzak2Ijoq7c9qo2i08Bvtiu6U+BD/akT0mSiujPweSPBaqADe2WbwDO7GrDiFgHTKBU79WZeUOb1cd10udxB1WtJEldGIjB5NsPBRgdLGvvdOD3gFcBn46IxzPzliJ9RsSlwKUANTU1PPLIIwBMmjSJUaNGsWrVKgDGjh3L9OnTqa+vB6Cqqor58+fT1NTEjh2ly8C1tbVs3rwZGNdN+ToUNTY2smvXLgBmz57Nxo0b2bhxIwBTp04lIli9ejUA48ePp6amhuXLlwMwYsQI5syZw2OPPcbu3aWBvObOnUtLSwubNpVuF5g2bRqZyZo1awCYMGECEyZMYMWKFQCMHDmS2tpali1bxp49ewCYP38+a9euZcuWLQBMnz6d1tZW1q1bB8DEiROprq6msbERgKOPPppZs2bR0NDAvn37AKirq6O5uZmtW7cCMGPGDHbu3Mn69euB0n4xZswYmpqaABg9ejQzZ86kvr6ezCQiqKurY+XKlWzfvh2AWbNmsW3bNlpaWoCD2582bCj9e3jy5MkMHz6c5uZmAMaNG8eUKVNoaGgAYNiwYcybN6/Q30lD06ZNm3plf+qpyOzRVJ8HrXwKdydwQWbe0Wb5l4C5mfmaHvbzCeCPMvPE8ue1wBcz8x/btPkr4IOZObWrvurq6nLJkiWVf5l2PvINA3Qo+szFWwa6BPUR99mhqbf22erq6qWZuaC7dhXdRBQRwyPi6oj47/JjKPvavrraNjNbgaXAWe1WnUXpbtyeOgIY0ebzg73QpyRJFal0KL//C5wH/D3wBeCvgGnA+cDf9mD7zwO3RMRDwP3AB4BJwA0AEXEzQGZeVP78IeBxoKm8/ULgL4Evt+nzOuDeiPgo8H3gXOC1wGkVfjdJknqs0gB9F/CBzPz3iPgscFdm/iYiGikd9X21q40z8/bycICfAGqA5cA5mbmm3KT986BVwKcphfRe4DfA31AO3HKfD0TE+ZSfES23OS8zf1nhd5MkqccqDdCJwIry+98Bx5Tf/zuloOtWZn6Z5x9Btl13RrvP1wLX9qDP7+JUa5KkflTpQAprKZ1yBVjFc8P3nQLs6q2iJEka7CoN0O8Dryu/v47SsHqPAzfRxSAKkiQNNRWdws3Mj7Z5/93yAAenAv+dmT/q7eIkSRqsCk2ovV9m/gL4RS/VIknSIaPSU7hExMsj4uaIeLj8uiUiXt4XxUmSNFhVOpDChcB/UXoE5Sfl10TgoYh4T++XJ0nS4FTpKdxPAX+bmYvaLiwPYnANcGtvFSZJ0mBW6SncCcB3Olh+B6XpzCRJOixUGqD3AGd0sPwM4D8PthhJkg4VPZlQ++1tPi4G/j4iFvDc3bevAt7O8ye5liRpSCs6ofaBOTXb+CKdDNEnSdJQ05MJtSt+1EWSpKHOcJQkqYAiAym8KSLujYinI2JjRPxnRJzTF8VJkjRYVTqQwvspDSj/G+CvKc3N+Tjw/Yi4pPfLkyRpcKp0IIW/Bq7MzOvbLPuXiFhKKUz/tdcqkyRpEKv0FO4USpNnt7cYmHrw5UiSdGgoMqH2WR0sPxtYc/DlSJJ0aKj0FO5ngS+WZ195AEjgNOAPgQ/1cm2SJA1alU6o/dWIeAr4C0qjDwE0Au/KzLt6uzhJkgarHgdoRBxJ6VTtvZn5/b4rSZKkwa/H10Azcy9wJzC678qRJOnQUOlNRA3AjL4oRJKkQ0mlAXoV8LmIeFtEvDgiqtu++qA+SZIGpUrvwv1x+eedlO7A3S/Kn6t6oyhJkga7SgP0tX1ShSRJh5geBWhEjAL+EXgbMAz4GXBFZj7dh7VJkjRo9fQa6NXAeymdwv0WpdGIvtJHNUmSNOj19BTu24H3Zea3ASLiNuD+iKjKzH19Vp0kSYNUT49AXwzct/9DZj4E7AUm9UVRkiQNdj0N0Cqgtd2yvVR+E5IkSUNCTwMwgFsjYnebZUcBX4uInfsXZOZberM4SZIGq54G6Dc6WHZrbxYiSdKhpEcBmpl/1NeFSJJ0KKl0KD9JkoQBKklSIQaoJEkFGKCSJBVggEqSVIABKklSAQaoJEkFGKCSJBVggEqSVIABKklSAQaoJEkFGKCSJBVggEqSVIABKklSAQaoJEkFGKCSJBVggEqSVIABKklSAQaoJEkFGKCSJBVggEqSVEC/B2hEXB4Rj0fEMxGxNCJO76JtTUR8MyJ+HRH7IuKmDtq8NyKyg9dRffpFJEmHtX4N0Ig4D7gOWATUAQ8AiyNiSiebjACeBv4B+GUXXe8Eatq+MvOZ3qpbkqT2+vsI9Ergpsz8WmY2ZuaHgBbgso4aZ+bqzLwiM28CNnfRb2bmk21fvV+6JEnP6bcAjYjhwMnA3e1W3Q2cepDdj4yINRGxLiJ+FBF1B9mfJEldOrIff9exQBWwod3yDcCZB9FvE3AJ0ACMBv4MuD8i5mfmyvaNI+JS4FKAmpoaHnnkEQAmTZrEqFGjWLVqFQBjx45l+vTp1NfXA1BVVcX8+fNpampix44dANTW1rJ582Zg3EGUr8GqsbGRXbt2ATB79mw2btzIxo0bAZg6dSoRwerVqwEYP348NTU1LF++HIARI0YwZ84cHnvsMXbv3g3A3LlzaWlpYdOmTQBMmzaNzGTNmjUATJgwgQkTJrBixQoARo4cSW1tLcuWLWPPnj0AzJ8/n7Vr17JlyxYApk+fTmtrK+vWrQNg4sSJVFdX09jYCMDRRx/NrFmzaGhoYN++fQDU1dXR3NzM1q1bAZgxYwY7d+5k/fr1QGm/GDNmDE1NTQCMHj2amTNnUl9fT2YSEdTV1bFy5Uq2b98OwKxZs9i2bRstLS3Awe1PGzaU/hcxefJkhg8fTnNzMwDjxo1jypQpNDQ0ADBs2DDmzZtX6O+koWnTpk29sj/1VGRmL3+FTn5RxCTgCWBhZt7XZvkngQsy8yXdbP8j4OnMfG837aqAR4F7MvOKrtrW1dXlkiVLevgNOveRbxigQ9FnLt4y0CWoj7jPDk29tc9WV1cvzcwF3bXrz2ugTwP7gOPaLX8RLzwqLSwz9wEPAzN7q09JktrrtwDNzFZgKXBWu1VnUbobt1dERAAvpXRzkiRJfaI/r4ECfB64JSIeAu4HPgBMAm4AiIibATLzov0bRMTLym/HAM+WP7dm5ory+k8CvwBWlttcQSlAO7yzV5Kk3tCvAZqZt0fEeOATlJ7XXA6ck5lryk06eh60vt3nNwNrgGnlz8cAN1I6Nby13H5hZj7Uu9VLkvSc/j4CJTO/DHy5k3VndLAsuunvw8CHe6U4SZJ6yLFwJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKmAfg/QiLg8Ih6PiGciYmlEnN5N+9eU2z0TEc0R8YGD7VOSpIPVrwEaEecB1wGLgDrgAWBxREzppP0JwE/K7eqAvwe+GBHvKNqnJEm9ob+PQK8EbsrMr2VmY2Z+CGgBLuuk/QeA9Zn5oXL7rwHfAP7yIPqUJOmg9VuARsRw4GTg7nar7gZO7WSzUzpo/1NgQUQMK9inJEkH7ch+/F3HAlXAhnbLNwBndrLNccDPOmh/ZLm/qLTPiLgUuLT88XfV1dVNPSleBxwLPD3QRfSHf/7wQFcg9Qr32cpN7Umj/gzQ/bLd5+hgWXft9y+PLtp02Gdm3gjc2H2Z6khEPJyZCwa6Dkk94z7bd/ozQJ8G9lE6qmzrRbzwCHK/JztpvxfYRCkoK+1TkqSD1m/XQDOzFVgKnNVu1VmU7pztyIO88FTsWcDDmbmnYJ+SJB20/j6F+3ngloh4CLif0l22k4AbACLiZoDMvKjc/gbggxFxLfBV4NXAe4ELetqnep2nv6VDi/tsH4nMri4/9sEvjLgc+AhQAywHPpyZ95bX/QdAZp7Rpv1rgC8Ac4D1wKcz84ae9ilJUl/o9wCVJGkocCxcSZIKMEAlSSrAAJUkqQADVJKkAgZiJCIdYiJiMjCD0sAVzwJNmfnkwFYlSQPLu3DVpYi4DLgEmA/sAFYB6ygNcnFXZjZFxBGZ+ewAlikJiIiRmblroOs4XHgKV52KiPGU5lm9i9IztqdQmk7uWeBiSnOzzs7MZyMiOu9JUl+LiHFAU0R8JSJe3XafbPf+JRExZkCKHGIMUHXl3cB/Z+Y1mbkpM3+dmddn5juAPwFGAj+KiGPTUxnSQHsPMJHSFI/3Aqsi4u8iYtb+/TMiXgx8i9IMLTpIBqi60gqMjoi5ABExojwHK5n5c+BC4Bng7IErUVLZS4GvA/8bqAO+Q2nY0xUR8YvyVI7vAWZmZvPAlTl0GKDqyncpna7984gYnZm7M7M1Io4AyMy1wG+ByQNZpHS4i4gRwArgfzLzqcz8VWZ+FFgAvL687irgU8CnB6zQIcabiNShNtdM3gpcB1RT+hftl4F6SqG5EPgKMC8zVw9AmZLKyiE6LjOfjIgqINve3BcRZwBLgCmZuW6AyhxSfIxFHWpzzeQ/gDcDpwLnAv9ZbvIkpTMYnzM8pYEVEZGZuyNiVERMzMwN7dYlpX/wrjY8e48BqheIiBcBfwj8BaWJ0HdROlV7H/BZYBhwIvBTYOUAlSmJ5/bXiLgSeArYGxEtwB3AnZm5o3xG6UngigEsdcjxFK5eICJuojR93A+BzZRO384DTqK0g34iM385YAVKOqCT/bUOeAmlZ7b/MTPvHrAChzADVM9T/pfqduC8859rAAABGklEQVScNvO0BjAFeBXwPmA68K7MfGTACpXU1f76YuCVwB8DU4EL3F97n3fhqr3ZwOOUHmEBStdDM3NNZt5O6Xrob4E/GKD6JD2ns/11bWbeQemRlu24v/YJA1TtNVM6TfuFiJi5/5GV/TJzN6XRiN44EMVJep7u9tdW3F/7jAGq5ymPo/lxSqMM3QxcFBEvjoijASJiFPAaYPnAVSkJ3F8HmtdA1aHy6EN/C7yF0iDyDwIbgTOBFuD9mbls4CqUtJ/768AwQNWl8i3ybwLeRmnYvuXAHZn56wEtTNILuL/2LwNUPea0ZdKhw/217xmgkiQV4E1EkiQVYIBKklSAASpJUgEGqCRJBRigkiQVYIBKklSAASpJUgH/H8gBLqyjsO3+AAAAAElFTkSuQmCC\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "q = QuantumRegister(2)\n", + "c = ClassicalRegister(2)\n", + "circuit = QuantumCircuit(q, c)\n", + "circuit.h(q[0])\n", + "circuit.measure(q, c)\n", + "job = execute(circuit, backend, shots=100)\n", + "plot_histogram(job.result().get_counts(circuit))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What happens if we make measurements on an entangled state? Let's look at the statistics again on the $|\\phi^+\\rangle$ state:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:31.507651Z", + "start_time": "2018-11-19T19:48:31.369445Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "q = QuantumRegister(2)\n", + "c = ClassicalRegister(2)\n", + "circuit = QuantumCircuit(q, c)\n", + "circuit.h(q[0])\n", + "circuit.cx(q[0], q[1])\n", + "circuit.measure(q, c)\n", + "job = execute(circuit, backend, shots=100)\n", + "plot_histogram(job.result().get_counts(circuit))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We only observe 00 and 11. Since the state is $\\frac{1}{\\sqrt{2}}(|00\\rangle+|11\\rangle)$, this should not come as a shock. Yet, there is something remarkable going on here. At the end of the last section, we saw the same statistics, but from measurements on the same qubit. Now we have two, spatially separate qubits exhibiting the same behaviour: this is a very strong form of correlations. This means that if we measure just one qubit, and get, say, 0 as the outcome, we *know* with certainty that if we measured the other qubit, we would also get 0, even though the second measurement is also a random variable.\n", + "\n", + "To appreciate this better, imagine that your are tossing two unbiased coins. If you observe heads on one, there is absolutely nothing that you can say about what the other one might be other than a wild guess that holds with probability 0.5. If you play foul and you biased the coins, you might improve your guessing accuracy. Yet you can never say with certainty what the other coin will be based on the outcome you observed on one coin, except for the trivial case when the other coin deterministically gives the same face always.\n", + "\n", + "Remarkable as it is, there is no activation or instantaneous (faster than the speed of light) signalling happening between the qubits, though. Your measurement was local to the qubit and so is your information. If there is somebody else doing the measurement on the other qubit, you would have to inform the person through classical communication channels that you happen to know what the outcome will be. So while we certainly cannot violate the theory of relativity with entanglement, this strong form of correlation is still central to many quantum algorithms." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Mixed states\n", + "\n", + "If all was clear until now, this is where it gets messy. A ket and a bra is a projection, as we explained above. More than that, it is also a density matrix. A density matrix is another way of writing a quantum state, instead of kets. So, for instance we could write $\\rho = |\\psi\\rangle\\langle\\psi|$, where $\\rho$ is the density matrix for $|\\psi\\rangle$. The Born rule still applies, but now we have to take the trace of the result: for instance, $\\mathrm{Tr}[|0\\rangle\\langle 0|\\rho]$ would be the probability of seeing 0. See it in action:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:31.519211Z", + "start_time": "2018-11-19T19:48:31.509701Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.4999999999999999" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ψ = np.array([[1], [1]])/np.sqrt(2)\n", + "ρ = ψ.dot(ψ.T.conj())\n", + "Π_0 = zero_ket.dot(zero_ket.T.conj())\n", + "np.trace(Π_0.dot(ρ))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We get one half again. The renormalization after a measurement happens in a similar way: $\\frac{|0\\rangle\\langle 0|\\rho|0\\rangle\\langle 0|}{\\mathrm{Tr}[|0\\rangle\\langle 0|\\rho]}$." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:31.537553Z", + "start_time": "2018-11-19T19:48:31.521246Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 0.],\n", + " [0., 0.]])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "probability_0 = np.trace(Π_0.dot(ρ))\n", + "Π_0.dot(ρ).dot(Π_0)/probability_0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So why do we need this at all? Every state we have mentioned so far is called a *pure state*: these are kets or a density matrix created as a ket and a bra. There are other states called *mixed states*: these are *classical* probability distributions over pure states. Formally, a mixed state is written as $\\sum_i p_i |\\psi_i\\rangle\\langle\\psi_i|$, where $\\sum_i p_i=1$, $p_i\\geq 0$. This reflects our classical ignorance over the underlying quantum states. Compare the density matrix of the equal superposition $\\frac{1}{\\sqrt{2}}(|0\\rangle+|1\\rangle)$ and the mixed state $0.5(|0\\rangle\\langle 0|+|1\\rangle\\langle 1|)$:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:48:31.551225Z", + "start_time": "2018-11-19T19:48:31.541006Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Density matrix of the equal superposition\n", + "[[0.5 0.5]\n", + " [0.5 0.5]]\n", + "Density matrix of the equally mixed state of |0><0| and |1><1|\n", + "[[0.5 0. ]\n", + " [0. 0.5]]\n" + ] + } + ], + "source": [ + "zero_ket = np.array([[1], [0]])\n", + "one_ket = np.array([[0], [1]])\n", + "ψ = (zero_ket + one_ket)/np.sqrt(2)\n", + "print(\"Density matrix of the equal superposition\")\n", + "print(ψ.dot(ψ.T.conj()))\n", + "print(\"Density matrix of the equally mixed state of |0><0| and |1><1|\")\n", + "print((zero_ket.dot(zero_ket.T.conj())+one_ket.dot(one_ket.T.conj()))/2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The off-diagonal elements are gone in the second case. The off-diagonal elements are also called coherences: their presence indicates that the state is quantum. The smaller these values are, the closer the quantum state is to a classical probability distribution.\n", + "\n", + "The second density matrix above has only diagonal elements and they are equal: this is the equivalent way of writing a uniform distribution. We know that the uniform distribution has maximum entropy, and for this reason, a density matrix with this structure is called a maximally mixed state. In other words, we are perfectly ignorant of which elements of the canonical basis constitute the state.\n", + "\n", + "We would like a quantum state to be perfectly isolated from the environment, but in reality, the quantum computers we have today and for the next couple of years cannot achieve a high degree of isolation. So coherences are slowly lost to the environment -- this is a process called decoherence. The speed at which this happens determines the length of the quantum algorithms we can run on the quantum computer: if it happens fast, we have time to apply a handful gates or do any other form calculation, and then we quickly have to pull out (measure) the results." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/03_Evolution in Closed and Open Systems.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/03_Evolution in Closed and Open Systems.ipynb new file mode 100644 index 000000000..47b1c437f --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/03_Evolution in Closed and Open Systems.ipynb @@ -0,0 +1,319 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Classical probability distributions can be written as a stochastic vector, which can be transformed to another stochastic vector by applying a stochastic matrix. In other words, the evolution of stochastic vectors can be described by a stochastic matrix.\n", + "\n", + "Quantum states also evolve and their evolution is described by unitary matrices. This leads to some interesting properties in quantum computing. Unitary evolution is true for a closed system, that is, a quantum system perfectly isolated from the environment. This is not the case in the quantum computers we have today: these are open quantum systems that evolve differently due to to uncontrolled interactions with the environment. In this notebook, we take a glimpse at both types of evolution.\n", + "\n", + "\n", + "# Unitary evolution\n", + "\n", + "A unitary matrix has the property that its conjugate transpose is its inverse. Formally, it means that a matrix $U$ is unitary if $UU^\\dagger=U^\\dagger U=\\mathbb{1}$, where $^\\dagger$ stands for conjugate transpose, and $\\mathbb{1}$ is the identity matrix. A quantum computer is a machine that implements unitary operations.\n", + "\n", + "As an example, we have seen the NOT operation before, which is performed by the X gate in a quantum computer. While the generic discussion on gates will only occur in a subsequent notebook, we can study the properties of the X gate. Its matrix representation is $X = \\begin{bmatrix} 0 & 1\\\\ 1 & 0\\end{bmatrix}$. Let's check if it is indeed unitary:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:49:07.614968Z", + "start_time": "2018-11-19T19:49:07.530927Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "XX^dagger\n", + "[[1 0]\n", + " [0 1]]\n", + "X^daggerX\n", + "[[1 0]\n", + " [0 1]]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "X = np.array([[0, 1], [1, 0]])\n", + "print(\"XX^dagger\")\n", + "print(X.dot(X.T.conj()))\n", + "print(\"X^daggerX\")\n", + "print(X.T.conj().dot(X))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It looks like a legitimate unitary operation. The unitary nature ensures that the $l_2$ norm is preserved, that is, quantum states are mapped to quantum states." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:49:07.626531Z", + "start_time": "2018-11-19T19:49:07.618259Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The norm of the state |0> before applying X\n", + "1.0\n", + "The norm of the state after applying X\n", + "1.0\n" + ] + } + ], + "source": [ + "print(\"The norm of the state |0> before applying X\")\n", + "zero_ket = np.array([[1], [0]])\n", + "print(np.linalg.norm(zero_ket))\n", + "print(\"The norm of the state after applying X\")\n", + "print(np.linalg.norm(X.dot(zero_ket)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Furthermore, since the unitary operation is a matrix, it is linear. Measurements are also represented by matrices. These two observations imply that everything a quantum computer implements is actually linear. If we want to see some form of nonlinearity, that must involve some classical intervention.\n", + "\n", + "Another consequence of the unitary operations is reversibility. Any unitary operation can be reversed. Quantum computing libraries often provide a function to reverse entire circuits. Reversing the X gate is simple: we just apply it again (its conjugate transpose is itself, therefore $X^2=\\mathbb{1}$)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:49:08.710098Z", + "start_time": "2018-11-19T19:49:07.629733Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n", + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1.+0.j 0.+0.j]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import execute\n", + "from qiskit import BasicAer\n", + "from qiskit.tools.visualization import circuit_drawer\n", + "np.set_printoptions(precision=3, suppress=True)\n", + "\n", + "backend_statevector = BasicAer.get_backend('statevector_simulator')\n", + "q = QuantumRegister(1)\n", + "c = ClassicalRegister(1)\n", + "circuit = QuantumCircuit(q, c)\n", + "circuit.x(q[0])\n", + "circuit.x(q[0])\n", + "job = execute(circuit, backend_statevector)\n", + "print(job.result().get_statevector(circuit))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which is exactly $|0\\rangle$ as we would expect.\n", + "\n", + "In the next notebook, you will learn about classical and quantum many-body systems and the Hamiltonian. In the notebook on adiabatic quantum computing, you will learn that a unitary operation is in fact the Schrödinger equation solved for a Hamiltonian for some duration of time. This connects the computer science way of thinking about gates and unitary operations to actual physics, but there is some learning to be done before we can make that connection. Before that, let us take another look at the interaction with the environment." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Interaction with the environment: open systems\n", + "\n", + "Actual quantum systems are seldom closed: they constantly interact with their environment in a largely uncontrolled fashion, which causes them to lose coherence. This is true for current and near-term quantum computers too.\n", + "\n", + "\"A\n", + "\n", + "This also means that their actual time evolution is not described by a unitary matrix as we would want it, but some other operator (the technical name for it is a completely positive trace-preserving map).\n", + "\n", + "Quantum computing libraries often offer a variety of noise models that mimic different types of interaction, and increasing the strength of the interaction with the environment leads to faster decoherence. The timescale for decoherence is often called $T_2$ time. Among a couple of other parameters, $T_2$ time is critically important for the number of gates or the duration of the quantum computation we can perform.\n", + "\n", + "A very cheap way of studying the effects of decoherence is mixing a pure state with the maximally mixed state $\\mathbb{1}/2^d$, where $d$ is the number of qubits, with some visibility parameter in $[0,1]$. This way we do not have to specify noise models or any other map modelling decoherence. For instance, we can mix the $|\\phi^+\\rangle$ state with the maximally mixed state:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:49:08.730307Z", + "start_time": "2018-11-19T19:49:08.714253Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximum visibility is a pure state:\n", + "[[0.5 0. 0. 0.5]\n", + " [0. 0. 0. 0. ]\n", + " [0. 0. 0. 0. ]\n", + " [0.5 0. 0. 0.5]]\n", + "The state is still entangled with visibility 0.8:\n", + "[[0.45 0. 0. 0.4 ]\n", + " [0. 0.05 0. 0. ]\n", + " [0. 0. 0.05 0. ]\n", + " [0.4 0. 0. 0.45]]\n", + "Entanglement is lost by 0.6:\n", + "[[0.4 0. 0. 0.3]\n", + " [0. 0.1 0. 0. ]\n", + " [0. 0. 0.1 0. ]\n", + " [0.3 0. 0. 0.4]]\n", + "Barely any coherence remains by 0.2:\n", + "[[0.3 0. 0. 0.1]\n", + " [0. 0.2 0. 0. ]\n", + " [0. 0. 0.2 0. ]\n", + " [0.1 0. 0. 0.3]]\n" + ] + } + ], + "source": [ + "def mixed_state(pure_state, visibility):\n", + " density_matrix = pure_state.dot(pure_state.T.conj())\n", + " maximally_mixed_state = np.eye(4)/2**2\n", + " return visibility*density_matrix + (1-visibility)*maximally_mixed_state\n", + "\n", + "ϕ = np.array([[1],[0],[0],[1]])/np.sqrt(2)\n", + "print(\"Maximum visibility is a pure state:\")\n", + "print(mixed_state(ϕ, 1.0))\n", + "print(\"The state is still entangled with visibility 0.8:\")\n", + "print(mixed_state(ϕ, 0.8))\n", + "print(\"Entanglement is lost by 0.6:\")\n", + "print(mixed_state(ϕ, 0.6))\n", + "print(\"Barely any coherence remains by 0.2:\")\n", + "print(mixed_state(ϕ, 0.2))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Another way to look at what happens to a quantum state in an open system is through equilibrium processes. Think of a cup of coffee: left alone, it will equilibrate with the environment, eventually reaching the temperature of the environment. This includes energy exchange. A quantum state does the same thing and the environment has a defined temperature, just the environment of a cup of coffee.\n", + "\n", + "The equilibrium state is called the thermal state. It has a very specific structure and we will revisit it, but for now, suffice to say that the energy of the samples pulled out of a thermal state follows a Boltzmann distribution. The Boltzmann -- also called Gibbs -- distribution is described as $P(E_i) = \\frac {e^{-E_{i}/T}}{\\sum _{j=1}^{M}{e^{-E_{j}/T}}}$, where $E_i$ is an energy, and $M$ is the total number of possible energy levels. Temperature enters the definition: the higher the temperature, the closer we are to the uniform distribution. In the infinite temperature limit, it recovers the uniform distribution. At high temperatures, all energy levels have an equal probability. In contrast, at zero temperature, the entire probability mass is concentrated on the lowest energy level, the ground state energy. To get a sense of this, let's plot the Boltzmann distribution with vastly different temperatures:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T19:49:09.226294Z", + "start_time": "2018-11-19T19:49:08.733112Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "temperatures = [.5, 5, 2000]\n", + "energies = np.linspace(0, 20, 100)\n", + "fig, ax = plt.subplots()\n", + "for i, T in enumerate(temperatures):\n", + " probabilities = np.exp(-energies/T)\n", + " Z = probabilities.sum()\n", + " probabilities /= Z\n", + " ax.plot(energies, probabilities, linewidth=3, label = \"$T_\" + str(i+1)+\"$\")\n", + "ax.set_xlim(0, 20)\n", + "ax.set_ylim(0, 1.2*probabilities.max())\n", + "ax.set_xticks([])\n", + "ax.set_yticks([])\n", + "ax.set_xlabel('Energy')\n", + "ax.set_ylabel('Probability')\n", + "ax.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here $T_1\n", + "\n", + "They will naturally anti-align: one will have north pole facing up, the second the south pole facing up. We can think of them as two binary variables, $\\sigma_1$ and $\\sigma_2$. Say, if the north pole is facing up, we assign the value +1 to the variable, and -1 otherwise. To abstract away from magnets, in general, we call these variables spins. So in the optimal configuration, their product is -1:\n", + "\n", + "$$ \\sigma_1\\sigma_2=-1 $$\n", + "\n", + "We can think of this as the energy of the system: the lowest energy is called the ground state energy. Note that there are two physical configurations corresponding to this optimum: $\\sigma_1=+1, \\sigma_2=-1$, and $\\sigma_1=-1, \\sigma_2=+1$.\n", + "\n", + "If we keep adding more magnets to this system, we can sum up their pairwise interaction to get the total energy. The total energy of the system is called the Hamiltonian, and we will denote it by $H$. So if we have $N$ magnets arranged along a straight line, we have\n", + "\n", + "$$ H=\\sum_{i=1}^{N-1} \\sigma_i \\sigma_{i+1}$$.\n", + "\n", + "We did a simplification here: we assumed that remote magnets do not interact with each other (e.g. there is no such term as $\\sigma_i\\sigma_{i+2}$. In general, the interactions modeled depend on the layout of the spins and assumptions about the physical model: there will be some graph describing the connectivity of interactions. To reflect this, we write\n", + "\n", + "$$ H=\\sum_{} \\sigma_i \\sigma_{j}$$,\n", + "\n", + "where $$ typically means nearest neighbours, but it is up to us to declare what nearest neighbours mean.\n", + "\n", + "Now imagine that the distance is not the same between each pair. In other words, some pairs interact more than others. We can express this by adding a parameter that describes the interaction strength:\n", + "\n", + "$$ H=-\\sum_{} J_{ij} \\sigma_i \\sigma_{j}$$,\n", + "\n", + "where $J_{ij}$ is a real number. We added a negative sign to the Hamiltonian: this is by convention. If the spins are antiferromagnetic, that is, they behave as we would expect from magnets, then all $J_{ij}$ values would be negative. That cancels out the negative sign of the sum, so we still expect that each product $\\sigma_i\\sigma_j$ would give you -1 in the optimum configuration.\n", + "\n", + "The model is fairly complicated by this point. Imagine that you have many spins and not all of them behave like magnets (that is, $J_{ij}$ can take both negative and positive values for different pairs). Nature still wants to find the lowest energy configuration, though. Let's take a look at how we would do it in code. Let's calculate the energy of spins on a line, given some couplings and a spin configuration:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:00:27.336290Z", + "start_time": "2018-11-19T20:00:27.331856Z" + } + }, + "outputs": [], + "source": [ + "def calculate_energy(J, σ):\n", + " return sum(J_ij*σ[i]*σ[i+1] for i, J_ij in enumerate(J))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's give it a fixed set of couplings and a spin configuration on three sites:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:00:27.358242Z", + "start_time": "2018-11-19T20:00:27.340861Z" + } + }, + "outputs": [], + "source": [ + "J = [1.0, -1.0]\n", + "σ = [+1, -1, +1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The energy of this is" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:00:27.387715Z", + "start_time": "2018-11-19T20:00:27.360889Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calculate_energy(J, σ)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Is this the ground state? How do we know? We are interested in the minimum, but we cannot use some gradient-based method to find it, since the variables are binary, plus the optimization landscape is nonconvex. So the easiest choice is an exhaustive search of all possibilities:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:00:27.407303Z", + "start_time": "2018-11-19T20:00:27.389825Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0 (1, 1, 1)\n", + "2.0 (1, 1, -1)\n", + "0.0 (1, -1, 1)\n", + "-2.0 (1, -1, -1)\n", + "-2.0 (-1, 1, 1)\n", + "0.0 (-1, 1, -1)\n", + "2.0 (-1, -1, 1)\n", + "0.0 (-1, -1, -1)\n" + ] + } + ], + "source": [ + "import itertools\n", + "for σ in itertools.product(*[{+1,-1} for _ in range(3)]):\n", + " print(calculate_energy(J, σ), σ)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that -2 is the optimum, with two optimal configurations, but we had to enumerate all possibilities to figure this out. For this particular case, there are more clever ways to find the best solution, but in the general case, this is not the case.\n", + "\n", + "To get to the general case, we need one more component, an external field. Imagine that you add a large magnet below each and every one of our magnets, creating an external magnetic field for each site. If this field is strong enough, it can override the pairwise interaction and flip the magnets. We model this by adding a linear term to the Hamiltonian:\n", + "\n", + "$$ H=-\\sum_{} J_{ij} \\sigma_i \\sigma_{j} - \\sum_i h_i \\sigma_i$$,\n", + "\n", + "where $h_i$ is the strength of the external field. This is the full description of the *classical Ising model*. The Hamiltonian describes the energy, but in computer science language, it means it expresses the objective function we want to minimize. The corresponding computer science problem is called quadratic unconstrained binary optimization (QUBO), where the only difference is that the variables take values in $\\{0, 1\\}$, but that is only a constant shift. QUBOs are NP-hard in general, that is, we are not aware of an efficient polynomial time algorithm to solve any given QUBO. So the generic strategy is the exhaustive search we did above, which takes exponentially many steps in the number of sites (variables).\n", + "\n", + "As we mentioned, nature seeks the minimum energy configuration. So how does computational hardness maps to physical difficulty? Imagine that the energy difference between the ground state and the next lowest energy state (also called the first excited state) is small, but the energetic cost of going from one to the other is high. A cartoon picture of this is the following:\n", + "\n", + "\"Energy\n", + "\n", + "If we start from a random configuration, we might get stuck in the local optimum denoted by the green spot. This is what happens in metals if they are cooled down too quickly: the crystal lattice will have imperfections and the metal will not have the desired properties. A process called *annealing* helps in metallurgy: by increasing the temperature, the chance of overcoming the potential barrier increases and the crystal structure can reconfigure itself. If the barrier is high and the energy difference is small between the ground state and the first excited state, the probability of this happening drops. This is what it means that the problem is difficult to do in a physical system.\n", + "\n", + "Annealing inspired a heuristic algorithm called *simulated annealing*. This defines a temperature to be able to hop out of local minima. The temperature is lowered over time to find the actual minimum. Simulated annealing has many implementations. Here we'll use the one implemented in dimod to solve our problem above:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:00:27.549002Z", + "start_time": "2018-11-19T20:00:27.454734Z" + } + }, + "outputs": [], + "source": [ + "import dimod" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The simulated annealing solver requires us to define the couplings as a dictionary between spins, and we must also pass the external field values as a dictionary. The latter is all zeros for us." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:00:27.555690Z", + "start_time": "2018-11-19T20:00:27.551785Z" + } + }, + "outputs": [], + "source": [ + "J = {(0, 1): 1.0, (1, 2): -1.0}\n", + "h = {0:0, 1:0, 2:0}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We instantiate an Ising model:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:00:27.575330Z", + "start_time": "2018-11-19T20:00:27.557800Z" + } + }, + "outputs": [], + "source": [ + "model = dimod.BinaryQuadraticModel(h, J, 0.0, dimod.SPIN)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we create a simulated annealing sampler that pulls out potentially optimal solutions, and we read out 10 possible solutions:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:00:27.701309Z", + "start_time": "2018-11-19T20:00:27.580079Z" + } + }, + "outputs": [], + "source": [ + "sampler = dimod.SimulatedAnnealingSampler()\n", + "response = sampler.sample(model, num_reads=10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can see that this configuration is actually easy, since you get the optimal solution -2 most of the time:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:00:27.710300Z", + "start_time": "2018-11-19T20:00:27.704028Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[solution.energy for solution in response.data()].count(-2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Simulated annealing is a classical heuristic algorithm. Quantum annealing uses physical effects to find the global optimum of an Ising model: it uses thermal effects just like annealing in metallurgy, but it also uses quantum effects like tunneling to overcome potential barriers.\n", + "\n", + "The Ising model also plays an important role in quantum-enhanced sampling, but that idea requires a better understanding of the role of temperature, which we will revisit in a subsequent notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# The transverse-field Ising model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We discussed the Hamiltonian of the classical Ising model. We can write the same Hamiltonian in a quantum mechanical form. In quantum mechanics, the Hamiltonian is not a function of variables, but of operators. We will simulate what it means in a quantum circuit." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:00:28.576569Z", + "start_time": "2018-11-19T20:00:27.713089Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import execute\n", + "from qiskit import BasicAer\n", + "np.set_printoptions(precision=3, suppress=True)\n", + "backend = BasicAer.get_backend('statevector_simulator')\n", + "q = QuantumRegister(1)\n", + "c = ClassicalRegister(1)\n", + "circuit = QuantumCircuit(q, c)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The operator that replicates the effect of what we have seen in the classical case is the Pauli-Z matrix. Let's see what it does on the elements of the computational basis:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:00:28.652206Z", + "start_time": "2018-11-19T20:00:28.578778Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1.+0.j 0.+0.j]\n" + ] + } + ], + "source": [ + "circuit.z(q[0])\n", + "job = execute(circuit, backend)\n", + "state = job.result().get_statevector(circuit)\n", + "print(state)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-09T23:08:37.178401Z", + "start_time": "2018-11-09T23:08:37.159286Z" + } + }, + "source": [ + "This is nothing but the $|0\\rangle$ state. In other words, it does not do anything to $|0\\rangle$, which can also be thought of as multiplying it by +1. Let's try it on $|1\\rangle$:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:00:28.716083Z", + "start_time": "2018-11-19T20:00:28.658356Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 0.+0.j -1.+0.j]\n" + ] + } + ], + "source": [ + "circuit = QuantumCircuit(q, c)\n", + "circuit.x(q[0])\n", + "circuit.z(q[0])\n", + "job = execute(circuit, backend)\n", + "state = job.result().get_statevector(circuit)\n", + "print(state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We get $-|1\\rangle$, which means it adds a minus sign to it. This way we have the +1, -1 values, just the same way as in the classical formalism. If we write $\\sigma^Z_i$ for the operator $Z$ at a site $i$, the quantum mechanical Hamiltonian of the classical Ising model reads as\n", + "\n", + "$$ H=-\\sum_{} J_{ij} \\sigma^Z_i \\sigma^Z_{j} - \\sum_i h_i \\sigma^Z_i$$.\n", + "\n", + "Technically speaking, we should put a hat on $H$ and on all of the $\\sigma^Z_i$ to indicate that they are operators, and not numbers or variables, but we omit this for notational simplicity.\n", + "\n", + "The expectation value $$ of the Hamiltonian is the energy of the system, and the corresponding $|\\psi\\rangle$ quantum state is the configuration of that energy level. We can create the quantum mechanical version of calculating the energy, matching the function we defined above for the classical mechanical variant:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:00:28.728032Z", + "start_time": "2018-11-19T20:00:28.722743Z" + } + }, + "outputs": [], + "source": [ + "def calculate_energy_expectation(state, hamiltonian):\n", + " return float(np.dot(state.T.conj(), np.dot(hamiltonian, state)).real)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is a bit tricky to define the Hamiltonian with the $\\sigma^Z_i$ operators, since saying that it acts on site $i$ means that it acts trivially on all other sites. So, for instance, for two sites, if we act on site one, the actual operator is $\\sigma^Z\\otimes I$, and acting on site two, we have $I \\otimes \\sigma^Z$. The above function to calculate the energy takes numpy arrays, so we manually define $\\sigma^Z$ and calculate the energy of the Hamiltonian $H=-\\sigma^Z_1\\sigma^Z_2 - 0.5 (\\sigma^Z_1 + \\sigma^Z_2)$ on the state $|00\\rangle$." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:00:28.755692Z", + "start_time": "2018-11-19T20:00:28.731315Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "-2.0" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Z = np.array([[1, 0], [0, -1]])\n", + "IZ = np.kron(np.eye(2), Z)\n", + "ZI = np.kron(Z, np.eye(2))\n", + "ZZ = np.kron(Z, Z)\n", + "H = -ZZ + -0.5*(ZI+IZ)\n", + "ψ = np.kron([[1], [0]], [[1], [0]])\n", + "calculate_energy_expectation(ψ, H)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This Hamiltonian commutes, which means all of its operators are commutative, which is a clear sign of nothing much quantum going on.\n", + "\n", + "To make this a quantum Ising model, we need to add a term that does not commute with the rest of the terms. A transverse field is such, which is an on-site interaction just like the external field. Its effect is described by the Pauli-X operator (the NOT gate), which we will denote by $\\sigma^X_i$ for a site $i$. It is very easy to see that the Pauli-Z and the Pauli-X do not commute:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:00:28.860349Z", + "start_time": "2018-11-19T20:00:28.758829Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pauli-X, then Pauli-Z: [ 0.+0.j -1.+0.j]\n", + "Pauli-Z, then Pauli-X: [0.+0.j 1.+0.j]\n" + ] + } + ], + "source": [ + "circuit = QuantumCircuit(q, c)\n", + "circuit.x(q[0])\n", + "circuit.z(q[0])\n", + "job = execute(circuit, backend)\n", + "state = job.result().get_statevector(circuit)\n", + "print(\"Pauli-X, then Pauli-Z:\", state)\n", + "circuit = QuantumCircuit(q, c)\n", + "circuit.z(q[0])\n", + "circuit.x(q[0])\n", + "job = execute(circuit, backend)\n", + "state = job.result().get_statevector(circuit)\n", + "print(\"Pauli-Z, then Pauli-X:\", state)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There is a clear sign difference.\n", + "\n", + "There are many other ways of making the Ising Hamiltonian noncommuting, but adding the onsite Pauli-X operations leads to the *transverse field Ising model*. Its Hamiltonian reads as\n", + "\n", + "$$ H=-\\sum_{} J_{ij} \\sigma^Z_i \\sigma^Z_{j} - \\sum_i h_i \\sigma^Z_i - \\sum_i g_i \\sigma^X_i$$.\n", + "\n", + "The transverse field Ising model is critically important to explain how quantum annealing works because by adding the $\\sigma^X$ part to the Hamiltonian it becomes possible to exploit quantum effects like tunnelling. It is also important for understanding the quantum approximation optimization algorithms, since it was inspired by quantum annealing." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/05_Gate-Model Quantum Computing.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/05_Gate-Model Quantum Computing.ipynb new file mode 100644 index 000000000..e7149a959 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/05_Gate-Model Quantum Computing.ipynb @@ -0,0 +1,316 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So far you mastered the notation of quantum mechanics and quantum computing, understood as much physics as needed to perform various operations on quantum states, and now you are ready to build quantum algorithms. In this notebook, we look at the basics of gate-model quantum computing, which is sometimes also referred to as universal quantum computing. Most academic and commercial efforts to build a quantum computer focus on this model: Alibaba, Baidu, Google, HP, IBM Q, Intel, IonQ, Microsoft, Rigetti Computing, and Tencent all aim at this, and the list keeps expanding. It remains unclear which implementation will prove scalable: superconducting chips, photonic systems, and ion traps are the most common types, each having its own advantages and disadvantages. We abstract away, we focus on the quantum algorithms irrespective of the physical implementation.\n", + "\n", + "To get there, first we have to familiarize ourselves with some gates and what happens to those gates on quantum computers. The following diagram shows the software stack that bridges a problem we want to solve with the actual computational back-end [[1](#1)]:\n", + "\n", + "\"Software\n", + "\n", + "First, we define the problem at a high-level and a suitable quantum algorithm is chosen. Then, we express the quantum algorithm as a quantum circuit composed of gates. This in turn has to be compiled to a specific quantum gate set available. The last step is to execute the final circuit either on a quantum processor or on a simulator.\n", + "\n", + "The quantum algorithms we are interested in are about machine learning. In this notebook, we look at the levels below algorithms: the definition of circuits, their compilation, and the mapping to the hardware or a simulator.\n", + "\n", + "\n", + "# Defining circuits\n", + "\n", + "Circuits are composed of qubit registers, gates acting on them, and measurements on the registers. To store the outcome of registers, many quantum computing libraries add classical registers to the circuits. Even by this language, you can tell that this is a very low level of programming a computer. It resembles the assembly language of digital computers, in which a program consists of machine code instructions.\n", + "\n", + "Qubit registers are indexed from 0. We often just say qubit 0, qubit 1, and so on, to refer to the register containing a qubit. This is not to be confused with the actual state of the qubit, which can be $|0\\rangle$, $|1\\rangle$, or any superposition thereof. For instance, qubit 0 can be in the state $|1\\rangle$.\n", + "\n", + "Let's take a look at the gates. In digital computing, a processor transform bit strings to bit strings with logical gates. Any bit string can be achieved with just two gates, which makes universal computations possible with simple operations composed only of these two types of gates. It is remarkable and surprising that the same is also true for quantum computers: any unitary operation can be decomposed into elementary gates, and three types of gates are sufficient. This is remarkable since we are talking about transforming continuous-valued probability amplitudes, not just discrete elements. Yet, this result is what provides the high-level theoretical foundation for being able to build a universal quantum computer at all.\n", + "\n", + "Let's look at some common gates, some of which we have already seen. Naturally, all of these are unitary.\n", + "\n", + "| Gate |Name |            Matrix |\n", + "|------|--------------------|---------------------------------------------------------------------|\n", + "| X | Pauli-X or NOT gate|$\\begin{bmatrix}0 & 1\\\\ 1& 0\\end{bmatrix}$|\n", + "| Z | Pauli-Z gate |$\\begin{bmatrix}1 & 0\\\\ 0& -1\\end{bmatrix}$|\n", + "| H | Hadamard gate |$\\frac{1}{\\sqrt{2}}\\begin{bmatrix}1 & 1\\\\ 1& -1\\end{bmatrix}$|\n", + "| Rx($\\theta$)| Rotation around X|$\\begin{bmatrix}\\cos(\\theta/2) & -\\imath \\sin(\\theta/2)\\\\ -\\imath \\sin(\\theta / 2) & \\cos(\\theta / 2)\\end{bmatrix}$|\n", + "| Ry($\\theta$)| Rotation around Y|$\\begin{bmatrix}\\cos(\\theta/2) & -\\sin(\\theta/2)\\\\ -\\sin(\\theta / 2) & \\cos(\\theta / 2)\\end{bmatrix}$|\n", + "| CNOT, CX | Controlled-NOT | $\\begin{bmatrix}1 & 0 & 0 &0\\\\ 0 & 1 & 0 &0\\\\ 0 & 0 & 0 &1\\\\ 0 & 0 & 1 &0\\end{bmatrix}$|\n", + "\n", + "As we have seen before, the rotations correspond to axis defined in the Bloch sphere. \n", + "\n", + "There should be one thing immediately apparent from the table: there are many, in fact, infinitely many single-qubit operations. The rotations, for instance, are parametrized by a continuous value. This is in stark contrast with digital circuits, where the only non-trivial single-bit gate is the NOT gate.\n", + "\n", + "The CNOT gate is the only two-qubit gate in this list. It has a special role: we need two-qubit interactions to create entanglement. Let's repeat the circuit for creating the $|\\phi^+\\rangle = \\frac{1}{\\sqrt{2}}(|00\\rangle+|11\\rangle)$. We will have two qubit registers and two classical registers for measurement output. First, let's define the circuit and plot it:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:07:24.314851Z", + "start_time": "2018-11-19T20:07:22.576203Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n", + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/tools/visualization/_circuit_visualization.py:206: DeprecationWarning: The current behavior for the default output will change in a future release. Instead of trying latex and falling back to mpl on failure it will just use \"text\" by default\n", + " '\"text\" by default', DeprecationWarning)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import execute\n", + "from qiskit import BasicAer\n", + "from qiskit.tools.visualization import circuit_drawer, plot_histogram\n", + "\n", + "q = QuantumRegister(2)\n", + "c = ClassicalRegister(2)\n", + "circuit = QuantumCircuit(q, c)\n", + "circuit.h(q[0])\n", + "circuit.cx(q[0], q[1])\n", + "circuit_drawer(circuit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that we can't just initialize the qubit registers in a state we fancy. All registers are initialized in $|0\\rangle$ and creating a desired state is **part** of the circuit. In a sense, arbitrary state preparation is the same as universal quantum computation: the end of the calculation is a state that we desired to prepare. Some states are easier to prepare than others. The above circuit has only two gates to prepare our target state, so it is considered very easy.\n", + "\n", + "Let us see what happens in this circuit. The Hadamard gate prepares an equal superposition $\\frac{1}{\\sqrt{2}}(|0\\rangle+|1\\rangle)$ in qubit 0. This qubit controls an X gate on qubit 1. Since qubit 0 is in the equal superposition after the Hadamard gate, it will not apply the X gate for the first part of the superposition ($|0\\rangle$) and it will apply the X gate for the second part of the superposition ($|1\\rangle$). Thus we create the final state $\\frac{1}{\\sqrt{2}}(|00\\rangle+|11\\rangle)$, and we entangle the two qubit registers.\n", + "\n", + "A digital computer's processing unit typically has 64-bit registers and it is able to perform universal calculations on bit strings. Any complex calculation is broken down into elementary 64-bit operations, either sequentially or in parallel execution. So you may wonder what is the deal with the thousands of qubits we expect from a quantum computer. Why can't a 64-qubit quantum computer be enough?\n", + "\n", + "Entanglement is the easiest way to understand why we need so many qubits. Entanglement is a key resource in quantum computing and we want to make use of it. If we have 64-qubits and we want to entangle another one outside these 64 registers, we would have get rid of the qubit in one of the registers, potentially destroying a superposition ad definitely destroying entanglement between that register and any other qubit on the chip. The only way to make use of superpositions and the strong correlations provided by entanglement is if the entire problem is on the quantum processing unit for the duration of the calculation.\n", + "\n", + "This global nature of the calculation is also the reason why there is a focus on problems that are difficult to break down into elementary calculations. The travelling salesman problem is a great example: we need to consider all cities and all distances to minimize overall travel length.\n", + "\n", + "To finish off the circuit, we could add a measurement to each qubit:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:07:25.136336Z", + "start_time": "2018-11-19T20:07:24.318756Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/tools/visualization/_circuit_visualization.py:206: DeprecationWarning: The current behavior for the default output will change in a future release. Instead of trying latex and falling back to mpl on failure it will just use \"text\" by default\n", + " '\"text\" by default', DeprecationWarning)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circuit.measure(q, c)\n", + "circuit_drawer(circuit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we can plot the statistics:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:07:25.405506Z", + "start_time": "2018-11-19T20:07:25.138810Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n", + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + }, + { + "data": { + "image/png": "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tWoVLS0t3Hnnnbz5zW9+UZunn356z/sFCxZw7LHHAtDS0sL555/P2WefzTvf+c49bSKCefPmcddddwHwve99jzPOOKMXPs3A0KvzgUqSihk8eDDXXHMN7373u2ltbeW8886jtraW+fPnU1dXx1ve8hZuuOEGFixYwODBgxkzZgxf/epXAfjxj3/MQw89xMaNG/nud78LwFe/+lVmz57NVVddxUUXXcT8+fOZPXs273vf+/ryYx5QnA/U+UAlSW04H6gkSfuRASpJUgEGqCRJBRigkiQVYIBKklSAASpJUgEGqCRJBRigkiQVYIBKklSAAXqQ29sM97vdddddVFVVUV9fD8CuXbu49NJLed3rXsdrXvMavvSlL1XcpyQdyAzQg1h3Z7jfunUrN9xwA8cff/yedXfddRc7d+7kwQcf5L777uOmm25i9erV3e5Tkg50BuhBrLsz3M+fP5/LL7+cQw89dM+6iGD79u08//zzPPfccwwdOpSRI0d2u09JOtA5G8tBrKMZ7hctWvSiNr/5zW946qmneNOb3sRXvvKVPevf/va38/Of/5za2lp27NjBZz7zGcaMGdOtPqW+9rFvj+nrErQfXHPBpl79fQboQWxvs9G/8MILfOpTn9ozJVJbixYtYtCgQSxdupTf//73vPWtb+WUU05xhntJBw0D9CC2txnu//CHP9DY2Mjb3vY2AJ555hnOO+88brvtNn74wx/yxje+kSFDhlBdXc2rX/1q6uvrOeqoo7rsU5IGCq+BHsT2NsP9qFGjWL58OQ0NDTQ0NDB37lxuu+026urqmDBhAvfffz+ZybZt23j00Uc59thj99qnJA0UHoEexLozw31nPvCBD/DhD3+YE088kczkve99LzNnzgTosE9JGmiio2tWB4u6urpcuHBhX5chqZd5E9HA1FM3EVVVVS3KzLl7a+cpXEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAB5PvAY6rOTD19uS8kg4sHoFKklSAASpJUgEGqCRJBRigkiQVYIBKklSAASpJUgEGqCRJBRigkiQV0OsBGhGXRsSTEfFcRCyKiJO6ud+8iHg+Ipa0W//+iMgOXofun08gSVIvB2hEnA1cB8wH6oCHgAURMXEv+40Bbgb+o5Mm24Gatq/MfK6n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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "backend = BasicAer.get_backend('qasm_simulator')\n", + "job = execute(circuit, backend, shots=100)\n", + "plot_histogram(job.result().get_counts(circuit))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we have seen before, 01 and 10 never appear." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Compilation\n", + "\n", + "The circuit is the way to describe a quantum algorithm. It may also contain some arbitrary single or two-qubit unitary and controlled versions thereof. A quantum compiler should be able to decompose these into elementary gates." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For instance, in Qiskit, you can access to the general unitary using the $u3$ gate\n", + "\n", + "$$\n", + "u3(\\theta, \\phi, \\lambda) = \\begin{pmatrix}\n", + "\\cos(\\theta/2) & -e^{i\\lambda}\\sin(\\theta/2) \\\\\n", + "e^{i\\phi}\\sin(\\theta/2) & e^{i\\lambda+i\\phi}\\cos(\\theta/2) \n", + "\\end{pmatrix}.\n", + "$$\n", + "\n", + "The compiler decomposes it into an actual gate sequence." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is one task of a quantum compiler. The next one is to translate the gates given in the circuit to the gates implemented in the hardware or the simulator. In the table above, we defined many gates, but a well-chosen set of three is sufficient for universality. For engineering constraints, typically one minimal set of universal gates is implemented in the hardware. It depends on the physical architecture which three.\n", + "\n", + "At this point, the number of gates applied is probably already increasing: the decomposition of unitary will create many gates and the translation of gates is also likely to add more gates. An additional problem is the topology of the qubits: in some implementations not all qubit registers are connected to each other. The most popular implementation is superconducting qubits, which are manufactured on silicon chips just like any digital device you have. Since this is a quintessentially two dimensional layout, most qubits on the chip will not be connected. Here is an example topology of eight qubits on a superconducting quantum computer:\n", + "\n", + "\"8-qubit\n", + "\n", + "If we want to perform a two-qubit operations between two qubits that are not neighbouring, we have to perform SWAP operations to switch the qubit states between registers. A SWAP consists of three CNOT gates in a sequence.\n", + "\n", + "The total number of gates at the end of the compilation reflects the true requirement of the hardware. *Circuit depth* is the number of time steps required to execute the circuit, assuming that gates acting on distinct qubits can operate in parallel. On current and near-term quantum computers, we want circuits to be shallow, otherwise decoherence or other forms of noise destroy our calculations.\n", + "\n", + "We have to emphasize that the compilation depends on the backend. On the simulator, physical constraints do not apply. If we compile the circuit above, its depth will not increase:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:07:25.427084Z", + "start_time": "2018-11-19T20:07:25.410103Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'name': 'u2',\n", + " 'params': [0.0, 3.141592653589793],\n", + " 'texparams': ['0', '\\\\pi'],\n", + " 'qubits': [0],\n", + " 'memory': []},\n", + " {'name': 'cx', 'params': [], 'texparams': [], 'qubits': [0, 1], 'memory': []},\n", + " {'name': 'measure',\n", + " 'params': [],\n", + " 'texparams': [],\n", + " 'qubits': [0],\n", + " 'memory': [0]},\n", + " {'name': 'measure',\n", + " 'params': [],\n", + " 'texparams': [],\n", + " 'qubits': [1],\n", + " 'memory': [1]}]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit import compile\n", + "compiled_circuit = compile(circuit, backend)\n", + "compiled_circuit.as_dict()['experiments'][0]['instructions']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this case, the only thing the compiler did was replacing the Hadamard gate with a parametrized unitary operation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# References\n", + "\n", + "[1] M. Fingerhuth, T. Babej, P. Wittek. (2018). [Open source software in quantum computing](https://doi.org/10.1371/journal.pone.0208561). *PLOS ONE* 13(12):e0208561. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/06_Adiabatic Quantum Computing.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/06_Adiabatic Quantum Computing.ipynb new file mode 100644 index 000000000..aa68abfcd --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/06_Adiabatic Quantum Computing.ipynb @@ -0,0 +1,357 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we talk about quantum computing, we actually talk about several different paradigms. The most common one is gate-model quantum computing, in the vein we discussed in the previous notebook. In this case, gates are applied on qubit registers to perform arbitrary transformations of quantum states made up of qubits.\n", + "\n", + "The second most common paradigm is quantum annealing. This paradigm is often also referred to as adiabatic quantum computing, although there are subtle differences. Quantum annealing solves a more specific problem -- universality is not a requirement -- which makes it an easier, albeit still difficult engineering challenge to scale it up. The technology is up to 2000 superconducting qubits in 2018, compared to the less than 100 qubits on gate-model quantum computers. D-Wave Systems has been building superconducting quantum annealers for over a decade and this company holds the record for the number of qubits -- 2048. More recently, an IARPA project was launched to build novel superconducting quantum annealers. A quantum optics implementation was also made available by QNNcloud that implements a coherent Ising model. Its restrictions are different from superconducting architectures.\n", + "\n", + "Gate-model quantum computing is conceptually easier to understand: it is the generalization of digital computing. Instead of deterministic logical operations of bit strings, we have deterministic transformations of (quantum) probability distributions over bit strings. Quantum annealing requires some understanding of physics, which is why we introduced classical and quantum many-body physics in a previous notebook. Over the last few years, quantum annealing inspired gate-model algorithms that work on current and near-term quantum computers (see the notebook on variational circuits). So in this sense, it is worth developing an understanding of the underlying physics model and how quantum annealing works, even if you are only interested in gate-model quantum computing.\n", + "\n", + "While there is a plethora of quantum computing languages, frameworks, and libraries for the gate-model, quantum annealing is less well-established. D-Wave Systems offers an open source suite called Ocean. A vendor-independent solution is XACC, an extensible compilation framework for hybrid quantum-classical computing architectures, but the only quantum annealer it maps to is that of D-Wave Systems. Since XACC is a much larger initiative that extends beyond annealing, we choose a few much simpler packages from Ocean to illustrate the core concepts of this paradigm. However, before diving into the details of quantum annealing, it is worth taking a slight detour to connect the unitary evolution we discussed in a closed system and in the gate-model paradigm and the Hamiltonian describing a quantum many-body system. We also briefly discuss the adiabatic theorem, which provides the foundation why quantum annealing would work at all." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Unitary evolution and the Hamiltonian\n", + "\n", + "We introduced the Hamiltonian as an object describing the energy of a classical or quantum system. Something more is true: it gives a description of a system evolving with time. This formalism is expressed by the Schrödinger equation:\n", + "\n", + "$$\n", + "\\imath\\hbar {\\frac {d}{dt}}|\\psi(t)\\rangle = H|\\psi(t)\\rangle,\n", + "$$\n", + "\n", + "where $\\hbar$ is the reduced Planck constant. Previously we said that it is a unitary operator that evolves state. That is exactly what we get if we solve the Schrödinger equation for some time $t$: $U = \\exp(-\\imath Ht/\\hbar)$. Note that we used that the Hamiltonian does not depend on time. In other words, every unitary we talked about so far has some underlying Hamiltonian.\n", + "\n", + "The Schrödinger equation in the above form is the time-dependent variant: the state depends on time. The time-independent Schröndinger equation reflects what we said about the Hamiltonian describing the energy of the system:\n", + "\n", + " $$\n", + " H|\\psi \\rangle =E|\\psi \\rangle,\n", + "$$\n", + "\n", + "where $E$ is the total energy of the system." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# The adiabatic theorem and adiabatic quantum computing\n", + "\n", + "An adiabatic process means that conditions change slowly enough for the system to adapt to the new configuration. For instance, in a quantum mechanical system, we can start from some Hamiltonian $H_0$ and slowly change it to some other Hamiltonian $H_1$. The simplest change could be a linear schedule:\n", + "\n", + "$$\n", + "H(t) = (1-t) H_0 + t H_1,\n", + "$$\n", + "\n", + "for $t\\in[0,1]$ on some time scale. This Hamiltonian depends on time, so solving the Schrödinger equation is considerably more complicated. The adiabatic theorem says that if the change in the time-dependent Hamiltonian occurs slowly, the resulting dynamics remain simple: starting close to an eigenstate, the system remains close to\n", + "an eigenstate. This implies that if the system started in the ground state, if certain conditions are met, the system stays in the ground state. \n", + "\n", + "We call the energy difference between the ground state and the first excited state the gap. If $H(t)$ has a nonnegative gap for each $t$ during the transition and the change happens slowly, then the system stays in the ground state. If we denote the time-dependent gap by $\\Delta(t)$, a course approximation of the speed limit scales as $1/\\min(\\Delta(t))^2$.\n", + "\n", + "This theorem allows something highly unusual. We can reach the ground state of an easy-to-solve quantum many body system, and change the Hamiltonian to a system we are interested in. For instance, we could start with the Hamiltonian $\\sum_i \\sigma^X_i$ -- its ground state is just the equal superposition. Let's see this on two sites:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:07:55.833895Z", + "start_time": "2018-11-19T20:07:55.714483Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Eigenvalues: [-2. -0. 0. 2.]\n", + "Eigenstate for lowest eigenvalue [-0.5 -0.5 -0.5 -0.5]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "np.set_printoptions(precision=3, suppress=True)\n", + "\n", + "X = np.array([[0, 1], [1, 0]])\n", + "IX = np.kron(np.eye(2), X)\n", + "XI = np.kron(X, np.eye(2))\n", + "H_0 = - (IX + XI)\n", + "λ, v = np.linalg.eigh(H_0)\n", + "print(\"Eigenvalues:\", λ)\n", + "print(\"Eigenstate for lowest eigenvalue\", v[:, 0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then we could turn this Hamiltonian slowly into a classical Ising model and read out the global solution.\n", + "\n", + "\"Annealing\n", + "\n", + "\n", + "Adiabatic quantum computation exploits this phenomenon and it is able to perform universal calculations with the final Hamiltonian being $H=-\\sum_{} J_{ij} \\sigma^Z_i \\sigma^Z_{j} - \\sum_i h_i \\sigma^Z_i - \\sum_{} g_{ij} \\sigma^X_i\\sigma^X_j$. Note that is not the transverse-field Ising model: the last term is an X-X interaction. If a quantum computer respects the speed limit, guarantees the finite gap, and implements this Hamiltonian, then it is equivalent to the gate model with some overhead.\n", + "\n", + "The quadratic scaling on the gap does not appear too bad. So can we solve NP-hard problems faster with this paradigm? It is unlikely. The gap is highly dependent on the problem, and actually difficult problems tend to have an exponentially small gap. So our speed limit would be quadratic over the exponentially small gap, so the overall time required would be exponentially large." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum annealing\n", + "\n", + "A theoretical obstacle to adiabatic quantum computing is that calculating the speed limit is clearly not trivial; in fact, it is harder than solving the original problem of finding the ground state of some Hamiltonian of interest. Engineering constraints also apply: the qubits decohere, the environment has finite temperature, and so on. *Quantum annealing* drops the strict requirements and instead of respecting speed limits, it repeats the transition (the annealing) over and over again. Having collected a number of samples, we pick the spin configuration with the lowest energy as our solution. There is no guarantee that this is the ground state.\n", + "\n", + "Quantum annealing has a slightly different software stack than gate-model quantum computers. Instead of a quantum circuit, the level of abstraction is the classical Ising model -- the problem we are interested in solving must be in this form. Then, just like superconducting gate-model quantum computers, superconducting quantum annealers also suffer from limited connectivity. In this case, it means that if our problem's connectivity does not match that of the hardware, we have to find a graph minor embedding. This will combine several physical qubits into a logical qubit. The workflow is summarized in the following diagram [[1](#1)]:\n", + "\n", + "\"Software\n", + "\n", + "A possible classical solver for the Ising model is the simulated annealer that we have seen before:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:07:55.958097Z", + "start_time": "2018-11-19T20:07:55.836641Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Energy of samples:\n", + "[-2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0]\n" + ] + } + ], + "source": [ + "import dimod\n", + "\n", + "J = {(0, 1): 1.0, (1, 2): -1.0}\n", + "h = {0:0, 1:0, 2:0}\n", + "model = dimod.BinaryQuadraticModel(h, J, 0.0, dimod.SPIN)\n", + "sampler = dimod.SimulatedAnnealingSampler()\n", + "response = sampler.sample(model, num_reads=10)\n", + "print(\"Energy of samples:\")\n", + "print([solution.energy for solution in response.data()])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's take a look at the minor embedding problem. This part is NP-hard in itself, so we normally use probabilistic heuristics to find an embedding. For instance, for many generations of the quantum annealer that D-Wave Systems produces has unit cells containing a $K_{4,4}$ bipartite fully-connected graph, with two remote connections from each qubit going to qubits in neighbouring unit cells. A unit cell with its local and remote connections indicated is depicted following figure:\n", + "\n", + "\"Unit\n", + "\n", + "This is called the Chimera graph. The current largest hardware has 2048 qubits, consisting of $16\\times 16$ unit cells of 8 qubits each. The Chimera graph is available as a `networkx` graph in the package `dwave_networkx`. We draw a smaller version, consisting of $2\\times 2$ unit cells." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:07:56.523511Z", + "start_time": "2018-11-19T20:07:55.961519Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/networkx/drawing/nx_pylab.py:611: MatplotlibDeprecationWarning: isinstance(..., numbers.Number)\n", + " if cb.is_numlike(alpha):\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import dwave_networkx as dnx\n", + "%matplotlib inline\n", + "\n", + "connectivity_structure = dnx.chimera_graph(2, 2)\n", + "dnx.draw_chimera(connectivity_structure)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's create a graph that certainly does not fit this connectivity structure. For instance, the complete graph $K_n$ on nine nodes:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:07:56.630653Z", + "start_time": "2018-11-19T20:07:56.526970Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import networkx as nx\n", + "G = nx.complete_graph(9)\n", + "plt.axis('off') \n", + "nx.draw_networkx(G, with_labels=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:07:56.647316Z", + "start_time": "2018-11-19T20:07:56.632976Z" + } + }, + "outputs": [], + "source": [ + "import minorminer\n", + "embedded_graph = minorminer.find_embedding(G.edges(), connectivity_structure.edges())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's plot this embedding:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:07:56.765040Z", + "start_time": "2018-11-19T20:07:56.651559Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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S7Jx48ZcsGCBzlaxIW48V7PhmlQ2X5/G2y9E61YwXEZGBp8/f84XL16YpZV16xb53XdknTqkszPZr5+KW7fGMiUl59j37t1j69atWa9ePf7999869wsOzhwfpKvudu9O5lS1jh07xgoVKjAgIIDR0dE5likuLo6rVq1i7969aW9vz+bNm3PRokVG3dl73cvPPSYm5r1r3b5KJN03SKVS8aeffjJ7H+vDhw+5YMECVqxYkRYWFuzduzd3796ts09KkiRu2LCBzs7OHD9+fLb91GqyVSvNyqrr38cfZ4+dmJjIoUOH0tXVlYGBgTrLnJSUxB07dtDX15cWFhasXr06Fy9ezCdPnpjlM8lQSZx1JoOO81P4+xUl1e/hFbKQd162uCIiIsza4rp3j5w3j6xXT0UHBzW/+ELi/v1kWprucqxYsYJyuZzTpk1j2is7qtVkw4b6193PP88eOz4+nv3792fp0qW5f/9+nWVWKBTcunUr/fz8aGtry5YtW3LJkiW5XlzrS5IkKhQKk+8wvCtE0s0Dd+7cYYsWLejl5WXWPlZJkujn50cvLy+2aNGCJUqUYK9evbh9+3YmJSVp7B8ZGckePXqwcuXKPH36NNVqslo1/Svty38NGmTGO3z4MMuVK8c+ffpkPe7zqoSEBG7atIm+vr60s7Nj27ZtWatWLfbr189snwFJXn2mZq3lqeywOY2P4kXrVjCfjIwMRkdHm731JUkSQ0Li+MMPKWzWjLS3JwMCMrt2tF07P3nyhF27dmWNGjX4119/Ua3OHLxlaN1t1Soz3r59+1i6dGkOHDgwW9/sS3FxcVy/fj27du1KOzs7+vj4cNGiRSbdOtYmPT09667C2xz4mZdE0s0jarWaS5cupVwu57fffqt3H2tukpKS6O7uzmXLljEqKorLly9nu3btaGdnx48//pibNm3SGLixc+dOurm5sUyZMGYu325o5ZVYvvx5li1blocOHcoW+8WLF1yzZg07d+5MOzs7durUiWvWrOGLFy84d+5cNmjQwGznnpIhccKxzOdo1/2tfO+vkIW34+Uo2oiICLOOon05AjglJYUREeTvv2d28djZkT16kFu3komJ2cuxZcsWlipVim5u94yuuxUrHmHFihV5/PjxbOWJjo7mypUr2aFDB9rZ2bFbt25cv3494+Lichx5bey5v+w/T0lJKVB1VyTdPBYeHs6OHTvSw8Mjxz5WQ9y6dYtOTk68cuVK1ms5JT+SDAmJNbLS/ld5w8MVJMnnz59rTfavXkGfPHmSpUqVMttziGfCVazyeyr9A9MYmVhwKqzw9rx8XjQ6Otpsz4tqe9Y1OppcuZLs0CEzAXfrRq5fT8bFZW4/ezbG5LobHZ35qE9ERAR///13tm7dmnZ2duzRowe3bt1KhUKRVZ6cnjE2hjHPR79PRNJ9C17tYx03bpzBzwdqs337dpYvX56xsbEa216/zduuXTvWqXPX5IrbpEkovb29s25r79ixQ+tt7Zezaf3xxx8mn6ciTeLQP9LpujCFQTcLxu0oIf8weGYkPbw+q9Or4uIyE27XrpkJ2MeH/OgjY+vsf3W3ZcvLbNasGe3t7RkQEMCdO3fqfOY2MjIyW1+ysV7OBJbb6O33XcGcezmfeP78OYYNG4bg4GCsWrUKzZo1MyneyJEjce/ePezZs0fnnLLJyck4cOAQevX6GDBxUW4LCyV27jyIdu3aoUiRIlr3UalUaNOmDby9vTFjxgyT3u/IfTUGHFSiZTkLzG9jBYcipq1/KwjGejkHsFqtRokSJTTnADZQfHw8SMLe3l7nqj2JicDevcBnn5n0VgAAS8s07N59DG3atIGNjtV5SOLFixcoXLhwtnmjjaHvnNcFgUi6+cDu3bvx9ddfo3v37pgzZw5sbW2NipORkQFvb2907doVEydO1Lnf9etAnTpaJfJ9AAAMm0lEQVTGlja76OjM1Vx0mThxIoKDg3Hw4EGdk5jnJi6VGP2nEiceSVjmY4X2FU27WBAEcyCJtLQ0KBQKFClSBLa2tkYvc0cSMTExKFq0KIoVK6Zzv2PHgDZtjC1xdkql5oIQr3p5UVGyZEmjz0utVkOhUECpVKJEiRI6E3xBUnAvN/KR7t27IywsDKmpqXB3d8fhw4eNimNtbY1t27Zh4cKFOHnypM79Xl2qzFSvrlj4ur1792Lz5s3YuHGj0Ql3163M5feKWQGh/W1EwhXyDZlMhiJFisDJyUnrsoGGxipZsiSSkpKQkZGhcz9tS3Qb62kOCwKlpqYiPT09x5Z3TsjM5fdiYmJQqFAhODk5iYT7/0RLN585evQoBgwYgBYtWmDBggVwcHAwKkafPn1w9epVuLq6amw/dAjo2NEcpc3JfQANAewB0Mjww4sR6KwEXCVglxXwSCRbQTCniAjta7crlUrExsbCwcEBVlaGrxNt7lvv7xvR0s1n2rZta/JC123btsWgQYPQq1cvqFSaawZXqmSOkmZKSNAcppGamoY6dfyxaNEUkI0MG+IhEetDVHCenYYJA2RImWcDPixk0rAR8U/8y6t/arWE+PgEREZGITU1zagYCQkKxMS8gCRRY9tff5mv7jo7a74mSRLi4+Nha2trcMIliZSUFMTExMDKygpyuVwkXC1ESzcfM2Wha0mS0LFjR9SqVQtz587V2F6sGJCSYlr5SpbMXDP6dQMHDkR8fDy2bt1q0K2pxwoJAw8q8TSRWN3ZGnVdxTWh8G5KT09HQkICrKysUKJECYMGDpFEbGwsrK2ttY7vsLEBcrgDrRdXV+DZM833jY+Ph0wmQ4kSJQyquyqVCgkJCSCJEiVKGNVCLijEr1o+1qRJE1y/fh1VqlRBzZo1sW7dOuh7jWRhYYGNGzdi69at2LNnj8b2QYNML9/48ZqvrV+/HqdOncLKlSv1rrQSiaVXVfBclY7GpS1wua+NSLjCO83GxgZOTk4oVKgQoqOjkZqaqnfdlclksLe3R0pKitY+4s8/N71806drvpaSkgKVSmVQwiWJ5ORkxMTEwMbGBo6OjiLh5kK0dN8R165dQ79+/eDi4oJly5ahbNmyeh138eJFdOnSBRcuXEDFihWzXk9JAYoXz7xlZQwLCyA9Pfvox9DQULRq1QonTpyAu7u7XnHuxErof0CJNFVm67a6k0i2wvslIyMDCQkJKFSoEEqUKKH3oML09HTEx8dDLpdnOyY2FnB0NL48lpaZdffVxndGRgbi4uLg6OgIy5yGNL9CqVQiISEhq2Ws73EFnfiFe0d4enri0qVLaNasGerWrYvff/8dkiTlelyDBg0wbdo0+Pv7IzU1Nev1okWBmTONL8+iRdkTrkKhgL+/PxYsWKBXwlVJxE9/KdFobTq6VSmEc31sRMIV3kvW1taQy+WwsrJCTEwMUlJS9Gr12tjYoFixYoiLi8u2v4OD9rtM+lq5MnvCfdmPa2dnp1fiJInExETExsaiSJEicHBwEAnXAKKl+w66efMm+vXrB0tLS6xcuRJVqlTJcX+S+PTTT1G8eHGsWLEi27aBA4Hlyw17//HjgVe7iUmiZ8+ecHR0xNKlS3M9PvS5hH77M2BrI8OKjlaoUFIkW6FgMLR1SBJxcXFZreRXBQQAmzcb9v6zZgFTpmjGt7S0hJ2dnV7lj4+PN7jVLrwiD2a9Et6AVxe6njt3bq4roCgUClarVo1r1qzR2DZvHlmoUO7jKi0tyaVLNWP//PPPrFu3bq5Tu6WrJE4/lUH5ghQuvyYWKBAKJkOXDXx1YYTXTZ+euWZubnXX2ppct04ztkKhYHR0dK5lkCQpa4GCgrD83pskku47Tt+FrkkyLCyMcrmc169f19imVpO//JK5yPbrFfaDD8gVKzL3ed25c+fo7Oyc65Jfl56q6b4slZ23pvFxgqiwgqBUKhkdHa3XAgovF0bQdnGtVmdeODs6atbdsmW1J1syc+EBfRYySE9PZ1RUFGNjYwvM8ntvkri9/B4giVWrVmHSpEkYMmQIvvnmG52zv2zatAkzZszAlStXNG5XvSopKbPfp2hR3e/7/Plz1K1bF0uWLEHnzp217pOiJKafVmFDqAoL2ljhkxqFjJ5SThDeN/z/Z1sTExNRvHhxFCtWTGf9SElJQXJyMhwdHXN8BCkpKXO8ReHCut9XrVYjJiYG9vb2On8rJElCYmIi0tLSYGdnp3N+dcEwIum+R54+fYohQ4bg3r17WLVqFRo0aKB1vyFDhiAqKgqBgYEmzanaoUMH1K9fH99//73WfU49UuOrA0rUc7XAonZWcC4mkq0gaKNSqaBQKKBWq2Fvb6/1sRuSSEhIAACDn6N9Pc6LFy9gY2Ojc573l88ZW1tbw87OrkAvUGBuIum+Z0hi27ZtGDlyJAICAjBr1iwUfa25mp6ejqZNm+KTTz7B6NGjjXqfadOm4ezZszhy5IjGYBBFOjHhuBL77qjxewdrdK0iBlsIQm7IzPmKExMTdS6gQOq3MEJOFAoFVCqV1oUMJEmCQqFARkaGWKDgDRGXL+8ZmUyG3r17IzQ0FJGRkahZs6bG4gc2NjbYsWMH5s6di7Nnz2qNk6GSoNLxSNKhQ4ewevVqbN68WSPhHrqrhvvydCjVQNiAwiLhCoKeZDIZihYtCrlcnrWAwuuLH7y6MIJSqdQaR5IknY8TpqamIi0tTetCBmlpaYiOjoZMJoNcLhcJ9w0RLd333L59+zBkyBB07NgR8+bNy9aPe+DAAQwaNAhXr16FXC7HsmA1Zp5RITI5e4wytsCsFlboU8sS4eHh8PLywo4dO7Kt//sihRj1pxJnH0tY0dEKrcuLZCsIpkhNTYVCodC6Bu3LFrH8/9fVfNnf+3qytbCwyOqPValUePHiBUqWLJltTuRXl9+zt7cX8yW/YSLpFgAJCQkYN24cDh06hKVLl6JTp05Z26ZMmYJtT0rhYZWvoMrlm2BlAXxwdS6+blgcY8eOBZB5uyvwloThhzPQq3ohfOdthWLWou9WEMwhp9u9CoUCaWlpUKvVesWysLDIGqwF6Hc7WzA/kXQLkOPHj6N///5o1KgRFi5cCLlcjiEH07DkmgToW9lITG5qidne1ohIJL4+nIGbMcSqzlZoXFq0bgXhTUhLS4NCocg2sCkuLg5paWkGxSlevDhsbW2zLb+na+CW8GaIpFvAJCcnY+rUqdiyZQtaTtuPLbHVjYrzP3cLHLovYUAdS0xpaonCluIKWRDepFcf4bGystK6GII+ChcujIyMDBQtWhTFixcXrds8JpJuAXXy7F9oedIDkBk/lu7ql1bwdBNzrgpCXkpNTUV8fLxJMRwcHMRAqbdEjF4uoA6m1zUp4QLAsUfiek0Q8pqxLdxXqVQqM5REMIZIugXU71dNr3RzL4iKKwh57dXVwoyVlJRkhpIIxhBJtwC6FyshWfsjfgZ5kQokZeS+vKAgCObx+nO7xsrpWV7hzRJJtwC6HWe+yvYwzmyhBEHIhb6PB+lDJN23Q4yCKYAyzHZXmAiPioajqLyCIAh6EUm3ACpjZ64bHDLUq+AE5+Lihokg5IW0tDTExZnn9pJYxODtEJ96AVS7FFDIDI/mWVtAJFxByEPmmqJRJpOJpPuWiE+9ALKwsECXyqZn3f/VFDNQCUJesrCwMMvsUWJt3LdHJN0CamFb06+Y57YUvROCkNdeXbTEWLrW0RXePJF0C6j/a++OVZyIwjAM/zNxZoKFESFgs6yCyNp6ATaylY2NV2Bj5bVYehfbW9rbWC3YiY2kCjYmyFm7BRXBqHwJ7PNcw4H3/Gdmzhzf7Ovxnb+fdp+ddHXruuUDacMw/PJLzV3M53NHy3vkGsgrrLVWJ6839WHH9zIe3q5699zxFOxLa61Wq9XOn/0Mw3D5O0D2w3bnCuv7vs5fTPXo6M8n3if3OsGFPev7vpbL5U4T7zRNgnsATLpUVdX7z61evtnW248X9fOC6Krq9G5Xr07HerC0T4NDst1ua71e//Y+5XEca7FY/NORNP+P6PKDr99anZ23+vTlovqu6uhGV0/v9zVeE1s4ZK212mw2l7dWzWazmqbJ89sDI7oAEGILBAAhogsAIaILACGiCwAhogsAIaILACGiCwAhogsAIaILACGiCwAhogsAIaILACGiCwAhogsAIaILACGiCwAhogsAIaILACGiCwAhogsAIaILACGiCwAhogsAIaILACGiCwAhogsAIaILACGiCwAhogsAIaILACGiCwAhogsAIaILACGiCwAhogsAId8BWYqR8E/J+mYAAAAASUVORK5CYII=\n", + "text/plain": [ + "
        " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "dnx.draw_chimera_embedding(connectivity_structure, embedded_graph)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Qubits that have the same colour corresponding to a logical node in the original problem defined by the $K_9$ graph. Qubits combined in such way form a chain. Even though our problem only has 9 variables (nodes), we used almost all 32 available on the toy Chimera graph. Let's find the maximum chain length:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:07:56.771824Z", + "start_time": "2018-11-19T20:07:56.766841Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4\n" + ] + } + ], + "source": [ + "max_chain_length = 0\n", + "for _, chain in embedded_graph.items():\n", + " if len(chain) > max_chain_length:\n", + " max_chain_length = len(chain)\n", + "print(max_chain_length)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The chain on the hardware is implemented by having strong couplings between the elements in a chain -- in fact, twice as strong as what the user can set. Nevertheless, long chains can break, which means we receive inconsistent results. In general, we prefer shorter chains, so we do not waste physical qubits and we obtain more reliable results." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# References\n", + "\n", + "[1] M. Fingerhuth, T. Babej, P. Wittek. (2018). [Open source software in quantum computing](https://doi.org/10.1371/journal.pone.0208561). *PLOS ONE* 13(12):e0208561. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/07_Variational Circuits.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/07_Variational Circuits.ipynb new file mode 100644 index 000000000..a68a074b8 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/07_Variational Circuits.ipynb @@ -0,0 +1,493 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Current and near-term quantum computers suffer from imperfections, as we repeatedly pointed it out. This is why we cannot run long algorithms, that is, deep circuits on them. A new breed of algorithms started to appear since 2013 that focus on getting an advantage from imperfect quantum computers. The basic idea is extremely simple: run a short sequence of gates where some gates are parametrized. Then read out the result, make adjustments to the parameters on a classical computer, and repeat the calculation with the new parameters on the quantum hardware. This way we create an iterative loop between the quantum and the classical processing units, creating classical-quantum hybrid algorithms.\n", + "\n", + "\"Hybrid\n", + "\n", + "These algorithms are also called variational to reflect the variational approach to changing the parameters. One of the most important example of this approach is the quantum approximate optimization algorithm, which is the subject of this notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum approximate optimization algorithm\n", + "\n", + "The quantum approximate optimization algorithm (QAOA) is shallow-circuit variational algorithm for gate-model quantum computers that was inspired by quantum annealing. We discretize the adiabatic pathway in some $p$ steps, where $p$ influences precision. Each discrete time step $i$ has two parameters, $\\beta_i, \\gamma_i$. The classical variational algorithms does an optimization over these parameters based on the observed energy at the end of a run on the quantum hardware.\n", + "\n", + "More formally, we want to discretize the time-dependent $H(t)=(1-t)H_0 + tH_1$ under adiabatic conditions. We achieve this by Trotterizing the unitary. For instance, for time step $t_0$, we can split this unitary as $U(t_0) = U(H_0, \\beta_0)U(H_1, \\gamma_0)$. We can continue doing this for subsequent time steps, eventually splitting up the evolution to $p$ such chunks:\n", + "\n", + "$$\n", + "U = U(H_0, \\beta_0)U(H_1, \\gamma_0)\\ldots U(H_0, \\beta_p)U(H_1, \\gamma_p).\n", + "$$\n", + "\n", + "At the end of optimizing the parameters, this discretized evolution will approximate the adiabatic pathway:\n", + "\n", + "\"Quantum\n", + "\n", + "The Hamiltonian $H_0$ is often referred to as the driving or mixing Hamiltonian, and $H_1$ as the cost Hamiltonian. The simplest mixing Hamiltonian is $H_0 = -\\sum_i \\sigma^X_i$, the same as the initial Hamiltonian in quantum annealing. By alternating between the two Hamiltonian, the mixing Hamiltonian drives the state towards and equal superposition, whereas the cost Hamiltonian tries to seek its own ground state.\n", + "\n", + "Let us import the necessary packages first:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:09:25.405530Z", + "start_time": "2018-11-19T20:09:25.393410Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], + "source": [ + "import itertools\n", + "import numpy as np\n", + "from functools import partial, reduce\n", + "from qiskit import BasicAer, QuantumRegister, execute\n", + "from qiskit.quantum_info import Pauli\n", + "from qiskit_aqua import Operator, get_aer_backend\n", + "from qiskit_aqua.components.initial_states import Custom\n", + "from scipy.optimize import minimize\n", + "np.set_printoptions(precision=3, suppress=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can define our mixing Hamiltonian on some qubits. As in the notebook on classical and quantum many-body physics, we had to define, for instance, an `IZ` operator to express $\\mathbb{I}\\otimes\\sigma_1^Z$, that is, the $\\sigma_1^Z$ operator acting only on qubit 1. We can achieve the same effect the following way (this time using the Pauli-X operator):" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def pauli_x(qubit, coeff):\n", + " eye = np.eye((n_qubits))\n", + " return Operator([[coeff, Pauli(np.zeros(n_qubits), eye[qubit])]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The coefficient here means the strength of the transverse field at the given qubit. This operator will act trivially on all qubits, except the given one. Let's define the mixing Hamiltonian over two qubits:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:08:17.863004Z", + "start_time": "2018-11-19T20:08:17.843293Z" + } + }, + "outputs": [], + "source": [ + "n_qubits = 2\n", + "\n", + "Hm = reduce(lambda x, y: x+y,\n", + " [pauli_x(i, 1) for i in range(n_qubits)])\n", + "Hm.to_matrix()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As an example, we will minimize the Ising problem defined by the cost Hamiltonian $H_c=-\\sigma^Z_1 \\otimes \\sigma^Z_2$. First let's create the functions defining the operators using the Pauli-Z matrix:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def pauli_z(qubit, coeff):\n", + " eye = np.eye((n_qubits))\n", + " return Operator([[coeff, Pauli(eye[qubit], np.zeros(n_qubits))]])\n", + "\n", + "\n", + "def product_pauli_z(q1, q2, coeff):\n", + " eye = np.eye((n_qubits))\n", + " return Operator([[coeff, Pauli(eye[q1], np.zeros(n_qubits)) * Pauli(eye[q2], np.zeros(n_qubits))]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then we define the cost Hamiltonian:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:08:17.885938Z", + "start_time": "2018-11-19T20:08:17.865184Z" + } + }, + "outputs": [], + "source": [ + "J = np.array([[0,1],[0,0]])\n", + "Hc = reduce(lambda x,y:x+y,\n", + " [product_pauli_z(i,j, -J[i,j])\n", + " for i,j in itertools.product(range(n_qubits), repeat=2)])\n", + "Hc.to_matrix()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We set $p=2$ and initialize the $\\beta_i$ and $\\gamma_i$ parameters:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:08:17.925805Z", + "start_time": "2018-11-19T20:08:17.905037Z" + } + }, + "outputs": [], + "source": [ + "n_iter = 10 # number of iterations of the optimization procedure\n", + "p = 2\n", + "beta = np.random.uniform(0, np.pi*2, p)\n", + "gamma = np.random.uniform(0, np.pi*2, p)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The initial state is a uniform superposition of all the states $|q_1,...,q_n\\rangle$" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "init_state_vect = [1 for i in range(2**n_qubits)]\n", + "init_state = Custom(n_qubits, state_vector=init_state_vect)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The initial circuit prepares the initial state" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:08:18.058128Z", + "start_time": "2018-11-19T20:08:18.050635Z" + } + }, + "outputs": [], + "source": [ + "qr = QuantumRegister(n_qubits)\n", + "circuit_init = init_state.construct_circuit('circuit', qr)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We define a function `evolve` that takes a Hamiltonian $H$ and an angle $t$ and returns a circuit component made of the unitary matrix $e^{j H t}$" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:08:18.075525Z", + "start_time": "2018-11-19T20:08:18.059933Z" + } + }, + "outputs": [], + "source": [ + "def evolve(hamiltonian, angle, quantum_registers):\n", + " return hamiltonian.evolve(None, angle, 'circuit', 1,\n", + " quantum_registers=quantum_registers,\n", + " expansion_mode='suzuki',\n", + " expansion_order=3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To create the circuit, we need to compose the different unitary matrice given by `evolve`." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:08:18.091375Z", + "start_time": "2018-11-19T20:08:18.077164Z" + } + }, + "outputs": [], + "source": [ + "def create_circuit(qr, gamma, beta, p):\n", + " circuit_evolv = reduce(lambda x,y: x+y, [evolve(Hm, beta[i], qr) + evolve(Hc, gamma[i], qr)\n", + " for i in range(p)])\n", + " circuit = circuit_init + circuit_evolv\n", + " return circuit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now create a function `evaluate_circuit` that takes a single vector `gamma_beta` (the concatenation of `gamma` and `beta`) and returns $\\langle H_c \\rangle = \\langle \\psi | H_c | \\psi \\rangle$ where $\\psi$ is defined by the circuit created with the function above." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:08:18.117855Z", + "start_time": "2018-11-19T20:08:18.093293Z" + } + }, + "outputs": [], + "source": [ + "def evaluate_circuit(gamma_beta, qr, p):\n", + " n = len(gamma_beta)//2\n", + " circuit = create_circuit(qr, gamma_beta[:n], gamma_beta[n:], p)\n", + " return np.real(Hc.eval(\"matrix\", circuit, get_aer_backend('statevector_simulator'))[0])\n", + "evaluate = partial(evaluate_circuit, qr=qr, p=p)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we optimize the angles:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:08:37.699288Z", + "start_time": "2018-11-19T20:08:18.119570Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n", + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n", + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n", + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n", + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + }, + { + "data": { + "text/plain": [ + " fun: -0.9999999999999905\n", + " hess_inv: <4x4 LbfgsInvHessProduct with dtype=float64>\n", + " jac: array([-0., 0., 0., 0.])\n", + " message: b'CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL'\n", + " nfev: 60\n", + " nit: 7\n", + " status: 0\n", + " success: True\n", + " x: array([ 0.785, 2.124, 1.519, -0.393])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result = minimize(evaluate, np.concatenate([gamma, beta]), method='L-BFGS-B')\n", + "result" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Analysis of the results\n", + "\n", + "We create a circuit using the optimal parameters found." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:08:37.795769Z", + "start_time": "2018-11-19T20:08:37.701647Z" + } + }, + "outputs": [], + "source": [ + "circuit = create_circuit(qr, result['x'][:p], result['x'][p:], p)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We use the `statevector_simulator` backend in order to display the state created by the circuit." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:08:38.175963Z", + "start_time": "2018-11-19T20:08:37.797375Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.707 0. 0. 0.707]\n", + "[-0.785 -0.285 -0.285 -0.785]\n" + ] + } + ], + "source": [ + "backend = BasicAer.get_backend('statevector_simulator')\n", + "job = execute(circuit, backend)\n", + "state = np.asarray(job.result().get_statevector(circuit))\n", + "print(np.absolute(state))\n", + "print(np.angle(state))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that the state is approximately $e^{0.79j} \\frac{1}{\\sqrt{2}} \\left( |00 \\rangle + |11 \\rangle \\right)$. It corresponds to a uniform superposition of the two solutions of the classicial problem: $(\\sigma_1=1$, $\\sigma_2=1)$ and $(\\sigma_1=-1$, $\\sigma_2=-1)$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's now try to evaluate the operators $\\sigma^Z_1$ and $\\sigma^Z_2$ independently:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:08:38.181888Z", + "start_time": "2018-11-19T20:08:38.178242Z" + } + }, + "outputs": [], + "source": [ + "Z0 = pauli_z(0, 1)\n", + "Z1 = pauli_z(1, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:09:32.326007Z", + "start_time": "2018-11-19T20:09:31.566128Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-5.495603971894525e-15\n", + "-5.495603971894525e-15\n" + ] + } + ], + "source": [ + "print(Z0.eval(\"matrix\", circuit, get_aer_backend('statevector_simulator'))[0])\n", + "print(Z1.eval(\"matrix\", circuit, get_aer_backend('statevector_simulator'))[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that both are approximatively equal to zero. It's expected given the state we found above and corresponds a typical quantum behavior where $\\mathbb{E}[\\sigma^Z_1 \\sigma^Z_2] \\neq \\mathbb{E}[\\sigma^Z_1] \\mathbb{E}[\\sigma^Z_2]$" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/08_Sampling a Thermal State.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/08_Sampling a Thermal State.ipynb new file mode 100644 index 000000000..b71b4ba06 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/08_Sampling a Thermal State.ipynb @@ -0,0 +1,681 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "In the previous notebook, we showed how QAOA can approximate the ground state $|\\psi_0\\rangle$ of a many-body system characterized by a Hamiltonian $H$. We connected this problem to binary optimization in computer science in notebook 4, and used this connection to understand adiabatic quantum computing and variational algorithms.\n", + "\n", + "However, we also talked about the engineering constraints we face in real devices: the evolution in these devices is actually that of an open quantum system, where the quantum processing unit interacts with the environment. In that case, the ground state of $H$ won't be a pure state $|\\psi_0\\rangle$ but a density matrix $\\rho_0$\n", + "\n", + "\"A\n", + "\n", + "The environment is defined by a temperature $T$, and if we let the system equilibrate, the QPU will become thermalized at temperature $T$. As we saw in the notebook on evolution in open and closed systems, the energy of the states will follow a Boltzmann distribution: $\\rho_0=\\frac{1}{Z} e^{-H/T}$ where $Z=tr (e^{-\\beta H})$ is a normalization factor (called *partition function*), ensuring that $tr(\\rho_0)=1$. If $H$ has a discrete basis of orthonormal eigenstates $\\{|n\\rangle\\}$ with eigenvalues $\\{E_n\\}$, we can write $H=\\sum_n E_n |n\\rangle \\langle n|$ and $\\rho_0=\\frac{1}{Z} \\sum_n e^{-E_n/T} |n\\rangle \\langle n|$ (since exponentiating a diagonal operator consists in exponentiating the elements of the diagonal). Hence, the thermal density matrix is a mixed state where each eigenstate of $H$ with energy $E$ has a classical probability $P(E)=\\frac{1}{Z} e^{-E/T}$, a Boltzmann distribution. We can see that the minimum energy eigenstate will have the highest probability. When $T \\rightarrow 0$, the minimum energy eigenstate will have a probability close to $1$. When $T \\rightarrow \\infty$, all the eigenstates tend to have equal probability.\n", + "\n", + "The question that arises now is: how to approximate this thermalized state $\\rho_0$ of the Hamiltonian $H$ using a quantum circuit? For pure ground states, there were two methods: quantum annealing and QAOA. We will see here that those two methods can be adjusted to also prepare thermalized density matrices.\n", + "\n", + "We will see later that we can use this preparation to train certain machine learning models.\n", + "\n", + "# Quantum annealing\n", + "\n", + "Let us start by importing a handful of packages:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:00.429323Z", + "start_time": "2018-11-19T20:10:00.423825Z" + } + }, + "outputs": [], + "source": [ + "import itertools\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import dimod\n", + "%matplotlib inline\n", + "np.set_printoptions(precision=3, suppress=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are interested in the thermal state of the classical Ising model. We create a random model over ten spins and we will sample a hundred states." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:00.449815Z", + "start_time": "2018-11-19T20:10:00.437909Z" + } + }, + "outputs": [], + "source": [ + "n_spins = 10\n", + "n_samples = 1000\n", + "h = {v: np.random.uniform(-2, 2) for v in range(n_spins)}\n", + "J = {}\n", + "for u, v in itertools.combinations(h, 2):\n", + " if np.random.random() < .05:\n", + " J[(u, v)] = np.random.uniform(-1, 1)\n", + "model = dimod.BinaryQuadraticModel(h, J, 0.0, dimod.SPIN)\n", + "sampler = dimod.SimulatedAnnealingSampler() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's sample the energies at different temperatures. The `dimod` implementation of simulated annealing allows us to set an initial and final temperature for the annealing. If we set it to the same value, we mimic the effect of a finite temperature and we will have a wider range of configurations and energy levels in the samples. The next cell can take a while to execute." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:11:12.304140Z", + "start_time": "2018-11-19T20:10:00.452460Z" + } + }, + "outputs": [], + "source": [ + "temperature_0 = 1\n", + "response = sampler.sample(model, beta_range=[1/temperature_0, 1/temperature_0], num_reads=n_samples)\n", + "energies_0 = [solution.energy for solution in response.data()]\n", + "temperature_1 = 10\n", + "response = sampler.sample(model, beta_range=[1/temperature_1, 1/temperature_1], num_reads=n_samples)\n", + "energies_1 = [solution.energy for solution in response.data()]\n", + "temperature_2 = 100\n", + "response = sampler.sample(model, beta_range=[1/temperature_2, 1/temperature_2], num_reads=n_samples)\n", + "energies_2 = [solution.energy for solution in response.data()]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We define a function to plot the resulting probability distribution." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:11:12.764017Z", + "start_time": "2018-11-19T20:11:12.307684Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAD5CAYAAAAHtt/AAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xd4XNWB9/HvmaLebFmusi0bdyxjmgnVJgRYOglkk00hlbzkJYHd7O77kk3YDc/CS7JppEICJARCEgIhBUxCgNBCtzG49yrZliXZ6nVmzvvHGUkjWWUkTdGMfp8n95k7996598hP+M2Zc889x1hrERGR1OFJdgFERGR4FNwiIilGwS0ikmIU3CIiKUbBLSKSYhTcIiIpRsEtIpJiFNwiIilGwS0ikmJ88TjppEmTbFlZWTxOLSKSttauXVtjrS0Z6ri4BHdZWRlr1qyJx6lFRNKWMWZfNMepqUREJMUouEVEUoyCW0QkxcSljVtEJN46OzupqKigra0t2UUZtqysLEpLS/H7/SP6vIJbRFJSRUUF+fn5lJWVYYxJdnGiZq2ltraWiooK5syZM6JzqKlERFJSW1sbxcXFKRXaAMYYiouLR/VLIS7B3dDaybr9x+JxahGRbqkW2l1GW+64BPe+oy38+s398Ti1iMi4F7emkv1HW+J1ahGRcS1uwX3gaGu8Ti0iMibce++9LF++nOXLl+PxeLrXv/SlL8X1unHrVXKwvpWOQIgMn+5/ikh6uv7667n++uuprKzkrLPO4p133knIdeOWqtZCZZ1q3SKS/jZu3Eh5eXnCrhfX6rDauUVkPNiwYQNLly5N2PXi+gDOAQW3iCRA2S2r43buvV+/bMhjNm7cyIUXXtj9fvfu3dxxxx3U19fz2GOPxbxMca1xK7hFZDzoW+OeO3cu999/f9yup6YSEZFRCIVC7Nixg0WLFiXsmnFtKlFwi0giRNOcES87d+6ktLSUzMzMhF0zvjXu2hastfG8hIhIUi1YsIDNmzf32lZbW8sNN9zAunXruPPOO2N+zbjUuD3h5/Ab2wPUt3ZSlJMRj8uIiIxJxcXF3HPPPXE7f1xq3H5vzwAqai4REYmtuAR3ZsTTknr0XUQktuJT444IbtW4RURiKy7BneFVcIuIxEsCmkoU3CIisRSnGre3e101bhGR2Ip7G3dlXSuBYCgelxERGZfiEtweAyX57imiYMhyqH7kk2KKiEhvcXtyctbEnO51tXOLiMROQoJ7n4JbRNJQ2k1dVlac272+vaoxXpcREUmatJu67MTpBd3rGyvr43UZEZGkS5upy8pLC7vXN1Y2EAxplEARSU9pM3XZlIIsJudncqSxndbOILurm5g/JT9elxOR8exrhUMfM+JzD91i0Hfqsj/84Q+sXr2aI0eOcOONN3LRRRfFtEhxHY97WUSte32FmktEJD31rXFfffXV3HvvvTzwwAM88sgjMb9eXIN76Yye4N6gdm4RSUODTV12++23c+ONN8b8mnGduiyyxq3gFpG4iaI5I176m7rMWsstt9zCJZdcwimnnBLza8Y1uCNr3JsPNhAIhvB541rJFxFJqP6mLvvBD37As88+S319PTt37uSGG26I6TXjGtyT87OYWpDF4YY2WjuD7KpuZuFU3aAUkfR20003cdNNN8Xt/HGv/qqdW0QktuIe3L3auSvq4n05EZG0F/fgLleNW0QkphLaVLL5UIPG5hYRGaW4B3dJfibTCrMAaOsMsbO6Kd6XFBFJawnpmxfZXKInKEVERifhwa2RAkVERicxwa0xS0REYibhNe7Nhxro1A1KEZERS0hwF+dlMqMoG4COQIgdVbpBKSKpL+2mLutr6YwCKutaAdhQWceSiBlyRERSUdpNXdbXstKi7nU9iCMi6STRU5clrMbd6wlK3aAUkRgq/0X8QnPDJzYMfUyCpy5LWI07Mri3HG6kI6AblCKSHvrWuLds2cINN9zAtddey9133x3z6yUsuCfkZlA6oecG5faqxkRdWkQkrvrWuBcvXsw999zDb3/7W9asWRPz6yWsqQRcrbvimLtBubGyvtc4JiIiIxVNc0a8DDR12Z/+9Ce+/vWv84UvfCHm10zodDS9HsTRDUoRSQP9TV0GcOWVV/Lqq6/y8MMPx/yaCa9xd9Gj7yKSDvqbuuyFF17g8ccfp729nUsvvTTm10xacG895G5QZvg0B6WIpJdVq1axatWquJ0/oalZlJPBzInhG5RB3aAUERmJhFd3l83oeRBHA06JiAxfwoNbkweLiIxO4mvckZMHV2ryYBGR4Up8jXt6T3BvO9xIeyCY6CKISJqw1ia7CCMy2nInPLgLc/zMLs4BoDNo2XZYNyhFZPiysrKora1NufC2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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def plot_probabilities(energy_samples, temperatures):\n", + " fig, ax = plt.subplots()\n", + " for i, (energies, T) in enumerate(zip(energy_samples, temperatures)):\n", + " probabilities = np.exp(-np.array(sorted(energies))/T)\n", + " Z = probabilities.sum()\n", + " probabilities /= Z\n", + " ax.plot(energies, probabilities, linewidth=3, label = \"$T_\" + str(i+1)+\"$\")\n", + " minimum_energy = min([min(energies) for energies in energy_samples])\n", + " maximum_energy = max([max(energies) for energies in energy_samples])\n", + " ax.set_xlim(minimum_energy, maximum_energy)\n", + " ax.set_xticks([])\n", + " ax.set_yticks([])\n", + " ax.set_xlabel('Energy')\n", + " ax.set_ylabel('Probability')\n", + " ax.legend()\n", + " plt.show()\n", + "\n", + "plot_probabilities([energies_0, energies_1, energies_2], \n", + " [temperature_0, temperature_1, temperature_2])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Just as we saw in the introduction, the distribution flattens out at a high temperature ($T_3$). On the other hand, the energy is peaked for a low temperature, and we do not even have samples for high-energy states." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum Approximate Thermalization\n", + "\n", + "There are many results for preparing a thermal state on a gate-model quantum computer, but most of them need a large-scale device. More recently, a protocol for approximating thermalization was developed using shallow circuits [[1](#1)]. The idea is that if we knew that the thermal state was a pure state $\\psi$ (which means $\\rho=|\\psi \\rangle \\langle \\psi |$), we could apply QAOA to get to the thermal state of a target Hamiltonian. Since QAOA approximates the adiabatic pathway, it should be a conservative change, so at the end of it, we would be close to the thermal state of the target Hamiltonian.\n", + "\n", + "To find the thermal state of the simple system, the trick is to purify $\\rho$ on a larger Hilbert space. If we call $\\mathcal{H_1}$ our current Hilbert space, purifying a density matrix $\\rho$ consists of finding a second Hilbert space $\\mathcal{H_2}$ such that there exists $| \\psi \\rangle \\in \\mathcal{H_1} \\otimes \\mathcal{H_2}$ such that $\\rho = \\textrm{Tr}_{\\mathcal{H_2}} \\left( |\\psi \\rangle \\langle \\psi | \\right)$, where $\\textrm{Tr}_{\\mathcal{H_2}}$ is the partial trace taken over the second Hilbert space -- in essence, we are marginalizing the probability distribution. This resembles the idea of what we shown in the notebook on measurements and mixed states: if we trace out a subsystem of the maximally entangled state $|\\phi^+\\rangle$, we get the maximally mixed state. The maximally mixed state is essentially a thermal state at infinite temperature.\n", + "\n", + "It can be shown that $| \\psi \\rangle =\\sqrt{2 \\cosh 1/T} \\sum_{z \\in {-1,1}} e^{- z/T} |z \\rangle_{\\mathcal{H_1}} \\otimes | z \\rangle_{\\mathcal{H_2}}$ purifies $\\rho=\\frac{1}{Z}e^{- H_m/T}$ [[1](#1)], where $H_m$ is the mixing Hamiltonian in QAOA. This state can be built with a circuit composed uniquely of RX gates and CNOT gates" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:11:13.926133Z", + "start_time": "2018-11-19T20:11:12.766644Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], + "source": [ + "import itertools\n", + "import numpy as np\n", + "from functools import reduce\n", + "from qiskit import BasicAer, QuantumRegister, QuantumCircuit, ClassicalRegister\n", + "from qiskit import execute\n", + "from qiskit.quantum_info import Pauli\n", + "from qiskit_aqua import get_aer_backend, QuantumInstance\n", + "from qiskit_aqua.operator import Operator\n", + "from qiskit_aqua.components.optimizers import COBYLA\n", + "from qiskit_aqua.algorithms import VQE\n", + "from qiskit_aqua.algorithms.adaptive.qaoa.varform import QAOAVarForm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## High temperature" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We create an example system of two qubits that needs two extra qubits for purification. In this first example, we set $T=\\infty$, which corresponds to an inverse temperature $\\beta=0$." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:11:13.932601Z", + "start_time": "2018-11-19T20:11:13.928400Z" + } + }, + "outputs": [], + "source": [ + "n_qubits = 2\n", + "n_system = n_qubits * 2\n", + "β = 0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We define a simple Ising model with a weight matrix and set $p=1$ in QAOA." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:11:13.948745Z", + "start_time": "2018-11-19T20:11:13.937892Z" + } + }, + "outputs": [], + "source": [ + "weights = np.array([[0,1],[0,0]])\n", + "p = 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Based on these parameters, we define the Ising Hamiltonian $H=\\sum W_{ij} \\sigma_i\\sigma_j$ (for the weight matrix defined above, $H=\\sigma_1 \\sigma_2$, whose minimum is reached when $\\sigma_1 \\neq \\sigma_2$)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:11:13.984797Z", + "start_time": "2018-11-19T20:11:13.950693Z" + } + }, + "outputs": [], + "source": [ + "def pauli_z(qubit, coeff):\n", + " eye = np.eye((n_system))\n", + " return Operator([[coeff, Pauli(eye[qubit], np.zeros(n_system))]])\n", + "\n", + "def product_pauli_z(q1, q2, coeff):\n", + " eye = np.eye((n_system))\n", + " return Operator([[coeff, Pauli(eye[q1], np.zeros(n_system)) * Pauli(eye[q2], np.zeros(n_system))]])\n", + "\n", + "def ising_hamiltonian(weights):\n", + " H = reduce(lambda x,y:x+y,\n", + " [product_pauli_z(i,j, -weights[i,j])\n", + " for (i,j) in itertools.product(range(n_qubits), range(n_qubits))])\n", + " H.to_matrix()\n", + " return H\n", + "\n", + "Hc = ising_hamiltonian(weights)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We prepare the intial state $|\\psi_0 \\rangle = \\sqrt{2 cosh(1/T)} \\sum_{z \\in {1, -1}} e^{- z/T} | z \\rangle_S \\otimes | z \\rangle_E$, with $E$ a temporary space used for purification purpose. It can be shown that tracing out this state over $E$ reproduces the state $\\rho \\propto e^{-H_m/T} $. We initialize the circuit first:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:11:13.996055Z", + "start_time": "2018-11-19T20:11:13.988499Z" + } + }, + "outputs": [], + "source": [ + "qr = QuantumRegister(n_qubits * 2)\n", + "cr = ClassicalRegister(n_qubits)\n", + "backend = BasicAer.get_backend('qasm_simulator')\n", + "circuit_init = QuantumCircuit(qr)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And we prepare the state:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:11:14.017731Z", + "start_time": "2018-11-19T20:11:14.010949Z" + } + }, + "outputs": [], + "source": [ + "α = 2 * np.arctan(np.exp(- β/2))\n", + "for i in range(n_qubits):\n", + " circuit_init.rx(α, qr[n_qubits+i])\n", + " circuit_init.cx(qr[n_qubits+i], qr[i])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The class `QAOAVarForm` takes an initial state as argument, which should be an object containing a method `construct_circuit` that builds and returns the initial state" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:11:14.032266Z", + "start_time": "2018-11-19T20:11:14.019967Z" + } + }, + "outputs": [], + "source": [ + "class InitialState:\n", + " def __init__(self, β, n_qubits):\n", + " self.β = β\n", + " self.n_qubits = n_qubits\n", + " \n", + " def construct_circuit(self, mode, qr):\n", + " circuit_init = QuantumCircuit(qr)\n", + "\n", + " alpha = 2 * np.arctan(np.exp(- self.β / 2))\n", + " for i in range(n_qubits):\n", + " circuit_init.rx(alpha, qr[n_qubits+i])\n", + " circuit_init.cx(qr[n_qubits+i], qr[i])\n", + " \n", + " return circuit_init" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We need to overload the original QAOA class to be able pass it an initial state as a parameter" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:11:14.046628Z", + "start_time": "2018-11-19T20:11:14.034301Z" + } + }, + "outputs": [], + "source": [ + "class MyQAOA(VQE):\n", + " def __init__(self, operator, optimizer, init_state, p=1, operator_mode='matrix', initial_point=None,\n", + " batch_mode=False, aux_operators=None):\n", + " self.validate(locals())\n", + " var_form = QAOAVarForm(operator, p, init_state)\n", + " super().__init__(operator, var_form, optimizer,\n", + " operator_mode=operator_mode, initial_point=initial_point)\n", + " \n", + "class MyQAOAVarForm(QAOAVarForm):\n", + " def construct_circuit(self, angles, quantum_register, classical_register):\n", + " if not len(angles) == self.num_parameters:\n", + " raise ValueError('Incorrect number of angles: expecting {}, but {} given.'.format(\n", + " self.num_parameters, len(angles)\n", + " ))\n", + " q = quantum_register\n", + " circuit = QuantumCircuit(quantum_register, classical_register)\n", + " if self._initial_state:\n", + " circuit += self._initial_state.construct_circuit('circuit', q)\n", + " else:\n", + " circuit.u2(0, np.pi, q)\n", + " for idx in range(self._p):\n", + " β, γ = angles[idx], angles[idx + self._p]\n", + " circuit += self._cost_operator.evolve(None, γ, 'circuit', 1, quantum_registers=q)\n", + " circuit += self._mixer_operator.evolve(None, β, 'circuit', 1, quantum_registers=q)\n", + " return circuit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We prepare the initial state:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:11:14.069066Z", + "start_time": "2018-11-19T20:11:14.049530Z" + } + }, + "outputs": [], + "source": [ + "initial_state = InitialState(β, n_qubits)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We run the protocol to get the thermal state:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:11:14.083442Z", + "start_time": "2018-11-19T20:11:14.071127Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Begin QAOA...\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n", + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n", + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n", + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n", + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Results of QAOA {'eigvals': array([0.]), 'opt_params': array([ 1.898, -0.447]), 'eigvecs': array([[-0.177-0.438j, -0.076-0.058j, -0.076-0.058j, -0.075-0.055j,\n", + " -0.076-0.058j, 0.328+0.241j, -0.075-0.055j, 0.219-0.137j,\n", + " -0.076-0.058j, -0.075-0.055j, 0.328+0.241j, 0.219-0.137j,\n", + " -0.075-0.055j, 0.219-0.137j, 0.219-0.137j, 0.028+0.328j]]), 'energy': 0.0, 'eval_count': 28, 'eval_time': 11.246169090270996}\n" + ] + } + ], + "source": [ + "def get_thermal_state(weights, p):\n", + " Hc = ising_hamiltonian(weights)\n", + " print(\"Begin QAOA...\")\n", + " \n", + " optimizer = COBYLA()\n", + " qaoa = MyQAOA(Hc, optimizer, initial_state, p, \"matrix\")\n", + " backend = get_aer_backend('statevector_simulator')\n", + " quantum_instance = QuantumInstance(backend, shots=100)\n", + " result = qaoa.run(quantum_instance)\n", + " print(\"Results of QAOA\", result)\n", + " \n", + " return result\n", + "result = get_thermal_state(weights, 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we reformat the final results, measure out the result, and plot the energy distribution:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:11:44.601197Z", + "start_time": "2018-11-19T20:11:14.085143Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "var_form = MyQAOAVarForm(Hc, p, initial_state)\n", + "thermal_state = var_form.construct_circuit(result['opt_params'], qr, cr)\n", + "for i in range(n_qubits):\n", + " thermal_state.measure(qr[i], cr[i])\n", + " job = execute(thermal_state, backend, shots=2000)\n", + "results = job.result().get_counts(thermal_state)\n", + "\n", + "def get_energy(spin_configuration):\n", + " x = spin_configuration.reshape(-1, 1)\n", + " return np.sum([[-weights[i,j] * x[i] * x[j] for j in range(n_qubits)] for i in range(n_qubits)])\n", + "\n", + "list_spin_configs = np.array(np.concatenate([[list(spin_config)] * results[spin_config] for spin_config in results]), dtype=\"int\")\n", + "list_spin_configs[list_spin_configs == 0] = -1\n", + "list_energy = np.array([get_energy(spin_config) for spin_config in list_spin_configs])\n", + "hist = plt.hist(list_energy, density=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The two eigenvalues, i.e. possible energies, of our Hamiltonian $H=\\sigma_1 \\sigma_2$ are $E=-1$ and $E=1$. At infinite temperature ($\\beta=0$), they should be assigned an equal probability, which is the case in the histogram above. Let's repeat the experiment at a lower temperature." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Low temperature\n", + "\n", + "We set the inverse temperature to a high value. With this, we should get the lowest energy with a high probability." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Begin QAOA...\n", + "Results of QAOA {'eigvals': array([-0.973]), 'opt_params': array([0., 0.]), 'eigvecs': array([[ 0.993+0.j , -0. -0.j , -0. -0.j , -0. +0.j ,\n", + " -0. -0.j , 0. -0.082j, -0. +0.j , -0. +0.j ,\n", + " -0. -0.j , -0. +0.j , 0. -0.082j, -0. +0.j ,\n", + " -0. +0.j , -0. +0.j , -0. +0.j , -0.007-0.j ]]), 'energy': -0.973407734380529, 'eval_count': 27, 'eval_time': 12.175426006317139}\n" + ] + } + ], + "source": [ + "β = 5\n", + "initial_state = InitialState(β, n_qubits)\n", + "result = get_thermal_state(weights, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([4.923, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,\n", + " 0.078]),\n", + " array([-1. , -0.8, -0.6, -0.4, -0.2, 0. , 0.2, 0.4, 0.6, 0.8, 1. ]),\n", + " )" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "var_form = MyQAOAVarForm(Hc, p, initial_state)\n", + "thermal_state = var_form.construct_circuit(result['opt_params'], qr, cr)\n", + "for i in range(n_qubits):\n", + " thermal_state.measure(qr[i], cr[i])\n", + " job = execute(thermal_state, backend, shots=2000)\n", + "results = job.result().get_counts(thermal_state)\n", + "\n", + "list_spin_configs = np.array(np.concatenate([[list(spin_config)] * results[spin_config] for spin_config in results]), dtype=\"int\")\n", + "list_spin_configs[list_spin_configs == 0] = -1\n", + "list_energy = np.array([get_energy(spin_config) for spin_config in list_spin_configs])\n", + "plt.hist(list_energy, density=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The minimum energy eigenstate should now have a much higher probability. Try to repeat the experiment with different $\\beta$ to see the effect of the temperature on the prepared thermal state." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "# References\n", + "\n", + "[1] Verdon, G., Broughton, M., Biamonte, J. (2017) [A quantum algorithm to train neural networks using low-depth circuits](https://arxiv.org/abs/1712.05304). *arXiv:1712.05304*. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/09_Discrete Optimization and Ensemble Learning.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/09_Discrete Optimization and Ensemble Learning.ipynb new file mode 100644 index 000000000..e95d85884 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/09_Discrete Optimization and Ensemble Learning.ipynb @@ -0,0 +1,669 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Any learning algorithm will always have strengths and weaknesses: a single model is unlikely to fit every possible scenario. Ensembles combine multiple models to achieve higher generalization performance than any of the constituent models is capable of. How do we assemble the weak learners? We can use some sequential heuristics. For instance, given the current collection of models, we can add one more based on where that particular model performs well. Alternatively, we can look at all the correlations of the predictions between all models, and optimize for the most uncorrelated predictors. Since this latter is a global approach, it naturally maps to a quantum computer.\n", + "\n", + "# Ensemble methods\n", + "\n", + "Ensembles yield better results when there is considerable diversity among the base classifiers. If diversity is sufficient, base classifiers make different errors, and a strategic combination may reduce the total error, ideally improving generalization performance. A constituent model in an ensemble is also called a base classifier or weak learner, and the composite model a strong learner.\n", + "\n", + "The generic procedure of ensemble methods has two steps. First, develop a set of base classifiers from the training data. Second, combine them to form the ensemble. In the simplest combination, the base learners vote, and the label prediction is based on majority. More involved methods weigh the votes of the base learners. \n", + "\n", + "Let us import some packages and define our figure of merit as accuracy in a balanced dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:18.000793Z", + "start_time": "2018-11-19T20:10:17.128450Z" + } + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import sklearn\n", + "import sklearn.datasets\n", + "import sklearn.metrics\n", + "%matplotlib inline\n", + "\n", + "metric = sklearn.metrics.accuracy_score" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We generate a random dataset of two classes that form concentric circles:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:18.174692Z", + "start_time": "2018-11-19T20:10:18.003641Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "np.random.seed(0)\n", + "data, labels = sklearn.datasets.make_circles()\n", + "idx = np.arange(len(labels))\n", + "np.random.shuffle(idx)\n", + "# train on a random 2/3 and test on the remaining 1/3\n", + "idx_train = idx[:2*len(idx)//3]\n", + "idx_test = idx[2*len(idx)//3:]\n", + "X_train = data[idx_train]\n", + "X_test = data[idx_test]\n", + "\n", + "y_train = 2 * labels[idx_train] - 1 # binary -> spin\n", + "y_test = 2 * labels[idx_test] - 1\n", + "\n", + "scaler = sklearn.preprocessing.StandardScaler()\n", + "normalizer = sklearn.preprocessing.Normalizer()\n", + "\n", + "X_train = scaler.fit_transform(X_train)\n", + "X_train = normalizer.fit_transform(X_train)\n", + "\n", + "X_test = scaler.fit_transform(X_test)\n", + "X_test = normalizer.fit_transform(X_test)\n", + "plt.figure(figsize=(6, 6))\n", + "plt.subplot(111, xticks=[], yticks=[])\n", + "plt.scatter(data[labels == 0, 0], data[labels == 0, 1], color='navy')\n", + "plt.scatter(data[labels == 1, 0], data[labels == 1, 1], color='c');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's train a perceptron:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:18.226327Z", + "start_time": "2018-11-19T20:10:18.177561Z" + }, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "accuracy (train): 0.55\n", + "accuracy (test): 0.41\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/sklearn/linear_model/stochastic_gradient.py:144: FutureWarning: max_iter and tol parameters have been added in Perceptron in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n", + " FutureWarning)\n" + ] + } + ], + "source": [ + "from sklearn.linear_model import Perceptron\n", + "model_1 = Perceptron()\n", + "model_1.fit(X_train, y_train)\n", + "print('accuracy (train): %5.2f'%(metric(y_train, model_1.predict(X_train))))\n", + "print('accuracy (test): %5.2f'%(metric(y_test, model_1.predict(X_test))))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since its decision surface is linear, we get a poor accuracy. Would a support vector machine with a nonlinear kernel fare better?" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:18.244639Z", + "start_time": "2018-11-19T20:10:18.230025Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "accuracy (train): 0.64\n", + "accuracy (test): 0.24\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", + " \"avoid this warning.\", FutureWarning)\n" + ] + } + ], + "source": [ + "from sklearn.svm import SVC\n", + "model_2 = SVC(kernel='rbf')\n", + "model_2.fit(X_train, y_train)\n", + "print('accuracy (train): %5.2f'%(metric(y_train, model_2.predict(X_train))))\n", + "print('accuracy (test): %5.2f'%(metric(y_test, model_2.predict(X_test))))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It performs better on the training set, but at the cost of extremely poor generalization. \n", + "\n", + "Boosting is an ensemble method that explicitly seeks models that complement one another. The variation between boosting algorithms is how they combine weak learners. Adaptive boosting (AdaBoost) is a popular method that combines the weak learners in a sequential manner based on their individual accuracies. It has a convex objective function that does not penalize for complexity: it is likely to include all available weak learners in the final ensemble. Let's train AdaBoost with a few weak learners:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:18.314089Z", + "start_time": "2018-11-19T20:10:18.248869Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "accuracy (train): 0.65\n", + "accuracy (test): 0.29\n" + ] + } + ], + "source": [ + "from sklearn.ensemble import AdaBoostClassifier\n", + "model_3 = AdaBoostClassifier(n_estimators=3)\n", + "model_3.fit(X_train, y_train)\n", + "print('accuracy (train): %5.2f'%(metric(y_train, model_3.predict(X_train))))\n", + "print('accuracy (test): %5.2f'%(metric(y_test, model_3.predict(X_test))))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Its performance is marginally better than that of the SVM." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# QBoost\n", + "\n", + "The idea of Qboost is that optimization on a quantum computer is not constrained to convex objective functions, therefore we can add arbitrary penalty terms and rephrase our objective [[1](#1)]. Qboost solves the following problem:\n", + "\n", + "$$\n", + "\\mathrm{argmin}_{w} \\left(\\frac{1}{N}\\sum_{i=1}^{N}\\left(\\sum_{k=1}^{K}w_kh_k(x_i)-\n", + "y_i\\right)^2+\\lambda\\|w\\|_0\\right),\n", + "$$\n", + "\n", + "where $h_k(x_i)$ is the prediction of the weak learner $k$ for a training instance $k$. The weights in this formulation are binary, so this objective function is already maps to an Ising model. The regularization in the $l_0$ norm ensures sparsity, and it is not the kind of regularization we would consider classically: it is hard to optimize with this term on a digital computer.\n", + "\n", + "Let us expand the quadratic part of the objective:\n", + "\n", + "$$\n", + "\\mathrm{argmin}_{w} \\left(\\frac{1}{N}\\sum_{i=1}^{N}\n", + "\\left( \\left(\\sum_{k=1}^{K} w_k h_k(x_i)\\right)^{2} -\n", + "2\\sum_{k=1}^{K} w_k h_k(\\mathbf{x}_i)y_i + y_i^{2}\\right) + \\lambda \\|w\\|_{0}\n", + "\\right).\n", + "$$\n", + "\n", + "Since $y_i^{2}$ is just a constant offset, the optimization reduces to\n", + "\n", + "$$\n", + "\\mathrm{argmin}_{w} \\left(\n", + "\\frac{1}{N}\\sum_{k=1}^{K}\\sum_{l=1}^{K} w_k w_l\n", + "\\left(\\sum_{i=1}^{N}h_k(x_i)h_l(x_i)\\right) - \n", + "\\frac{2}{N}\\sum_{k=1}^{K}w_k\\sum_{i=1}^{N} h_k(x_i)y_i +\n", + "\\lambda \\|w\\|_{0} \\right).\n", + "$$\n", + "\n", + "This form shows that we consider all correlations between the predictions of the weak learners: there is a summation of $h_k(x_i)h_l(x_i)$. Since this term has a positive sign, we penalize for correlations. On the other hand, the correlation with the true label, $h_k(x_i)y_i$, has a negative sign. The regularization term remains unchanged.\n", + "\n", + "Let us consider all three models from the previous section as weak learners." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:18.320974Z", + "start_time": "2018-11-19T20:10:18.316633Z" + } + }, + "outputs": [], + "source": [ + "models = [model_1, model_2, model_3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We calculate their predictions and set $\\lambda$ to 1. The predictions are scaled to reflecting the averaging in the objective." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:18.354723Z", + "start_time": "2018-11-19T20:10:18.323802Z" + } + }, + "outputs": [], + "source": [ + "n_models = len(models)\n", + "\n", + "predictions = np.array([h.predict(X_train) for h in models], dtype=np.float64)\n", + "# scale hij to [-1/N, 1/N]\n", + "predictions *= 1/n_models\n", + "\n", + "λ = 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We create the quadratic binary optimization of the objective function as we expanded above:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:18.375760Z", + "start_time": "2018-11-19T20:10:18.357248Z" + } + }, + "outputs": [], + "source": [ + "w = np.dot(predictions, predictions.T)\n", + "wii = len(X_train) / (n_models ** 2) + λ - 2 * np.dot(predictions, y_train)\n", + "w[np.diag_indices_from(w)] = wii\n", + "W = {}\n", + "for i in range(n_models):\n", + " for j in range(i, n_models):\n", + " W[(i, j)] = w[i, j]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We solve the quadratic binary optimization with simulated annealing and read out the optimal weights:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:18.703378Z", + "start_time": "2018-11-19T20:10:18.378217Z" + }, + "scrolled": true + }, + "outputs": [], + "source": [ + "import dimod\n", + "sampler = dimod.SimulatedAnnealingSampler()\n", + "response = sampler.sample_qubo(W, num_reads=10)\n", + "weights = list(response.first.sample.values())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We define a prediction function to help with measuring accuracy:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:18.715360Z", + "start_time": "2018-11-19T20:10:18.705496Z" + } + }, + "outputs": [], + "source": [ + "def predict(models, weights, X):\n", + "\n", + " n_data = len(X)\n", + " T = 0\n", + " y = np.zeros(n_data)\n", + " for i, h in enumerate(models):\n", + " y0 = weights[i] * h.predict(X) # prediction of weak classifier\n", + " y += y0\n", + " T += np.sum(y0)\n", + "\n", + " y = np.sign(y - T / (n_data*len(models)))\n", + "\n", + " return y" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:18.734604Z", + "start_time": "2018-11-19T20:10:18.719931Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "accuracy (train): 0.65\n", + "accuracy (test): 0.29\n" + ] + } + ], + "source": [ + "print('accuracy (train): %5.2f'%(metric(y_train, predict(models, weights, X_train))))\n", + "print('accuracy (test): %5.2f'%(metric(y_test, predict(models, weights, X_test))))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The accuracy co-incides with our strongest weak learner's, the AdaBoost model. Looking at the optimal weights, this is apparent:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:18.751765Z", + "start_time": "2018-11-19T20:10:18.736771Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 0, 1]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "weights" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Only AdaBoost made it to the final ensemble. The first two models perform poorly and their predictions are correlated. Yet, if you remove regularization by setting $\\lambda=0$ above, the second model also enters the ensemble, decreasing overall performance. This shows that the regularization is in fact important." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Solving by QAOA\n", + "\n", + "Since eventually our problem is just an Ising model, we can also solve it on a gate-model quantum computer by QAOA. Let us explicitly map the binary optimization to the Ising model:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:18.765328Z", + "start_time": "2018-11-19T20:10:18.754605Z" + } + }, + "outputs": [], + "source": [ + "h, J, offset = dimod.qubo_to_ising(W)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have to translate the Ising couplings to be suitable for solving by the QAOA routine:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:19.838597Z", + "start_time": "2018-11-19T20:10:18.767740Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], + "source": [ + "from qiskit.quantum_info import Pauli\n", + "from qiskit_aqua import Operator\n", + "\n", + "num_nodes = w.shape[0]\n", + "pauli_list = []\n", + "for i in range(num_nodes):\n", + " wp = np.zeros(num_nodes)\n", + " vp = np.zeros(num_nodes)\n", + " vp[i] = 1\n", + " pauli_list.append([h[i], Pauli(vp, wp)])\n", + " for j in range(i+1, num_nodes):\n", + " if w[i, j] != 0:\n", + " wp = np.zeros(num_nodes)\n", + " vp = np.zeros(num_nodes)\n", + " vp[i] = 1\n", + " vp[j] = 1\n", + " pauli_list.append([J[i, j], Pauli(vp, wp)])\n", + "ising_model = Operator(paulis=pauli_list)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we run the optimization:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:40.568546Z", + "start_time": "2018-11-19T20:10:19.840830Z" + } + }, + "outputs": [], + "source": [ + "from qiskit_aqua import get_aer_backend, QuantumInstance\n", + "from qiskit_aqua.algorithms import QAOA\n", + "from qiskit_aqua.components.optimizers import COBYLA\n", + "p = 1\n", + "optimizer = COBYLA()\n", + "qaoa = QAOA(ising_model, optimizer, p, operator_mode='matrix')\n", + "backend = get_aer_backend('statevector_simulator')\n", + "quantum_instance = QuantumInstance(backend, shots=100)\n", + "result = qaoa.run(quantum_instance)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we extract the most likely solution:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:40.577140Z", + "start_time": "2018-11-19T20:10:40.571807Z" + } + }, + "outputs": [], + "source": [ + "k = np.argmax(result['eigvecs'][0])\n", + "weights = np.zeros(num_nodes)\n", + "for i in range(num_nodes):\n", + " weights[i] = k % 2\n", + " k >>= 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's see the weights found by QAOA:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:40.597309Z", + "start_time": "2018-11-19T20:10:40.579449Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1., 0., 0.])" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "weights" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And the final accuracy:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:40.614781Z", + "start_time": "2018-11-19T20:10:40.602793Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "accuracy (train): 0.55\n", + "accuracy (test): 0.41\n" + ] + } + ], + "source": [ + "print('accuracy (train): %5.2f'%(metric(y_train, predict(models, weights, X_train))))\n", + "print('accuracy (test): %5.2f'%(metric(y_test, predict(models, weights, X_test))))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# References\n", + "\n", + "[1] Neven, H., Denchev, V.S., Rose, G., Macready, W.G. (2008). [Training a binary classifier with the quantum adiabatic algorithm](https://arxiv.org/abs/0811.0416). *arXiv:0811.0416*. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/10_Discrete Optimization and Unsupervised Learning.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/10_Discrete Optimization and Unsupervised Learning.ipynb new file mode 100644 index 000000000..fcb304192 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/10_Discrete Optimization and Unsupervised Learning.ipynb @@ -0,0 +1,288 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unsupervised learning means a lack of labels: we are looking for structure in the data, without having an *a priori* intuition what that structure might be. A great example is clustering, where the goal is to identify instances that clump together in some high-dimensional space. Unsupervised learning in general is a harder problem. Deep learning revolutionized supervised learning and it had made significant advances in unsupervised learning, but there remains plenty of room for improvement. In this notebook, we look at how we can map an unsupervised learning problem to graph optimization, which in turn we can solve on a quantum computer.\n", + "\n", + "# Mapping clustering to discrete optimization\n", + "\n", + "Assume that we have some points $\\{x_i\\}_{i=1}^N$ lying in some high-dimensional space $\\mathbb{R}^d$. How do we tell which ones are close to one another and which ones are distant? To get some intuition, let's generate a simple dataset with two distinct classes. The first five instances will belong to class 1, and the second five to class 2:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:21.386145Z", + "start_time": "2018-11-19T20:10:20.886249Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from mpl_toolkits.mplot3d import Axes3D\n", + "%matplotlib inline\n", + "\n", + "n_instances = 10\n", + "class_1 = np.random.rand(n_instances//2, 3)/5\n", + "class_2 = (0.6, 0.1, 0.05) + np.random.rand(n_instances//2, 3)/5\n", + "data = np.concatenate((class_1, class_2))\n", + "colors = [\"red\"] * (n_instances//2) + [\"green\"] * (n_instances//2)\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111, projection='3d', xticks=[], yticks=[], zticks=[])\n", + "ax.scatter(data[:, 0], data[:, 1], data[:, 2], c=colors);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The high-dimensional space is endowed with some measure of distance, the Euclidean distance being the simplest case. We can calculate all pairwise distances between the data points:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:21.407379Z", + "start_time": "2018-11-19T20:10:21.393951Z" + } + }, + "outputs": [], + "source": [ + "import itertools\n", + "w = np.zeros((n_instances, n_instances))\n", + "for i, j in itertools.product(*[range(n_instances)]*2):\n", + " w[i, j] = np.linalg.norm(data[i]-data[j])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This matrix is sometimes called the Gram or the kernel matrix. The Gram matrix contains a fair bit of information about the topology of the points in the high-dimensional space, but it is not easy to see. We can think of the Gram matrix as the weighted adjacency matrix of a graph: two nodes represent two data instances. Their distance as contained in the Gram matrix is the weight on the edge that connects them. If the distance is zero, they are not connected by an edge. In general, this is a dense graph with many edges -- sparsity can be improved by a distance function that gets exponentially smaller.\n", + "\n", + "What can we do with this graph to find the clusters? We could look for the max-cut, that is, the collection of edges that would split the graph in exactly two if removed, while maximizing the total weight of these edges [[1](#1)]. This is a well-known NP-hard problem, but it also very naturally maps to an Ising model.\n", + "\n", + "The spin variables $\\sigma_i \\in \\{-1, +1\\}$ take on value $\\sigma_i = +1$ if a data instance is in cluster 1 (nodes $V_1$ in the graph), and $\\sigma_i = -1$ if the data instance is in cluster 2 (nodes $V_2$ in the graph). The cost of a cut is\n", + "\n", + "$$\n", + "\\sum_{i\\in V_1, j\\in V_2} w_{ij}\n", + "$$\n", + "\n", + "Let us assume a fully connected graph. Then, accounting for the symmetry of the adjacency matrix, we can expand this as\n", + "$$\n", + "\\frac{1}{4}\\sum_{i, j} w_{ij} - \\frac{1}{4} \\sum_{i, j} w_{ij} \\sigma_i \\sigma_j\n", + "$$\n", + "$$\n", + "= \\frac{1}{4}\\sum_{i, j\\in V} w_{ij} (1- \\sigma_i \\sigma_j).\n", + "$$ \n", + "\n", + "By taking the negative of this, we can directly solve the problem by a quantum optimizer." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Solving the max-cut problem by QAOA\n", + "\n", + "Most quantum computing frameworks have convenience functions defined for common graph optimization algorithms, and max-cut is a staple. This reduces our task to importing the relevant functions:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:23.147272Z", + "start_time": "2018-11-19T20:10:21.412811Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], + "source": [ + "from qiskit_aqua import get_aer_backend, QuantumInstance\n", + "from qiskit_aqua.algorithms import QAOA\n", + "from qiskit_aqua.components.optimizers import COBYLA\n", + "from qiskit_aqua.translators.ising import maxcut" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Setting $p=1$ in the QAOA algorithm, we can initialize it with the max-cut problem." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:28.190764Z", + "start_time": "2018-11-19T20:10:23.152849Z" + } + }, + "outputs": [], + "source": [ + "qubit_operators, offset = maxcut.get_maxcut_qubitops(w)\n", + "p = 1\n", + "optimizer = COBYLA()\n", + "qaoa = QAOA(qubit_operators, optimizer, p, operator_mode='matrix')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here the choice of the classical optimizer `COBYLA` was arbitrary. Let us run this and analyze the solution. This can take a while on a classical simulator." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:12:33.139743Z", + "start_time": "2018-11-19T20:10:28.202147Z" + } + }, + "outputs": [], + "source": [ + "backend = get_aer_backend('statevector_simulator')\n", + "quantum_instance = QuantumInstance(backend, shots=100)\n", + "result = qaoa.run(quantum_instance)\n", + "x = maxcut.sample_most_likely(result['eigvecs'][0])\n", + "graph_solution = maxcut.get_graph_solution(x)\n", + "print('energy:', result['energy'])\n", + "print('maxcut objective:', result['energy'] + offset)\n", + "print('solution:', maxcut.get_graph_solution(x))\n", + "print('solution objective:', maxcut.maxcut_value(x, w))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looking at the solution, the cut matches the clustering structure." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Solving the max-cut problem by annealing\n", + "\n", + "Naturally, the same problem can be solved on an annealer. Our only task is to translate the couplings and the on-site fields to match the programming interface:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:12:37.587621Z", + "start_time": "2018-11-19T20:12:36.386739Z" + }, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Energy of samples:\n", + "Energy: -13.331477071582572 Sample: {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: -1, 6: -1, 7: -1, 8: -1, 9: -1}\n", + "Energy: -13.331477071582572 Sample: {0: -1, 1: -1, 2: -1, 3: -1, 4: -1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1}\n", + "Energy: -13.331477071582572 Sample: {0: -1, 1: -1, 2: -1, 3: -1, 4: -1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1}\n", + "Energy: -13.331477071582572 Sample: {0: -1, 1: -1, 2: -1, 3: -1, 4: -1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1}\n", + "Energy: -13.331477071582572 Sample: {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: -1, 6: -1, 7: -1, 8: -1, 9: -1}\n", + "Energy: -13.331477071582572 Sample: {0: -1, 1: -1, 2: -1, 3: -1, 4: -1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1}\n", + "Energy: -13.331477071582572 Sample: {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: -1, 6: -1, 7: -1, 8: -1, 9: -1}\n", + "Energy: -13.331477071582572 Sample: {0: -1, 1: -1, 2: -1, 3: -1, 4: -1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1}\n", + "Energy: -13.331477071582572 Sample: {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: -1, 6: -1, 7: -1, 8: -1, 9: -1}\n", + "Energy: -13.331477071582572 Sample: {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: -1, 6: -1, 7: -1, 8: -1, 9: -1}\n" + ] + } + ], + "source": [ + "import dimod\n", + "\n", + "J, h = {}, {}\n", + "for i in range(n_instances):\n", + " h[i] = 0\n", + " for j in range(i+1, n_instances):\n", + " J[(i, j)] = w[i, j]\n", + "\n", + "model = dimod.BinaryQuadraticModel(h, J, 0.0, dimod.SPIN)\n", + "sampler = dimod.SimulatedAnnealingSampler()\n", + "response = sampler.sample(model, num_reads=10)\n", + "print(\"Energy of samples:\")\n", + "for solution in response.data():\n", + " print(\"Energy:\", solution.energy, \"Sample:\", solution.sample)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you look at the first sample, you will see that the first five data instances belong to the same graph partition, matching the actual cluster." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# References\n", + "\n", + "[1] Otterbach, J. S., Manenti, R., Alidoust, N., Bestwick, A., Block, M., Bloom, B., Caldwell, S., Didier, N., Fried, E. Schuyler, Hong, S., Karalekas, P., Osborn, C. B., Papageorge, A., Peterson, E. C., Prawiroatmodjo, G., Rubin, N., Ryan, Colm A., Scarabelli, D., Scheer, M., Sete, E. A., Sivarajah, P., Smith, Robert S., Staley, A., Tezak, N., Zeng, W. J., Hudson, A., Johnson, Blake R., Reagor, M., Silva, M. P. da, Rigetti, C. (2017). [Unsupervised Machine Learning on a Hybrid Quantum Computer](https://arxiv.org/abs/1712.05771). *arXiv:1712.05771*. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/11_Kernel Methods.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/11_Kernel Methods.ipynb new file mode 100644 index 000000000..380abdfa9 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/11_Kernel Methods.ipynb @@ -0,0 +1,465 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Kernel methods are widespread in machine learning and they were particularly common before deep learning became a dominant paradigm. The core idea is to introduce a new notion of distance between high-dimensional data points by replacing the inner product $(x_i, x_j)$ by a function that retains many properties of the inner product, yet which is nonlinear. This function $k(.,.)$ is called a kernel. Then, in many cases, wherever a learning algorithm would use an inner product, the kernel function is used instead.\n", + "\n", + "The intuition is that the kernel function acts as an inner product on a higher dimensional space and encompasses some $\\phi(.)$ mapping from the original space of the data points to this space. So intuitively, the kernel function is $k(x_i, x_j)=(\\phi(x_i), \\phi(x_j))$. The hope is that points that were not linearly separable in the original space become linearly separable in the higher dimensional space. The $\\phi(.)$ function may map to an infinite dimensional space and it does not actually have to be specified. As long as the kernel function is positive semidefinite, the idea works.\n", + "\n", + "Many kernel-based learning algorithms are instance-based, which means that the final model retains some or all of the training instances and they play a role in the actual prediction. Support vector machines belong here: support vectors are the training instances which are critically important in defining the boundary between two classes. Some important kernels are listed below.\n", + "\n", + "| Name |             Kernel function|\n", + "|------|-----------------|\n", + "|Linear | $(x_i,x_j)$|\n", + "|Polynomial| $((x_i,x_j)+c)^d$|\n", + "|Radial basis function|$\\exp(-\\gamma\\|x_i-x_j\\|^2)$|\n", + "\n", + "The choice of kernel and the parameters of the kernel are often arbitrary and either some trial and error on the dataset or hyperparameter optimization helps choose the right combination. Quantum computers naturally give rise to certain kernels and it is worth looking at a specific variant of how it is constructed.\n", + "\n", + "\n", + "# Thinking backward: learning methods based on what the hardware can do\n", + "\n", + "Instead of twisting a machine learning algorithm until only contains subroutines that have quantum variants, we can reverse our thinking and ask: given a piece of quantum hardware and its constraints, can we come up with a new learning method? For instance, interference is a very natural thing to do: we showed an option in the first notebook on quantum states, and it can also be done with a Hadamard gate. For instance, imagine that you have training vectors encoded in some register, and this register is entangled with the $|0\\rangle$ in the superposition of an ancilla. The ancilla's $|1\\rangle$ of the superposition is entangled with another register that contains the test vector. Applying the Hadamard on the ancilla interferes the test and training instances. Measuring and post-selecting on the ancilla gives rise to a kernel [[1](#1)].\n", + "\n", + "Let's get the basic initialization out of the way:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:26.258897Z", + "start_time": "2018-11-19T20:10:24.992179Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], + "source": [ + "from qiskit import ClassicalRegister, QuantumRegister, QuantumCircuit\n", + "from qiskit import execute\n", + "from qiskit import BasicAer\n", + "\n", + "q = QuantumRegister(4)\n", + "c = ClassicalRegister(4)\n", + "backend = BasicAer.get_backend('qasm_simulator')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are constructing an instance-based classifier: we will calculate a kernel between all training instances and a test example. In this sense, this learning algorithm is lazy: no actual learning happens and each prediction includes the entire training set.\n", + "\n", + "As a consequence, state preparation is critical to this protocol. We have to encode the training instances in a superposition in a register, and the test instances in another register. Consider the following training instances of the [Iris dataset](https://archive.ics.uci.edu/ml/datasets/iris): $S = \\{(\\begin{bmatrix}0 \\\\ 1\\end{bmatrix}, 0), (\\begin{bmatrix}0.78861006 \\\\ 0.61489363\\end{bmatrix}, 1)\\}$, that is, one example from class 0 and one example from class 1. Furthermore, let's have two test instances, $\\{\\begin{bmatrix}-0.549\\\\ 0.836\\end{bmatrix}, \\begin{bmatrix}0.053 \\\\ 0.999\\end{bmatrix}\\}$. These examples were cherry-picked because they are relatively straightforward to prepare." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:26.266724Z", + "start_time": "2018-11-19T20:10:26.261941Z" + } + }, + "outputs": [], + "source": [ + "training_set = [[0, 1], [0.78861006, 0.61489363]]\n", + "labels = [0, 1]\n", + "test_set = [[-0.549, 0.836], [0.053 , 0.999]]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " We use amplitude encoding, which means that, for instance, the second training vector will be encoded as $0.78861006|0\\rangle + 0.61489363|1\\rangle$. Preparing these vectors only needs a rotation, and we only need to specify the corresponding angles. The first element of the training set does not even need that: it is just the $|1\\rangle$ state, so we don't specify an angle for it." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:26.293900Z", + "start_time": "2018-11-19T20:10:26.268934Z" + } + }, + "outputs": [], + "source": [ + "test_angles = [4.30417579487669/2, 3.0357101997648965/2]\n", + "training_angle = 1.3245021469658966/4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following function does the state preparation. We plot it and explain it in more details below." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:26.366286Z", + "start_time": "2018-11-19T20:10:26.297453Z" + } + }, + "outputs": [], + "source": [ + "def prepare_state(q, c, angles):\n", + " ancilla_qubit = q[0]\n", + " index_qubit = q[1]\n", + " data_qubit = q[2]\n", + " class_qubit = q[3]\n", + " qc = QuantumCircuit(q, c)\n", + " # Put the ancilla and the index qubits into uniform superposition\n", + " qc.h(ancilla_qubit)\n", + " qc.h(index_qubit)\n", + "\n", + " # Prepare the test vector\n", + " qc.cx(ancilla_qubit, data_qubit)\n", + " qc.u3(-angles[0], 0, 0, data_qubit)\n", + " qc.cx(ancilla_qubit, data_qubit)\n", + " qc.u3(angles[0], 0, 0, data_qubit)\n", + " # Flip the ancilla qubit > this moves the input \n", + " # vector to the |0> state of the ancilla\n", + " qc.x(ancilla_qubit)\n", + " qc.barrier()\n", + "\n", + " # Prepare the first training vector\n", + " # [0,1] -> class 0\n", + " # We can prepare this with a Toffoli\n", + " qc.ccx(ancilla_qubit, index_qubit, data_qubit)\n", + " # Flip the index qubit > moves the first training vector to the \n", + " # |0> state of the index qubit\n", + " qc.x(index_qubit)\n", + " qc.barrier()\n", + "\n", + " # Prepare the second training vector\n", + " # [0.78861, 0.61489] -> class 1\n", + "\n", + " qc.ccx(ancilla_qubit, index_qubit, data_qubit)\n", + " qc.cx(index_qubit, data_qubit)\n", + " qc.u3(angles[1], 0, 0, data_qubit)\n", + " qc.cx(index_qubit, data_qubit)\n", + " qc.u3(-angles[1], 0, 0, data_qubit)\n", + " qc.ccx(ancilla_qubit, index_qubit, data_qubit)\n", + " qc.cx(index_qubit, data_qubit)\n", + " qc.u3(-angles[1], 0, 0, data_qubit)\n", + " qc.cx(index_qubit, data_qubit)\n", + " qc.u3(angles[1], 0, 0, data_qubit)\n", + " qc.barrier()\n", + "\n", + " # Flip the class label for training vector #2\n", + " qc.cx(index_qubit, class_qubit)\n", + " qc.barrier()\n", + " return qc" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us see the circuit for preparing state with the first test instance:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:28.967561Z", + "start_time": "2018-11-19T20:10:26.369401Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/tools/visualization/_circuit_visualization.py:206: DeprecationWarning: The current behavior for the default output will change in a future release. Instead of trying latex and falling back to mpl on failure it will just use \"text\" by default\n", + " '\"text\" by default', DeprecationWarning)\n" + ] + }, + { + "data": { + "image/png": "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AAD6Iyf9UDwev/76699+++0QwqxZsxYsWFBWVtbQ0FBTU7N27dqampqysrLUnumuZejQob2e6pRTTkmfMxdRM5CPmQEAAAAAANKy3w91dXWlyqHi4uKVK1fec889R2995JFHVqxYccUVV6S+bGxsTC18bdfS2tp67Nb29vbOzs5Ro0ZlnHbJkiWLFy8OIZSUlPTxkH5mBgAAAAAAiFb2+6ElS5akZg6tXr36tttu67F16NCh999/f/rLjo6O1EIikej1bOn1R9+nLoTwq1/96l/+5V+qqqoSicT48eMXL158//33FxcXn2jaOXPmnOghGWfuo5/+9KerVq3K4MD+i8fjw4YN+6reayDo7u5ubW0dPXr0oEGDos7C8bS1tSWTyREjRkQdhONJJpMtLS2jRo0aPHhw1FkKkbdJ1uX0n3RevF8i/JTs6uo6fPjw6NGjc3Hyzs7Otra2HJ287/r/a0nkgnEZmIxLvuvo6Ghvbz/11FOjDkKGfHSSFS4F+c4IDkzG5WTK6QdiTocyg8/QzD52L7vssiz3Qzt37nziiSdCCDfeeOOx5dCx0onTpUsP6fVjxoxJLSQSiTvvvPOll1667rrr/vZv/3bkyJEvv/zyz372s02bNv3nf/5nUVFRFv4Y2c58Qm677bbTTz89s2z9VFVVNW7cuLFjx0by6n3R2dn50UcfXXLJJSdhoOmP3bt3J5PJCRMmRB2E40kkEu+///5FF100kFvhb7B9+/a1t7dXVFREHeSbI5lMvv/++9OnT8/g90W+Vur9UllZmZ4lPAC1t7d/8sknl1xyycnvhw4dOvTnP/955syZuTh5S0vLzp07L7zwwlycvO/q6upisdiUKVOijUEPdXV19fX1kydPjjoIX1JXV9fQ0DBp0qSog5ChhoaG2traCy64IOogZKi5uXnXrl0zZsyINsbBgwcbGxtdCvJXfX39/v37XQryV1NT0549e6ZPnx51EL7EuJxM8Xi8urr6oosuysXJczqUsVjs4MGDU6dOzekhIYQpU6ZkuR9atmxZatLMQw891Jf90w1b37uWp59++uWXX37hhRfuvvvu1Jof//jH11133euvv/6b3/zmrrvu6k/+vsgg8wm59NJLL7300syyAQAAAAAAfK1sTsJIJBKvvPJKCKGysvKyyy7ryyHpriUej/e6Q21tbWoh3bX84Ac/+OlPf5ouh9IrQwj/8z//k1HwE5NBZgAAAAAAgIEjm/OHqqqqYrFYCGHatGl9POTMM89MLVRXV1955ZXH7lBdXZ1aOO2001IL55133j//8z/32K2+vj4cdee3nMog8wl58sknV69enWm6fqmpqTn99NMjv0nxcXR0dOzatauiomIgP/6BEMKBAweSyeRZZ50VdRCOp7u7e8eOHePHjx82bFjUWQpRXV1dZ2fnOeecE3WQb45EIlFdXV1aWpqL+8ul3i8TJkwYyPdjbG9v371798SJE0/+XVgPHz78xRdfTJw4MRe3tmttbT148GDkN2NsbGyMx+Pjx4+PNgY9NDY2tra2lpaWRh2ELzEu+a65ubmpqcnNovNXPB6PxWLl5eXRxmhoaDh06JBLQf5qampqbm52KchfLS0t9fX1kV8K6MG4nEytra0HDhyYOHFiLk7e0tLS0NBQVlaWi5M3NTW1tLSc0H8/MzgkhDBr1qxs9kN79uxJLfT99rLp++Fu3bq11x3SXctxbnja0dHx61//OoRw88039/F1+yMrmY+jrKzs4osvzixbPw0ZMmTcuHFnnHFGJK/eF+3t7YMGDZo5c+aQIVm+NSLZtXPnzmQyGfnP8ji+7u7uZDJ54YUX5uKH6Xyt3bt3t7e3n3/++VEH+eZIJBKJRGL69OkjRozI+snz4v3S1tY2ePDgiy+++OT3Q/F4vLi4+JJLLsnFyZuamnbs2JGjhxv13f79++vr692Cf6DZv39/Q0PDid5lm1wzLvmurq6utrY28qfXkLGGhoZdu3ZVVlZGG6O2traxsdGlIH8dPHjwwIEDnpKSvxoaGnbv3p2jJ6+Qsfr6+j179hiXk6Opqam6ujpHP2nP6VAeOHCgrq6u75NwMjskhDB16tRs/pA9/cOIr3owz7GmTZtWXFx85MiRDz74oNcdqqqqQghjx479qp+gHThwYNGiRTt27PjRj3703e9+98RTn7D+Zz6+m2+++eQUXQAAAAAAQGHK5q+XTpkyJbXw2Wef9fGQYcOG3XjjjSGEt956q66ursfWvXv3vvfeeyGEm2+++djblfzwhz+84IILxo8f/9vf/nbRokWrVq3qV/o+609mAAAAAACAyGWzH5owYULqOQrr16/fsmXLsTt88sknK1as6LFy4cKFIYQjR44sW7asx6ZHH300mUyGEO69995jz9bW1jZ8+PBRo0YNGjSora2ttrY2K3+Kvsg4MwAAAAAAQOSy2Q8VFRU9/vjjIYSurq5rr7123bp1sVisra1t+/bta9asueWWWyorKz///PMeR91www3z588PISxfvvzoOUArVqx49tlnQwg33XTTVVdddezLbdiw4f3334/FYps2bfqv//qvyy677JNPPjnRzHfccUdpaWlpaWlNTU3fj8o4MwAAAAAAQOQGpSa7ZEsymbz++us3btzY69YxY8Y899xzt956a4/1+/btmzVrVmoC0MyZMysqKjZv3rxt27YQQllZ2TvvvHPWWWcd/3X/4z/+45Zbbpk5c+b7779/Qnd1mzNnzqZNm0II27dvnzhxYt8P7H9mAAAAAACASGS5HwohdHR0PP7440899VRjY2N65eTJk3/84x//5Cc/GT16dK9H7d+//6677vrDH/5w9Mp58+a98MIL3/72t7/2Rbu7u0ePHn348OHNmzfPmDGj72kz7of6nxkAAAAAACAS2e+HUjo7O6uqqmKx2JgxY8rKykpKSvpy1EcfffT666/X1dWNGzdu7ty5J9T0TJgwYffu3b/97W9/8IMfZJo6E/3JDAAAAAAAcPLlqh/Knffff/+SSy7psbK9vX3kyJHd3d01NTUTJkyIJBgAAAAAAEBeKIo6wAm7/fbb165d22PlqlWruru7p02bphwCAAAAAAA4vvzrhx555JE777zz9ttv//3vfx+Px+vr63/xi1/8wz/8w5AhQ55//vmo0wEAAAAAAAx0+Xd/uRDChg0b7rvvvpqamvSa8vLy559//nvf+150oQAAAAAAAPJDXvZDIYSOjo633nrr/fffHzJkyMUXX3z55ZePGDEi6lAAAAAAAAB54P8Dfe5RIoL05TQAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit.tools.visualization import circuit_drawer\n", + "angles = [test_angles[0], training_angle]\n", + "state_preparation_0 = prepare_state(q, c, angles)\n", + "circuit_drawer(state_preparation_0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The vertical lines are barriers to make sure that all gates are finished by that point. They also make a natural segmentation of the state preparation.\n", + "\n", + "The test instance is prepared until the first barrier. The ancilla and index qubits (registers 0 and 1) are put into the uniform superposition. The test instance is entangled with the ground state of the ancilla. \n", + "\n", + "Then between the first and second barriers, we prepare the state $|1\\rangle$, which is the first training instance, and entangle it with the excited state of the ancilla and the ground state of the index qubit with a Toffoli gate and a Pauli-X gate. The Toffoli gate is also called the controlled-controlled-not gate, describing its action.\n", + "\n", + "The third section prepares the second training instance and entangles it with the excited state of the ancilla and the index qubit.\n", + "\n", + "The final part flips the class qubit conditioned on the index qubit. This creates the connection between the encoded training instances and the corresponding class label." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# A natural kernel on a shallow circuit\n", + "\n", + "Having down the state preparation, the actual prediction is nothing but a Hadamard gate applied on the ancilla, followed by measurements. Since the ancilla is in a uniform superposition at the end of the state preparation and it is entangled with the registers encoding the test and training instances, applying a second Hadamard on the ancilla interferes the entangled registers. The state before the measurement is $\\frac{1}{2\\sqrt{2}}\\sum_{i=0}^1|0\\rangle|i\\rangle(|x_t\\rangle+|x_i\\rangle)|y_i\\rangle+|1\\rangle|i\\rangle(|x_t\\rangle-|x_i\\rangle)|y_i\\rangle$, where $|x_t\\rangle$ is the encoded test instance and $|x_i\\rangle$ is a training instance." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:28.977139Z", + "start_time": "2018-11-19T20:10:28.970385Z" + } + }, + "outputs": [], + "source": [ + "def interfere_data_and_test_instances(qc, q, c, angles):\n", + " qc.h(q[0])\n", + " qc.barrier()\n", + " qc.measure(q, c)\n", + " return qc" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we measure the ancilla, the outcome probability of observing 0 will be $\\frac{1}{4N}\\sum_{i=1}^N |x_t + x_i|^2$. This creates a kernel of the following form:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:29.350842Z", + "start_time": "2018-11-19T20:10:28.979750Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "%matplotlib inline\n", + "x = np.linspace(-2, 2, 100)\n", + "plt.xlim(-2, 2)\n", + "plt.ylim(0, 1.1)\n", + "plt.plot(x, 1-x**2/4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the kernel that performs the classification. We perform the post-selection on observing 0 on the measurement on the ancilla and calculate the probabilities of the test instance belonging to either class:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:29.367970Z", + "start_time": "2018-11-19T20:10:29.353333Z" + } + }, + "outputs": [], + "source": [ + "def postselect(result_counts):\n", + " total_samples = sum(result_counts.values())\n", + "\n", + " # define lambda function that retrieves only results where the ancilla is in the |0> state\n", + " post_select = lambda counts: [(state, occurences) for state, occurences in counts.items() if state[-1] == '0']\n", + "\n", + " # perform the postselection\n", + " postselection = dict(post_select(result_counts))\n", + " postselected_samples = sum(postselection.values())\n", + "\n", + " print(f'Ancilla post-selection probability was found to be {postselected_samples/total_samples}')\n", + "\n", + " retrieve_class = lambda binary_class: [occurences for state, occurences in postselection.items() if state[0] == str(binary_class)]\n", + "\n", + " prob_class0 = sum(retrieve_class(0))/postselected_samples\n", + " prob_class1 = sum(retrieve_class(1))/postselected_samples\n", + "\n", + " print('Probability for class 0 is', prob_class0)\n", + " print('Probability for class 1 is', prob_class1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the first instance we have:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:35.339972Z", + "start_time": "2018-11-19T20:10:29.370281Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ancilla post-selection probability was found to be 0.701171875\n", + "Probability for class 0 is 0.6559888579387186\n", + "Probability for class 1 is 0.34401114206128136\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], + "source": [ + "qc0 = interfere_data_and_test_instances(state_preparation_0, q, c, angles)\n", + "job = execute(qc0, backend)\n", + "result = job.result()\n", + "postselect(result.get_counts(qc0))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And for the second one:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:40.015253Z", + "start_time": "2018-11-19T20:10:35.354484Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ancilla post-selection probability was found to be 0.935546875\n", + "Probability for class 0 is 0.5501043841336117\n", + "Probability for class 1 is 0.4498956158663883\n" + ] + } + ], + "source": [ + "angles = [test_angles[1], training_angle]\n", + "state_preparation_1 = prepare_state(q, c, angles)\n", + "qc1 = interfere_data_and_test_instances(state_preparation_1, q, c, angles)\n", + "job = execute(qc1, backend)\n", + "result = job.result()\n", + "postselect(result.get_counts(qc1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# References\n", + "\n", + "[1] M. Schuld, M. Fingerhuth, F. Petruccione. (2017). [Implementing a distance-based classifier with a quantum interference circuit](https://doi.org/10.1209/0295-5075/119/60002). *Europhysics Letters*, 119(6), 60002. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/12_Training Probabilistic Graphical Models.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/12_Training Probabilistic Graphical Models.ipynb new file mode 100644 index 000000000..f4c1fdb62 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/12_Training Probabilistic Graphical Models.ipynb @@ -0,0 +1,239 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The roots of probabilistic graphical models go back to the 1980s, with a strong connection to Bayesian statistics. The story resembles that of neural networks: they have been around for over three decades and they need massive computational power. However, unlike in the case of deep learning, the requirements for computational resources remain out of reach. These models require sampling a distribution, and very often it is the Boltzmann distribution. Since quantum computers can give samples from this distribution, we can hope that quantum hardware can enable these models the same way graphics processing units enabled deep learning.\n", + "\n", + "# Probabilistic graphical models\n", + "\n", + "Probabilistic graphical models capture a compact representation of a joint probability distribution. For $\\{X_1,\\ldots,X_N\\}$ binary random variables, there are $2^N$ assignments. In a graphical model, complexity is dealt through graph theory. We get both an efficient treatment of uncertainty (probabilities) and of logical structure (independence constraints). The factorization of the probabilities happens along conditional independences among random variables. The definition is that $X$ is conditionally independent of $Y$ given $Z$ $(X\\perp Y|Z)$, if $P(X=x, Y=y|Z=z) = P(X=x|Z=z)P(Y=y|Z=z)$ for all $x\\in X,y\\in Y,z\\in Z$.\n", + "\n", + "The graph can be directed -- these are called Bayesian networks in general -- or undirected, in the case of Markov networks (also known as Markov random fields) [[1](#1)]. Graphical models are quintessentially generative: we explicitly model a probability distribution. Thus generating new samples is trivial and we can always introduce extra random variables to ensure certain properties. These models also take us a step closer to explainability, either by the use of the random variables directly for explanations (if your model is such) or by introducing explanatory random variables that correlate with the others.\n", + "\n", + "In a Markov random field, we can allow cycles in the graph and switch from local normalization (conditional probability distribution at each node) to global normalization of probabilities (i.e. a partition function). Examples include countless applications in computer vision, pattern recognition, artificial intelligence, but also Ising models that we have seen before: the factors are defined as degree-1 and degree-2 monomials of the random variables connected in the graph.\n", + "\n", + "The factorization is given as a sum $P(X_1, \\ldots, X_N) = \\frac{1}{Z}\\exp(-\\sum_k E[C_k])$, where $C_k$ are are cliques of the graph, and $E[.]$ is an energy defined over the cliques. If $P$ is a Boltzmann distribution over $G$, all local Markov properties will hold. The other way also holds if $P$ is a positive distribution.\n", + "\n", + "Let us define a Markov random field of binary variables. This will be a random Ising model over a three nodes. This will contain three cliques of a single node (the on-site fields) and two cliques of two nodes: the edges that connect the nodes." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:30.684603Z", + "start_time": "2018-11-19T20:10:30.190403Z" + } + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import dimod\n", + "\n", + "n_spins = 3\n", + "h = {v: np.random.uniform(-2, 2) for v in range(n_spins)}\n", + "J = {(0, 1): np.random.uniform(-1, 1),\n", + " (1, 2): np.random.uniform(-1, 1)}\n", + "model = dimod.BinaryQuadraticModel(h, J, 0.0, dimod.SPIN)\n", + "sampler = dimod.SimulatedAnnealingSampler() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The probability distribution of a configuration $P(X_1, \\ldots, X_N) = \\frac{1}{Z}\\exp(-\\sum_i E[C_k])$ does not explicitly define the temperature, but it is implicitly there in the constants defining the Hamiltonian. So, for instance, we can scale it a temperature $T=1$" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:32.696067Z", + "start_time": "2018-11-19T20:10:30.687484Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "temperature = 1\n", + "response = sampler.sample(model, beta_range=[1/temperature, 1/temperature], num_reads=100)\n", + "energies = [solution.energy for solution in response.data()]\n", + "fig, ax = plt.subplots()\n", + "probabilities = np.exp(-np.array(sorted(energies))/temperature)\n", + "Z = probabilities.sum()\n", + "probabilities /= Z\n", + "ax.plot(energies, probabilities, linewidth=3)\n", + "ax.set_xlim(min(energies), max(energies))\n", + "ax.set_xticks([])\n", + "ax.set_yticks([])\n", + "ax.set_xlabel('Energy')\n", + "ax.set_ylabel('Probability')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this case, the conditional independences are already encapsulated by the model: for instances, spins 0 and 2 do not interact. In general, it is hard to learn the structure of a probabilistic graphical given a set of observed correlations in the sample $S$. We can only rely on heuristics. The typical way of doing it is to define a scoring function and do some heuristic global optimization. \n", + "\n", + "Once we identified or defined the graph structure $G$, we have to learn the probabilities in the graph. We again rely on our sample and its correlations, and use a maximum likelihood or a maximum a posteriori estimate of the corresponding parameters $\\theta_G$ with the likelihood $P(S|\\theta_G)$. This is again a hard problem.\n", + "\n", + "Applying the learned model means probabilistic inference to answer queries of the following types:\n", + "\n", + "- Conditional probability: $P(Y|E=e)=\\frac{P(Y,e)}{P(e)}$.\n", + "\n", + "- Maximum a posteriori:\n", + " $\\mathrm{argmax}_y P(y|e)=\\mathrm{argmax}_y \\sum_Z P(y, Z|e)$.\n", + "\n", + "This problem is in \\#P. Contrast this to deep learning: once the neural network is trained, running a prediction on it is relatively cheap. In the case of probabilistic graphical models, inference remains computationally demanding even after training the model. Instead of solving the inference problem directly, we use approximate inference with sampling, which is primarily done with Monte Carlo methods on a classical computer. These have their own problems of slow burn-in time and correlated samples, and this is exactly the step we can replace by sampling on a quantum computer.\n", + "\n", + "For instance, let us do a maximum a posteriori inference on our Ising model. We clamp the first spin to -1 and run simulated annealing for the rest of them to find the optimal configuration. We modify the simulated annealing routine in `dimod` to account for the clamping." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:32.992517Z", + "start_time": "2018-11-19T20:10:32.705659Z" + } + }, + "outputs": [], + "source": [ + "from dimod.reference.samplers.simulated_annealing import greedy_coloring\n", + "\n", + "clamped_spins = {0: -1}\n", + "num_sweeps = 1000\n", + "βs = [1.0 - 1.0*i / (num_sweeps - 1.) for i in range(num_sweeps)]\n", + "\n", + "# Set up the adjacency matrix.\n", + "adj = {n: set() for n in h}\n", + "for n0, n1 in J:\n", + " adj[n0].add(n1)\n", + " adj[n1].add(n0)\n", + "# Use a vertex coloring for the graph and update the nodes by color\n", + "__, colors = greedy_coloring(adj)\n", + "\n", + "spins = {v: np.random.choice((-1, 1)) if v not in clamped_spins else clamped_spins[v]\n", + " for v in h}\n", + "for β in βs:\n", + " energy_diff_h = {v: -2 * spins[v] * h[v] for v in h}\n", + "\n", + " # for each color, do updates\n", + " for color in colors:\n", + " nodes = colors[color]\n", + " energy_diff_J = {}\n", + " for v0 in nodes:\n", + " ediff = 0\n", + " for v1 in adj[v0]:\n", + " if (v0, v1) in J:\n", + " ediff += spins[v0] * spins[v1] * J[(v0, v1)]\n", + " if (v1, v0) in J:\n", + " ediff += spins[v0] * spins[v1] * J[(v1, v0)]\n", + "\n", + " energy_diff_J[v0] = -2. * ediff\n", + " for v in filter(lambda x: x not in clamped_spins, nodes):\n", + " logp = np.log(np.random.uniform(0, 1))\n", + " if logp < -1. * β * (energy_diff_h[v] + energy_diff_J[v]):\n", + " spins[v] *= -1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Running this algorithm, we can obtain the most likely configuration:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:33.018780Z", + "start_time": "2018-11-19T20:10:32.997312Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{0: -1, 1: 1, 2: -1}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "spins" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Boltzmann machines\n", + "\n", + "A Boltzmann machine generates samples from a probability distributition $P(\\textbf{v})$ inferred from the data, where $\\textbf{v} \\in \\{0,1\\}^n$. The assumption is that this distribution lies on a latent space that can be paramerized by a set of hidden variables $\\textbf{h} \\in \\{0,1\\}^n$, such that $P(\\textbf{v})=\\sum_h P(\\textbf{v}|\\textbf{h})P(\\textbf{h})$. The joint probability distribution is modeled as a Gibbs distribution with the energy defined by an Ising Model: $P(\\textbf{v}, \\textbf{h})=\\frac{1}{Z} e^{-\\beta E(\\textbf{h},\\textbf{v})}$ and $E(\\textbf{h},\\textbf{v})=-\\sum_{i,j} W_{ij} h_i v_j$. It can then be shown that $p(\\textbf{h}|\\textbf{v})=\\sigma(W \\cdot \\textbf{v})$ and $p(\\textbf{v}|\\textbf{h})=\\sigma(W \\cdot \\textbf{h})$, where $\\sigma$ is the sigmoid function defined by $\\sigma(x)=\\frac{1}{1+e^{-x}}$.\n", + "\n", + "To train a Boltzmann machine, we look for the weights $W$ that maximizes the log-likelihood $L=\\sum_{\\textbf{v} \\in S} \\log(p(\\textbf{v}|W))$, where $S$ is the training set. This function can be optimized using regular gradient ascent: $W_{ij}^{(t+1)}=W_{ij}^{(t)} + \\eta \\frac{\\partial L}{\\partial W_{ij}}$. Computing the gradient $\\frac{\\partial L}{\\partial W_{ij}}$ is the hard part. Indeed, we can show that \n", + "\n", + "$$\\frac{\\partial L}{\\partial W_{ij}}=\\frac{1}{|S|} \\sum_{\\textbf{v} \\in S} \\mathbb{E}_{\\textbf{h} \\sim P(\\textbf{h}|\\textbf{v})}[h_i v_j] - \\mathbb{E}_{(\\textbf{h},\\textbf{v}) \\sim P(\\textbf{h},\\textbf{v})}[h_i v_j]$$.\n", + "\n", + "The first expectation value is easy to compute: it is equal to $\\sigma \\left( \\sum_j W_{ij} v_j \\right) v_j$. We only need to sum those expectation values over the dataset. This is called the positive phase, after its positive sign in the gradient.\n", + "\n", + "The second expectation value cannot be simplified as easily, since it is taken over all possible configuration $\\textbf{v}$ and $\\textbf{h}$. It would take an exponential amount of time to compute it exactly. We can use the exact same quantum sampling method as above to outsource this part of the calculation to a quantum processing unit and train Boltzmann machines." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# References\n", + "\n", + "[1] Koller, D., Friedman, N., Getoor, L., Taskar, B. (2007). [Graphical Models in a Nutshell](https://ai.stanford.edu/~koller/Papers/Koller+al:SRL07.pdf). In *Introduction to Statistical Relational Learning*, MIT Press. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/13_Quantum Phase Estimation.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/13_Quantum Phase Estimation.ipynb new file mode 100644 index 000000000..f88e1a53d --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/13_Quantum Phase Estimation.ipynb @@ -0,0 +1,284 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Introduction\n", + "\n", + "The quantum Fourier transform and quantum phase estimation provide the foundation for many quantum algorithms, including the quantum matrix inversion, which is extensively used in quantum machine learning. It is therefore worthwhile developing a good understanding of these building blocks before moving on to more complex algorithms.\n", + "\n", + "We must emphasize that starting with this notebook, the algorithms presented are coherent quantum protocols. By that, we mean that the input and output of an algorithm is a quantum state that we do not have classical information about. The protocol itself might use measurements: in this sense, they are not fully coherent, since we gain some, but incomplete classical information about the quantum system. We might also perform post-selection, which means that a gate is controlled by the classical output of a measurement. In some cases, we entirely discard a calculation based on a measurement output.\n", + "\n", + "Why does it matter that we begin and end up with quantum states? Can't we just use state preparation starting from classical data and then perform tomography on the final state? We could do that, but state preparation and tomography are resource-intensive, and they are likely to destroy any quantum advantage.\n", + "\n", + "An additional problem is that the quantum Fourier transformation and other quantum algorithms similar in complexity require a very large number of gates on a large number of high-quality qubits. This is why the practical relevance of these algorithms is not immediate, but since they are the core of many quantum machine learning protocols, it is essential that we take a look at them." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import execute\n", + "from qiskit import BasicAer\n", + "π = np.pi" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum Fourier Transform\n", + "\n", + "The quantum Fourier transform is a quantum algorithm for the discrete Fourier transform over the amplitudes of a wavefunction. The exposition here follows the introduction in [[1](#1)]. A similar approach can be found in the [Qiskit tutorials](https://github.com/Qiskit/qiskit-tutorials/blob/master/community/algorithms/shor_algorithm.ipynb).\n", + "\n", + "The classical discrete Fourier transform acts on a vector $\\vec{x}=\\begin{bmatrix}x_0\\\\ \\vdots\\\\ x_{N-1}\\end{bmatrix}$ and maps it to the vector $\\vec{y}=\\begin{bmatrix}y_0\\\\ \\vdots\\\\ y_{N-1}\\end{bmatrix}$, where $y_k = \\frac{1}{\\sqrt{N}}\\sum_{j=0}^{N-1}x_je^{ \\boldsymbol{2\\pi i} \\frac{jk}{N}}$.\n", + "\n", + "The quantum Fourier transform acts on an amplitude-encoded variant of this vector, the quantum state $|x\\rangle=\\sum_{i=0}^{N-1} x_i |i \\rangle$ and maps it to the quantum state $|y\\rangle=\\sum_{k=0}^{N-1} y_k |k \\rangle$, where\n", + "$y_k = \\frac{1}{\\sqrt{N}}\\sum_{j=0}^{N-1}x_je^{\\boldsymbol{2\\pi i} \\frac{jk}{N}}$. Since the transformed state is also in the superposition of the computational basis, in essence, only the amplitudes are transformed.\n", + "\n", + "To derive a circuit for a power of two $N=2^n$, consider the transform acts on the state $| x \\rangle = | x_1...x_n \\rangle$ where $x_1$ is the most significant bit, unlike the usual convention followed in the course. We will rewrite a number $y$ in the fractional binary notation as $j = 0.j_1...j_n = \\sum_{k=1}^n j_k/2^k$. For example $0.8125_d = 0.1101_b = \\sum_{k=1}^4 j_k/2^k = 1/2 + 1/4 + 0/8 + 1/16$, where the subscripts $d$ stands for decimal and $b$ for binary. The action of the unitary $U$ describing the transform can be expanded as\n", + "\\begin{aligned}\n", + "U |x \\rangle = U |x_1 x_2 \\cdots x_n \\rangle& = \\frac{1}{\\sqrt{N}} \\sum_{k=0}^{2^n-1} e^{\\boldsymbol{2\\pi i} xk / 2^n} |k \\rangle \\\\\n", + "& = \\frac{1}{\\sqrt{N}} \\sum_{k_1=0}^{1}\\ldots\\sum_{k_n=0}^{1} e^{\\boldsymbol{2\\pi i} x\\left(\\sum_{l=1}^n k_l2^{-l}\\right) } \\vert k_1 ... k_n \\rangle \\\\\n", + "& = \\frac{1}{\\sqrt{N}} \\sum_{k_1=0}^{1}\\ldots\\sum_{k_n=0}^{1} \\bigotimes_{l=1}^n e^{\\boldsymbol{2\\pi i} x k_l2^{-l}} | k_1 ... k_n \\rangle \\\\\n", + "& = \\frac{1}{\\sqrt{N}} \\bigotimes_{l=1}^n \\sum_{k_l=0}^{1} e^{\\boldsymbol{2\\pi i} x k_l2^{-l}} | k_1 ... k_n \\rangle \\\\\n", + "& = \\frac{1}{\\sqrt{N}} \\bigotimes_{l=1}^n \\left(|0\\rangle + e^{\\boldsymbol{2\\pi i} x 2^{-l} } |1\\rangle \\right) \\\\\n", + "& = \\frac{1}{\\sqrt{N}} \\left(|0\\rangle + e^{\\boldsymbol{2\\pi i} 0.x_n} |1\\rangle\\right) \\otimes...\\otimes \\left(\\vert0\\rangle + e^{\\boldsymbol{2\\pi i} 0.x_1.x_2...x_{n-1}.x_n} |1\\rangle\\right) \n", + "\\end{aligned}\n", + "\n", + "This form of the QFT is useful for deriving a circuit, since only the last qubit depends on the the\n", + "values of all the other input qubits. The remaining qubits depend less and less on the input qubits. The simple structure also allows to decompose the unitary as Hadamard gates and rotations. On three qubits, we can define the circuit as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "q = QuantumRegister(3, 'q')\n", + "c = ClassicalRegister(1, 'c')\n", + "qft = QuantumCircuit(q, c)\n", + "qft.h(q[0])\n", + "qft.cu1(π/2, q[1], q[0])\n", + "qft.h(q[1])\n", + "qft.cu1(π/4, q[2], q[0])\n", + "qft.cu1(π/2, q[2], q[1])\n", + "qft.h(q[2]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can plot it to make the qubit dependencies more apparent:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/tools/visualization/_circuit_visualization.py:206: DeprecationWarning: The current behavior for the default output will change in a future release. Instead of trying latex and falling back to mpl on failure it will just use \"text\" by default\n", + " '\"text\" by default', DeprecationWarning)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit.tools.visualization import circuit_drawer\n", + "circuit_drawer(qft)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The conditional rotations dominate the complexity, which scales as $O(N^2)$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum phase estimation\n", + "\n", + "The quantum phase estimation algorithm estimates the phase of a unitary operator $U$, that is, it estimates $\\theta$ in $U|\\psi \\rangle =e^{\\boldsymbol{2\\pi i} \\theta }|\\psi \\rangle$. Here $|\\psi\\rangle$ is an eigenvector and $e^{\\boldsymbol{2\\pi i}\\theta}$ is the corresponding eigenvalue. Since $U$ is unitary, all of its eigenvalues have an absolute value of 1.\n", + "\n", + "The $|\\psi\\rangle$ is in one set of qubit registers. An additional set of $n$ qubits form an ancilla register. A critical element is the ability to perform the controlled unitary $C-U^{2^k}$ -- it is usually assumed that it is provided to the phase estimation protocol.\n", + "\n", + "First, the uniform superposition is prepared in the ancilla register via the application of Hadamard gates $H$. These qubits will act as controls for the unitary operators at different time steps. Our goal is to create a superposition of $U$ as the unitary is applied for different durations. Since the eigenvalues are always situated on the complex unit circle, these differently evolved components in the superposition help reveal the eigenstructure. Given that the ancilla register we have a superposition of all possible time steps between $0$ and $2^{n-1}$, we will end up with a superposition of all possible evolutions to encode binary representations of the eigenvalues. At the end of this procedure, we have the state \n", + "\\begin{aligned}\n", + "& \\frac {1}{2^{\\frac {n}{2}}} (|0\\rangle+{e^{\\boldsymbol{2\\pi i} \\theta 2^{n-1}}}|1\\rangle ) \\otimes \\cdots (|0\\rangle+{e^{\\boldsymbol{2\\pi i} \\theta 2^{1}}}|1\\rangle ) \\otimes (|0\\rangle+{e^{\\boldsymbol{2\\pi i} \\theta 2^{0}}}|1\\rangle ) = \\\\\n", + "&\\frac {1}{2^{\\frac {n}{2}}}\\sum _{k=0}^{2^{n}-1}e^{\\boldsymbol{2\\pi i} \\theta k}|k\\rangle\n", + "\\end{aligned}\n", + "in the ancilla. To write the ancilla in this form, we exploit that the controlled unitary operations when applied, introduce a global phase, and it is this global phase that we see in the ancilla. This phenomenon is also known as the phase kickback.\n", + "\n", + "As a final step, we apply an inverse Fourier transform on the ancilla. Measuring out in the computational basis, we get the phase in the ancilla register:\n", + "\n", + "\\begin{align}\n", + "\\frac {1}{2^{\\frac {n}{2}}}\\sum _{k=0}^{2^{n}-1}e^{\\boldsymbol{2\\pi i} \\theta k}|k\\rangle \\otimes | \\psi \\rangle \\xrightarrow{\\mathcal{QFT}_n^{-1}} | 2^n \\theta \\rangle \\otimes | \\psi \\rangle\n", + "\\end{align}\n", + "\n", + "The circuit for phase estimation is the following:\n", + "\n", + "![Quantum phase estimation](figures/qpe.svg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As an example, let us take a $2\\times 2$ unitary matrix that is defined via the Hamiltonian $\\frac{1}{2}\\begin{bmatrix}3 & 1 \\\\1 & 3\\end{bmatrix}$, which has eigenvectors of powers of two. Starting with $|\\psi\\rangle=|0\\rangle$ in the main register, we prepare the superposition in the ancilla:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "qpe = QuantumCircuit(q, c)\n", + "qpe.h(q[0])\n", + "qpe.h(q[1]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we perform the controlled unitary operations:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Controlled-U0\n", + "qpe.cu3(-π / 2, -π / 2, π / 2, q[1], q[2])\n", + "qpe.cu1(3 * π / 4, q[1], q[2])\n", + "qpe.cx(q[1], q[2])\n", + "qpe.cu1(3 * π / 4, q[1], q[2])\n", + "qpe.cx(q[1], q[2])\n", + "# Controlled-U1\n", + "qpe.cx(q[0], q[2]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We apply quantum inverse Fourier transformation to write the phase to the ancilla register:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "qpe.swap(q[0], q[1])\n", + "qpe.h(q[1])\n", + "qpe.cu1(-π / 2, q[0], q[1])\n", + "qpe.h(q[0]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we can plot the circuit:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/tools/visualization/_circuit_visualization.py:206: DeprecationWarning: The current behavior for the default output will change in a future release. Instead of trying latex and falling back to mpl on failure it will just use \"text\" by default\n", + " '\"text\" by default', DeprecationWarning)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circuit_drawer(qpe)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# References\n", + "[1] M. Nielsen, I. Chuang. (2000). *Quantum Computation and Quantum Information*. Cambridge University Press. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/14_Quantum Matrix Inversion.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/14_Quantum Matrix Inversion.ipynb new file mode 100644 index 000000000..c77a3d9d6 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/14_Quantum Matrix Inversion.ipynb @@ -0,0 +1,373 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Introduction\n", + "\n", + "The [HHL algorithm](https://en.wikipedia.org/wiki/Quantum_algorithm_for_linear_systems_of_equations) underlies many quantum machine learning protocols, but it is a highly nontrivial algorithm with lots of conditions. In this notebook, we implement the algorithm to gain a better understanding of how it works and when it works efficiently. The notebook is derived from the [computational appendix](https://gitlab.com/apozas/bayesian-dl-quantum) of the paper [Bayesian Deep Learning on a Quantum Computer](https://arxiv.org/abs/1806.11463). We restrict our attention to inverting a $2\\times 2$ matrix, following Pan *et al*.'s implementation [[1](#1)] of the algorithm." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:39.391070Z", + "start_time": "2018-11-19T20:10:38.023338Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/pwittek/.anaconda3/envs/qiskit/lib/python3.7/site-packages/marshmallow/schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import execute\n", + "from qiskit import BasicAer\n", + "π = np.pi" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Setting up the problem\n", + "\n", + "We will solve the equation $Ax=b$ with $A = \\frac{1}{2}\\begin{bmatrix}3 & 1 \\\\1 & 3 \\\\ \\end{bmatrix}$ and $b =\\begin{bmatrix} 1 \\\\ 0 \\\\ \\end{bmatrix}$. We will encode the $A$ matrix as a Hamiltonian and $b$ in a register. With ancillas, we will need a total of five qubits and one classical register for post-selection. We add an extra qubit and extra classical register to create a swap test to compare our result to the ideal state." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:39.451554Z", + "start_time": "2018-11-19T20:10:39.393922Z" + } + }, + "outputs": [], + "source": [ + "q = QuantumRegister(6)\n", + "c = ClassicalRegister(2)\n", + "hhl = QuantumCircuit(q, c)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The vector $b$ can be encoded as $\\left|b\\right\\rangle = \\sum_{i=0}^N b_i\\left|i\\right\\rangle = \\left|0\\right\\rangle$, so no explicit state preparation circuit is needed for this case (this will not be true in general).\n", + "\n", + "# Quantum phase estimation\n", + "\n", + "The next step is to encode the eigenvalues of the matrix $A$ in an additional register. This is done via quantum phase estimation of the evolution described by the Hamiltonian $A$ during some time $t_0$, $\\exp(\\imath A t_0)$. The protocol has three steps.\n", + "\n", + "First we prepare the ancilla state $\\left|\\psi_0\\right\\rangle=\\sum_{\\tau=0}^{T-1}\\left|\\tau\\right\\rangle$. Why this state? It will control the time evolution: it is like a clock, turning on evolution for a certain amount of time. The original HHL algorithm suggests a weighted superposition of all states $\\tau$ that minimizes errors in following steps in the algorithm. However, for our implementation, a uniform superposition already gives good results.\n", + "\n", + "Our goal is to create a superposition of $A$ as a Hamiltonian applied for different durations. Since the eigenvalues are always situated on the complex unit circle, these differently evolved components in the superposition help reveal the eigenstructure. So we apply the conditional Hamiltonian evolution $\\sum_{\\tau=0}^{T-1}\\left|\\tau\\right\\rangle\\left\\langle\\tau\\right|\\otimes e^{\\imath A\\tau t_0/T}$ on $\\left|\\psi_0\\right\\rangle\\otimes\\left|b\\right\\rangle$. This operation evolves the state $\\left|b\\right\\rangle$ according to the Hamiltonian $A$ for the time $\\tau$ determined by the state $\\left|\\psi_0\\right\\rangle$. Given that in $\\left|\\psi_0\\right\\rangle$ we have a superposition of all possible time steps between $0$ and $T$, we will end up with a superposition of all possible evolutions, and a suitable choice of number of timesteps $T$ and total evolution time $t_0$ allow to encode binary representations of the eigenvalues.\n", + "\n", + "As a final step, we apply an inverse Fourier transformation that writes the phases (that, recall, encode the eigenvalues of $A$) into new registers.\n", + "\n", + "The total circuit for phase estimation is the following:\n", + "\n", + "![Quantum phase estimation in the quantum matrix inversion algorithm](figures/qpe_for_hhl.svg)\n", + "\n", + "\n", + "In our $2\\times 2$ case, the circuit is massively simplified. Given that the matrix $A$ has eigenvalues that are powers of $2$, we can choose $T=4$, $t_0=2\\pi$ to obtain exact results with just two controlled evolutions." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:39.504410Z", + "start_time": "2018-11-19T20:10:39.457938Z" + } + }, + "outputs": [], + "source": [ + "# Superposition\n", + "hhl.h(q[1])\n", + "hhl.h(q[2])\n", + "# Controlled-U0\n", + "hhl.cu3(-π / 2, -π / 2, π / 2, q[2], q[3])\n", + "hhl.cu1(3 * π / 4, q[2], q[3])\n", + "hhl.cx(q[2], q[3])\n", + "hhl.cu1(3 * π / 4, q[2], q[3])\n", + "hhl.cx(q[2], q[3])\n", + "# Controlled-U1\n", + "hhl.cx(q[1], q[3]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We apply quantum inverse Fourier transformation to write the phase to a register:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:39.540991Z", + "start_time": "2018-11-19T20:10:39.522622Z" + } + }, + "outputs": [], + "source": [ + "hhl.swap(q[1], q[2])\n", + "hhl.h(q[2])\n", + "hhl.cu1(-π / 2, q[1], q[2])\n", + "hhl.h(q[1]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The state of the system after this decomposition is approximately $\\sum _{j{\\mathop {=}}1}^{N}\\beta _{j}\\left|u_{j}\\right\\rangle \\left|\\lambda_{j}\\right\\rangle$, where $\\left|b\\right\\rangle=\\sum _{j{\\mathop {=}}1}^{N}\\beta _{j}\\left|u_{j}\\right\\rangle$ is the encoding of the vector $b$ in the eigenbasis of $A$. Now, there is an often overlooked step that performs bit operations on $\\left|\\lambda_{j}\\right\\rangle$ to actually invert it.\n", + "\n", + "In our case, the inversion of the eigenvalues is easy. The eigenvalues of $A$ are $\\lambda_1=2=10_2$ and $\\lambda_2=1=01_2$, and their reciprocals are $\\lambda_1^{-1}=1/2$ and $\\lambda_2^{-1}=1$. Noting that $2\\lambda_1^{-1}=01_2$ and $2\\lambda_2^{-1}=10_2$, a swap gate is enough to obtain the state $\\sum _{j{\\mathop {=}}1}^{N}\\beta _{j}\\left|u_{j}\\right\\rangle \\left|2\\lambda _{j}^{-1}\\right\\rangle$, that encodes the reciprocals of the eigenvalues." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:39.557636Z", + "start_time": "2018-11-19T20:10:39.543737Z" + } + }, + "outputs": [], + "source": [ + "hhl.swap(q[1], q[2]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Conditional rotation of ancilla\n", + "\n", + "Next, we perform a conditional rotation to encode the information of the reciprocals of the eigenvalues in the amplitudes of a state, on which we will later post-select. The state we would like to get is $\\sum _{j{\\mathop {=}}1}^{N}\\beta _{j}\\left|u_{j}\\right\\rangle\\left|2\\lambda _{j}^{-1}\\right\\rangle \\left(\\sqrt{1-\\frac{C^2}{\\lambda_j^2}}\\left|0\\right\\rangle+\\frac{C}{\\lambda_j}\\left|1\\right\\rangle \\right)$. This is achieved by controlled rotations in the same spirit of the conditional Hamiltonian evolution." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:39.579455Z", + "start_time": "2018-11-19T20:10:39.560300Z" + } + }, + "outputs": [], + "source": [ + "hhl.cu3(0.392699, 0, 0, q[1], q[0]) # Controlled-RY0\n", + "hhl.cu3(0.19634955, 0, 0, q[2], q[0]); # Controlled-RY1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Uncomputing the eigenvalue register\n", + "\n", + "A necessary step when performing quantum computations is to uncompute all operations except those that store the information that we want to obtain from the algorithm in the final registers. We need to do this in case the registers are entangled, which would affect the results.\n", + "\n", + "In our case, we must uncompute the phase estimation protocol. After the uncomputation, the state should be $\\sum_{j=1}^N\\beta_j\\left|u_j\\right\\rangle\\left|0\\right\\rangle\\left(\\sqrt{1-\\frac{C^2}{\\lambda_j^2}}\\left|0\\right\\rangle+\\frac{C}{\\lambda_j}\\left|1\\right\\rangle \\right)$, so we can safely forget about the eigenvalue register." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:39.620961Z", + "start_time": "2018-11-19T20:10:39.581605Z" + } + }, + "outputs": [], + "source": [ + "hhl.swap(q[1], q[2])\n", + "hhl.h(q[1])\n", + "hhl.cu1(π / 2, q[1], q[2]) # Inverse(Dagger(Controlled-S))\n", + "hhl.h(q[2])\n", + "hhl.swap(q[2], q[1])\n", + "# Inverse(Controlled-U1)\n", + "hhl.cx(q[1], q[3])\n", + "# Inverse(Controlled-U0)\n", + "hhl.cx(q[2], q[3])\n", + "hhl.cu1(-3 * π / 4, q[2], q[3])\n", + "hhl.cx(q[2], q[3])\n", + "hhl.cu1(-3 * π / 4, q[2], q[3])\n", + "hhl.cu3(-π / 2, π / 2, -π / 2, q[2], q[3])\n", + "# End of Inverse(Controlled-U0)\n", + "hhl.h(q[2])\n", + "hhl.h(q[1]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Rejection sampling on the ancilla register and a swap test\n", + "\n", + "The state $\\left|x\\right\\rangle=A^{-1}\\left|b\\right\\rangle\\propto\\sum_j \\beta_j\\lambda_j^{-1}\\left|u_j\\right\\rangle$ that contains information about the solution to $Ax=b$ is that obtained when measuring $1$ on the ancilla state. We perform the post-selection by projecting onto the desired $\\left|1\\right\\rangle$. To check that the solution is the expected one, we prepare the correct output state manually to perform a swap test with the outcome." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:39.654681Z", + "start_time": "2018-11-19T20:10:39.623580Z" + }, + "scrolled": false + }, + "outputs": [], + "source": [ + "# Target state preparation\n", + "hhl.rz(-π, q[4])\n", + "hhl.u1(π, q[4])\n", + "hhl.h(q[4])\n", + "hhl.ry(-0.9311623288419387, q[4])\n", + "hhl.rz(π, q[4])\n", + "# Swap test\n", + "hhl.h(q[5])\n", + "hhl.cx(q[4], q[3])\n", + "hhl.ccx(q[5], q[3], q[4])\n", + "hhl.cx(q[4], q[3])\n", + "hhl.h(q[5])\n", + "\n", + "hhl.barrier(q)\n", + "hhl.measure(q[0], c[0])\n", + "hhl.measure(q[5], c[1]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Note: it is a good exercise to check that the right result is given by the state $\\left|x\\right\\rangle=0.949\\left|0\\right\\rangle + 0.314\\left|1\\right\\rangle$, which is the state we prepare above.*\n", + "\n", + "There are two measurements performed, one of the ancilla register (for doing the post-selection) and another one that gives the result of the swap test. To calculate success probabilities, let us define some helper functions." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:39.671821Z", + "start_time": "2018-11-19T20:10:39.656877Z" + } + }, + "outputs": [], + "source": [ + "def get_psuccess(counts):\n", + " '''Compute the success probability of the HHL protocol from the statistics\n", + "\n", + " :return: (float) The success probability.\n", + " '''\n", + " try:\n", + " succ_rotation_fail_swap = counts['11']\n", + " except KeyError:\n", + " succ_rotation_fail_swap = 0\n", + " try:\n", + " succ_rotation_succ_swap = counts['01']\n", + " except KeyError:\n", + " succ_rotation_succ_swap = 0\n", + " succ_rotation = succ_rotation_succ_swap + succ_rotation_fail_swap\n", + " try:\n", + " prob_swap_test_success = succ_rotation_succ_swap / succ_rotation\n", + " except ZeroDivisionError:\n", + " prob_swap_test_success = 0\n", + " return prob_swap_test_success" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally we run the circuit on the simulator:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "ExecuteTime": { + "end_time": "2018-11-19T20:10:42.138218Z", + "start_time": "2018-11-19T20:10:39.673729Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0\n" + ] + } + ], + "source": [ + "backend = BasicAer.get_backend('qasm_simulator')\n", + "job = execute(hhl, backend, shots=100)\n", + "result = job.result()\n", + "counts = result.get_counts(hhl)\n", + "print(get_psuccess(counts))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Running on the actual QPU would yield a much poorer result due to imprecisions in the applications of the gates and noise caused by the environment." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# References\n", + "[1] J. Pan, Y. Cao, X. Yao, Z. Li, C. Ju, H. Chen, X. Peng, S. Kais, and J. Du. (2014). [Experimental realization of quantum algorithm for solving linear systems of equations](https://arxiv.org/abs/1302.1946). *Physical Review Letters* 89:022313. \n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/README.ipynb b/community/awards/teach_me_quantum_2018/qml_mooc/README.ipynb new file mode 100644 index 000000000..0c4d237aa --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/README.ipynb @@ -0,0 +1,81 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum Machine Learning\n", + "\n", + "The pace of development in quantum computing mirrors the rapid advances made in machine learning and artificial intelligence. It is natural to ask whether quantum technologies could boost learning algorithms: this field of enquiry is called quantum machine learning. This massively open online online course (MOOC) on [Quantum Machine Learning](https://www.edx.org/course/quantum-machine-learning) is offered by the University of Toronto on edX with an emphasis on what benefits current and near-future quantum technologies may bring to machine learning. These notebooks contain the lecture notes and the code for the course. The content is organized in four modules, with an additional introductory module to the course itself.\n", + "\n", + "## Module 0: Introduction\n", + "\n", + "[00_Course_Introduction.ipynb](00_Course_Introduction.ipynb)\n", + "\n", + "[00_Introduction to Qiskit.ipynb](00_Introduction%20to%20Qiskit.ipynb)\n", + "\n", + "## Module 1: Quantum Systems\n", + "\n", + "[02_Measurements_and_Mixed_States.ipynb](02_Measurements_and_Mixed_States.ipynb)\n", + "\n", + "[03_Evolution in Closed and Open Systems.ipynb](03_Evolution%20in%20Closed%20and%20Open%20Systems.ipynb)\n", + "\n", + "[04_Classical and Quantum Many-Body Physics.ipynb](04_Classical%20and%20Quantum%20Many-Body%20Physics.ipynb)\n", + "\n", + "## Module 2: Quantum Computation\n", + "\n", + "[05_Gate-Model Quantum Computing.ipynb](05_Gate-Model%20Quantum%20Computing.ipynb)\n", + "\n", + "[06_Adiabatic Quantum Computing.ipynb](06_Adiabatic%20Quantum%20Computing.ipynb)\n", + "\n", + "[07_Variational Circuits.ipynb](07_Variational%20Circuits.ipynb)\n", + "\n", + "[08_Sampling a Thermal State.ipynb](08_Sampling%20a%20Thermal%20State.ipynb)\n", + "\n", + "## Module 3: Classical-quantum hybrid learning algorithms\n", + "\n", + "[09_Discrete Optimization and Ensemble Learning.ipynb](09_Discrete%20Optimization%20and%20Ensemble%20Learning.ipynb)\n", + "\n", + "[10_Discrete Optimization and Unsupervised Learning.ipynb](10_Discrete%20Optimization%20and%20Unsupervised%20Learning.ipynb)\n", + "\n", + "[11_Kernel Methods.ipynb](11_Kernel%20Methods.ipynb)\n", + "\n", + "[12_Training Probabilistic Graphical Models.ipynb](12_Training%20Probabilistic%20Graphical%20Models.ipynb)\n", + "\n", + "## Module 4: Coherent Learning Protocols\n", + "\n", + "[13_Quantum Phase Estimation.ipynb](13_Quantum%20Phase%20Estimation.ipynb)\n", + "\n", + "[14_Quantum Matrix Inversion.ipynb](14_Quantum%20Matrix%20Inversion.ipynb)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/README.md b/community/awards/teach_me_quantum_2018/qml_mooc/README.md new file mode 100644 index 000000000..a547181d3 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/README.md @@ -0,0 +1,43 @@ +# Quantum Machine Learning + +The pace of development in quantum computing mirrors the rapid advances made in machine learning and artificial intelligence. It is natural to ask whether quantum technologies could boost learning algorithms: this field of enquiry is called quantum machine learning. This massively open online online course (MOOC) on [Quantum Machine Learning](https://www.edx.org/course/quantum-machine-learning) is offered by the University of Toronto on edX with an emphasis on what benefits current and near-future quantum technologies may bring to machine learning. These notebooks contain the lecture notes and the code for the course. The content is organized in four modules, with an additional introductory module to the course itself. + +## Module 0: Introduction + +[00_Course_Introduction.ipynb](00_Course_Introduction.ipynb) + +[00_Introduction to Qiskit.ipynb](00_Introduction%20to%20Qiskit.ipynb) + +## Module 1: Quantum Systems + +[02_Measurements_and_Mixed_States.ipynb](02_Measurements_and_Mixed_States.ipynb) + +[03_Evolution in Closed and Open Systems.ipynb](03_Evolution%20in%20Closed%20and%20Open%20Systems.ipynb) + +[04_Classical and Quantum Many-Body Physics.ipynb](04_Classical%20and%20Quantum%20Many-Body%20Physics.ipynb) + +## Module 2: Quantum Computation + +[05_Gate-Model Quantum Computing.ipynb](05_Gate-Model%20Quantum%20Computing.ipynb) + +[06_Adiabatic Quantum Computing.ipynb](06_Adiabatic%20Quantum%20Computing.ipynb) + +[07_Variational Circuits.ipynb](07_Variational%20Circuits.ipynb) + +[08_Sampling a Thermal State.ipynb](08_Sampling%20a%20Thermal%20State.ipynb) + +## Module 3: Classical-quantum hybrid learning algorithms + +[09_Discrete Optimization and Ensemble Learning.ipynb](09_Discrete%20Optimization%20and%20Ensemble%20Learning.ipynb) + +[10_Discrete Optimization and Unsupervised Learning.ipynb](10_Discrete%20Optimization%20and%20Unsupervised%20Learning.ipynb) + +[11_Kernel Methods.ipynb](11_Kernel%20Methods.ipynb) + +[12_Training Probabilistic Graphical Models.ipynb](12_Training%20Probabilistic%20Graphical%20Models.ipynb) + +## Module 4: Coherent Learning Protocols + +[13_Quantum Phase Estimation.ipynb](13_Quantum%20Phase%20Estimation.ipynb) + +[14_Quantum Matrix Inversion.ipynb](14_Quantum%20Matrix%20Inversion.ipynb) diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/figures/annealing_process.svg b/community/awards/teach_me_quantum_2018/qml_mooc/figures/annealing_process.svg new file mode 100755 index 000000000..646d4b829 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/figures/annealing_process.svg @@ -0,0 +1,1849 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/figures/eight_qubits.svg b/community/awards/teach_me_quantum_2018/qml_mooc/figures/eight_qubits.svg new file mode 100755 index 000000000..e3f06f0cc --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/figures/eight_qubits.svg @@ -0,0 +1,153 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/figures/energy_landscape.svg b/community/awards/teach_me_quantum_2018/qml_mooc/figures/energy_landscape.svg new file mode 100755 index 000000000..8dad65f2a --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/figures/energy_landscape.svg @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/figures/hybrid_classical_quantum.svg b/community/awards/teach_me_quantum_2018/qml_mooc/figures/hybrid_classical_quantum.svg new file mode 100755 index 000000000..edafad1ac --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/figures/hybrid_classical_quantum.svg @@ -0,0 +1,479 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/figures/open_system.svg b/community/awards/teach_me_quantum_2018/qml_mooc/figures/open_system.svg new file mode 100755 index 000000000..c51e16b5b --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/figures/open_system.svg @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/figures/qaoa_process.svg b/community/awards/teach_me_quantum_2018/qml_mooc/figures/qaoa_process.svg new file mode 100755 index 000000000..2725521af --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/figures/qaoa_process.svg @@ -0,0 +1,1855 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/figures/qpe_for_hhl.svg b/community/awards/teach_me_quantum_2018/qml_mooc/figures/qpe_for_hhl.svg new file mode 100755 index 000000000..4e4148b54 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/figures/qpe_for_hhl.svg @@ -0,0 +1,2289 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/figures/quantum_annealing_workflow.png b/community/awards/teach_me_quantum_2018/qml_mooc/figures/quantum_annealing_workflow.png new file mode 100755 index 000000000..8e2390026 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/qml_mooc/figures/quantum_annealing_workflow.png differ diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/figures/two_magnets.svg b/community/awards/teach_me_quantum_2018/qml_mooc/figures/two_magnets.svg new file mode 100755 index 000000000..29d9216e0 --- /dev/null +++ b/community/awards/teach_me_quantum_2018/qml_mooc/figures/two_magnets.svg @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/figures/unit_cell.png b/community/awards/teach_me_quantum_2018/qml_mooc/figures/unit_cell.png new file mode 100755 index 000000000..7893b915f Binary files /dev/null and b/community/awards/teach_me_quantum_2018/qml_mooc/figures/unit_cell.png differ diff --git a/community/awards/teach_me_quantum_2018/qml_mooc/figures/universal_quantum_workflow.png b/community/awards/teach_me_quantum_2018/qml_mooc/figures/universal_quantum_workflow.png new file mode 100755 index 000000000..593145e22 Binary files /dev/null and b/community/awards/teach_me_quantum_2018/qml_mooc/figures/universal_quantum_workflow.png differ diff --git a/community/exercises/01_exercise.ipynb b/community/exercises/01_exercise.ipynb new file mode 100644 index 000000000..2ff35e387 --- /dev/null +++ b/community/exercises/01_exercise.ipynb @@ -0,0 +1,393 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "# _*Exercises*_\n", + "\n", + "The latest version of this notebook is available on https://github.com/qiskit/qiskit-tutorial.\n", + "\n", + "This notebook is aimed to help you understand the content of notebooks in this folder by working on the problems listed.\n", + "\n", + "The content of this exercise is based on the notebook [here](https://github.com/Qiskit/qiskit-tutorials/blob/master/qiskit/terra/quantum_circuits.ipynb). \n", + "\n", + "You'll need to run the cells to use this tutorial. To run a cell, do the following.\n", + "\n", + "* For laptops and desktops, click on the cell and press **Shift-Enter**.\n", + "\n", + "* For mobile devices, tap on the icon that appears to the left of a cell.\n", + "\n", + "Get started by doing this for the cell below (it will take a second or two to run)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#importing array and useful math functions\n", + "import numpy as np\n", + "\n", + "#importing circuits and registers\n", + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "\n", + "#importing backends and running environment\n", + "from qiskit import BasicAer, execute" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Problem 1: Playing with Circuits\n", + "\n", + "Q: Prepare two quantum registers each of which has size 2 qubits, and a quantum register consisting of 4 bits." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: Create a circuit using the above registers." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: Apply NOT gate and the Hadamard gate to the the first qubit of the first register. Then, apply the controlled NOT with the first qubit as control on the first register." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Apply the Hadamard gate to the second qubit of the second register. Then, apply the controlled NOT with the second qubit as control on the second register." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: Draw the circuit." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: Create another circuit consisting of the same register as the first circuit. Apply the controlled NOT gate with the second qubit of the first register as control and the first qubit of the second register as target to the circuit. And, draw the circuit. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: What are the numbers of tensor factors of the first and second circuits? " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: Create another circuit by appending the second circuit to the first circuit." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: Create a measurement circuit that store the result of measuring quantum registers to the classical register." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: Add the measurement circuit to the combined quantum circuit by first applying barrier. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: What is the number of tensor factor of the final circuit? " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: Run the circuit on the local simulator backend." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Problem 2: Circuit Equivalence\n", + "\n", + "Q: Create a quantum circuit that consists of a two-qubit quantum register and a two-bit classical register. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Swap gate\n", + "\n", + "Q: Add three controlled NOT gates to the circuit as follows: apply the controlled NOT with the first qubit as control, and then the controlled NOT with the second qubit as control, and the controlled NOT with the first qubit as control. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: Show that the above circuit swaps the first qubit to the second qubit. \n", + "(*HINT: Straightforwardly by checking all possible classical inputs (bases) and seeing the outputs*)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: Create another circuit that consists of three controlled NOT gates on the same registers as the first circuit as follows: apply the controlled NOT with the second qubit as control, and then the controlled NOT with the first qubit as control, and the controlled NOT with the second qubit as control. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: Show that the above circuit is equal to the first swap circuit. (*HINT: append the second circuit to the first circuit and run the resulting circuit on all possible input bits*)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Problem 3: Equivalence up to the Global Phase" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: Create a quantum circuit which consist of a two-qubit quantum register and a two-bit classical register. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: Using the above circuit, show that the X (or, NOT) gate is equal to the $u3$ gate with parameters $(\\pi, 0, \\pi)$. Those gates are equivalence up to the global phase. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q: Using the above circuit, show that the controlled NOT gate is not equal to the controlled-$u3(\\pi,0,\\pi)$ gate. Notice that eventhough two single-qubit gates are equivalent up to the global phase, their controlled gates can be different. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Contributing\n", + "\n", + "We welcome feedback and new problems to be added to this notebook." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "QISKitenv", + "language": "python", + "name": "qiskitenv" + }, + "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.6.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/games/Hello_Qiskit.ipynb b/community/games/Hello_Qiskit.ipynb index ed7e2ac99..71688e37b 100644 --- a/community/games/Hello_Qiskit.ipynb +++ b/community/games/Hello_Qiskit.ipynb @@ -1825,7 +1825,7 @@ "metadata": {}, "outputs": [], "source": [ - "device = 'qasm_simulator_py'\n", + "device = 'qasm_simulator'\n", "\n", "from qiskit import Aer, IBMQ\n", "try:\n", @@ -1889,7 +1889,9 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "keywords = {'Topics': ['Games', 'Bell inequality'], 'Commands': ['`x`', '`z`', '`h`', '`cx`']}" + ] } ], "metadata": { diff --git a/community/games/README.md b/community/games/README.md index f22b441ac..aa071422c 100644 --- a/community/games/README.md +++ b/community/games/README.md @@ -15,8 +15,11 @@ This is exactly what we'd like to replicate in this folder. Here you'll find bas * [Quantum Tic-tac-toe](quantum_tic_tac_toe.ipynb) - Tic-tac-toe was one of the first games for a classical computer. Now we have a quantum version too! -* [Quantum Awesomeness](quantum_awesomeness.ipynb) - Puzzles that aim to give hands-on experience of a quantum device's most important features: number of qubits, connectivity and noise +* [Quantum Awesomeness](quantum_awesomeness.ipynb) - Puzzles that aim to give hands-on experience of a quantum device's most important features: number of qubits, connectivity and noise. +* [Random Terrain Generation](random_terrain_generation.ipynb) - A simple example of using quantum computers for the kind of procedural generation often used in games. + +* [Quantum Animations](quantum_animations.ipynb) - A simple example of making pixel art animations with quantum computers. ## Contributing diff --git a/community/games/battleships_with_partial_NOT_gates.ipynb b/community/games/battleships_with_partial_NOT_gates.ipynb index a3f5fa5d7..28a862631 100644 --- a/community/games/battleships_with_partial_NOT_gates.ipynb +++ b/community/games/battleships_with_partial_NOT_gates.ipynb @@ -779,6 +779,22 @@ "
        \n", "If you are reading this while running the game, you might be wondering where all the action has gone. Try clicking on the white space to the left of the output in the cell above to open it up." ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "keywords = {'Topics': ['Games', 'NOT gates'], 'Commands': ['`u3`']}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/community/games/game_engines/__init__.py b/community/games/game_engines/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/community/games/game_engines/composite_gates.py b/community/games/game_engines/composite_gates.py index cc7c76c15..77193998e 100644 --- a/community/games/game_engines/composite_gates.py +++ b/community/games/game_engines/composite_gates.py @@ -9,7 +9,7 @@ def x_bus(qc,*bus): qc.x(q) def bus_or(qc,target,*busses): - """Negates target if any of input busses is totally true, can add overall phase.""" + """Negates target if any of input busses is totally true, can add overall phase. Page 16 of reference""" if len(busses)==1: qc.cnx(qc,*busses[0],target) elif len(busses) == 2: @@ -24,7 +24,11 @@ def bus_or(qc,target,*busses): qc.ry(-np.pi/4,target) qc.x_bus(qc,*busses[0],*busses[1]) elif len(busses) >= 3: - qc.x_bus(qc,*busses[-1],target) + #Need to negate all qubits, do so for each bus + for bus in busses: + qc.x_bus(qc,*bus) + #Then negate the target also + qc.x(target) qc.ry(np.pi/4,target) qc.any_x(qc,*busses[1],target) qc.ry(np.pi/4,target) @@ -33,7 +37,9 @@ def bus_or(qc,target,*busses): qc.ry(-np.pi/4,target) qc.any_x(qc,*busses[1],target) qc.ry(-np.pi/4,target) - qc.x_bus(qc,*busses[0],*busses[1]) + for bus in busses: + qc.x_bus(qc,*bus) + #No need to negate target again def any_x(qc,*qubits): """Negate last qubit if any of initial qubits are 1.""" @@ -57,20 +63,25 @@ def cnx(qc,*qubits): doi = {10.1103/PhysRevA.52.3457}, url = {https://link.aps.org/doi/10.1103/PhysRevA.52.3457} } + Follwing Lemma 7.9, which uses Lemma 5.1 and 4.3 """ if len(qubits) >= 3: last = qubits[-1] - #A matrix: (decomposed cry also, control Ry) + #A matrix: (made up of a and Y rotation, lemma4.3) qc.crz(np.pi/2,qubits[-2],qubits[-1]) #cry qc.cry(qc,np.pi/2,qubits[-2],qubits[-1]) - #Control + + #Control not gate qc.cnx(qc,*qubits[:-2],qubits[-1]) + #B matrix (cry again, but opposite angle) qc.cry(qc,-np.pi/2,qubits[-2],qubits[-1]) + #Control qc.cnx(qc,*qubits[:-2],qubits[-1]) - #C matrix + + #C matrix (final rotation) qc.crz(-np.pi/2,qubits[-2],qubits[-1]) elif len(qubits)==3: qc.ccx(*qubits) diff --git a/community/games/game_engines/outputs/animation.png b/community/games/game_engines/outputs/animation.png new file mode 100644 index 000000000..45c4bd55c Binary files /dev/null and b/community/games/game_engines/outputs/animation.png differ diff --git a/community/games/game_engines/outputs/image1.png b/community/games/game_engines/outputs/image1.png new file mode 100644 index 000000000..efd43149e Binary files /dev/null and b/community/games/game_engines/outputs/image1.png differ diff --git a/community/games/game_engines/outputs/image2.png b/community/games/game_engines/outputs/image2.png new file mode 100644 index 000000000..e04fff2e5 Binary files /dev/null and b/community/games/game_engines/outputs/image2.png differ diff --git a/community/games/game_engines/outputs/new_animation.png b/community/games/game_engines/outputs/new_animation.png new file mode 100644 index 000000000..10e3d2c4b Binary files /dev/null and b/community/games/game_engines/outputs/new_animation.png differ diff --git a/community/games/game_engines/quantum_slot/__init__.py b/community/games/game_engines/quantum_slot/__init__.py new file mode 100644 index 000000000..631bd9075 --- /dev/null +++ b/community/games/game_engines/quantum_slot/__init__.py @@ -0,0 +1 @@ +from .quantum_slot import quantum_slot_machine \ No newline at end of file diff --git a/community/games/game_engines/quantum_slot/machine/paytable.png b/community/games/game_engines/quantum_slot/machine/paytable.png new file mode 100644 index 000000000..4e7122e70 Binary files /dev/null and b/community/games/game_engines/quantum_slot/machine/paytable.png differ diff --git a/community/games/game_engines/quantum_slot/machine/slot_bottom.png b/community/games/game_engines/quantum_slot/machine/slot_bottom.png new file mode 100644 index 000000000..a3c962ea4 Binary files /dev/null and b/community/games/game_engines/quantum_slot/machine/slot_bottom.png differ diff --git a/community/games/game_engines/quantum_slot/machine/slot_handle_lower.png b/community/games/game_engines/quantum_slot/machine/slot_handle_lower.png new file mode 100644 index 000000000..6f4515925 Binary files /dev/null and b/community/games/game_engines/quantum_slot/machine/slot_handle_lower.png differ diff --git a/community/games/game_engines/quantum_slot/machine/slot_handle_upper.png b/community/games/game_engines/quantum_slot/machine/slot_handle_upper.png new file mode 100644 index 000000000..7cc69696d Binary files /dev/null and b/community/games/game_engines/quantum_slot/machine/slot_handle_upper.png differ diff --git a/community/games/game_engines/quantum_slot/machine/slot_left.png b/community/games/game_engines/quantum_slot/machine/slot_left.png new file mode 100644 index 000000000..b930e9c70 Binary files /dev/null and b/community/games/game_engines/quantum_slot/machine/slot_left.png differ diff --git a/community/games/game_engines/quantum_slot/machine/slot_middle.png b/community/games/game_engines/quantum_slot/machine/slot_middle.png new file mode 100644 index 000000000..8adbf3d97 Binary files /dev/null and b/community/games/game_engines/quantum_slot/machine/slot_middle.png differ diff --git a/community/games/game_engines/quantum_slot/machine/slot_right.png b/community/games/game_engines/quantum_slot/machine/slot_right.png new file mode 100644 index 000000000..462c94afb Binary files /dev/null and b/community/games/game_engines/quantum_slot/machine/slot_right.png differ diff --git a/community/games/game_engines/quantum_slot/machine/slot_top.png b/community/games/game_engines/quantum_slot/machine/slot_top.png new file mode 100644 index 000000000..d269f7fc3 Binary files /dev/null and b/community/games/game_engines/quantum_slot/machine/slot_top.png differ diff --git a/community/games/game_engines/quantum_slot/quantum_slot.py b/community/games/game_engines/quantum_slot/quantum_slot.py new file mode 100644 index 000000000..2703c5288 --- /dev/null +++ b/community/games/game_engines/quantum_slot/quantum_slot.py @@ -0,0 +1,315 @@ +import json +from urllib.parse import urlencode +from urllib.request import urlopen +from qiskit import * +from qiskit.tools.monitor import job_monitor +import ipywidgets as widgets +from IPython.display import display +import threading +import os +script_dir = os.path.dirname(__file__) + +IBMQ.load_accounts(hub=None) + +__all__ = ['quantum_slot_machine'] + +def quantum_slot_machine(): + """A slot machine that uses random numbers generated + by quantum mechanical processses. + """ + qslot = widgets.VBox(children=[slot, opts]) + qslot.children[0].children[1].children[7].children[1]._qslot = qslot + qslot.children[0].children[1].children[7].children[1].on_click(pull_slot) + ibmq_thread = threading.Thread(target=get_ibmq_ints, args=(qslot,)) + ibmq_thread.start() + display(qslot) + + +def get_slot_values(backend, qslot): + if backend == 'qasm_simulator': + back = BasicAer.get_backend('qasm_simulator') + q = QuantumRegister(9, name='q') + c = ClassicalRegister(9, name='c') + qc = QuantumCircuit(q, c) + for kk in range(9): + qc.h(q[kk]) + qc.measure(q, c) + job = execute(qc, backend=back, shots=1) + result = job.result() + counts = list(result.get_counts().keys())[0] + return int(counts[0:3], 2), int(counts[3:6], 2), int(counts[6:9], 2) + elif backend == 'ibmq_5_tenerife': + int1 = qslot.children[0]._stored_ints.pop(0) + int2 = qslot.children[0]._stored_ints.pop(0) + int3 = qslot.children[0]._stored_ints.pop(0) + if len(qslot.children[0]._stored_ints) == 0: + ibmq_thread = threading.Thread(target=get_ibmq_ints, args=(qslot,)) + ibmq_thread.start() + return int1, int2, int3 + + elif backend == 'ANU QRNG': + URL = 'https://qrng.anu.edu.au/API/jsonI.php' + url = URL + '?' + urlencode({'type': 'hex16', + 'length': 3, + 'size': 1}) + data = json.loads(urlopen(url).read().decode('ascii')) + rngs = [int(bin(int(kk, 16))[2:].zfill(8)[:3], 2) + for kk in data['data']] + return rngs[0], rngs[1], rngs[2] + else: + raise Exception('Invalid backend choice.') + + +def set_images(a, b, c, qslot): + slot0 = qslot.children[0].children[1].children[1] + slot1 = qslot.children[0].children[1].children[3] + slot2 = qslot.children[0].children[1].children[5] + slot0.value = qslot.children[0]._images[a] + slot1.value = qslot.children[0]._images[b] + slot2.value = qslot.children[0]._images[c] + +def update_credits(change, qslot): + qslot.children[0]._credits += change + qslot.children[1].children[1].value = front_str + \ + str(qslot.children[0]._credits)+back_str + +def compute_payout(ints, qslot): + out = 1 + #Paytable + # all sevens + if all([x == 7 for x in ints]): + value = 700 + # all watermelons + elif all([x == 6 for x in ints]): + value = 200 + # all strawberry + elif all([x == 5 for x in ints]): + value = 10 + # all orange + elif all([x == 4 for x in ints]): + value = 20 + # all lemon + elif all([x == 3 for x in ints]): + value = 60 + # all grape + elif all([x == 2 for x in ints]): + value = 15 + # all cherry + elif all([x == 1 for x in ints]): + value = 40 + # all bell + elif all([x == 0 for x in ints]): + value = 80 + # two bells + elif sum([x == 0 for x in ints])== 2: + value = 5 + # two bells + elif sum([x == 0 for x in ints]) == 1: + value = 1 + else: + value = 0 + if value: + update_credits(value, qslot) + + # if no credits left + if qslot.children[0]._credits <= 0: + qslot.children[1].children[1].value = front_str + \ + "LOSE"+back_str + out = 0 + return out + + +def pull_slot(b): + qslot = b._qslot + update_credits(-1, qslot) + b.disabled = True + set_images(-1, -1, -1, qslot) + backend = qslot.children[1].children[0].value + ints = get_slot_values(backend, qslot) + set_images(ints[0], ints[1], ints[2], qslot) + alive = compute_payout(ints, qslot) + if alive: + b.disabled = False + +# generate new ibm q values +def get_ibmq_ints(qslot): + qslot.children[1].children[0].options = ['qasm_simulator', 'ANU QRNG'] + qslot.children[1].children[0].value = 'qasm_simulator' + back = IBMQ.get_backend('ibmq_5_tenerife') + q = QuantumRegister(3, name='q') + c = ClassicalRegister(3, name='c') + qc = QuantumCircuit(q, c) + for kk in range(3): + qc.h(q[kk]) + qc.measure(q, c) + job = execute(qc, backend=back, shots=300, memory=True) + qslot.children[1].children[2].clear_output() + with qslot.children[1].children[2]: + job_monitor(job) + qslot.children[0]._stored_ints = [ + int(kk, 16) for kk in job.result().results[0].data.memory] + + qslot.children[1].children[0].options = ['qasm_simulator', 'ibmq_5_tenerife', 'ANU QRNG'] + + +#top +top_file = open(script_dir+"/machine/slot_top.png", "rb") +top_image = top_file.read() +slot_top = widgets.Image( + value=top_image, + format='png', + width='100%', + height='auto', + layout=widgets.Layout(margin='0px 0px 0px 0px') +) + +#bottom +bottom_file = open(script_dir+"/machine/slot_bottom.png", "rb") +bottom_image = bottom_file.read() +slot_bottom = widgets.Image( + value=bottom_image, + format='png', + width='100%', + height='auto', + layout=widgets.Layout(margin='0px 0px 0px 0px') +) + +#left +left_file = open(script_dir+"/machine/slot_left.png", "rb") +left_image = left_file.read() +left = widgets.Image( + value=left_image, + format='png', + width='auto', + height='auto', + margin='0px 0px 0px 0px' +) + + +#left +right_file = open(script_dir+"/machine/slot_right.png", "rb") +right_image = right_file.read() +right = widgets.Image( + value=right_image, + format='png', + width='auto', + height='auto', + margin='0px 0px 0px 0px' +) + + +#mid +mid_file = open(script_dir+"/machine/slot_middle.png", "rb") +mid_image = mid_file.read() +mid = widgets.Image( + value=mid_image, + format='png', + width='auto', + height='auto', + margin='0px 0px 0px 0px' +) + + +#symbols +blank_sym = open(script_dir+"/symbols/blank.png", "rb") +blank_img = blank_sym.read() + +slot0 = widgets.Image( + value=blank_img, + format='png', + width='auto', + height='auto', + max_width='175px', + max_height='175px' +) +slot1 = widgets.Image( + value=blank_img, + format='png', + width='auto', + height='auto', + max_width='175px', + max_height='175px' +) +slot2 = widgets.Image( + value=blank_img, + format='png', + width='auto', + height='auto', + max_width='175px', + max_height='175px' +) + +#arm +arm_upper_file = open(script_dir+"/machine/slot_handle_upper.png", "rb") +arm__upper_image = arm_upper_file.read() +arm_upper = widgets.Image( + value=arm__upper_image, + format='png', + width='auto') + + +arm_lower_file = open(script_dir+"/machine/slot_handle_lower.png", "rb") +arm__lower_image = arm_lower_file.read() +arm_lower = widgets.Image( + value=arm__lower_image, + format='png', + width='auto') + +arm_button = widgets.Button(description='PUSH', button_style='danger', + layout=widgets.Layout(width='120px', height='auto', margin='0px 35px')) +arm_button.style.font_weight = 'bold' + + +arm = widgets.VBox(children=[arm_upper, arm_button, arm_lower], + layout=widgets.Layout(width='auto', + margin='0px 0px 0px 0px')) + +items = [left, slot0, mid, slot1, mid, slot2, right, arm] +box_layout = widgets.Layout(display='flex', + flex_flow='row', + align_items='center', + width='auto', + margin='0px 0px 0px 0px') +slot_middle = widgets.Box(children=items, layout=box_layout) + +slot = widgets.VBox(children=[slot_top, slot_middle, slot_bottom], + layout=widgets.Layout(display='flex', + flex_flow='column', + align_items='center', + width='auto', + margin='0px 0px 0px 0px')) + +slot._stored_ints = [] +imgs = ['waiting.png', 'bell.png', 'cherry.png', 'grape.png', 'lemon.png', 'orange.png', + 'strawberry.png', 'watermelon.png', 'seven.png'] +slot._images = {} +for kk, img in enumerate(imgs): + slot._images[kk-1] = open(script_dir+"/symbols/%s" % img, "rb").read() + +slot._credits = 20 + +solver = widgets.Dropdown( + options=['qasm_simulator', 'ibmq_5_tenerife', 'ANU QRNG'], + value='qasm_simulator', + description='', + disabled=False, + layout=widgets.Layout(width='25%', padding='10px') +) + +front_str = "

        " +back_str = "

        " + +payout = widgets.HTML( + value=front_str+str(20)+back_str, + placeholder='', + description='', + layout=widgets.Layout(width='33%', height='70px') +) + +out = widgets.Output(layout=widgets.Layout(width='33%', padding='10px')) + +opts = widgets.HBox(children=[solver, payout, out], + layout=widgets.Layout(width='100%', + justify_content='center', + border='2px solid black')) + diff --git a/community/games/game_engines/quantum_slot/symbols/bell.png b/community/games/game_engines/quantum_slot/symbols/bell.png new file mode 100644 index 000000000..85f8a3581 Binary files /dev/null and b/community/games/game_engines/quantum_slot/symbols/bell.png differ diff --git a/community/games/game_engines/quantum_slot/symbols/blank.png b/community/games/game_engines/quantum_slot/symbols/blank.png new file mode 100644 index 000000000..69987b13f Binary files /dev/null and b/community/games/game_engines/quantum_slot/symbols/blank.png differ diff --git a/community/games/game_engines/quantum_slot/symbols/cherry.png b/community/games/game_engines/quantum_slot/symbols/cherry.png new file mode 100644 index 000000000..533a71049 Binary files /dev/null and b/community/games/game_engines/quantum_slot/symbols/cherry.png differ diff --git a/community/games/game_engines/quantum_slot/symbols/grape.png b/community/games/game_engines/quantum_slot/symbols/grape.png new file mode 100644 index 000000000..3dbb2cdfa Binary files /dev/null and b/community/games/game_engines/quantum_slot/symbols/grape.png differ diff --git a/community/games/game_engines/quantum_slot/symbols/lemon.png b/community/games/game_engines/quantum_slot/symbols/lemon.png new file mode 100644 index 000000000..b84eff3bb Binary files /dev/null and b/community/games/game_engines/quantum_slot/symbols/lemon.png differ diff --git a/community/games/game_engines/quantum_slot/symbols/orange.png b/community/games/game_engines/quantum_slot/symbols/orange.png new file mode 100644 index 000000000..6a57de730 Binary files /dev/null and b/community/games/game_engines/quantum_slot/symbols/orange.png differ diff --git a/community/games/game_engines/quantum_slot/symbols/seven.png b/community/games/game_engines/quantum_slot/symbols/seven.png new file mode 100644 index 000000000..9ee586d6b Binary files /dev/null and b/community/games/game_engines/quantum_slot/symbols/seven.png differ diff --git a/community/games/game_engines/quantum_slot/symbols/strawberry.png b/community/games/game_engines/quantum_slot/symbols/strawberry.png new file mode 100644 index 000000000..05d897594 Binary files /dev/null and b/community/games/game_engines/quantum_slot/symbols/strawberry.png differ diff --git a/community/games/game_engines/quantum_slot/symbols/waiting.png b/community/games/game_engines/quantum_slot/symbols/waiting.png new file mode 100644 index 000000000..5ad6c1656 Binary files /dev/null and b/community/games/game_engines/quantum_slot/symbols/waiting.png differ diff --git a/community/games/game_engines/quantum_slot/symbols/watermelon.png b/community/games/game_engines/quantum_slot/symbols/watermelon.png new file mode 100644 index 000000000..675ff0c69 Binary files /dev/null and b/community/games/game_engines/quantum_slot/symbols/watermelon.png differ diff --git a/community/games/quantum_animations.ipynb b/community/games/quantum_animations.ipynb new file mode 100644 index 000000000..be5738471 --- /dev/null +++ b/community/games/quantum_animations.ipynb @@ -0,0 +1,501 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook (and the image needs to be where this notebook is expecting it)\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# _*Quantum Animations*_\n", + "\n", + "The latest version of this notebook is available on https://github.com/qiskit/qiskit-tutorial.\n", + "\n", + "***\n", + "### Contributors\n", + "James R. Wootton, IBM Research\n", + "***" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the notebook on [random terrain generation](random_terrain_generation.ipynb), we used qubits to make black and white pixel images.\n", + "\n", + "Here we will use the same principle to make colour images. For this we use the fact that each colour can be expressed using the [RGB_color_model](https://en.wikipedia.org/wiki/RGB_color_model). This uses three values to expressed a colour, which tell us how much red, green and blue must be mixed together. These values are typically in the range from 0 to 255. For example, black is (0,0,0), white is (255,255,255) and red is (255,0,0). With this in mind, we can simply have three separate monochromatic process for these three colour channels, and then combine them at the end.\n", + "\n", + "Another new aspect we'll introduce here is the ability to encode an existing image. For example, consider the 'image' below." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "plumber = {(0, 0): (255, 255, 255), (0, 1): (255, 255, 255), (0, 2): (255, 255, 255), (0, 3): (255, 0, 0), (0, 4): (255, 0, 0), (0, 5): (255, 0, 0), (0, 6): (255, 255, 255), (0, 7): (92, 64, 51), (1, 0): (255, 255, 255), (1, 1): (255, 0, 0), (1, 2): (255, 255, 255), (1, 3): (0, 0, 255), (1, 4): (0, 0, 255), (1, 5): (0, 0, 255), (1, 6): (0, 0, 255), (1, 7): (92, 64, 51), (2, 0): (255, 0, 0), (2, 1): (255, 0, 0), (2, 2): (255, 192, 203), (2, 3): (255, 0, 0), (2, 4): (0, 0, 255), (2, 5): (0, 0, 255), (2, 6): (255, 255, 255), (2, 7): (255, 255, 255), (3, 0): (255, 0, 0), (3, 1): (255, 0, 0), (3, 2): (255, 192, 203), (3, 3): (255, 0, 0), (3, 4): (0, 0, 255), (3, 5): (0, 0, 255), (3, 6): (255, 255, 255), (3, 7): (255, 255, 255), (4, 0): (255, 255, 255), (4, 1): (255, 0, 0), (4, 2): (255, 255, 255), (4, 3): (0, 0, 255), (4, 4): (0, 0, 255), (4, 5): (0, 0, 255), (4, 6): (0, 0, 255), (4, 7): (92, 64, 51), (5, 0): (255, 255, 255), (5, 1): (255, 255, 255), (5, 2): (255, 255, 255), (5, 3): (255, 0, 0), (5, 4): (255, 0, 0), (5, 5): (255, 0, 0), (5, 6): (255, 255, 255), (5, 7): (92, 64, 51), (6, 0): (255, 255, 255), (6, 1): (255, 255, 255), (6, 2): (255, 255, 255), (6, 3): (255, 255, 255), (6, 4): (255, 255, 255), (6, 5): (210, 180, 140), (6, 6): (255, 255, 255), (6, 7): (255, 255, 255), (7, 0): (255, 255, 255), (7, 1): (255, 255, 255), (7, 2): (255, 255, 255), (7, 3): (107, 92, 72), (7, 4): (210, 180, 140), (7, 5): (107, 92, 72), (7, 6): (255, 255, 255), (7, 7): (255, 255, 255)}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is an 8x8 pixel picture of a tanuki plumber, expressed as a Python dictionary. For each coordinate of a pixel, it gives the corresponding RGB values. This can then be turned into a proper image. In this notebook, we'll use the `PIL` package to do this." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAADUklEQVR4nO3dsY1VMRBA0We0HbE5ENID2wGtUAAxCQ2QISHyzSjo0cEmXyPLuucUYI8sXTmz133f19HW2j3BY04//8O92z0A7CQA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQ9je9w+vv906bPx/8Db3IDkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKTN/w8w/T7939fZ9ad9eN49QZobgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBtDb/ef61rdof7WqPrTzv+fIb/f/j68nl0fTcAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANIEQNrx/wPwttP/B/j369vo+m4A0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgLSn3QNwtun3+7///D26vhuANAGQJgDSBECaAEgTAGkCIE0ApAmANAGQJgDSBECaAEgTAGkCIE0ApAmANAGQJgDSBECaAEgTAGkCIE0ApAmANAGQJgDSBECaAEgTAGkCIG3d9z27wRpd/hoef5zz2csNQJoASBMAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZC2vnx8v3uGh/z487p7hIe8fHrePcJDTj9/NwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRA2n8dmy0sa+CUzwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from PIL import Image\n", + "from IPython.display import display\n", + "\n", + "def save_image(image,filename='image.png',scale=None):\n", + "\n", + " img = Image.new('RGB',(8,8))\n", + "\n", + " for x in range(img.size[0]):\n", + " for y in range(img.size[1]):\n", + " img.load()[x,y] = image[x,y]\n", + "\n", + " if scale:\n", + " img = img.resize((256,256))\n", + "\n", + " img.save('game_engines/outputs/'+filename)\n", + "\n", + " \n", + "save_image(plumber,scale=[300,300],filename='image1.png')\n", + "display(Image.open('game_engines/outputs/image1.png'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will now turn this image into a quantum state. More precisely, we'll turn him into three states, with one for each colour channel. We will assign a bit string to each coordinate in the image, and use the probabilities of those bit strings as the value for the colour channels of that coordinate.\n", + "\n", + "The above image has $8x8=2^6$ pixels, and so needs 6 qubits." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "n = 6" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we set the probabilities for each bit string, we need to account for the fact that we do not have the freedom to do this arbitrarily. As probabilities, they must all be in the range from 0 to 1, and they must all sum to 1. We can do this simply by renormalizing. The corresponding amplitudes of the quantum state are then the square roots of these values.\n", + "\n", + "First we must decide which bitstrings belong to which values. This can be done in exactly the same way as for the terrain generation notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "L = int(2**(n/2))\n", + "\n", + "grid = {}\n", + "for y in range(L):\n", + " for x in range(L):\n", + " grid[(x,y)] = ''\n", + "\n", + "for (x,y) in grid:\n", + " for j in range(n):\n", + " if (j%2)==0:\n", + " xx = np.floor(x/2**(j/2))\n", + " grid[(x,y)] = str( int( ( xx + np.floor(xx/2) )%2 ) ) + grid[(x,y)]\n", + " else:\n", + " yy = np.floor(y/2**((j-1)/2))\n", + " grid[(x,y)] = str( int( ( yy + np.floor(yy/2) )%2 ) ) + grid[(x,y)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following function then takes an image and a mapping of coordinates to bit strings and makes three quantum states, one for each colour channel. Each is expressed as a Python lists of amplitudes." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "def image2state(image,grid):\n", + " \n", + " N = len(grid)\n", + " state = [[0]*N,[0]*N,[0]*N] # different states for R, G and B\n", + "\n", + " for pos in image:\n", + " for j in range(3):\n", + " state[j][ int(grid[pos],2) ] = np.sqrt( image[pos][j] ) # amplitude is square root of colour value\n", + "\n", + " for j in range(3): \n", + " Z = sum(np.absolute(state[j])**2)\n", + " state[j] = [amp / np.sqrt(Z) for amp in state[j]] # amplitudes are normalized\n", + " \n", + " return state\n", + "\n", + "\n", + "state = image2state(plumber,grid)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can load the states into quantum circuits using the `initialize()` function of Qiskit, which initializes a circuit with a given quantum state. We can then manipulate the image in a quantum way. Here we'll use the statevector simulator to do this, which outputs the final quantum state." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit import *\n", + "\n", + "backend = Aer.get_backend('statevector_simulator')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The final statevector is a set of amplitudes, but our encoding of RGB was done via the probabilities. For this reason, it would be useful to have the standard counts dictionary as we get from other simulators and real quantum devices. The following function performs the conversion." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def ket2counts (ket):\n", + " \n", + " counts = {}\n", + " N = len(ket)\n", + " n = int( np.log(N)/np.log(2) ) # figure out the qubit number that this state describes\n", + " for j in range(N):\n", + " string = bin(j)[2:]\n", + " string = '0'*(n-len(string)) + string\n", + " counts[string] = np.absolute(ket[j])**2 # square amplitudes to get probabilities\n", + " \n", + " return counts" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's have a simple example where we load the image in and then extract the results." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "q = QuantumRegister(n)\n", + "\n", + "counts = []\n", + "for j in range(3): # j=0 for red, j=1 for green, j=2 for blue\n", + " qc = QuantumCircuit(q)\n", + " qc.initialize( state[j], q )\n", + " job = execute(qc, backend)\n", + " counts.append( ket2counts( job.result().get_statevector() ) )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The only remaining job is to turn the three dictionaries of counts back into an image. This is going to be a bit ambiguous, because we need to undo our earlier normalization step. To do this, we'll assume that, for every colour channel, there is at least one pixel with the value 255. This means that the maximum probaility for each colour channel will be given the value 255, and all other values are assigned proportionally. This is done by the following function." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAADYElEQVR4nO3dsWkdQRRA0b8fVWSUC4eqwagDtyLnjpW4gZ8JhHJl6metDpQsj2W45xQw+xj2MtnMtu/7ZWnX69kTHLP6/i9u8b8HjhEAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANLuxr+w+v3906b3x/sD3/J3kiYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKTNvw8wfT/9+8fs+tMe7s+eIM0JQJoASBMAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZC2Dd/ef7leZr+wL97w8vsz/P7D76fH0fXX/nvgIAGQJgDSBECaAEgTAGkCIE0ApAmANAGQJgDSBECaAEgTAGkCIE0ApAmANAGQJgDSBECaAEgTAGkCIE0ApAmANAGQJgDSBECaAEgTAGkCIG359wH43urvA3ze/oyu7wQgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANIEQJoASLs7ewDW9nl7Hl3/77/X0fWdAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBpAiBNAKQJgDQBkCYA0gRAmgBIEwBp277vox+4Dic2PP641fdnm13+8n94fScAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANIEQJoASBMAaQIgTQCkCYA0AZAmANIEQNr26+HH2TMc8vL2cfYIhzz9vD97hEPm93/2BQInAGkCIE0ApAmANAGQJgDSBECaAEgTAGkCIE0ApAmANAGQJgDSBECaAEgTAGkCIE0ApAmANAGQJgDSBECaAEgTAGkCIE0ApAmANAGQJgDSBEDaF+faLh/C7eNFAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def counts2image(counts,grid):\n", + " \n", + " image = { pos:[0,0,0] for pos in grid}\n", + "\n", + " for j in range(3):\n", + "\n", + " rescale = 255/max(counts[j].values()) # rescale so that largest probability becomes value of 255\n", + "\n", + " for pos in image:\n", + " try:\n", + " image[pos][j] = int( rescale*counts[j][grid[pos]] )\n", + " except:\n", + " image[pos][j] = int( rescale*counts[j][grid[pos]] )\n", + "\n", + " for pos in image:\n", + " image[pos] = tuple(image[pos])\n", + "\n", + " return image\n", + "\n", + "\n", + "save_image( counts2image(counts,grid), scale=[300,300], filename='image2.png' )\n", + "display(Image.open('game_engines/outputs/image2.png'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our brave adventurer has been inside a quantum circuit and emerged intact!\n", + "\n", + "Now let's do some simple manipulation. We'll simply apply a rotation around the y axis over the course of a number of frames." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "frame_num = 20" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These will then be compiled into an animated PNG using the `apng` package. Note that you'll need to run this notebook yourself in order to see this." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "from apng import APNG\n", + "import os\n", + "\n", + "state = image2state(plumber,grid)\n", + "\n", + "filenames = []\n", + "for f in range(frame_num):\n", + " \n", + " circuits = []\n", + " for j in range(3):\n", + " qc = QuantumCircuit(q)\n", + " qc.initialize(state[j],q)\n", + " qc.ry(2*np.pi*f/frame_num,q)\n", + " circuits.append( qc )\n", + "\n", + " job = execute(circuits, backend)\n", + "\n", + " counts = []\n", + " for j in range(3):\n", + " counts.append( ket2counts( job.result().get_statevector(circuits[j]) ) )\n", + " \n", + " frame = counts2image(counts,grid)\n", + " \n", + " filename = 'frame_'+str(f)+'.png'\n", + " save_image( counts2image(counts,grid), scale=[300,300], filename=filename)\n", + " filenames.append( 'game_engines/outputs/' + filename )\n", + "\n", + "APNG.from_files(filenames,delay=250).save('game_engines/outputs/animation.png')\n", + "\n", + "for file in filenames:\n", + " os.remove(file)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![](game_engines/outputs/animation.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the above example, each qubit from each circuit is rotated in the y axis at the same rate. These rotations all cover the range from $0$ to $2\\pi$ over the course of the frames. To explore different possibilities, we could choose different fractions of $2\\pi$ to be covered over the frames. Setting this $>1$ will cause a faster rotation, and $<1$ will cause a slower one. Setting it to an integer will mean that the corresponding qubit will return to its original state by the final frame (or almost, anyway). For a non-integer, it will not.\n", + "\n", + "Below you can choose values of these fractions for each qubit for each colour channel via Jupyter widgets." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2969de7e3f194c0c9616a4372d8aee08", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Tab(children=(VBox(children=(FloatSlider(value=1.0, description='qubit 0', max=5.0, step=0.01), FloatSlider(va…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import ipywidgets as widgets\n", + "\n", + "def make_box():\n", + " children = [widgets.FloatSlider(value=1,max=5.0,step=0.01,description='qubit '+str(qubit),show=True) for qubit in range(n)]\n", + " box = widgets.VBox(children)\n", + " return box\n", + "\n", + "tab = widgets.Tab()\n", + "tab.children = [make_box() for j in range(3)]\n", + "channels = ['Red Channel','Green Channel','Blue Channel']\n", + "for j in range(3):\n", + " tab.set_title(j, channels[j])\n", + " \n", + "tab" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once you've chosen, run the cells below to extract the values and create the animation." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "fraction = [[],[],[]]\n", + "for j in range(3):\n", + " for qubit in range(n):\n", + " fraction[j].append( tab.children[j].children[qubit].value)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "state = image2state(plumber,grid)\n", + "\n", + "filenames = []\n", + "for f in range(frame_num):\n", + " \n", + " circuits = []\n", + " for j in range(3):\n", + " qc = QuantumCircuit(q)\n", + " qc.initialize(state[j],q)\n", + " for qubit in range(n):\n", + " qc.ry(2*np.pi*fraction[j][qubit]*f/frame_num,q[qubit])\n", + " circuits.append( qc )\n", + "\n", + " job = execute(circuits, backend)\n", + "\n", + " counts = []\n", + " for j in range(3):\n", + " counts.append( ket2counts( job.result().get_statevector(circuits[j]) ) )\n", + " \n", + " frame = counts2image(counts,grid)\n", + " \n", + " filename = 'frame_'+str(f)+'.png'\n", + " save_image( counts2image(counts,grid), scale=[300,300], filename=filename)\n", + " filenames.append( 'game_engines/outputs/' + filename )\n", + "\n", + "APNG.from_files(filenames,delay=250).save('game_engines/outputs/new_animation.png')\n", + "\n", + "for file in filenames:\n", + " os.remove(file) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![](game_engines/outputs/new_animation.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/games/quantum_awesomeness.ipynb b/community/games/quantum_awesomeness.ipynb index 8f901b396..7028ad2cf 100644 --- a/community/games/quantum_awesomeness.ipynb +++ b/community/games/quantum_awesomeness.ipynb @@ -693,7 +693,9 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "keywords = {'Topics': ['Games', 'Hardware', 'Entanglement'], 'Commands': ['`rx`', '`cx`']}" + ] } ], "metadata": { diff --git a/community/games/quantum_counterfeit_coin_problem.ipynb b/community/games/quantum_counterfeit_coin_problem.ipynb index 1f6248c77..d591a911d 100644 --- a/community/games/quantum_counterfeit_coin_problem.ipynb +++ b/community/games/quantum_counterfeit_coin_problem.ipynb @@ -370,7 +370,9 @@ "collapsed": true }, "outputs": [], - "source": [] + "source": [ + "keywords = {'Topics': ['Counterfeit coin problem'], 'Commands': ['`h`']}" + ] } ], "metadata": { diff --git a/community/games/quantum_slot_machine.ipynb b/community/games/quantum_slot_machine.ipynb new file mode 100644 index 000000000..8e30132e4 --- /dev/null +++ b/community/games/quantum_slot_machine.ipynb @@ -0,0 +1,125 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum Slot Machine\n", + "\n", + "### Here we will use the intrinsic randomness of quantum mechanics to control the selection of icons on a slot machine." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-12-28T15:54:29.168824Z", + "start_time": "2018-12-28T15:54:29.093354Z" + }, + "scrolled": false + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d7b78a19e7d946c7b64c90cafb555fd1", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "VBox(children=(VBox(children=(Image(value=b'\\x89PNG\\r\\n\\x1a\\n\\x00\\x00\\x00\\rIHDR\\x00\\x00\\x03\\xc9\\x00\\x00\\x00\\xc…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from game_engines.quantum_slot import quantum_slot_machine\n", + "quantum_slot_machine()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Paytable" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## How to play\n", + "\n", + "To play, select a backend to use to generate the random numbers in the lower left of the machine. By default this is the `qasm_simulator`. When the machine is started, a job is sent to the `ibmq_5_tenerife` device requesting some random bit strings. The progess of this job can be tracked in the lower right. When done, you can select the `ibmq_5_tenerife` backend to use these numbers. Push the slot machine handle button to run the machine. You initially get 20 credits, and play continues until you stop or your credits run out. Payout is according to the table above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## How it works\n", + "\n", + "There are eight choices of symbols that can be displayed for the three slots on the machine. To uniquely select between them, we need $3=\\log_{2}(8)$ bits on information. The quantum slot machine uses three different backends to generate the random bit strings of length three that select which symbol to show on the wheel:\n", + "\n", + "* **qasm_simulator**\n", + "Uses the local qasm simulator in Qiskit terra to pseudo-randomly generate bit strings from a single-shot of quantum circuit that consists of Hadamard gates on nine different qubits followed by measurements.\n", + "\n", + "\n", + "* **ibmq_5_tenerife**\n", + "Computes $300$ shots of a three-qubit variant of the same circuit used in the simulator. This is because only the `ibmq_5_tenerife` allows for accessing the `memory` of the backend, as opposed to computing the counts for all the shots. Although pre-computing random values is not ideal as an evil-doer may be able to read the numbers, on IBM Q devices, it is best to compute a lot of values at once and then cache them. After running once, this selection will allow you to use the machine $100$ times.\n", + "\n", + "\n", + "* **ANU QRNG**\n", + "The random numbers generated from the circuits used above suffer from the fact that unavoidable energy relaxation makes the lower bit-strings slightly more favorable than others. As such, it would be preferable to find a platform that generates random numbers from the quantum ground state of a system. Here we use the [Australia National University Quantum Random Number Generator](https://qrng.anu.edu.au/) that measures the random fluctuations of the vacuum state of a quantum oscillator." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "keywords = {'Topics': ['Games','Random number generation'], 'Commands': ['`h`','`shots=1`']}" + ] + } + ], + "metadata": { + "hide_input": false, + "kernelspec": { + "display_name": "Python 3", + "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.7.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/games/quantum_tic_tac_toe.ipynb b/community/games/quantum_tic_tac_toe.ipynb index 20794c5c5..8376fb05e 100644 --- a/community/games/quantum_tic_tac_toe.ipynb +++ b/community/games/quantum_tic_tac_toe.ipynb @@ -327,6 +327,15 @@ "\n", "`B.run()`" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "keywords = {'Topics': ['Games','Superposition','Entanglement'], 'Commands': ['Custom gates']}" + ] } ], "metadata": { @@ -345,7 +354,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.2" + "version": "3.7.0" } }, "nbformat": 4, diff --git a/community/games/random_terrain_generation.ipynb b/community/games/random_terrain_generation.ipynb new file mode 100644 index 000000000..e6469cc7d --- /dev/null +++ b/community/games/random_terrain_generation.ipynb @@ -0,0 +1,804 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook (and the image needs to be where this notebook is expecting it)\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# _*Random Terrain Generation*_\n", + "\n", + "The latest version of this notebook is available on https://github.com/qiskit/qiskit-tutorial.\n", + "\n", + "***\n", + "### Contributors\n", + "James R. Wootton, IBM Research\n", + "***" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From 1980's *Rogue* to recent games like *No Man's Sky*, [randomly generated content](https://en.wikipedia.org/wiki/Procedural_generation#Video_games) has become an important part of game design. This content is not generated in a completely random way, but is instead subject to a variety of constraints, like looking good, providing unique experiences for the player in every random sample, forming a solvable level and allowing this solvability to be efficiently verified.\n", + "\n", + "To satisfy these contraints, the procedure used to generate the random content can sometimes rely on reusing the same patterns over and over. Unfortunately this carries the risk of players recognising the patterns, which compromises the ability to keep providing unique experiences.\n", + "\n", + "Procedural generation is therefore another area in which quantum computers could be very useful. Not only can it be used for new methods of generating random content, it can also provide new algorithms to analyse the solvability of classical methods.\n", + "\n", + "In this notebook we perform a first experiment on quantum procedural generation. This will cover one of the simplest and most useful applications of procedural generation: the creation of random height maps.\n", + "\n", + "One of the current most popular methods to do this is [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise). Here's a sample ([source](https://commons.wikimedia.org/wiki/File:Perlin_noise.jpg)).\n", + "\n", + "![Perlin noise by Reedbeta on Wikimedia Commons](https://upload.wikimedia.org/wikipedia/commons/d/da/Perlin_noise.jpg)\n", + "\n", + "In this image, the white and black areas can be associated with mountains and valleys, respectively. This image could therefore be turned into mountainous terrain to explore in a game. In this notebook we will investigate how to generate something similar with Qiskit." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, let's choose how many qubits to use." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "n = 9" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, let's work out what to do with them. We will make a method designed for current and near-term devices, which means making the most out of a few qubits. However, we will also want to generate images with thousands of points. To allow this, we can measure the probabilities for each of the $2^n$ possible output bit strings that are possible for $n$ qubits. We can then associate each bit string with a point, and the height of the map can be the probability of that point.\n", + "\n", + "Getting all these probabilities will mean that we need a large number of shots, which is how many times we repeatedly run a quantum program to calculate statistics of the outputs." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "shots = 4**n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This method is therefore not scalable to large $n$: it has exactly the kind of exponentially increasing run time that quantum computers usually aim to free us from. Other quantum methods for procedural generation will therefore be needed in the [NISQ era](https://arxiv.org/abs/1801.00862) of quantum computing and beyond.\n", + "\n", + "For now, we need to choose a way of assigning each of the possible bit strings to a point. The most natural way to do this would be to respect the [Hamming distance](https://en.wikipedia.org/wiki/Hamming_distance) of the bit strings. This is because the basic operations of quantum computing, single qubit gates and `cx` gates, only have the effect of flipping a single bit in a bit string. Strings that differ by only a single bit can therefore be regarded as 'closer' to each other than those that differ by more.\n", + "\n", + "With this in mind, the set of all $n$-bit strings represents a hypercube: a shape that exists in $n$-dimensional space. This is a bit exotic for our needs, since we want the generate a 2D terrain map like the one depicted above. We therefore need a way to squash a hypercube onto a 2D surface.\n", + "\n", + "This is done in the following cell. The dictionary `strings` is created, which has 2D coordinates `(x,y)` as keys and the corresponding bit string as values. The squashing procedure essentially uses the fact that a cube is two squares, with each point in one connected to its partner in the other. A tesseract is then two cubes connected similarly, and so on for higher dimensional hypercubes. But if we don't include all the possible connections, we can keep our not-quite-a-cube flat, and then do the same with the corresponding not-quite-a-tesseract, and so on.\n", + "\n", + "The result is a square lattice. The four neighbours of each point are four of the $n$ hypercube neighbours of the corresponding string. So the strings are only close to strings that they should be close to, though at the cost of being far away from some of their hypercube neighbours." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "Lx = int(2**np.ceil(n/2))\n", + "Ly = int(2**np.floor(n/2))\n", + "\n", + "strings = {}\n", + "for y in range(Ly):\n", + " for x in range(Lx):\n", + " strings[(x,y)] = ''\n", + "\n", + "for (x,y) in strings:\n", + " for j in range(n):\n", + " if (j%2)==0:\n", + " xx = np.floor(x/2**(j/2))\n", + " strings[(x,y)] = str( int( ( xx + np.floor(xx/2) )%2 ) ) + strings[(x,y)]\n", + " else:\n", + " yy = np.floor(y/2**((j-1)/2))\n", + " strings[(x,y)] = str( int( ( yy + np.floor(yy/2) )%2 ) ) + strings[(x,y)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The squashed hypercube we obtain above is just one of exponentially many we could have got. To explore this space a bit, and not end up with the same grid every time, we can perform a suffle. This reorders the bits in all the bit strings in the same way. This ensures the resulting squashed hypercube has all the properties we need, while allowing for some variation with each run." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import random\n", + "\n", + "order = [j for j in range(n)]\n", + "random.shuffle(order)\n", + "\n", + "for (x,y) in strings:\n", + " new_string = ''\n", + " for j in order:\n", + " new_string = strings[(x,y)][j] + new_string\n", + " strings[(x,y)] = new_string" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also assert a bit of control over the hypercube by choosing which string lives at the center (actucally, it will be just to the top right of the center). By default, we choose this to be the string with all `0`s." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "center = '0'*n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "current_center = strings[ ( int(np.floor(Lx/2)),int(np.floor(Ly/2)) ) ]\n", + "diff = ''\n", + "for j in range(n):\n", + " diff += '0'*(current_center[j]==center[j]) + '1'*(current_center[j]!=center[j])\n", + "for (x,y) in strings:\n", + " newstring = ''\n", + " for j in range(n):\n", + " newstring += strings[(x,y)][j]*(diff[j]=='0') + ('0'*(strings[(x,y)][j]=='1')+'1'*(strings[(x,y)][j]=='0'))*(diff[j]=='1')\n", + " strings[(x,y)] = newstring" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With these manipulations complete, we now create the dictionary `pos`, which is ordered in the opposite way to `strings`: it has the strings as keys and coordinates as values." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "pos = {}\n", + "for y in range(Ly):\n", + " for x in range(Lx):\n", + " pos[strings[(x,y)]] = (x,y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now the grid is defined, we can deal with how to make an image of it. This is done with the following function, which will create a shaded block for each string at the positions defined by `pos`. It will also use `probs`, which will be a dictionary with the output strings as keys and their corresponding probabilities as values. The resulting shaded blockswill be darker for strings whose probability is low, and lighter for high probability strings.\n", + "\n", + "By default, the lowest probabilities are made black, the highest are white and the scaling of the shading is logarithmic. These can be turned off with the `log` and `normalize` kwargs." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def plot_terrain(pos,probs,log=True,normalize=True):\n", + "\n", + " Z = {}\n", + " for node in probs:\n", + " if log:\n", + " Z[node] = np.log(probs[node])\n", + " else:\n", + " Z[node] = probs[node]\n", + " \n", + " minZ = min(Z.values())\n", + " maxZ = max(Z.values())\n", + " colors = {}\n", + " for node in Z:\n", + " if normalize:\n", + " z = (Z[node]-minZ)/(maxZ-minZ)\n", + " else:\n", + " z = Z[node]\n", + " colors[node] = (z,z,z,1)\n", + "\n", + " fig = plt.figure()\n", + " ax = fig.add_subplot(111)\n", + " \n", + " for node in pos:\n", + " rect = matplotlib.patches.Rectangle(pos[node], 1, 1, color=colors[node])\n", + " ax.add_patch(rect)\n", + " plt.xlim([0, Lx])\n", + " plt.ylim([0, Ly])\n", + " plt.axis('off')\n", + " plt.savefig('output.png',dpi=1000)\n", + " plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the plotting we are using won't be happy if all possible strings aren't present in `pos` with a non-zero probability. So we'll give all the outputs that don't appear a nominal probability of 1/`shots`.\n", + "\n", + "Here's a function to produce such a `probs` from the results contain in a `job` object." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def get_probs(job):\n", + " counts = job.result().get_counts()\n", + " probs = {}\n", + " for string in pos:\n", + " try:\n", + " probs[string] = counts[string]/shots\n", + " except:\n", + " probs[string] = 1/shots\n", + " return probs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It's time to make and run a quantum circuit. Let's start with a trivial circuit, and so one that outputs all `0`s." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAABBhJREFUeJzt3NFNwzAARVEbdYWK/bfLFDEboACtC5dzvqM4SOjSVOLNtdYA4O97e/UDAPAYgg4QIegAEYIOECHoABGCDhAh6AARgg4QIegAEbedh805jzHG+4VLz3H9j83Va92zc8/az+Oefj8+tdaaV66bO//1f85pZwDgi64G3VcuABGCDhAh6AARgg4QIegAEYIOECHoABGCDhAh6AARgg4QIegAEYIOELE76Ofm8wD+jd1B90YA8CQCCxAh6AARgg4QIegAEYIOECHoABGCDhAh6AARgg4QIegAEYIOECHoABHWFgEirC0CRAgsQISgA0QIOkCEoANECDpAhKADRAg6QISgA0QIOkCEoANECDpAhHEugAjjXAARAgsQIegAEYIOECHoABGCDhAh6AARgg4QIegAEYIOECHoABGCDhAh6AAR1hYBIqwtAkQILECEoANECDpAhKADRAg6QISgA0QIOkCEoANECDpAhKADRAg6QIRxLoAI41wAEQILECHoABGCDhAh6AARgg4QIegAEYIOECHoABGCDhAh6AARgg4QIegAEdYWASKsLQJECCxAhKADRAg6QISgA0QIOkCEoANECDpAhKADRAg6QISgA0QIOkCEcS4YY8w5X/0I8GO3zed5I+BXOs/rnzXEn99KYAEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSDC2iKMMY7juHzt/X5/4pPA98211r7D5tx3GEDEWuvSxKevXAAiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSDC2iJAxO6geyMAeBKBBYgQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiDDOBRBhnAsgQmABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gwtoiQIS1RYAIgQWIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gwzgUQYZwLIEJgASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIMLaIkCEtUWACIEFiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACGuLABHWFgEiBBYgQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSDCOBdAhHEugAiBBYgQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gIi51nr1MwDwAD6hA0QIOkCEoANECDpAhKADRAg6QISgA0QIOkCEoANECDpAhKADRAg6QISgA0QIOkCEoANECDpAhKADRAg6QISgA0QIOkCEoANECDpAhKADRHwAPElN4mnmb1EAAAAASUVORK5CYII=\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from qiskit import *\n", + "\n", + "q = QuantumRegister(n)\n", + "c = ClassicalRegister(n)\n", + "qc = QuantumCircuit(q, c)\n", + "\n", + "qc.measure(q, c)\n", + "\n", + "backend = Aer.get_backend('qasm_simulator')\n", + "\n", + "job = execute(qc, backend, shots=shots)\n", + "\n", + "probs = get_probs(job)\n", + "plot_terrain(pos,probs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we just get a single peak in the center. Not very interesting. To make a mountain, we need to spread out the probability. One way to do this is to simply use the noise present in a real device." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from qiskit.providers.aer import noise\n", + "\n", + "IBMQ.load_accounts()\n", + "\n", + "backend_to_simulate = IBMQ.get_backend('ibmq_16_melbourne')\n", + "noise_model = noise.device.basic_device_noise_model(backend_to_simulate.properties())\n", + "job = execute(qc, backend, shots=shots,noise_model=noise_model,basis_gates=noise_model.basis_gates)\n", + "\n", + "probs = get_probs(job)\n", + "plot_terrain(pos,probs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we have used noise in the system instead of trying to avoid it. This is another aspect of our method that makes it suitable for near-term devices.\n", + "\n", + "Now let's try another quantum circuit. This time with a GHZ state." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAABEhJREFUeJzt3EFu2zAARUGyyBWE3v92OoXYXZeFWkd0+jKzFkwFCJ4tA/5zrTUA+P/9ePcNAPA5BB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIj52HjbnPMcYP29ceo37bzZ3r/Wandes/T1e0//HH6215p3r5s6f/s857QwA/KW7QfeVC0CEoANECDpAhKADRAg6QISgA0QIOkCEoANECDpAhKADRAg6QISgA0TsDvq1+TyAb2N30D0RADxEYAEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSDC2iJAhLVFgAiBBYgQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiDDOBRBhnAsgQmABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gwtoiQIS1RYAIgQWIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gwzgUQYZwLIEJgASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIMLaIkCEtUWACIEFiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIQQeIMM4FY4w557tvAV72sfk8TwR8Sdd1/7OG+PNVCSxAhKADRAg6QISgA0QIOkCEoANECDpAhKADRAg6QISgA0QIOkCEoANEWFuEMcZ5nrevPY7jwTuBfzfXWvsOm3PfYQARa61bE5++cgGIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIa4sAEbuD7okA4CECCxAh6AARgg4QIegAEYIOECHoABGCDhAh6AARgg4QIegAEYIOEGGcCyDCOBdAhMACRAg6QISgA0QIOkCEoANECDpAhKADRAg6QISgA0QIOkCEoANECDpAhLVFgAhriwARAgsQIegAEYIOECHoABGCDhAh6AARgg4QIegAEYIOECHoABGCDhBhnAsgwjgXQITAAkQIOkCEoANECDpAhKADRAg6QISgA0QIOkCEoANECDpAhKADRAg6QIS1xRfMOd99CwC/fWw+L/VEcF3335/EH3haKrAA35mgA0QIOkCEoANECDpAhKADRAg6QISgA0QIOkCEoANECDpAhKADRFhbfMF5nrevPY7jwTsBGGOutfYdNue+wwAi1lq35lp95QIQIegAEYIOECHoABGCDhAh6AARgg4QIegAEYIOECHoABGCDhBhnAsgYnfQPREAPERgASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIGKutd59DwB8Ap/QASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIn4BbGVa1aWP244AAAAASUVORK5CYII=\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "qc = QuantumCircuit(q, c)\n", + "qc.h(q[0])\n", + "for j in range(n-1):\n", + " qc.cx(q[j],q[j+1])\n", + "qc.measure(q, c)\n", + "\n", + "job = execute(qc, backend, shots=shots)\n", + "\n", + "probs = get_probs(job)\n", + "plot_terrain(pos,probs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, it is not so interesting. This time, let's spread out the probability by adding in some single qubit gates. Specifically, we'll try rotations around the y axis by a few different angles." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "For rotations around the y axis by 0.0*pi\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAABEhJREFUeJzt3EFu2zAARUGyyBWE3v92OoXYXZeFWkd0+jKzFkwFCJ4tA/5zrTUA+P/9ePcNAPA5BB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIj52HjbnPMcYP29ceo37bzZ3r/Wandes/T1e0//HH6215p3r5s6f/s857QwA/KW7QfeVC0CEoANECDpAhKADRAg6QISgA0QIOkCEoANECDpAhKADRAg6QISgA0TsDvq1+TyAb2N30D0RADxEYAEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSDC2iJAhLVFgAiBBYgQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiDDOBRBhnAsgQmABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gwtoiQIS1RYAIgQWIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gwzgUQYZwLIEJgASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIMLaIkCEtUWACIEFiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIQQeIMM4FY4w557tvAV72sfk8TwR8Sdd1/7OG+PNVCSxAhKADRAg6QISgA0QIOkCEoANECDpAhKADRAg6QISgA0QIOkCEoANEWFuEMcZ5nrevPY7jwTuBfzfXWvsOm3PfYQARa61bE5++cgGIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIa4sAEbuD7okA4CECCxAh6AARgg4QIegAEYIOECHoABGCDhAh6AARgg4QIegAEYIOEGGcCyDCOBdAhMACRAg6QISgA0QIOkCEoANECDpAhKADRAg6QISgA0QIOkCEoANECDpAhLVFgAhriwARAgsQIegAEYIOECHoABGCDhAh6AARgg4QIegAEYIOECHoABGCDhBhnAsgwjgXQITAAkQIOkCEoANECDpAhKADRAg6QISgA0QIOkCEoANECDpAhKADRAg6QIS1xRfMOd99CwC/fWw+L/VEcF3335/EH3haKrAA35mgA0QIOkCEoANECDpAhKADRAg6QISgA0QIOkCEoANECDpAhKADRFhbfMF5nrevPY7jwTsBGGOutfYdNue+wwAi1lq35lp95QIQIegAEYIOECHoABGCDhAh6AARgg4QIegAEYIOECHoABGCDhBhnAsgYnfQPREAPERgASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIGKutd59DwB8Ap/QASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIn4BbGVa1aWP244AAAAASUVORK5CYII=\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "For rotations around the y axis by 0.1*pi\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "For rotations around the y axis by 0.2*pi\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "For rotations around the y axis by 0.3*pi\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "For rotations around the y axis by 0.4*pi\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "For rotations around the y axis by 0.5*pi\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "for frac in [0.0,0.1,0.2,0.3,0.4,0.5]:\n", + " \n", + " qc = QuantumCircuit(q, c)\n", + " qc.h(q[0])\n", + " for j in range(n-1):\n", + " qc.cx(q[j],q[j+1])\n", + " qc.ry(np.pi*frac,q) \n", + " qc.measure(q, c)\n", + "\n", + " job = execute(qc, backend, shots=shots)\n", + "\n", + " probs = get_probs(job)\n", + " print('\\nFor rotations around the y axis by '+str(frac)+'*pi')\n", + " plot_terrain(pos,probs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These take us from the twin peaks of the GHZ state to a checkerboard pattern, thanks to the interference effects in quantum states. We find some interesting patterns along the way.\n", + "\n", + "These interference effects are one way that quantum procedural generation can avoid the playing 'seeing behind the curtain' and recognizing the way the random patterns are created: quantum effects are quite removed from human experience, and so we have less intuition that helps us recognize them." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So far we've experimented with just one or two peaks. For something that looks like Perlin noise, we need a constant density. For this we can set a density `rho`, and then use it to pick a random set of points. This can then be turned into a vector representing the quantum superposition of the corresponding bit strings." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "rho = 0.1\n", + "N = int(rho*2**n)\n", + "state = [0]*(2**n)\n", + "for j in range(N):\n", + " state[ int(random.choice(list(pos.keys())),2) ] = 1\n", + "Z = sum(np.absolute(state)**2)\n", + "state = [amp / np.sqrt(Z) for amp in state]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can then initialize the circuit with this state, and again try using `ry` rotations by different angles." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "For rotations around the y axis by 0.0*pi\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "For rotations around the y axis by 0.1*pi\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAFPdJREFUeJzt3H9s1fW9x/H3oS0ttBXk1yWIISY4nWGoY/5AE38RQTEbMca44MyWbcyJRIJTJ2gyrX+AQePPqBG2YCxCMiEC/gzGmMXpFpwwxzQ4NdP4A7TIj5baWnp6/7h/3jieH9eee+/7Ph9/v/I+7Tnf84L0j1dlYGAgJEn/9w37n/4BJEmDw0KXpCQsdElKwkKXpCQsdElKwkKXpCQsdElKwkKXpCQsdElKor6WL7Zy5crdEfEfR8rNmzev2tTUhP6xWbNmTbWnp+eI2fvuu6/a3d2Nbs6ePbva2Nh4xOwZZ5xRHT58OLq5ffv26uHDh4+YfeONN1AuImLmzJno9ceNG1cdNmwYurl58+Zqb2/vEbMrVqyotra2optvvfVWtb+//4jZ+vr6aqVSOWLu5JNPrjY0NKDXXrRoUbWzs/OI2Tlz5qDPPCJiz5491YGBgSNmm5ub8fve0tKCstdff321ubkZ3XziiSfQd2Pfvn3o94mImDZtGnrvDx06VA34H8ZJkyZV6+rqjpidPn06eu329nb0e0dEdHR0oN99zJgx+LN877330PP+rW99q1pfX49uLlmypEJytf4f+hHLPCKClnlEBP3gaJlHRNAvNi3ziAha0jRX8vr0QYyIIGUeEUHLPCKCPNwREaTMIyJomUdEkDKP4J95RAQtv5L3nWZpmUfw7wb9fSKK3nt8k5R5yWvT3ztiaD5L+rzTMi/hn1wkKQkLXZKSsNAlKQkLXZKSsNAlKQkLXZKSsNAlKQkLXZKSsNAlKQkLXZKSsNAlKQkLXZKSqGmhV6vVKsn19PTgm01NTSg3cuRIfJO+fm9vL75ZX8+GLWkuIuKrr75COfi2RwR/Pw8ePIhv1tXV4SzR19eHs0cddRTKlXyWdKdpYGAA36SfUVdXF77Z2NiIcgW7U3H48GGcpfr7+1GOPu/0GY6IqFTQiCH+GSP4+1lyk6rpfC5dPHznnXfwzb6+PlQYP/jBD/DN9evXo9yWLVvwzZ/+9Kcod9xxx+Gbzc3NKHfOOefgm1OnTkW5xx9/HN+cM2cOyi1cuBDlPv74Y/zaCxYsQLnJkyfjm/QfqE8//RTfpO/nn/70J3xz165dKLdy5Up8s6OjA+VeffVVfHPnzp0oR3+f7du349f+7ne/i3KLFi3CNxcsWID+obj22mvxTco/uUhSEha6JCVhoUtSEha6JCVhoUtSEha6JCVhoUtSEha6JCVhoUtSEha6JCVhoUtSEha6JCVR00IfGBhAk3J0VS0ioqGhAeVKFv/oSh1daouI+PLLLwf9Jl2+K1mvpIYPH46zdMnw0KFDKFfyHtHno2T5rmS9kqLPHH2PIvjv3tnZiW9SJauh9POk73vJd50ud7a2tuKb3d3dKFeyWErVdG2xv78f/QNy2WWX4Zv0zVu1ahW+uW/fPpSbN28evvnII4+g3CeffIJvvvjiiyg3evRofPPuu+9GuXHjxuGb9MGlX8SSQl28eDHK3XbbbfjmunXrUI6uA0b81yIm+f3pamdExL333otyjz76KL5J1x4vuugifHPDhg0o98c//hHfpObPn49yN9xwA775m9/8BuVOPvlkfJMuM/onF0lKwkKXpCQsdElKwkKXpCQsdElKwkKXpCQsdElKwkKXpCQsdElKwkKXpCQsdElKoqaFXqlU0AhHS0sLvrlnzx6Uo+NHEXx4io5ORUSMGDEC5YYN4x8JHTWiezcR/Ocs2VOhI2J0wKwEfZZKRq/oszQUI1Elo2hDMbpFf6eSgb2mpiaUK/ndKfrM0Wc4gj9zQzHOVRkYGBj0o19nxYoV6MVuvvlmfJOWWsmY1CmnnIJyc+bMwTe//e1vo9yyZcvwzTfffBPlli5dim/SEbOS350uGa5fvx7lSgbMJk2ahHJ0kC0i4mc/+xnKbdy4Ed+k2Y6ODnxz06ZNKDd37lx8k45E0f9oRfACfOCBB1CupD+o22+/HWdnzpyJcrNnz8Y3BwYGUNH5JxdJSsJCl6QkLHRJSsJCl6QkLHRJSsJCl6QkLHRJSsJCl6QkLHRJSsJCl6QkLHRJSsJCl6QkalroXV1daKKvq6sL35wwYQLKDcU6YMmiHL3Z3NyMb9Llu5L3k64tlvzuFF3d+/zzz/FNOspWcpOOSZUsfB44cADl6BhdxNCshra2tqJcyftJv5v0+Sj5DlEla5z0uzF69Ohv+uN8rZquLVYqFfRid9xxB75ZX1+PcnSZMCJi8uTJKFey6vbUU0+hXFtbG75JffDBBzi7fPlylBs/fjy+OWrUKJRbs2YNyp1++un4tV9//XWU+/nPf45vzps3D+VuueUWfPPWW29FuRUrVuCbtND/8Y9/4Jt0RfGss87CN+m66RNPPIFyb7zxBn7tXbt2oVzJ1O1NN92Ectu2bcM3X3/9ddcWJen/EwtdkpKw0CUpCQtdkpKw0CUpCQtdkpKw0CUpCQtdkpKw0CUpCQtdkpKw0CUpiZoWelNTE1rhKRnCoeiQVUREf38/ypX8nHRXY+TIkfgm3eEZNox/zHTIi75HJVk6vlQyDEY/9+7ubnyTbtOUPB/0fafjaSVKvhv0WSr5jGiWjp2V/D40SzdsIvg4GN2hKjH4F/+Fq666Cj0NJeNLp512Gsrddddd+OZHH32EciXjOs899xzKvf322/jmlClTUK5kabK/vx8t/z3yyCP45hlnnIFyJ5xwAsq1t7fj16amTp2Ks6NHj0ZLeXQJNIIPT33xxRf45uLFi1HuwQcfxDfpkNY999yDb06bNm1Qc+vWrcOvffbZZ6Pc8ccfj29Onz4d5WbNmoVvUv7JRZKSsNAlKQkLXZKSsNAlKQkLXZKSsNAlKQkLXZKSsNAlKQkLXZKSsNAlKQkLXZKSsNAlKYmaFnqlUkErUT09PfgmXWorWamji3JffvklvknXFuniYAQf3RqKtcWSn7Ovrw/lDh8+POivTfX29uIs/SxLFhzpZ1mpVPBN+lnSFcMIvvBZshpKnw+ao2uHJTcbGhoG/SbNlajp2uKYMWNQs8yfPx/fbGtrQ7m+vj48V0mW9CIiXnjhBZSLiHj88cdR7uKLL8Y3TzzxRJQrWb6jy3urVq3CN/fv349ynZ2dKHfllVfi137yySdR7txzz8U3N27ciHJdXV24VOka53nnnYdyERFr165FuaVLl+Kbn3zyCcrRf/QiIhYuXIhy9Dl6+OGH8WvT/xxs374d31y+fDnKPfPMM/gm5Z9cJCkJC12SkrDQJSkJC12SkrDQJSkJC12SkrDQJSkJC12SkrDQJSkJC12SkrDQJSmJmhZ6X18fWiAqGdehWxklo0YlWYoOIJWMRNExq5JhMorurkTwcTD6vtOBqAj+vtPnKII/nyWfJf05Swad6PNR8n377LPPUK5ky6W1tRXl6BBfyWgefZbq6urwTTpM9vnnn+ObVE3Hud566y30zV6yZAm++be//Q3lrrjiCnxz/PjxKPfSSy/hm/TLffzxx+ObkydPRrkJEybgm3So6Uc/+hG+SdczH3vsMZTbtGkTfu3vf//7KPfrX/8a3+zo6EC5sWPH4pvt7e0oRws1IuKHP/whyh06dAjfvOGGG1Cu5Dt83HHHodzBgwdR7qqrrsKvTcufPpsRfGXz73//O75Jv2/+yUWSkrDQJSkJC12SkrDQJSkJC12SkrDQJSkJC12SkrDQJSkJC12SkrDQJSkJC12SkrDQJSmJ/5Vri3RVLYIv+ZUssPX396NcQ0MDvkkX2Ep+Trqm19TUhG/S1cGhWLSji4MlS350FK3kPaKrkCWjVyXvJzVq1CiUK1kXpd9NOlAVUbb2SOzduxdnq1VUSXHUUUfhm/Q5PnDgAL5J1XRtcceOHah9n3vuuUF/7d27d+PstGnTUO6DDz7AN+kD/r3vfQ/f3Lp1K8rt2rUL36RreiVfWLq2uGHDBpT7y1/+gl/7D3/4A85SM2bMQLnu7m78PtFnfuPGjSgXEfHLX/4S5VavXo1vXnjhhSg3a9YsfPO1115DuTlz5qDc008/jV/7mmuuQbmS92j69Okod+DAgUEvdf/kIklJWOiSlISFLklJWOiSlISFLklJWOiSlISFLklJWOiSlISFLklJWOiSlISFLklJWOiSlERNC72+vh5Nm5Wsv1F9fX04S9cW6+rq8E26zNjZ2TnoN0vWCamSn5OiP2d9fU035f4bunI5FM9cyWdJFxxLlibpzZKlyfHjx6McXXqkY3AREa2trShX8rzTXqBLjyVq+s049dRTB31t8ZJLLkG5M888E99ctGgRyt1zzz345o4dO1Cus7MTPzx0eW/cuHEoFxExadIklOvt7cXTtK+88grK0dW9ElOmTEG5kuXMuXPnotzEiRPxzS1btqBcSbG8//77KNfS0hItLS0o++ijj6Jcydzsr371K5Sj/5D29PTgUl+6dCnK0eXKiIj9+/ej3He+8x18c9myZSjnn1wkKQkLXZKSsNAlKQkLXZKSsNAlKQkLXZKSsNAlKQkLXZKSsNAlKQkLXZKSsNAlKYmaFnpTUxNaoykZC6KDPTQXwYeFRowYgW/SLB0/iogYOXIkyg0MDOCbdCSqZACJjmnR4amS8Tb6+wwbxr8KXV1dg/raEfx3L/k56ThYyU36WdL3KII/n4OdK8mWjI3Rm0cffTS+SVVKfvl/1+9//3v0YhdccAG++fTTT6Pcs88+i2+eeuqpKPfhhx/im42NjShXUgIPPPAAyj388MP45po1a1Duz3/+M7559tlno9yPf/xjlKP/kEVErFu3DuVKfp+Ojg6Ua2trwzfvv/9+lJs9eza+OXPmTJS766678E06XHfjjTfim9Q555yDcueeey6+SQe/6MhbRMTy5ctRrmQQbmBgAP0vxj+5SFISFrokJWGhS1ISFrokJWGhS1ISFrokJWGhS1ISFrokJWGhS1ISFrokJWGhS1ISFrokJVHTQu/u7kZri729vfhmQ0MDytE1u4ihWakbihE0uuB44MABfJOOiNHVvQi+dNnd3Y1yQ7FiWPL70M+9ZKGPDo6VrIbSbMnYGf2MWlpa8E26nkm/lzRX8tolz1xzczPK1dXV4ZsUf4oHwWOPPYa+CXv37sU37733XpT7yU9+gm/SFbSpU6fim2+//TbKTZs2Dd9sbm5GD8/NN9+Mb9JVudGjR+Ob27ZtQ7mPPvoI5UpW6qgpU6bgf8wWLlyIckuWLMGvT2eTS4py586dKPeLX/wC39y8eTPKLVu2DN+85pprUG716tUoV/L70H903333XXxz8eLFKFfSc5R/cpGkJCx0SUrCQpekJCx0SUrCQpekJCx0SUrCQpekJCx0SUrCQpekJCx0SUrCQpekJGpa6CNGjEDjXD09PSU3UY5uZUTw8aWSwR46xHP48GF8k44AlYyIVavoI8KjRiWvT197KEaN6GtH8Gepq6sL36TPccnPSd/3ksEvOnZWcpPuqQzFd52O5pV8h0qyg60yFCuAX2fTpk3oxV544QV88/3330c5Wn4REfPnz0e5kgfnww8/RLmrr74a33zooYdQbsyYMfjmP//5T5T7+OOP8U06+HXdddeh3P33349fmy7vTZw4Ed988MEHUW7UqFH45rHHHotys2bNwjfXrl2LciVjZ9deey3KlfzuGzZsQLmXX34Z5UpWLunI3B133IFvtre3oxz9zCMitm7div4H5Z9cJCkJC12SkrDQJSkJC12SkrDQJSkJC12SkrDQJSkJC12SkrDQJSkJC12SkrDQJSkJC12SkqhpodfX16OpOLroFsGX90pGyEpGtyi6wNbd3Y1vNjU1oVzJ707fz5K1RbpKSX93urpXomQ5k75+yftOVzZLVgwbGxtRrmS9kn43St5P+hzv27cP36TGjRuHciXLmfT3KXmPqPpBv/gvnH766ajV6IMYEXHMMceg3C233IJvvvjiiyg3Y8YMfPO0005DuVdffRXf3LRpE8pt3boV36SLdrfffju+ef7556McXWW8/PLL8Wv/9a9/RbmdO3fim5deeinKTZgwAd9csmQJyp1//vl4Qvedd95BuQULFqBcRERbWxvKNTQ04Jv79+9HuVdeeQXltm/fjl+7o6MD5To7O6OzsxNl6ftJF1hL+CcXSUrCQpekJCx0SUrCQpekJCx0SUrCQpekJCx0SUrCQpekJCx0SUrCQpekJCx0SUrCQpekJGpa6F1dXWhVqGT9jS6WNTc345t0/Kivrw/fLMlSdPXviy++wDfpez9y5Eh8k64o0lzJ0iNduSx55uiKYsmaXktLC8rRgagI/syXrIvS1cGSYbLPPvsM5ehnRD/zCP4elayg0uXMkp+Tquna4sqVK9FvMHHiRHxz0aJFKHfmmWfim3v27EG5uro6XP6//e1vUW7btm0oFxFx/fXXo9yKFSvwzfXr16McXamLiNi9ezfKHTx4EOWef/55/Np0OfO+++7DN3fs2IFyzzzzDL45duzYGDt27BFzI0aMwIWxbNkylCv5vlWrVfQ53XnnnfgmfT5/97vf4ZvUCSecgHKvvfYavnnSSSehHJ3ZLeGfXCQpCQtdkpKw0CUpCQtdkpKw0CUpCQtdkpKw0CUpCQtdkpKw0CUpCQtdkpKw0CUpiZoWend3Nxo+KRk1OnToEMo1Njbim3T8iW5qRETU17PZnIaGBnyT/u4lI0B0X6LkJv086QBSyXtEs3RHJoKPRNHPvAT9zCOGZkTsq6++Qrnhw4fjm/R9omN0Jeh3mL6XEfwzKhmZoyolP+i//WKVCnqxtrY2fJM+OM8++yy+OWbMGJR76qmn8E3qtttuG5IsRd/7kuEp6rLLLkO59vZ2fPPNN9/8pj/O15oxYwbKXXrppfjmrbfe+k1/nK+1b98+lFu7di2+Sfti7969+OaWLVtQbu7cuShXsmy6evVqlCtZa50yZQrKjRo1Ct/cvHkzan//5CJJSVjokpSEhS5JSVjokpSEhS5JSVjokpSEhS5JSVjokpSEhS5JSVjokpSEhS5JSVjokpRETce5JElDx/+hS1ISFrokJWGhS1ISFrokJWGhS1ISFrokJWGhS1ISFrokJWGhS1ISFrokJWGhS1ISFrokJWGhS1ISFrokJWGhS1ISFrokJWGhS1ISFrokJWGhS1ISFrokJWGhS1ISFrokJWGhS1IS/wm3CIrdUpjTvwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "For rotations around the y axis by 0.2*pi\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "For rotations around the y axis by 0.3*pi\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "For rotations around the y axis by 0.4*pi\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "For rotations around the y axis by 0.5*pi\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "for frac in [0.0,0.1,0.2,0.3,0.4,0.5]:\n", + " \n", + " qc = QuantumCircuit(q, c)\n", + " qc.initialize(state,q)\n", + " qc.ry(np.pi*frac,q) \n", + " qc.measure(q, c)\n", + "\n", + " job = execute(qc, backend, shots=shots)\n", + "\n", + " probs = get_probs(job)\n", + " print('\\nFor rotations around the y axis by '+str(frac)+'*pi')\n", + " plot_terrain(pos,probs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We could also have spread out the peaks by simply using the noise of a real device. Since the process of creating our initial state is quite involved, this will have quite a lot of noise." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "qc = QuantumCircuit(q, c)\n", + "qc.initialize(state,q)\n", + "qc.measure(q, c)\n", + "\n", + "job = execute(qc, backend, shots=shots,noise_model=noise_model,basis_gates=noise_model.basis_gates)\n", + "\n", + "probs = get_probs(job)\n", + "plot_terrain(pos,probs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Clearly our Terrain maps are blockier than the example of Perlin noise shown at the top. This could be dealt with by adding more qubits, or simply by being careful in choosing how we apply the method. When generating terrain with Perlin noise, multiple layers are often used to create a good effect. Perhaps in future, some of those layers could be quantum.\n", + "\n", + "For another example of generation images using qubits, see the [Quantum Animations](quantum_animations.ipynb) notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "keywords = {'Topics': ['Games','Procedural generation','Entanglement'], 'Commands': ['`ry`','`noise_model`','`basic_device_noise_model`']}" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/hello_world/README.md b/community/hello_world/README.md index b1ea9a3d1..4459cc043 100644 --- a/community/hello_world/README.md +++ b/community/hello_world/README.md @@ -1,6 +1,6 @@ # Hello World -When learning a new language, or using a new programming tool, our first instinct is often just to make something happen. Then we can move on to trying more complex things with onfidence. +When learning a new language, or using a new programming tool, our first instinct is often just to make something happen. Then we can move on to trying more complex things with confidence. For example, when lerning Python, your first line of code was probably something like @@ -13,7 +13,7 @@ This folder contains answers to this question. By looking through the notebooks ## Contents -For the purpose of testing your installation, the most simplest programs here are +For the purpose of testing your installation, the most simplest programs here are: * [Hello Zero](hello_zero.ipynb) * [Quantum World](quantum_world.ipynb) diff --git a/community/hello_world/bitstring_compression.ipynb b/community/hello_world/bitstring_compression.ipynb new file mode 100644 index 000000000..7369d39ce --- /dev/null +++ b/community/hello_world/bitstring_compression.ipynb @@ -0,0 +1,1022 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Compressing bit strings in qubits using superposition effect" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Contributors\n", + "[Łukasz Herok](http://lukaszherok.com)\n", + "\n", + "This tutorial is based upon the \"Comparing Strings with Quantum Superposition\" tutorial by Rudy Raymond.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Motivation\n", + "\n", + "The aim of this tutorial is to show you how quantum computers can store information encoded in a bit string using significantly fewer qubits than classical bits. It is possible thanks to **the superposition effect**. I will try to explain it through the example.\n", + "\n", + "This tutorial is designed to be an independent teaching material, so in the firsts sections it repeats the basics that can be found in the other resources to make it easier to understand the final concept. If you are familiar with basics quantum computing rules you can just skip to the [Compressing bit strings in qubits using the superposition effect](#compressing) section.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Import of the modules and initialization of variables used in this tutorial\n", + "import numpy as np\n", + "import qiskit\n", + "from qiskit import BasicAer as Aer\n", + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit\n", + "from qiskit import execute\n", + "import math\n", + "from qiskit.tools.visualization import plot_histogram\n", + "\n", + "# qiskit.IBMQ.load_accounts()\n", + "backend = Aer.get_backend('qasm_simulator')\n", + "backend_vec= Aer.get_backend('statevector_simulator')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Bit vs Qubit\n", + "\n", + "The computer bit can store and manipulate the two states `0` and `1`. These two states map to the two qubit basis (orthonormal) states:\n", + "\n", + "\n", + "$ \\left| 0 \\right\\rangle = {\\begin{bmatrix}1 \\\\ 0\\end{bmatrix}} $,\n", + "\n", + "$ \\left| 1 \\right\\rangle = {\\begin{bmatrix}0 \\\\ 1\\end{bmatrix}} $.\n", + "\n", + "In fact, the qubit state is represented by the linear *superposition* of these two basics states\n", + "\n", + "$ \\left| q \\right\\rangle = \\alpha \\left|0\\right\\rangle + \\beta \\left|1\\right\\rangle $\n", + "so we can write\n", + "$ \\left|q\\right\\rangle = {\\begin{bmatrix}\\alpha \\\\ 0\\end{bmatrix}} + {\\begin{bmatrix}0 \\\\ \\beta \\end{bmatrix}} = {\\begin{bmatrix} \\alpha \\\\ \\beta \\end{bmatrix}} $. \n", + "\n", + "The $ \\alpha $ and $ \\beta $ are the probability amplitudes and are the complex numbers. The formula $|\\alpha|^2$ tells us about the probability that the qubit is in state $\\left| 0 \\right\\rangle$. So these coefficients have to meet the normalization requirement $|\\alpha|^2 + |\\beta|^2 = 1$ to have the overall probability equals to one.\n", + "\n", + "So, as we can see a qubit can exist in a *superposition* of states. By the measurement, we can only check the probability of each state the qubit can take. For the quantum computing, besides the basis states $\\left| 0 \\right\\rangle$, $\\left| 1 \\right\\rangle$, we often encounter the superposition states marked by $\\left| + \\right\\rangle$, $\\left| - \\right\\rangle$. In these states there is the equal probability ($|\\alpha|^2$ = 0.5 and $|\\beta|^2 = 0.5 $) that the qubit is in one of the basis states $\\left| 0 \\right\\rangle$ or $\\left| 1 \\right\\rangle$. Any state for which both $\\alpha$ and $\\beta$ are non-zero is called a superposition state. There are also the mixed states which cannot be described with a single ket vector but instead, need matrices. \n", + "We can switch a qubit into the superposition state from $\\left| 0 \\right\\rangle$ to $\\left| + \\right\\rangle$ and back to $\\left| 0 \\right\\rangle$ using the *Hadamard gate*. There is no similar operation available for bits as they operate only over two states `0,1`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Math\n", + "The Hadamard gate is represented by the matrix: \n", + "\n", + "$H = \\frac{1}{\\sqrt{2}} {\\begin{bmatrix}1 & 1\\\\1 & -1\\end{bmatrix}} $.\n", + "\n", + "To create a superposition state from the $\\left| 0 \\right\\rangle$, we need to multiply the matrices:\n", + "\n", + "$ H\\left| 0 \\right\\rangle \n", + "= \\frac{1}{\\sqrt{2}} {\\begin{bmatrix}1 & 1\\\\1 & -1\\end{bmatrix}} {\\begin{bmatrix}1 \\\\0\\end{bmatrix}} \n", + "= \\frac{1}{\\sqrt{2}} {\\begin{bmatrix}1\\cdot1 + 1\\cdot0 \\\\ 1\\cdot1 -1\\cdot0\\end{bmatrix}}\n", + "= {\\begin{bmatrix}0,7071 \\\\ 0,7071\\end{bmatrix}}\n", + "= \\left| + \\right\\rangle\n", + "$,\n", + "\n", + "so $\\alpha = 0.7071$, and $\\beta = 0.7071$. Making a square of these we can get $0.5$ probability that the qubit is in state $\\left| 0 \\right\\rangle$ and $0.5$ that it is in state $\\left| 1 \\right\\rangle$.\n", + "\n", + "We can, of course, go back to the $\\left| 0 \\right\\rangle$ state using the Hadamard gate again:\n", + "\n", + "$ H\\left| + \\right\\rangle\n", + "= \\frac{1}{\\sqrt{2}} {\\begin{bmatrix}1 & 1\\\\1 & -1\\end{bmatrix}} {\\begin{bmatrix}\\frac{1}{\\sqrt{2}} \\\\\\frac{1}{\\sqrt{2}} \\end{bmatrix}} \n", + "= {\\begin{bmatrix}1 \\\\ 0\\end{bmatrix}}\n", + "= \\left| 0 \\right\\rangle\n", + "$\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Numeric" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Initial state |0> \n", + " [[1.]\n", + " [0.]] \n", + "\n", + " H|0> = |+> \n", + " [[0.70710678]\n", + " [0.70710678]]\n", + "\n", + " H|+> = |0> \n", + " [[1.]\n", + " [0.]]\n" + ] + } + ], + "source": [ + "# |0>\n", + "Zero = np.array([[1.],\n", + " [0.]]) \n", + "\n", + "H = 1./np.sqrt(2) * np.array([[1, 1],\n", + " [1, -1]])\n", + "\n", + "print(\"Initial state |0> \\n %s \" % Zero)\n", + "\n", + "Sup = np.dot(H, Zero)\n", + "print(\"\\n H|0> = |+> \\n %s\" % Sup)\n", + "\n", + "Back = np.dot(H, Sup)\n", + "print(\"\\n H|+> = |0> \\n %s\" % Back)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Quantum" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌───┐\n", + "q0_0: |0>┤ H ├\n", + " └───┘\n" + ] + } + ], + "source": [ + "q1 = QuantumRegister(1) # Qubit in the |0> state.\n", + "circ = QuantumCircuit(q1) # Circuit represents a quantum program.\n", + "\n", + "circ.h(q1) # H|0>\n", + "\n", + "print(circ)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'0': 529, '1': 495}\n" + ] + } + ], + "source": [ + "# To get final results from the qubit we need a classical register to store measurements\n", + "c1 = ClassicalRegister(1) \n", + "circ.add_register(c1)\n", + "circ.measure(q1, c1)\n", + "\n", + "result = execute(circ, backend=backend, shots=1024).result()\n", + "print(result.get_counts())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Analyzing the result of the quantum program, we can see how many times the states $\\left| 1 \\right\\rangle$ and $\\left| 0 \\right\\rangle$ were measured. We can see that both states were measured almost the same number of times.\n", + "\n", + "Let's check if using two H gates will bring us to the initial state:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌───┐┌───┐\n", + "q0_0: |0>┤ H ├┤ H ├\n", + " └───┘└───┘\n" + ] + } + ], + "source": [ + "circ = QuantumCircuit(q1)\n", + "\n", + "circ.h(q1) # H|0>\n", + "circ.h(q1) # H|+>\n", + "\n", + "print(circ)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'0': 1024}\n" + ] + } + ], + "source": [ + "circ.add_register(c1)\n", + "circ.measure(q1, c1)\n", + "\n", + "result = execute(circ, backend=backend, shots=1024).result()\n", + "print(result.get_counts())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "this time only the $\\left| 0 \\right\\rangle$ state was measured. So the qubit is back in the $\\left| 0 \\right\\rangle$ state." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the classical bit there is no possibility to switch it into a *mixed state* and go back to the original state. That gives us a clue that in the quantum computer we gain a possibility to use more states using fewer resources to perform algorithms." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Bit flip" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before going further we will get to know one more gate to catch better the idea of qubits manipulation. The *Pauli-X gate* changes the state from $\\left| 0 \\right\\rangle$ to $\\left| 1 \\right\\rangle$. Its counterpart in the classical computers is the NOT logic gate.\n", + "\n", + "$ X = {\\begin{bmatrix}0 & 1\\\\1 & 0\\end{bmatrix}} $,\n", + "\n", + "\n", + "### Math\n", + "\n", + "$ X\\left| 0 \\right\\rangle = {\\begin{bmatrix}0 & 1\\\\1 & 0\\end{bmatrix}} {\\begin{bmatrix}1 \\\\ 0\\end{bmatrix}} = {\\begin{bmatrix}0 \\\\ 1 \\end{bmatrix}} = \\left| 1 \\right\\rangle$,\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Numeric" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.],\n", + " [1.]])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X = np.array([[0, 1],\n", + " [1, 0]])\n", + "\n", + "np.dot(X, Zero)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Quantum" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌───┐\n", + "q0_0: |0>┤ X ├\n", + " └───┘\n" + ] + } + ], + "source": [ + "circ = QuantumCircuit(q1)\n", + "circ.x(q1)\n", + "print(circ)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'1': 1}\n", + "[0.+0.j 1.+0.j]\n" + ] + } + ], + "source": [ + "circ.add_register(c1)\n", + "circ.measure(q1, c1)\n", + "\n", + "result = execute(circ, backend=backend_vec).result()\n", + "print(result.get_counts())\n", + "print(result.get_statevector())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Making the qubytes\n", + "\n", + "To store more information we can combine multiple qubits creating qubytes. It's the same what we do with bits. But, as you will see, the same size of qubyte can store lots of more information than a byte.\n", + "\n", + "Using two qubits we can build states like: $\\left| 00 \\right\\rangle$, $\\left| 10 \\right\\rangle$, $\\left| 0+ \\right\\rangle$, etc. To do that we make a tensor product of two qubits.\n", + "\n", + "### Math\n", + "\n", + "$ \\left| 01 \\right\\rangle = \\left| 0 \\right\\rangle \\otimes \\left| 1 \\right\\rangle \n", + "= {\\begin{bmatrix}1 \\\\ 0\\end{bmatrix}} \\otimes {\\begin{bmatrix}0 \\\\ 1\\end{bmatrix}} \n", + "= {\\begin{bmatrix}1 \\\\ 0\\end{bmatrix}} {\\begin{bmatrix}0 \\\\ 1\\end{bmatrix}}^{T}\n", + "= {\\begin{bmatrix}1 \\\\ 0\\end{bmatrix}} {\\begin{bmatrix}0 & 1\\end{bmatrix}}\n", + "= {\\begin{bmatrix}0\\\\ 1 \\\\ 0 \\\\ 0\\end{bmatrix}} \n", + "$\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Numeric" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.],\n", + " [1.],\n", + " [0.],\n", + " [0.]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "One = np.array([[0.],\n", + " [1.]]) \n", + "\n", + "# Tensor product (Kronecker prodcut in numpy)\n", + "np.kron(Zero, One)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Quantum" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌───┐\n", + "q1_0: |0>┤ X ├\n", + " └───┘\n", + "q1_1: |0>─────\n", + " \n" + ] + } + ], + "source": [ + "q2 = QuantumRegister(2) # |00>\n", + "circ = QuantumCircuit(q2)\n", + "circ.x(q2[0]) # bit filp on a first qubit (right to left - little endian)\n", + "\n", + "print(circ)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'01': 1}\n", + "[0.+0.j 1.+0.j 0.+0.j 0.+0.j]\n" + ] + } + ], + "source": [ + "# Add measurement & Run\n", + "c2 = ClassicalRegister(2)\n", + "circ.add_register(c2)\n", + "circ.measure(q2, c2)\n", + "result = execute(circ, backend=backend_vec).result()\n", + "\n", + "print(result.get_counts())\n", + "print(result.get_statevector())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Initializing more complex states could be tedious task, so for that purpose we can also use a `initialize()` function which will prepare the appropriate gates set for us:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌───┐┌────────────┐┌───┐┌────────────┐\n", + "q1_0: |0>┤ X ├┤ Ry(1.5708) ├┤ X ├┤ Ry(1.5708) ├\n", + " └─┬─┘└────────────┘└─┬─┘└────────────┘\n", + "q1_1: |0>──■──────────────────■────────────────\n", + " \n" + ] + } + ], + "source": [ + "circ = QuantumCircuit(q2)\n", + "circ.initialize([0., 1, 0, 0.], q2)\n", + "\n", + "print(circ)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see that it used CNOT and Ry gates, but the effect is the same:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'01': 1024}\n" + ] + } + ], + "source": [ + "c2 = ClassicalRegister(2)\n", + "circ.add_register(c2)\n", + "circ.measure(q2, c2)\n", + "result = execute(circ, backend=backend).result()\n", + "\n", + "print(result.get_counts())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `initialize()` function implements a recursive initialization algorithm according to [\"Synthesis of Quantum Logic Circuits\" Shende, Bullock, Markov](https://arxiv.org/abs/quant-ph/0406176v5)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Compressing bit strings in qubits using the superposition effect\n", + "\n", + "In this section, we will try to save bit string `1001` in the quantum chip, and read it back. In this case, the advantage of using qubits instead of bits is not surprising, but working on the short string will be much easier to catch the concept.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To store a bit string: `1001` in a classical computer we will need to use 4 bits.\n", + "For the same purpose, in a quantum computer it is enough to use only 3 qubits. To take advantage of the quantum computer advantage we need to use a notation which will allow us to **store multiple states in the qubyte**. That's the thing that is impossible on classical computers. The way for that is to write down the bit string in the notation where firsts qubits describe the position (address) in a bit string, and the last one, the value on this position. For our `1001` it will be:\n", + "\n", + "```\n", + " bs | aa v \n", + " ----|------- \n", + " 1 | 00 1 # the first position (00) holds 1\n", + " 0 | 01 0 # the second position (01) holds 0\n", + " 0 | 10 0\n", + " 1 | 11 1 \n", + "```\n", + "\n", + "The first two qubits `aa` will be storing the address, and the third qubit `v` the value under this address. We will hold the information in a quantum chip for every of the **four address-value information at the same time**. That would be impossible using this notation and the bits because then at the same time we can address only one position of the bit string in the computer's memory.\n", + "Looking at the table above we see that we need three qubits (`aav`) to store information about four states ($\\left| 001 \\right\\rangle$, $\\left| 010 \\right\\rangle$, $\\left| 100 \\right\\rangle$, $\\left| 111 \\right\\rangle$) that describe the bit string. The listed states will be encoded in the quantum chip with the same probability:\n", + "\n", + "$\\left| bs \\right\\rangle = \\alpha \\left| 001 \\right\\rangle + \\alpha \\left| 010 \\right\\rangle + \\alpha\\left| 100 \\right\\rangle + \\alpha\\left| 111 \\right\\rangle$\n", + "\n", + "The other states that do not occur (eg. $\\left| 000 \\right\\rangle$) get the amplitude equals to 0 ($\\beta = 0$). We can write the full quantum state:\n", + "\n", + "$|bs> = \\beta \\left| 000 \\right\\rangle + \\alpha \\left| 001 \\right\\rangle + \\alpha \\left| 010 \\right\\rangle + \\beta \\left| 011 \\right\\rangle + \\alpha\\left| 100 \\right\\rangle + \\beta \\left| 101 \\right\\rangle + \\beta \\left| 110 \\right\\rangle + \\alpha\\left| 111 \\right\\rangle$\n", + "\n", + "as the $\\alpha$ needs to meet the normalization constraint in our case should be equal to $\\frac{1}{2}$.\n", + "\n", + "Summarizing, using the quantum gates we need to set up our system in that way, that after the measurement it will return only the states $\\left| 001 \\right\\rangle$, $\\left| 010 \\right\\rangle$, $\\left| 100 \\right\\rangle$, $\\left| 111 \\right\\rangle$ with similar probability." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌───┐┌───┐┌────────────┐┌───┐┌───┐»\n", + "q2_0: |0>────────────────────────────┤ X ├┤ X ├┤ Ry(1.5708) ├┤ X ├┤ X ├»\n", + " ┌────────────┐└─┬─┘└─┬─┘└────────────┘└─┬─┘└─┬─┘»\n", + "q2_1: |0>──────────────┤ Ry(1.5708) ├──┼────■──────────────────┼────■──»\n", + " ┌────────────┐└────────────┘ │ │ »\n", + "q2_2: |0>┤ Ry(1.5708) ├────────────────■───────────────────────■───────»\n", + " └────────────┘ »\n", + " c3_0: 0 ══════════════════════════════════════════════════════════════»\n", + " »\n", + " c3_1: 0 ══════════════════════════════════════════════════════════════»\n", + " »\n", + " c3_2: 0 ══════════════════════════════════════════════════════════════»\n", + " »\n", + "« ┌────────────┐┌───┐┌───┐┌───┐┌───┐\n", + "«q2_0: ┤ Ry(1.5708) ├┤ X ├┤ X ├┤ X ├┤ X ├\n", + "« └────────────┘└─┬─┘└─┬─┘└─┬─┘└─┬─┘\n", + "«q2_1: ────────────────┼────■────┼────■──\n", + "« │ │ \n", + "«q2_2: ────────────────■─────────■───────\n", + "« \n", + "«c3_0: ══════════════════════════════════\n", + "« \n", + "«c3_1: ══════════════════════════════════\n", + "« \n", + "«c3_2: ══════════════════════════════════\n", + "« \n" + ] + } + ], + "source": [ + "q3 = QuantumRegister(3)\n", + "c3 = ClassicalRegister(3)\n", + "circ = QuantumCircuit(q3, c3)\n", + "\n", + "alpha = .5\n", + "beta = .0\n", + "circ.initialize([beta, alpha, alpha, beta, alpha, beta, beta, alpha], q3)\n", + "\n", + "print(circ)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Above we can see a composition of quantum gates that are required to setup up qubits to represent our bit string. To check if the sequence is really making our bit string we have to add measurement at the and of the circuit and run the quantum program (the quantum circuit):" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Run & plot\n", + "circ.measure(q3, c3)\n", + "job = execute(circ , backend=backend)\n", + "st = job.result().get_counts()\n", + "plot_histogram(st)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Running the quantum circuit, that encodes a bit string, gives us as feedback information on how many times the specific state was counted. Basing on this we can recalculate the probability, that is shown on the chart.\n", + "\n", + "Looking at the chart we see that it was measured that state $\\left| 001 \\right\\rangle$ exists with probability around $0.2$. The lack of the $\\left| 000 \\right\\rangle$ state means that it didn't occur. It makes us sure that on the position `00` in a bit string there should be `1`.\n", + "\n", + "In real life, imperfections happen. So you could use the probability to resolve ambiguities: if you find both `000` and `001` in your results, accept the most probable and reject the other as noise." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Compression effectivity" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The example a for four-length bit string is good for the step by step explanation but doesn't show the real power of quantum computing. Making the bit string longer shows clearer the advantage of the superposition effect:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "qubits 3, \t bits: 4\n", + "qubits 4, \t bits: 8\n", + "qubits 5, \t bits: 16\n", + "qubits 6, \t bits: 32\n", + "qubits 9, \t bits: 256\n", + "qubits 11, \t bits: 1024\n", + "qubits 21, \t bits: 1048576\n", + "qubits 31, \t bits: 1073741824\n" + ] + } + ], + "source": [ + "for i in [4, 8, 16, 32, 256, 1024, 1024*1024, 1024*1024*1024]:\n", + " n = math.ceil(math.log2(i)) + 1\n", + " print(\"qubits %s, \\t bits: %s\" % (n, i))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have to have in mind that this compression comes at a price. Many repetitions of the process would be needed to read out the bit string. The advantage comes when we do not try to read out but do other things with the encoded string instead, such as the string comparison that this is all leading up to." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Inverting the circuit\n", + "\n", + "We can use the `inverse()` function to reverse the order of the gates in the quantum circuit. It is like running the program in a backward direction." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌───┐┌───┐┌───┐┌───┐┌─────────────┐┌───┐┌───┐┌─────────────┐┌───┐»\n", + "q2_0: |0>┤ X ├┤ X ├┤ X ├┤ X ├┤ Ry(-1.5708) ├┤ X ├┤ X ├┤ Ry(-1.5708) ├┤ X ├»\n", + " └─┬─┘└─┬─┘└─┬─┘└─┬─┘└─────────────┘└─┬─┘└─┬─┘└─────────────┘└─┬─┘»\n", + "q2_1: |0>──■────┼────■────┼───────────────────■────┼───────────────────■──»\n", + " │ │ │ »\n", + "q2_2: |0>───────■─────────■────────────────────────■──────────────────────»\n", + " »\n", + " c3_0: 0 ═════════════════════════════════════════════════════════════════»\n", + " »\n", + " c3_1: 0 ═════════════════════════════════════════════════════════════════»\n", + " »\n", + " c3_2: 0 ═════════════════════════════════════════════════════════════════»\n", + " »\n", + "« ┌───┐ \n", + "«q2_0: ───────────────┤ X ├───────────────\n", + "« ┌─────────────┐└─┬─┘ \n", + "«q2_1: ┤ Ry(-1.5708) ├──┼─────────────────\n", + "« └─────────────┘ │ ┌─────────────┐\n", + "«q2_2: ─────────────────■──┤ Ry(-1.5708) ├\n", + "« └─────────────┘\n", + "«c3_0: ═══════════════════════════════════\n", + "« \n", + "«c3_1: ═══════════════════════════════════\n", + "« \n", + "«c3_2: ═══════════════════════════════════\n", + "« \n" + ] + } + ], + "source": [ + "circ_inv = QuantumCircuit(q3, c3)\n", + "circ_inv.initialize([0, .5, .5, .0, .5, .0, .0, .5], q3).inverse()\n", + "print(circ_inv)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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iESgABUREYlAASoiIhJB0i9jERGR9KH5iaPTFqiIiEgEClAREZEIFKAiIiIRKEBFREQiUICKiIhEoAAVERGJQAEqIiISgQJUREQkAgWoiIhIBApQERGRCBSgIiIiEShARUREIlCAioiIRKAAFRERiUABKiIiEoECVEREJAIFqIiISAQKUBERkQgUoCIiIhHEFaBmNtLMzox5fquZrTKzP5tZQeLLExERSU/xboH+rOaBmfUBxgH/BewH3Je4skRERNJb2zj7HwFUhI8vAv7o7veY2SvAnxNamYiISBqLdwt0B9AxfDwUmBk+3hzTLiIi0urFuwX6BnCfmb0J9AMuCdv/Dfg0kYWJiIiks3i3QK8HqgiC8xp3XxO2n4N24YqISAaJawvU3VcB59fTfkPCKhIREWkB4r4O1MwOMLNLzOyHZnZQ2NbdzHISX56IiEh6imsL1Mx6EJw4dCBwEPAc8Dlwbfj824kuUEREJB3FuwX6APAKkA/8M6b9BWBwoooSERFJd/GehXsK0N/dq80stn0lUJiwqkRERNJclLlw96unrQvBtaAiIiIZId4AfQUYG/PczawTcDswI2FViYiIpLl4d+GOBf7PzCqAA4BngR7AZ8DIBNcmIiKStuK9DnSNmR0PXA70IdiC/Q3wO3f/515fLCIi0orEuwVKGJQTwy8REZGMtM8ANbMRwIvuvjN83CB3n5qwykRERNJYY7ZA/wB8FfhH+LghDmQloigREZF0t88Adfc29T0WERHJZHEFopkNMrM9QtfMssxsUOLKEhERSW/xblH+H1DfpPEHhctEREQyQrwBagTHOus6BNjW9HJERERahkZdxmJmL4QPHZhsZl/ELM4CjgHeSnBtIiIiaaux14FuCP81YBO734mlCngTeCKBdYmIiKS1RgWou18NYGbLgV+5u3bXiohIRot3Kr/bm6sQERGRlqQxMxG9B5zm7pvMbCH1n0QEgLsfl8jiRERE0lVjtkCfB2pOGtrbTEQiIiIZozEzEd1e32MREZFMpqn5REREImjMMdC9HveMpWOgIiKSKRp7NxYRERGJEdcxUBEREQkk/RiomV1nZsvMbIeZzTWzgXvpW2BmU8zsQzOrNrOnGujXycz+y8zWmNkXZrbEzEY224cQEZGMl9TrQM3sMuBB4DqC6f+uA142s17uvrKel7QD1gO/AEY38J77Aa8CG4GRwCrgMP516Y2IiEjCJfs60LHAU+5eM2/uGDM7G7gW+FHdzu6+HPg+gJld0sB7Xg3kAQPdvSpsW97EOkVERPYqadeBmtn+QF/gV3UWvQKcEvV9geHAbOAhM7uQYEu0DLjL3Xc24X1FREQaFNdcuDXMrDvQM3y62N0/acTLcgluffZZnfbPgDOi1BEqAoYAU4Bzga7ABOBA4Ka6nc1sNOHu4IKCAubNmwdAYWEh2dnZLFmyBIDOnTtTVFTE/PnzAcjKyqJ3795UVFSwbVswl37Pnj3ZuHEjcHATyk8vNf8fRUVFVFVVsWrVKgDy8/PJyclh8eLFAHTo0IHi4mIWLFhAdXU1ACUlJSxdupTNmzcD0KNHD7Zv386aNWuA4P+7U6dOVFRUANCxY0eOPPJI5s+fj7tjZpSUlPDxxx+zdetWAIqLi9myZQuVlZVA48epNVm4cCE7dwZ/C/bu3ZuVK1eyadMmoOWNU2tS87vSvn17evbs2WLHqTWtvzZs2MCKFSsAyMvLIy8vj0WLFgHxjVNjmXujLvEMOpsdAvwWuAD4sqYZmA58y9037OW1hcBqguOps2LabwWucPfifXzv6cB6d7+qTvtHwAFAN3evDttGA78GDvS9fMCSkhIvLy/f27dtlFuebj0/gPd8c1OqS0gIjUl60rikH43JnnJycua6e7999Yv3LNz/BnoAAwlC6wBgENCNfd8PdD1QDeTXac8H1sZZR6xK4KOa8AwtBrIJtnpFREQSLt4APQv4jrvPdvdd4dds4LvhsgaFJ/jMBUrrLCoF3oqzjlizgR5mFvtZ/g3YThDaIiIiCRdvgK4D6ruZ9nagwd23Me4HrjKzb5tZTzN7ECgEHgMws2fM7JnYF5jZ8WZ2PNAJyAmf94rp8iiQAzxoZsVmdhZwO/DI3nbfioiINEW8JxHdATxgZle6+2oAMzsUuC9ctlfu/mx4HPUnQAHwPjDM3VeEXbrU87L5dZ6fD6wgOFkId//UzM4kCOe/E+wOngjcGd9HExERabwok8l3A5ab2erw+aHADuArBMdI98rdHwEeaWDZ6fW0WSPe86807VIYERGRuGgyeRERkQg0mbyIiEgEuqG2iIhIBHEFqJntb2a3m9lH4d1UqmO/mqtIERGRdBPvFujPgW8SnHX7JXAzwbR5GwjurCIiIpIR4g3QkcA17v44waxCf3L37wO3secECSIiIq1WvAGaDywKH/8/4KDw8f8CZyaqKBERkXQXb4CuJJg5CGAJ/5q+72Tgn4kqSkREJN3FG6DTgKHh4weB281sGfAUjZhEQUREpLWIayo/d/9RzOM/mNkqghmAPnL36YkuTkREJF1FuqF2jXAKvb8mqBYREZEWI+6JFMysT3jXlHfDr0lm1qc5ihMREUlX8U6kcAXwN4I7qbwUfuUD75jZNxJfnoiISHqKdxfuXcBP3X18bKOZ/Yjg9mGTE1WYiIhIOot3F24eUFZP+3MEtzMTERHJCPEG6P8Bp9fTfjrwelOLERERaSkac0PtETFPXwbuNrN+/Ovs2/7ACOBnCa9OREQkTUW9ofbo8CvWQ8AjTa5IRESkBWjMDbV1z1AREZE6FI4iIiIRRJlI4Vwzm2Vm681snZm9bmbDmqM4ERGRdBXvRArfJphQ/hPgh8B/AsuAaWb2rcSXJyIikp7inUjhh8BYd384pu23ZjaXIEwnJqwyERGRNBbvLtwuBDfPrutl4IimlyMiItIyRLmhdmk97WcCK5pejoiISMsQ7y7cXwEPhXdfeStsOxW4EhiTyMJERETSWbw31H7czP4B3Egw+xDAYmCku/8p0cWJiIikq0YHqJm1JdhVO8vdpzVfSSIiIumv0cdA3X0XMBXo2HzliIiItAzxnkS0AOjRHIWIiIi0JPEG6M+A+8xsuJkdbmY5sV/NUJ+IiEhaivcs3Bnhv1MBj2m38HlWIooSERFJd/EG6OBmqUJERKSFaVSAmlk2cC8wHNgPmAl8393XN2NtIiIiaauxx0BvB64i2IX7e4LZiB5tpppERETSXmN34Y4A/t3d/wfAzH4HzDazLHevbrbqRERE0lRjt0APB96oeeLu7wC7gMLmKEpERCTdNTZAs4CqOm27iP8kJBERkVahsQFowGQz+yKm7QDgCTPbXtPg7hcksjgREZF01dgAfbqetsmJLERERKQlaVSAuvvVzV2IiIhISxLvVH4iIiKCAlRERCQSBaiIiEgEClAREZEIFKAiIiIRKEBFREQiUICKiIhEoAAVERGJQAEqIiISgQJUREQkAgWoiIhIBApQERGRCBSgIiIiEShARUREIlCAioiIRKAAFRERiUABKiIiEkHSA9TMrjOzZWa2w8zmmtnAffQ/Ley3w8yWmtk1dZZnmdnPY95zmZndaWZtm/eTiIhIJktqgJrZZcCDwHigBHgLeNnMujTQvxvwUtivBLgbeMjMLo7p9kPge8D3gaOAH4TPf9RMH0NERIRkb6WNBZ5y9yfC52PM7GzgWuoPvGuANe4+Jny+2MxOAm4Cng/bTgFedPcXw+fLzewF4KRm+QQiIiIkcQvUzPYH+gKv1Fn0CkEI1ufkevr/GehnZvuFz98EBpvZUeH36QUMIdhyFRERaRbJ3ALNBbKAz+q0fwac0cBrvgrMrKd/2/D9KoFfAh2BRWZWHS67y90fqe8NzWw0MBqgoKCAefPmAVBYWEh2djZLliwBoHPnzhQVFTF//nwAsrKy6N27NxUVFWzbtg2Anj17snHjRuDgRv0HtAQ1/x9FRUVUVVWxatUqAPLz88nJyWHx4sUAdOjQgeLiYhYsWEB1dTUAJSUlLF26lM2bNwPQo0cPtm/fzpo1a4Dg/7tTp05UVFQA0LFjR4488kjmz5+Pu2NmlJSU8PHHH7N161YAiouL2bJlC5WVlUDjx6k1WbhwITt37gSgd+/erFy5kk2bNgEtb5xak5rflfbt29OzZ88WO06taf21YcMGVqxYAUBeXh55eXksWrQIiG+cGsvcPcEfoYFvZFYIrAZOc/dZMe23Ale4e3E9r/kImOzud8S0DQJeBwrdvdLMvgbcC9wMfAAcT3Cc9WZ3/+3eaiopKfHy8vImf7Zbnm49P4D3fHNTqktICI1JetK4pB+NyZ5ycnLmunu/ffVL5hboeqAayK/Tng+sbeA1axvovyt8PwjC81fu/j/h84VmdgTBMdW9BqiIiEhUSTsG6u5VwFygtM6iUoKzbOvzdgP933X3neHzbIJgjlWNrnEVEZFmlOyzcO8HJpnZO8BsgrNsC4HHAMzsGQB3HxX2fwy43sweAB4HTgWuAi6Pec8Xgf80s2UEu3BLCM72faa5P4yIiGSupAaouz9rZocAPwEKgPeBYe6+IuzSpU7/ZWY2DPg1waUua4Dvu/vzMd3GAD8HHgG+QnBi0RPAHYiIiDSTpM/WE54dW+8Zsu5+ej1trwN99vJ+W4Ebwi8REZGk0HFCERGRCBSgIiIiEShARUREIlCAioiIRKAAFRERiUABKiIiEoECVEREJAIFqIiISAQKUBERkQgUoCIiIhEoQEVERCJQgIqIiESgABUREYlAASoiIhKBAlRERCQCBaiIiEgEClAREZEIFKAiIiIRKEBFREQiUICKiIhEoAAVERGJQAEqIiISgQJUREQkAgWoiIhIBApQERGRCBSgIiIiEShARUREIlCAioiIRKAAFRERiUABKiIiEoECVEREJAIFqIiISAQKUBERkQgUoCIiIhEoQEVERCJQgIqIiESgABUREYlAASoiIhKBAlRERCQCBaiIiEgEClAREZEIFKAiIiIRKEBFREQiUICKiIhEoAAVERGJQAEqIiISgQJUREQkAgWoiIhIBApQERGRCBSgIiIiEShARUREIlCAioiIRKAAFRERiUABKiIiEoECVEREJAIFqIiISAQKUBERkQgUoCIiIhEkPUDN7DozW2ZmO8xsrpkN3Ef/08J+O8xsqZld09T3FBERaaqkBqiZXQY8CIwHSoC3gJfNrEsD/bsBL4X9SoC7gYfM7OKo7ykiIpIIyd4CHQs85e5PuPtidx8DVALXNtD/GmCNu48J+z8BPA3c1IT3FBERabKkBaiZ7Q/0BV6ps+gV4JQGXnZyPf3/DPQzs/0ivqeIiEiTtU3i98oFsoDP6rR/BpzRwGu+Csysp3/b8P0s3vc0s9HA6PDp/8vJyaloTPFpIBdY39zf5L//o7m/Q6vT7OOiMYmbflfSU0v6XTmiMZ2SGaBpwd1/A/wm1XXEy8zedfd+qa5DdqdxST8ak/TUGsclmQG6HqgG8uu05wNrG3jN2gb67wrfzyK8p4iISJMl7Riou1cBc4HSOotKCc6crc/bDfR/1913RnxPERGRJkv2Ltz7gUlm9g4wm+As20LgMQAzewbA3UeF/R8DrjezB4DHgVOBq4DLG/uerUiL2+2cITQu6Udjkp5a3biYuyf3G5pdB9wCFADvA//h7rPCZa8BuPvpMf1PA34NHA2sAX7p7o819j1FRESaQ9IDVEREpDXQXLgiIiIRKEBFREQiUICKiIhEoAAVERGJQAHaAphZlplprNKMmbXVuIhkLv3ypzEz6wvg7tXu/mXYlmVmltrKMpuZDQBw910x46IwTaHY3wmNhSSLfsjSlJkdCfzNzN43s/vNrARqw9QtsJ+ZnRjelUaSwMyOAmaZ2VYz+x8zOxX+FabhuOxvZuebWd0pJqX55JrZINhjLNrqD87UMLN8M/uGmeXso99+yaop0RSg6ety4BPgVaA/MN3M/mpmt5jZ4R5cwPsV4K/hv5IcI4AFBDdwPxR43czWmtmvzKx7OC4HAX8C9IdN8vwMeC0ciwlm1ssDu8I/ONuYWRczu9TMslJdbIb4CfAMsMTMnjOzYWbWLraDmXUBflC3vaXQRAppysx+RzBh/t3AIUA/YCBwIpADzCeYTL+bux+dqjozjZlNABy4NWw6BjgbuAgoJpgJaz2Qr3FJnnAqz3cJbmU4AjgWWApMBB5z941m9lPgancvSl2lmcPM3gZeAz4CriBYf20AngeedPd5ZvZz4HJ375GyQpsg425n1hKYWVtgBnCEu68luLPMB2b2IsFKui8wCLgE+E7KCs1AeCUXAAAG3klEQVQw4ZbLDKCru28Mm2eZ2V8J5l4+DrgQ+PfwS5LAzI4ANgHvEGzx/DfBHzYXEMyNfWe4Mu8J/DxVdWYSMysEVgHL3P1JM5sE9CD4/bgcuM7MFgFFwLjUVdo02gJtAcxsP3ffWadtBPAH4EB3356ayjKbmbWpOYkopu0s4GU0LkljZp0I9gAsd/fXY9rbE9xYoi9wHTAA6Oju/0xJoRnEzDoAQ4B/uPucOsuyCf7AuYlgb0GLHRNtgaahuivmmvAMt0yrw+NspwCztJJOnvBkFKsZm7rhGToZeFXjkjzuvgV4GmrHKCs89vlPgvMIPjGzC4E3W+qKuqVx923AizXPzczC9Rbh78Y7ZrYdeLslj4kCND0VmlkPgmOcXwIV7r7W3XdB7UriTeDZFNaYccIVwL522bwGPNf81Uh9wjHaVROkQDXQnuDQx92prC2ThJcReUxoep3lNXsH7k9BeQmjXbhpxsyuBb4F9Aa2AUsIjiX8Ffiju1eksLyMZWbtW/Jfyq1VuKK+EMgDsoHVwOvu/o+YPu2AM9x9RmqqlLrCS1f6ufvbqa6lKRSgacTMDiEIzPuARwlWCmcApxOcALGK4F6ni8wsy92rU1VrJjGzgwkuXZkBTAbeqvmLOnbXlJn1BCrd/fOUFZtBzKwj8FtgMMGemlUEewh2AK8Dk9z9w9RVmHnCYOwGrHD3L1JdT3PTdaDp5evAR+5+p7tvcPcP3f1hd78E+C7BX9jTzSxX4ZlU3wDyCU5GmUVwXdsdZlYcE56HA1MILjGS5Pg+wa7ZYe6eT3CpxAPAQuBM4B4zy0thfZnoewSX2D0WTiby1brX3ZpZJzM7tzVMAKMATS9VQEczOwaCXU81P2Tu/ibBCmIHwcpBkuc44EngPKAEKCM4FX9ROLnFaIKQPdLdl6auzIxzNvC0u/8NIPyDczJwPXAjwV6bSSmsLxNdRnA5UQ/gj8DbwL1mNsDMOod9vg781N2rUlRjwihA08sfCHZF3WBmHd39C3evqpnX091XAp8Dh6WyyEwSHj9bBHzq7v9w9/fc/UcEE1ucFS77GXAX8MuUFZphwjPS3wcurtnKtPCmC+F0l7MIrgE9zMx6p7LWTBGOw07gCXcfCBxBsIv9PII9N+Vm9kPgBmBOg2/UgugYaJqIma/zQuBBgl2BZcAjBLtEDiOYPOFR4Fh3X56CMjNSGKIHu/vacHeUx17CYmanA+VAF3dflaIyM46Z9Qd+R/CH5/3u/lmd5YcDi4Fid1+dghIzipkVAF8DFrn7n+ssKwG+HS4/GDi8NYyJAjTNmNlBQBeC6zwvAk4NF60luKxlkrv/LDXVZZ6ak4TMrAjYFruSjll2K3CVpohLnnCvTBvgaoJ5idsSTBH3LLCSYLf7eUAvdz8hVXVmmvDyFHf3HbGT+MecK3AXwTHrklTVmEgK0DRgZl8BriQ4brMe+CfBrto3CS5f2Y/gmML/uvtHqaoz08SMy1jgH8AuoJLgOs+p7r4tXEl8B1jj7tNTVmwGC//ovIrg2NrxwFaCcwX+BtxddyYcaV6xZ6bXac8G5hHMg9sqDncoQNOAmT0FHE0wc8dGgt23xwL/RrDi/olWAsnXwLiUAEcRXDJxr7u/krICM1Q4dd/W2JV0uEV6AHAgwTRx2/Q7kzz1jUk9fQ4gOMno963hBCJQgKZcuAWzlWC3xqyYti7ASQTHDYqAke4+L2WFZpi9jMthBLeX+w7BSRKXa1ySy8weJzjT8x2C6w231NPnYHff1NDWkCRWI8fkoNZ2jbTOwk29XsAygktYgHD+K/cV7l4GnE+wO/fSFNWXqRoal0/d/TmC42tb0bgklZldTvDHy30E91y918xGmFmP8PgbZnYg8KSZHavwbH4NjMlFZtY9ZkzaA0/XXKLXWmgLNMXCH6zpBJMkjAI+8T3v8DEG+Hd3Pz4FJWYkjUt6MrMnCOa3vYfgTh7fBLoDFcBLwF8IJld40N1b/IX6LUEmj4m2QFMsnF/1xwQTXj8DjDKzw8O/omsOvJ9GcM2bJInGJf2E134uAz5396Xu/it3PxY4gWDqvm8SXPr1EJpAISkyfUy0BZomwl0bPyW4CfA2ghk81hHMhVsJfNvdF6auwsykcUkv4bzE+e7+YThL1846JxNdBvwe6OPuf09VnZkkk8dEAZpmwksnzgWGE5yK/z7wnCbFTi2NS/oKz8A1d682s+8Q7CrMTnVdmSxTxkQBmsaszo21JT1oXNKXmY0luKH2vamuRQKteUwUoCLSaoS306rWHzjpozWPiQJUREQkAp2FKyIiEoECVEREJAIFqIiISAQKUBERkQgUoCIiIhEoQEVERCL4/49CQ+lp5M/nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circ_inv.measure(q3, c3)\n", + "job = execute(circ_inv , backend=backend)\n", + "st = job.result().get_counts()\n", + "plot_histogram(st)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we run the inverted circuit, we can find that we will not end up with the inverted bit string nor with negated one. Analyzing the result states we can see that we have got the bitstring `1111`.\n", + "\n", + "Let's see what will happen if we will attach the inverted circuit to the circuit that we were using to initialize the quantum chip." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circ = QuantumCircuit(q3, c3)\n", + "circ.initialize([0, .5, .5, .0, .5, .0, .0, .5], q3)\n", + "\n", + "circ.barrier()\n", + "\n", + "circ_inv = QuantumCircuit(q3, c3)\n", + "circ_inv.initialize([0, .5, .5, .0, .5, .0, .0, .5], q3).inverse()\n", + "\n", + "circ_sum = circ + circ_inv # Concatenation\n", + "\n", + "# Run and plot\n", + "circ_sum.measure(q3, c3)\n", + "job = execute(circ_sum , backend=backend)\n", + "st = job.result().get_counts()\n", + "plot_histogram(st)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We get back to the initial state of our qubits. That confirms that the quantum gates works perfectly. If we use a quantum circuit to change the state from the initial state to the desired state, and then we will run a circuit backward we will finish with the initial state.\n", + "\n", + "If we would like to negate the bit string (flip all its bits) we should use a *Pauli X gate* on all of the qubits:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdAAAAFICAYAAADgaK8uAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xt8FfWd//HXh3CNAhrJ0kRBQNwIXjCABS+AqCCitojWS+1S3W35iS1sl7V2bauoVdpq6WKt95V6K61YglUrK0tTxVu9hKgoiCIIQgLlJlAuBsLn98dM0sMhgZxJziU57+fjkQfnzHxn8pkMyfvMzHe+Y+6OiIiIJKZVugsQERFpjhSgIiIiEShARUREIlCAioiIRKAAFRERiUABKiIiEoECVEREJIKUB6iZXWtmK8xsl5mVmdmQA7QdZmavmdlGM9tpZh+a2XVxbb5tZi+b2WYz+9zM/mJmZyR/S0REJJulNEDN7DLgLmAqUAy8Bsw1s+71LPJ34FfAUKAvcBtwi5ldG9PmTOBJ4CxgELAUeMHMjk3GNoiIiABYKkciMrM3gPfc/dsx0z4G/uDuNzRwHSXAF+5+RT3zDagEbnf3u5ugbBERkf2k7AjUzNoCA4B5cbPmAac1cB3FYduXDtCsLdAe2ByhTBERkQZpncLv1QXIAdbFTV8HnHOgBc1sNZBPUO8t7n7/AZrfRnDq95l61jUeGA/QoUOHAd26dQOgTZs2tGrVii+++AKAnJwc2rZty86dO2uXzc3NZdeuXezduxeA9u3bs2fPHvbs2VO7DjOjqqqqznWYGR06dGDnzp3UHPnHr6Nt27YA+6yjTZs27Nq164Dr2L17N9XV1XWuo3Xr1rRu3fqA6+jQoQNVVVX7rMPd2b17d53raNWqFe3bt2fHjh21P5/4dbRr1469e/fWriP+Z1zXOuJ/xgdbh/aT9pP2k/ZTU++nDz74YIO753MQqQzQxhgCHAoMBn5uZivc/fH4Rmb278D/A85x9611rcjdHwQeBCguLvbS0tLkVS0iIs1OXl7eyoa0S2WAbgCqga5x07sCaw+0oLuvCF8uMrOuwM3APgFqZt8DfgKc5+5vNkXBIiIi9UnZNVB3rwLKgBFxs0YQ9MZtqFZAu9gJZjaZIDzPd/dXGlOniIhIQ6T6FO4vgcfN7E3gVeAaoBC4H8DMHgNw93Hh+4nACoJbUyC4neU64N6aFZrZ94HbgW8AH5nZl8JZO919S7I3SEREslNKA9TdnzSzI4AfAwXA+8Bod6853xx/P2gO8HOgB7AH+AT4L8LADX0HaENwL2isR4GrmrB8ERGRWim9DzTTqBORiIjEy8vLK3P3gQdrp7FwRUREIlCAioiIRKAAFRERiUABKiIiEoECVEREJAIFqIiISAQKUBERkQgUoCIiIhEoQEVERCJQgIqIiESgABUREYlAASoiIhKBAlRERCQCBaiIiEgEClAREZEIFKAiIiIRKEBFREQiUICKiIhEoABNk/nz5/PlL3+ZAQMGMH369P3m33PPPQwePJgzzjiDMWPG8Nlnn9XOW716NWPHjmXQoEEMHjyYVatWATB69GiGDh3K0KFD6du3L9/4xjdStj0iItmmdboLyEbV1dVcf/31lJSUUFhYyNlnn82oUaM47rjjatucdNJJlJaWkpuby4wZM5gyZQozZswAYMKECUyePJnhw4fz97//nVatgs9Bzz//fO3y48aNY/To0andMBGRLKIj0DQoKyujZ8+e9OjRg7Zt2zJ27Fjmzp27T5shQ4aQm5sLwMCBA6moqADgww8/ZM+ePQwfPhyAQw89tLZdja1bt/Lyyy8rQEVEkkgBmgaVlZUceeSRte8LCwuprKyst/0TTzzBOeecA8Ann3xC586dGTduHMOGDeOmm26iurp6n/bPP/88Q4cOpVOnTsnZABERUYBmulmzZlFeXs7EiRMB2LNnD6+//jq33norf/7zn/n000+ZOXPmPsvMnj2biy++OB3liohkDQVoGhQUFLBmzZra9xUVFRQUFOzX7sUXX2TatGnMnDmTdu3aAcHR6oknnkiPHj1o3bo1559/Pu+9917tMhs3bmThwoWMHDky+RsiIlkpGZ0gH3roIQYMGEBeXh4bN25M2bY0hgI0Dfr378/y5ctZuXIlVVVVlJSUMGrUqH3avPfee0yePJmZM2eSn5+/z7Jbtmxhw4YNACxYsICioqLa+c888wznnnsu7du3T83GiEhWqekEOWvWLF5//XVmz57Nhx9+uE+bmk6Qr7zyCl/5yleYMmVK7bwJEyYwceJE3njjDebPn0+XLl0AGDRoEHPmzKFbt24p3Z7GUICmQevWrbnjjju45JJLGDx4MGPGjKFPnz5MnTq1tjPRlClT2L59O1dffTVDhw7l61//OgA5OTnceuutjBkzhtNPPx0IetzWKCkpYezYsanfKBHJCsnqBHnSSSfRvXv3FG5J4+k2ljQZMWIEI0aM2GfaD3/4w9rXc+bMqXfZ4cOH88orr9Q579lnn22aAkVE6lBXJ8iysrJ629fXCXLlypUMGzaMKVOmkJOTk/S6k0FHoCIikhRROkE2JzoCFRGRBku0E+Rzzz1XZydIgPPPP5+33347JXUng45ARUSkwZLZCbK5UYCKiEiDJasT5AMPPMDxxx9PRUUFQ4YMYdKkSenZwASYu6e7hrQpLi720tLSdJchIiIZJC8vr8zdBx6snY5ARUREIlCAioiIRKAAFRERiUABKhJqzPieEDxG7vjjj+f6668HYNu2bbUPOB86dCi9e/fmhhtuSMm2iEjyKUBFaPz4ngBTp07ltNNOq33fsWNHFixYUPvVrVs3LrzwwpRsj4gknwJUhMaN7wnwzjvvsH79+toxPuMtW7aM9evXc+qppyZvI0QkpRSgIjTuIed79+7lxhtv5NZbb623fUlJCRdddBFm1nRFi0haaSi/JnD9o4enu4Qmc8c3N6e7hIxXM77nc889B8DDDz/MiBEj9gngeCUlJdx///2pKlFEUkABKkLjxvd86623eP3113n44YfZvn07VVVVHHLIIbXXSN9//32qq6s5+eSTU7MxIpISClAR9h3fs6CggJKSEh588MF92tSM7/nUU0/tM75nbLuZM2fyzjvv7NPBaPbs2XpGq0gLpAAVYd/xPaurq7nyyitrx/csLi7mvPPO22d8T4CjjjqqQY9ievrpp3nyySeTvQkikmIaC7cJxsLVNVARkZajoWPh6ghURCSL6QAgOt3GIiIiEoECVEREJAIFqIiISAQKUBERkQgUoCIiIhEoQEVERCJQgIqIiESgABUREYlAASoiIhKBAlREMtr8+fP58pe/zIABA5g+ffp+8++55x4GDx7MGWecwZgxY/jss88AWLRoESNHjuTUU0/ljDPOoKSkpHYZd+e2227jlFNOYdCgQTzwwAMp2x5pOTSUn7RIGp6sZaiurub666+npKSEwsJCzj77bEaNGsVxxx1X2+akk06itLSU3NxcZsyYwZQpU5gxYwYdOnTgvvvu45hjjqGyspKzzjqLs88+m86dOzNz5kzWrFnDG2+8QatW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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circ = QuantumCircuit(q3, c3)\n", + "circ.initialize([0, .5, .5, .0, .5, .0, .0, .5], q3)\n", + "circ.x(q3)\n", + "\n", + "# Run and plot\n", + "circ.measure(q3, c3)\n", + "job = execute(circ , backend=backend)\n", + "st = job.result().get_counts()\n", + "plot_histogram(st)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Decoding all the bits from the probabilities:\n", + "\n", + "```\n", + " bs | aa v \n", + " ----|------- \n", + " 0 | 00 0 \n", + " 1 | 01 1\n", + " 1 | 10 1\n", + " 0 | 11 0 \n", + "```\n", + "we end up, as expected, with `0110`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparing bit strings" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As it was said above if we invert the circuit and act on the desired state then we will go back to the initial state. But what will happen if we use the other inverted circuit? We should receive the initial state only with some probability. We can use this fact to compare similarities of bit strings. The highest probability to get to the initial state is, the more similar bit string should be." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Similarity (probability) with 1001:\n", + "1000: 0.5537109375\n", + "0110: 0\n", + "1101: 0.5537109375\n", + "0011: 0.2333984375\n" + ] + } + ], + "source": [ + "circ = QuantumCircuit(q3, c3)\n", + "circ.initialize([0, .5, .5, .0, .5, .0, .0, .5], q3)\n", + "circ.barrier()\n", + "\n", + "bs = {'1000': [.0, .5, .5, .0, .5, .0, .5, .0],\n", + " '0110': [.5, .0, .0, .5, .0, .5, .5, .0],\n", + " '1101': [.0, .5, .0, .5, .5, .0, .0, .5],\n", + " '0011': [.5, .0, .5, .0, .0, .5, .0, .5]}\n", + "\n", + "print(\"Similarity (probability) with 1001:\")\n", + "for bitstr, ampl in bs.items():\n", + " \n", + " circ_inv = QuantumCircuit(q3, c3)\n", + " circ_inv.initialize(ampl, q3).inverse()\n", + " circ_sum = circ + circ_inv\n", + " circ_sum.measure(q3, c3)\n", + " job = execute(circ_sum , backend=backend, shots=1024)\n", + " st = job.result().get_counts()\n", + " p = st['000'] / 1024 if '000' in st.keys() else 0\n", + " print(\"%s: %s\" % (bitstr, p))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If all bits are different (`1001` vs `0110`) then the similarity is 0. If there are three bits in common then the probability is $0.556$. If only two bits are the same then we've got $0.242$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Acknowledgments\n", + "\n", + "This tutorial is based upon the \"Comparing Strings with Quantum Superposition\" tutorial by Rudy Raymond.\n", + "\n", + "I would like to thank James Wootton and Rudy Raymond for their help, extensive explanations, and interesting discussion over the content of this tutorial during [Qiskit Camp ‘19](https://qiskit.camp/)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "1. [Comparing Strings with Quantum Superpositon, Rudy Raymond](string_comparison.ipynb)\n", + "2. [Qiskit’s documentation - Circuits and Registers](https://qiskit.org/documentation/terra/quantum_circuits.html)\n", + "3. [Basic quantum circuit simulation in Python, Jarrod McClean](https://jarrodmcclean.com/basic-quantum-circuit-simulation-in-python/)\n", + "4. [Wikipedia - Qubit](https://en.wikipedia.org/wiki/Qubit)\n", + "5. [Wikipedia - Quantum logic gate](https://en.wikipedia.org/wiki/Quantum_logic_gate)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/hello_world/quantum_emoticon.ipynb b/community/hello_world/quantum_emoticon.ipynb index c48d35ac0..679b564fa 100644 --- a/community/hello_world/quantum_emoticon.ipynb +++ b/community/hello_world/quantum_emoticon.ipynb @@ -57,7 +57,7 @@ " 8) = '01110000101001'\n", " ;) = '01110110101001'\n", "\n", - "Note that these strings differ only on bits 7 and 8. It is therefore only these on which the superposition must be prepared. The superposition will be of the '00' of 8), and the '11' of ;) , and so will be a standard [Bell state](https://github.com/QISKit/qiskit-tutorial/blob/master/2_quantum_information/superposition_and_entanglement.ipynb).\n", + "Note that these strings differ only on bits 7 and 8. It is therefore only these on which the superposition must be prepared. The superposition will be of the '00' of 8), and the '11' of ;) , and so will be a standard [Bell state](https://github.com/QISKit/qiskit-tutorial/blob/master/community/terra/qis_intro/entanglement_introduction.ipynb).\n", "\n", "We'll now implement this." ] diff --git a/community/ignis/RB_overview.ipynb b/community/ignis/RB_overview.ipynb new file mode 100644 index 000000000..8406dc93f --- /dev/null +++ b/community/ignis/RB_overview.ipynb @@ -0,0 +1,492 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Randomized Benchmarking Overview\n", + "\n", + "### Contributors\n", + "\n", + "Shelly Garion$^{1}$, Yael Ben-Haim$^{1}$ and David McKay$^{2}$\n", + "\n", + "1. IBM Research Haifa, Haifa University Campus, Mount Carmel Haifa, Israel\n", + "2. IBM T.J. Watson Research Center, Yorktown Heights, NY, USA\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "One of the main challenges in building a quantum information processor is the non-scalability of completely\n", + "characterizing the noise affecting a quantum system via process tomography. In addition, process tomography is sensitive to noise in the pre- and post rotation gates plus the measurements (SPAM errors). Gateset tomography can take these errors into account, but the scaling is even worse. A complete characterization\n", + "of the noise is useful because it allows for the determination of good error-correction schemes, and thus\n", + "the possibility of reliable transmission of quantum information.\n", + "\n", + "Since complete process tomography is infeasible for large systems, there is growing interest in scalable\n", + "methods for partially characterizing the noise affecting a quantum system. A scalable (in the number $n$ of qubits comprising the system) and robust algorithm for benchmarking the full set of Clifford gates by a single parameter using randomization techniques was presented in [1]. The concept of using randomization methods for benchmarking quantum gates is commonly called **Randomized Benchmarking\n", + "(RB)**.\n", + "\n", + "\n", + "### References\n", + "\n", + "1. Easwar Magesan, J. M. Gambetta, and Joseph Emerson, *Robust randomized benchmarking of quantum processes*,\n", + "https://arxiv.org/pdf/1009.3639\n", + "\n", + "2. Easwar Magesan, Jay M. Gambetta, and Joseph Emerson, *Characterizing Quantum Gates via Randomized Benchmarking*,\n", + "https://arxiv.org/pdf/1109.6887\n", + "\n", + "3. A. D. C'orcoles, Jay M. Gambetta, Jerry M. Chow, John A. Smolin, Matthew Ware, J. D. Strand, B. L. T. Plourde, and M. Steffen, *Process verification of two-qubit quantum gates by randomized benchmarking*, https://arxiv.org/pdf/1210.7011\n", + "\n", + "4. Jay M. Gambetta, A. D. C´orcoles, S. T. Merkel, B. R. Johnson, John A. Smolin, Jerry M. Chow,\n", + "Colm A. Ryan, Chad Rigetti, S. Poletto, Thomas A. Ohki, Mark B. Ketchen, and M. Steffen,\n", + "*Characterization of addressability by simultaneous randomized benchmarking*, https://arxiv.org/pdf/1204.6308\n", + "\n", + "5. David C. McKay, Sarah Sheldon, John A. Smolin, Jerry M. Chow, and Jay M. Gambetta, *Three Qubit Randomized Benchmarking*, https://arxiv.org/pdf/1712.06550" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The Randomized Benchmarking Protocol\n", + "\n", + "A RB protocol (see [1,2]) consists of the following steps:\n", + "\n", + "(We should first import the relevant qiskit classes for the demonstration)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#Import general libraries (needed for functions)\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from IPython import display\n", + "\n", + "#Import Qiskit classes classes\n", + "import qiskit\n", + "from qiskit.providers.aer.noise import NoiseModel\n", + "from qiskit.providers.aer.noise.errors.standard_errors import depolarizing_error, thermal_relaxation_error\n", + "\n", + "#Import the RB Functions\n", + "import qiskit.ignis.verification.randomized_benchmarking as rb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 1: Generate RB sequences\n", + "\n", + "The RB sequences consist of random Clifford elements chosen uniformly from the Clifford group on $n$-qubits, \n", + "including a computed reversal element,\n", + "that should return the qubits to the initial state.\n", + "\n", + "More precisely, for each length $m$, we choose $K_m$ RB sequences. \n", + "Each such sequence contains $m$ random elements $C_{i_j}$ chosen uniformly from the Clifford group on $n$-qubits, and the $m+1$ element is defined as follows: $C_{i_{m+1}} = (C_{i_1}\\cdot ... \\cdot C_{i_m})^{-1}$. It can be found efficiently by the Gottesmann-Knill theorem.\n", + "\n", + "For example, we generate below several sequences of 2-qubit Clifford circuits." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#Generate RB circuits (2Q RB)\n", + "\n", + "#number of qubits\n", + "nQ=2 \n", + "rb_opts = {}\n", + "#Number of Cliffords in the sequence\n", + "rb_opts['length_vector'] = [1, 10, 20, 50, 75, 100, 125, 150, 175]\n", + "#Number of seeds (random sequences)\n", + "rb_opts['nseeds'] = 5 \n", + "#Default pattern\n", + "rb_opts['rb_pattern'] = [[0,1]]\n", + "\n", + "rb_circs, xdata = rb.randomized_benchmarking_seq(**rb_opts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As an example, we print the circuit corresponding to the first RB sequence" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌───┐┌───┐┌───┐ ░ ┌───┐┌─────┐┌───┐ ┌─┐»\n", + "qr_0: |0>──────────────■───────┤ H ├┤ S ├┤ Y ├─░─┤ Y ├┤ Sdg ├┤ H ├───────■──┤M├»\n", + " ┌─────┐┌───┐┌─┴─┐┌───┐└───┘└───┘└───┘ ░ └───┘└─────┘└───┘┌───┐┌─┴─┐└╥┘»\n", + "qr_1: |0>┤ Sdg ├┤ H ├┤ X ├┤ Y ├────────────────░──────────────────┤ Y ├┤ X ├─╫─»\n", + " └─────┘└───┘└───┘└───┘ ░ └───┘└───┘ ║ »\n", + " cr_0: 0 ════════════════════════════════════════════════════════════════════╩═»\n", + " »\n", + " cr_1: 0 ══════════════════════════════════════════════════════════════════════»\n", + " »\n", + "« \n", + "«qr_0: ─────────────\n", + "« ┌───┐┌───┐┌─┐\n", + "«qr_1: ┤ H ├┤ S ├┤M├\n", + "« └───┘└───┘└╥┘\n", + "«cr_0: ═══════════╬═\n", + "« ║ \n", + "«cr_1: ═══════════╩═\n", + "« \n" + ] + } + ], + "source": [ + "print(rb_circs[0][0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One can verify that the Unitary representing each RB circuit should be the identity (with a global phase). \n", + "We simulate this using Aer unitary simulator." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a new circuit without the measurement\n", + "qc = qiskit.QuantumCircuit(*rb_circs[0][-1].qregs,*rb_circs[0][-1].cregs)\n", + "for i in rb_circs[0][-1][0:-nQ]:\n", + " qc._attach(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[-0.707+0.707j 0. +0.j 0. +0.j 0. +0.j ]\n", + " [ 0. +0.j -0.707+0.707j 0. -0.j 0. +0.j ]\n", + " [ 0. +0.j -0. +0.j -0.707+0.707j 0. +0.j ]\n", + " [ 0. +0.j -0. +0.j 0. +0.j -0.707+0.707j]]\n" + ] + } + ], + "source": [ + "# The Unitary is an identity (with a global phase)\n", + "backend = qiskit.Aer.get_backend('unitary_simulator')\n", + "basis_gates = ['u1','u2','u3','cx'] # use U,CX for now\n", + "basis_gates_str = ','.join(basis_gates)\n", + "job = qiskit.execute(qc, backend=backend, basis_gates=basis_gates_str)\n", + "print(np.around(job.result().get_unitary(),3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 2: Execute the RB sequences (with some noise)\n", + "\n", + "We can execute the RB sequences either using Qiskit Aer Simulator (with some noise model) or using IBMQ provider, and obtain a list of results.\n", + "\n", + "By assumption each operation $C_{i_j}$ is allowed to have some error, represnted by $\\Lambda_{i_j,j}$, and each sequence can be modeled by the operation:\n", + "$$\\textit{S}_{\\textbf{i}_\\textbf{m}} = \\bigcirc_{j=1}^{m+1} (\\Lambda_{i_j,j} \\circ C_{i_j})$$\n", + "where ${\\textbf{i}_\\textbf{m}} = (i_1,...,i_m)$ and $i_{m+1}$ is uniquely determined by ${\\textbf{i}_\\textbf{m}}$." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Run on a noisy simulator\n", + "noise_model = NoiseModel()\n", + "# Depolarizing_error\n", + "dp = 0.002 \n", + "noise_model.add_all_qubit_quantum_error(depolarizing_error(dp, 1), ['u1', 'u2', 'u3'])\n", + "noise_model.add_all_qubit_quantum_error(depolarizing_error(dp, 2), 'cx')\n", + "\n", + "backend = qiskit.Aer.get_backend('qasm_simulator')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 3: Get statistics about the survival probabilities\n", + "\n", + "For each of the $K_m$ sequences the survival probability $Tr[E_\\psi \\textit{S}_{\\textbf{i}_\\textbf{m}}(\\rho_\\psi)]$\n", + "is measured. \n", + "Here $\\rho_\\psi$ is the initial state taking into account preparation errors and $E_\\psi$ is the\n", + "POVM element that takes into account measurement errors.\n", + "In the ideal (noise-free) case $\\rho_\\psi = E_\\psi = | \\psi {\\rangle} {\\langle} \\psi |$. \n", + "\n", + "In practice one can measure the probability to go back to the exact initial state, i.e. all the qubits in the ground state $ {|} 00...0 {\\rangle}$ or just the probability for one of the qubits to return back to the ground state. Measuring the qubits independently can be more convenient if a correlated measurement scheme is not possible. Both measurements will fit to the same decay parameter according to the properties of the twirl. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 4: Find the averaged sequence fidelity\n", + "\n", + "Average over the $K_m$ random realizations of the sequence to find the averaged sequence **fidelity**,\n", + "$$F_{seq}(m,|\\psi{\\rangle}) = Tr[E_\\psi \\textit{S}_{K_m}(\\rho_\\psi)]$$\n", + "where \n", + "$$\\textit{S}_{K_m} = \\frac{1}{K_m} \\sum_{\\textbf{i}_\\textbf{m}} \\textit{S}_{\\textbf{i}_\\textbf{m}}$$\n", + "is the average sequence operation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 5: Fit the results\n", + "\n", + "Repeat Steps 1 through 4 for different values of $m$ and fit the results for the averaged sequence fidelity to the model:\n", + "$$ \\textit{F}_{seq}^{(0)} \\big(m,{|}\\psi {\\rangle} \\big) = A_0 \\alpha^m +B_0$$\n", + "where $A_0$ and $B_0$ absorb state preparation and measurement errors as well as an edge effect from the\n", + "error on the final gate.\n", + "\n", + "$\\alpha$ determines the average error-rate $r$, which is also called **Error per Clifford (EPC)** \n", + "according to the relation $$ r = 1-\\alpha-\\frac{1-\\alpha}{2^n} = \\frac{2^n-1}{2^n}(1-\\alpha)$$\n", + "(where $n=nQ$ is the number of qubits).\n", + "\n", + "As an example, we calculate the average sequence fidelity for each of the RB sequences, fit the results to the exponential curve, and compute the paraemters $\\alpha$ and EPC." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "After seed 0, alpha: 0.984443, EPC: 0.011668\n", + "After seed 1, alpha: 0.984050, EPC: 0.011962\n", + "After seed 2, alpha: 0.984245, EPC: 0.011816\n", + "After seed 3, alpha: 0.984849, EPC: 0.011363\n", + "After seed 4, alpha: 0.985262, EPC: 0.011053\n" + ] + } + ], + "source": [ + "qobj_list = []\n", + "# Create the RB fitter\n", + "rb_fit = rb.RBFitter(None, xdata, rb_opts['rb_pattern'])\n", + "for rb_seed,rb_circ_seed in enumerate(rb_circs):\n", + " qobj = qiskit.compile(rb_circ_seed,\n", + " backend=backend,\n", + " basis_gates=basis_gates_str)\n", + " job = backend.run(qobj, noise_model=noise_model)\n", + " qobj_list.append(qobj) \n", + "\n", + " # Add data to the fitter\n", + " rb_fit.add_data(job.result())\n", + " print('After seed %d, alpha: %f, EPC: %f'%(rb_seed,rb_fit.fit[0]['params'][1], rb_fit.fit[0]['epc']))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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l19O3bp1mTJlSo7H7NWrV4bPbN++fbz77rsZ0owfP559+/axZs0arrjiCm677TZWrVoFwKFDh4iJieHDDz/kqaeeIiEhge+++46ePXsybNgwdu/e7XX5jx8/TkREBC+99FKuuhWnpqbSs2dP7rrrriy3e/u5lilT5pzPIigoyOs4spKSksKNN97IkSNHWL58OVOnTiU+Pp4nnnjCnWbp0qVce+21zJ07l8TERDp16sQtt9zC8uXL3Wl8ef4eOnSI2NhYVJW5c+eyadMmRo8eTbVq1S6orN58zqdPn6Zdu3Zs27aNGTNmsGXLFiZOnJjh952b89dnVLXILlFRUeoLixcvznL9qdfe0JfLvaZBHNfJk31yKL/zVNYLsXfvXgW0evXq52z7+uuvtUWLFlqhQgWtWLGitm/fXjdu3JghDaAzZ85UVdWkpCQF9OOPP9bY2FgNDAzU+vXr6/z58zOUAdBFixbpNddco8HBwRoVFaVr1651pzlw4IB269ZNa9asqUFBQdqwYUP98MMPc122p59+Wi+++OIM63r37q3/+Mc/POYZMGCANm3aNMO6OXPmaFBQkB4+fFhVVWfOnKkBAQF65swZd5pvv/1WAf3jjz8ylDPtfVbWrFmjIqJ//fXXOds+++wzbdiwoW7cuFEBXbNmTc4FdilbtqxOmDDhnPXJycn69NNPa82aNTU4OFijo6N13rx52e5r7NixGhoaqsePH3evGzZsmIaHh2tqaqp73alTp/Saa67RiRMnas+ePfXGG288Z19DhgzR2NjYbI/XunVrfeihh7JNk/6cSzt2cHCwPvvss6qq2qdPHy1Tpoz++uuv5+Q9ceKEnjhxItv9e9KoUSMdNGhQrvKMGDFC69Spc856bz7XCRMmaNmyZbPdf2pqqr7++utat25dDQoK0saNG+tHH32UbZ6vvvpKRUR3797tXvfRRx9pYGCg/v333x7zXX311dq/f3/3e1+evwMGDNDmzZtnmyavzt93331XIyMjNTk5Odt9eTp/4+PjFdBbb7012/xpgAT14hppdwAuQKln+hM+6hlOEswLL4AP7poVO8eOHeOxxx5j9erVLFmyhPLly9O5c+cMtwqz8vTTT/Poo4+ybt062rVrR5cuXfjtt98ypBkwYACvvfYaP/74I5UrV6Z79+7u23InT57kqquu4ssvv+SXX36hX79+PPDAA3zzzTfu/Gm3R3fu3OkxjlWrVtG+ffsM6zp06EBCQgKnT5/OMk9ycvI537CCg4M5efIka9euBeDqq6+mVKlSvP/++6SkpHDkyBEmTZrE1Vdf7W4QlCY6OpoaNWpw3XXXsXjx4gzbli9fTr169ahQoUKG9Xv27KFPnz588sknPv0236tXL5YuXconn3zChg0b6NmzJ507d+ann37ymGfVqlW0bNkyQxwdOnRg7969GT77559/noiICHr27OlxX9dccw2rV6/2+SiTpUqVck8KlpqayrRp0+jevXuW3z6DgoLcv9/Bgwf7bawLbz/XEydOUKdOHWrVqsVNN91EYmJihv288MILfPDBB7z99tts3LiRAQMG8MADD2Q7qNeqVato0KABF110UYZjJycnu8/xrBw5coSKFSu63/vy/P3ss89o1qwZd9xxB9WqVaNp06aMGTMmw636vDp/P/vsM2JjY3nkkUeoXr06DRs2ZPDgwef8j8ir89cTqwBcoB494PLLYfduGDPG39EUPl27dqVr165ccsklNGnShAkTJpCUlMTq1auzzdenTx9uv/12LrvsMkaNGsVFF13EuHHjMqQZNmwYbdu25bLLLmPgwIFs3rzZXUmoWbMmTz31FE2bNqVu3brcf//93HrrrUydOtWdv3z58tSvXz/bngv79+8/Z2COsLAwzpw547ERYocOHfjhhx+YMmUKZ86c4bfffmPo0KGA84wSoE6dOixcuJBBgwYRGBhI+fLlWb9+PV9++aV7PzVq1GDcuHHMmjWL2bNnU79+fa677roMt1B37dpFeHh4huOnpKTQvXt3nnjiCa644gqPZcut7du3M3XqVGbMmEGrVq2oW7cuDz/8MJ06dTrn9np6nj7DtG0ACxYsYMaMGdnuByA8PJzTp0+zd+/ebNO99957hISEZFjGjh2bZdrk5GReeuklDh8+zHXXXceBAwf466+/aNCgQbbHAKf1dv369XNMlxe8+Vzr16/Phx9+yOeff87UqVMJCgoiNjaWbdu2AU4F/c033+T999+nY8eOREZGcuedd3Lffffx9ttv5+rYVapUoUSJEu5jZ/b222+zZ88eevTo4V7ny/N3x44djB07lrp16zJ//nz69evHs88+6y5HXp6/O3bsYObMmZw+fZq5c+cybNgw3nnnHQYMGJAhn7fnr69YBeAClSgBw4c7r19+GQ6t2+nXeAqb7du3c+edd1KvXj3KlStHWFgYqampOT5DTT8TY0BAAM2aNWPjxo0Z0jRp0sT9Ou2fyP/+9z/A+Sfy8ssv06RJEypXrkxISAizZ8/OcNxbbrmFzZs3U7NmzQsuZ3rt27dn5MiRPPTQQwQFBXHppZe6n+0HBDh/kvv376d3797cddddrFmzhiVLlhAaGsrtt9/ubmBWv359HnzwQaKiooiJiWHs2LF07NiRESNGuI914sSJc+42vPLKK5QuXZr+/fv7tFw//vgjqkrDhg0zXFjnzp3L9u3bAWjUqJF7/Q033ODVfv/44w/uvvtuJk2adM43wczSvoXl9A3qjjvuYN26dRmW7t27Z0jTo0cPQkJCKFOmDG+++SYjR47khhtu8Ng4MSsPP/zwOY0yC5KYmBh69uxJ06ZNadmyJdOnT6devXqMHj0agI0bN3Ly5Ek6duyY4Xc6btw49+/0hhtucK9v1KjRecUxa9YsnnrqKT755BPq1KnjXu/L8zc1NZWrrrqKV199lSuvvJJevXrx6KOPuisAeXX+ph27WrVqjB8/nqioKLp27crQoUMZN25chvPJ2/PXV2wkQB/o0AHubbaeLj8MoGz0Iti+BdKdxMazm266iVq1avHuu+9Ss2ZNSpYsScOGDXN8BOCN9N/c027Dpl08R44cyRtvvMGoUaO4/PLLCQkJ4bnnnnNXELxVvXp1fv/99wzrfv/9d0qWLHnOrfr0+vfvz+OPP86+ffuoWLEiO3fuZMCAAdStWxdwvg2VLVuW4Wm1S2DKlClcdNFFrFy5khYtWmS532bNmjFt2jT3+ypVqpxzS/ebb75h+fLl59zZ+Mc//sEdd9zBxx9/7F3hM0lNTUVEWLNmzTn7TvvH9tVXX7lve6at8/QZpm1La+R43XXXZTgWQMmSJfnll1/c37L//PNPAKpWrZptrOXLl+fiiy/ONs2IESPo2LEj5cqVy9BQrGrVqlSoUIFNmzZlm9/fcvpcs1KiRAmio6PddwDSPucvvviC2rVrZ0ib9jt+//333RestHVZzZZ64MABUlJSzjl2fHw8d911F5MnTz5nlFBfnr81atSgYcOGGdY1aNCAUaNGucuaF+dv2rFLlSqVYcKfBg0acPz4cQ4cOOA+X709f33FKgA+IAL/PvkgIayEFDj6+IuEzJ7s77AKvIMHD7J582bGjh1L27ZtAacWnrk7XFa+//57rr32WsBpyLp69Wri4uK8PvZ3331H586d3bcbVZWtW7fm+A0zs5iYGD799NMM6xYuXEh0dHSOgx6JiPvOxNSpU7nooou46ipnkKnjx4+fMztY2vvsupitW7eOGjVquN9feeWVjBkzhtTUVPfdhQkTJnDs2DF3mr1799KhQwc+/vhjYmNjcyqyR1deeSWqyv79+92/z8zqZFExjomJ4ZlnnuHkyZPub3sLFy4kPDyciIgIqlWrxvr16zPkeeGFF/jrr794++23M7Sk3rBhAzVr1vTJeOnVq1fPspIQEBBAt27dmDx5MgMHDjynHUBaF7oLbUl/oXL6XLOiqvz888/uW+sNGzYkMDCQXbt2uf/eMsvqDllMTAwvvfQSe/bscX8+CxcuJDAwkKioKHe6GTNm0LNnTyZNmpTl368vz9/Y2Fi2bNmSYd3WrVvd52Renb9px/7kk08ylGPr1q2UKVMmwxcFX56/XvGmpWBhXfK6F0AGS5eqOmMCagqium6dT46d3/KzF0BKSopWqVJF//nPf+q2bdt0yZIlevXVV2vJkiUztDAni14AtWrV0pkzZ+rmzZv10Ucf1cDAQHeL7Kxax6flS2sp3L9/f61Zs6YuX75cN23apH379tVy5cpp69at3Xlmz56t9evX1z179ngs244dO7RMmTLar18/3bhxo44fP15LlSql8fHx7jSjR4/W+vXrZ8g3fPhw/fnnn3XDhg06dOhQLVWqlH766afu7d98842KiA4ZMkS3bt2qa9eu1Q4dOuhFF12kR48eVVXVf//73/rpp5/q1q1bdcOGDfrss88qoLNmzXLv58CBA1q6dGlNTEz0WIbMn02a+vXr6+jRo93vjxw5oomJiZqYmKjBwcE6ZMgQTUxM1F27drnTdO/eXWvXrq0zZ87U7du365o1a3TEiBEZYsrs0KFDGhYWpnfccYeuX79eZ82apaGhoTpy5EiPeTz1AujZs6fec889HvOpOr0AevXqpfv27cuwHDx40J2GTL0AMjt48KBedtllGh4erh9++KFu2LBBt23bppMnT9aGDRtqUlKSqmb9u88sOTnZ/bnWq1dPH3jgAU1MTNRt27a502S1n23btmliYqI+/vjjWqNGDfc+0lqae/O5Dh48WOfNm6fbt2/XxMRE7dWrl5YsWVJ/+OEHd5rnn39eK1WqpB988IH7mOPGjdN3333XY5nOnDmjjRs31rZt2+qPP/6oCxcu1PDwcH344YfdaaZOnaolS5bU//znPx5/D748f1evXq0lS5bUl156Sbdt26YzZszQcuXK6ZgxY9xp8ur83b17t4aGhurDDz+smzdv1nnz5mnNmjX1ySefzLAvT+dvXvUC8PtFOi+XfK0AqOqxa29yVwIOxXTwybHzW353A/zmm2+0UaNGGhgYqI0aNdJ58+ad08UsqwrAlClTNCYmRgMDA/XSSy/Vr776KkMZcqoA/Pnnn3rLLbdoSEiIVq1aVZ966int06dPhgrAhAkTFHD/M/dkyZIleuWVV2rp0qU1IiJCx40bl2H7oEGD1Klrn9W2bVstX768BgUFabNmzTLEn2bq1Kl61VVXadmyZbVKlSp600036S+//OLe/vrrr+vFF1+sQUFBWrFiRW3RooXOnTv3nP1069btnH806Xn6Bwpk6JKW9rlmXnr27OlOc+rUKR00aJBGRkZqqVKlNCwsTDt37qwJCQkej6+q+vPPP2vLli01MDBQq1evroMHD87QBTCzrCoAJ06c0HLlyumqVauyPVbr1q2zLEf67lc5VQBUnX/8zz33nNavX18DAwO1atWq2rp1a506daqmpKSoata/+8zSPv/MS/pzMav9eCpH+vM1p8/1scce09q1a2vp0qW1atWq2r59e125cmWG46Smpupbb72lDRo00NKlS2uVKlX0+uuv1wULFmRbrl27dumNN96owcHBWqlSJX3kkUf05MmTOcafvtyqvjt/VVW//PJLbdKkiQYGBuoll1yio0aNOqeraV6dv6tWrdKYmBgNCgrSiIgIffHFFzN0C8zu/LUKQCGoAOiGDZoiAe5KQOrCRT45fn7K7wpAbnn6YzeebdiwQatWrZpt/+uiYMyYMdquXTt/h2F8zM5fGwegcGjUiNN33u1+e7jP05CLIUGNyQuNGjVi5MiRJCUV7dEqS5Uq5W69booOO3/zjjUC9LHA14ZwevonlDpzkvL//ZHUqdMJ6P5Pf4flVyVLOqeZL1r2m/PjabjYouT+++/3dwgmjxT38zftf2fa/1JfsTsAvlarFvLYY+63xx5/HpKT/RiQ/1WoUIHg4GD+/PNPfv311wvaV0REBKpKdHS0j6IzxpiCbd26dUDWPS4uhFUA8kDJ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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(8, 6))\n", + "ax = plt.subplot(1, 1, 1)\n", + "\n", + "# Plot the essence by calling plot_rb_data\n", + "rb_fit.plot_rb_data(0, ax=ax, add_label=True, show_plt=False)\n", + " \n", + "# Add title and label\n", + "ax.set_title('%d Qubit RB'%(nQ), fontsize=18)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The intuition behind RB\n", + "\n", + "The depolarizing quantum channel has a parameter $\\alpha$, and works like this: with probability $\\alpha$, the state remains the same as before; with probability $1-\\alpha$, the state becomes the totally mixed state, namely:\n", + "\n", + "$$\\rho_f = \\alpha \\rho_i + \\frac{1-\\alpha}{2^n} * \\mathbf{I}$$\n", + "\n", + "Suppose that we have a sequence of $m$ gates, not necessarily Clifford gates, \n", + "where the error channel of the gates is a depolarizing channel with parameter $\\alpha$ \n", + "(same $\\alpha$ for all the gates). \n", + "Then with probability $\\alpha^m$ the state is correct at the end of the sequence, \n", + "and with probability $1-\\alpha^m$ it becomes the totally mixed state, therefore:\n", + "\n", + "$$\\rho_f^m = \\alpha^m \\rho_i + \\frac{1-\\alpha^m}{2^n} * \\mathbf{I}$$\n", + "\n", + "Now suppose that in addition we start with the ground state; \n", + "that the entire sequence amounts to the identity; \n", + "and that we measure the state at the end of the sequence with the standard basis. \n", + "We derive that the probability of success at the end of the sequence is:\n", + "\n", + "$$\\alpha^m + \\frac{1-\\alpha^m}{2^n} = \\frac{2^n-1}{2^n}\\alpha^m + \\frac{1}{2^n} = A_0\\alpha^m + B_0$$\n", + "\n", + "It follows that the probability of success, aka fidelity, decays exponentially with the sequence length, with exponent $\\alpha$.\n", + "\n", + "The last statement is not necessarily true when the channel is other than the depolarizing channel. However, it turns out that if the gates are uniformly-randomized Clifford gates, then the noise of each gate behaves on average as if it was the depolarizing channel, with some parameter that can be computed from the channel, and we obtain the exponential decay of the fidelity." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simultaneous Randomized Benchmarking\n", + "\n", + "\n", + "RB is designed to address fidelities in multiqubit systems in two ways. For one, RB over the full $n$-qubit space\n", + "can be performed by constructing sequences from the $n$-qubit Clifford group. Additionally, the $n$-qubit space\n", + "can be subdivided into sets of qubits $\\{n_i\\}$ and $n_i$-qubit RB performed in each subset simultaneously [4]. \n", + "Both methods give metrics of fidelity in the $n$-qubit space. \n", + "\n", + "For example, it is common to perform 2Q RB on the subset of two-qubits defining a CNOT gate while the other qubits are quiescent. As explained in [4], this RB data will not necessarily decay exponentially because the other qubit subspaces are not twirled. Subsets are more rigorously characterized by simultaneous RB, which also measures some level of crosstalk error since all qubits are active.\n", + "\n", + "An example of simultaneous RB (1Q RB and 2Q RB) can be found in: \n", + "https://github.com/Qiskit/qiskit-tutorials/blob/master/qiskit/ignis/randomized_benchmarking.ipynb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Predicted Gate Fidelity\n", + "\n", + "If we know the errors on the underlying gates (the gateset) we can predict the fidelity. First we need to count the number of these gates per Clifford. \n", + "\n", + "Then, the two qubit Clifford gate error function gives the error per 2Q Clifford. It assumes that the error in the underlying gates is depolarizing. This function is derived in the supplement to https://arxiv.org/abs/1712.06550. " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of u1 gates per Clifford: 1.498462\n", + "Number of u2 gates per Clifford: 1.756923\n", + "Number of u3 gates per Clifford: 0.513007\n", + "Number of cx gates per Clifford: 1.518322\n" + ] + } + ], + "source": [ + "#Count the number of single and 2Q gates in the 2Q Cliffords\n", + "gates_per_cliff = rb.rb_utils.gates_per_clifford(qobj_list,xdata[0],basis_gates,rb_opts['rb_pattern'][0])\n", + "for i in range(len(basis_gates)):\n", + " print(\"Number of %s gates per Clifford: %f\"%(basis_gates[i],\n", + " np.mean([gates_per_cliff[0][i],gates_per_cliff[0][i]])))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Predicted 2Q Error per Clifford: 8.943612e-03\n" + ] + } + ], + "source": [ + "# Prepare lists of the number of qubits and the errors\n", + "ngates = np.zeros(7)\n", + "ngates[0:3] = gates_per_cliff[0][0:3]\n", + "ngates[3:6] = gates_per_cliff[1][0:3]\n", + "ngates[6] = gates_per_cliff[0][3]\n", + "gate_qubits = np.array([0,0,0,1,1,1,-1], dtype=int)\n", + "gate_errs = np.zeros(len(gate_qubits))\n", + "gate_errs[[1,4]] = dp/2 #convert from depolarizing error to epg (1Q)\n", + "gate_errs[[2,5]] = 2*dp/2 #convert from depolarizing error to epg (1Q)\n", + "gate_errs[6] = dp*3/4 #convert from depolarizing error to epg (2Q)\n", + "\n", + "#Calculate the predicted epc\n", + "pred_epc = rb.rb_utils.twoQ_clifford_error(ngates,gate_qubits,gate_errs)\n", + "print(\"Predicted 2Q Error per Clifford: %e\"%pred_epc)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/ignis/coherence-overview.ipynb b/community/ignis/coherence-overview.ipynb new file mode 100644 index 000000000..847af4db3 --- /dev/null +++ b/community/ignis/coherence-overview.ipynb @@ -0,0 +1,607 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## _*Relaxation and Decoherence*_ \n", + "\n", + "The latest version of this notebook is available on https://github.com/qiskit/qiskit-tutorial.\n", + "\n", + "***\n", + "### Contributors\n", + "Martin Sandberg, Hanhee Paik, Antonio Córcoles, Doug McClure, Jay Gambetta, and Yael Ben-Haim" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import qiskit\n", + "from qiskit.providers.aer.noise.errors.standard_errors import amplitude_damping_error\n", + "from qiskit.providers.aer.noise.errors.standard_errors import phase_damping_error\n", + "from qiskit.providers.aer.noise import NoiseModel\n", + "\n", + "from qiskit.ignis.characterization.coherence import T1Fitter, T2StarFitter, T2Fitter\n", + "from qiskit.ignis.characterization.coherence import t1_circuits, t2_circuits, t2star_circuits" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "In an ideal world, quantum systems would be well-isolated from their environment, which would prevent unwanted dynamics of the quantum information we encode in them. For example, suppose we prepared a qubit in the $|1>$ state, but through interaction with the environment, the state is flipped to $|0>$. That flip could affect the outcome of a quantum algorithm that's being run using that qubit, meaning the answers we get out of the quantum device would change. For this reason, we seek to isolate quantum computers from the surrounding environment.\n", + "\n", + "However, perfect isolation is not possible: after all, we have to be able to control the quantum computer, which means coupling it to external systems to manipulate quantum information. This tradeoff is sometimes referred to as the \"Tao of quantum computing\". Because our controls introduce coupling between qubits and the environment, we expect some unwanted interactions can occur.\n", + "\n", + "These unwanted interactions introduce _noise_ into the qubits, which affects their behavior. The rate of these interactions sets characteristic timescales over which information encoded in qubits can be reliably stored and manipulated. (If the interaction has a rate $\\Gamma$, the characteristic timescale is $\\sim 1/\\Gamma$.) In this tutorial, we discuss two timescales that arise from energy relaxation and decoherence -- usually referred to as $T_{1}$ and $T_{2}$, respectively -- and show how they can be measured." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Measuring $T_1$ time\n", + "\n", + "**Theory**\n", + "\n", + "The $T_{1}$ time is the characteristic timescale over which the state of a qubit damps toward the $|0>$ state. Given an arbitrary initial single-qubit state $\\rho(0)$, represented by a $2\\times 2$ matrix as\n", + "$$\\rho(0) = \\begin{pmatrix}\\rho_{00} & \\rho_{01} \\\\ \\rho_{01}^{\\star} & \\rho_{11}\\end{pmatrix},$$\n", + "under amplitude damping noise, the state of the changes as\n", + "$$\\rho(t) = \\begin{pmatrix}\\rho_{00} + (1-e^{-\\Gamma_{1}t})\\rho_{11} & e^{-\\Gamma_{1}t/2}\\rho_{01} \\\\ e^{-\\Gamma_{1}t/2}\\rho_{01}^{\\star} & e^{-\\Gamma_{1} t}\\rho_{11}\\end{pmatrix} \\underset{t\\rightarrow \\infty}{\\longrightarrow} |0><0|.$$\n", + "\n", + "Notice that amplitude damping noise also removes any coherences between $|0>$ and $|1>$ of the state (the off-diagonal elements.) The rate at which this _decoherence_ occurs is half that of $\\Gamma_{1}$.\n", + "\n", + "The time evolution of the state under amplitude damping noise can be derived as the continuous-time limit of an amplitude damping channel\n", + "$$\\mathcal{E}[\\rho] = M_{0} \\rho M_{0}^{\\dagger} + M_{1}\\rho M_{1}^{\\dagger},$$\n", + "where\n", + "$$M_{0} = \\begin{pmatrix} 1 & 0 \\\\0& \\sqrt{1-p}\\end{pmatrix}~,~M_{1} = \\begin{pmatrix} 0 & \\sqrt{p} \\\\ 0 & 0 \\end{pmatrix},$$\n", + "and the probability of decay $p$ is $\\Gamma_{1}\\Delta t$.\n", + "\n", + "The decay rate $\\Gamma_{1}$ sets a natural time scale for the decay process; namely, $\\Gamma^{-1}$. This number is often called the $T_{1}$ time. Notice the off-diagonal elements also decay, with characteristic decay rate $\\Gamma /2$.\n", + "\n", + "Notice that the probability of the qubit remaining in the $|1>$ state is given by\n", + "\n", + "$$P_{1}(t) = \\mathrm{Tr}\\left[ |1><1| \\rho(t)\\right] = e^{-\\Gamma_{1} t}\\rho_{11}.$$\n", + "\n", + "If the qubit was prepared in the $|1>$ state, then $P_{1}(t) =e^{-\\Gamma_{1} t}$.\n", + "\n", + "A simple way of estimating the $T_{1}$ time is to collect statistics about the decay curve for $P_{1}(t)$ when the qubit is initialized to $|1>$. This can be done by choosing a variety of times $t_{1}, t_{2}, \\cdots t_{N}$, and then running the following experiment many times:\n", + "* Prepare the qubit in $|1>$.\n", + "* Wait a delay time $t_{j}$.\n", + "* Measure the qubit in the $|0>, |1>$ basis.\n", + "\n", + "An estimate of $P_{1}(t_{j})$ is the number of times the qubit was observed to be in $|1>$, divided by the total number of times the experiment was repeated. Given several estimated values of $P_{1}$ for a variety of $(t_{j})$, we can fit the resulting decay curve is fit to an exponential and extract an estimate of $\\Gamma_{1}$, and hence, the $T_{1}$ time.\n", + "\n", + "The IBM Q Experience does not currently support delays of arbitrary length, so for now, we just append a series of identity operations after the initial excitation pulse. Each identity operation has the same duration of a single-qubit gate and is followed by a -shorter- buffer time. These parameters are backend-dependent.\n", + "\n", + "**Code**\n", + "\n", + "The code blocks below walk through constructing the requisite experiments to estimate the $T_{1}$ time of a qubit, sending those experiments to a simulator, and then fitting the data the simulator sends back." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-12-18T15:34:52.275440Z", + "start_time": "2018-12-18T15:32:05.667514Z" + } + }, + "outputs": [], + "source": [ + "# 12 numbers ranging from 10 to 1000, logarithmically spaced\n", + "# extra point at 1500\n", + "num_of_gates = np.append((np.logspace(1, 3, 12)).astype(int), np.array([1500]))\n", + "gate_time = 0.1\n", + "\n", + "# Select the qubits whose T1 are to be measured\n", + "qubits = [0]\n", + "\n", + "# Generate experiments\n", + "circs, xdata = t1_circuits(num_of_gates, gate_time, qubits)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One of the features of the fitters are that we can split the circuits into multiple jobs and then give the results to the fitter as a list. Demonstrated below." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Set the simulator with amplitude damping noise\n", + "t1 = 25.0\n", + "gamma = 1 - np.exp(-gate_time/t1)\n", + "error = amplitude_damping_error(gamma)\n", + "noise_model = NoiseModel()\n", + "noise_model.add_quantum_error(error, 'id', [0])\n", + "\n", + "# Run the simulator\n", + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "shots = 200\n", + "backend_result = qiskit.execute(circs, backend,\n", + " shots=shots, noise_model=noise_model).result()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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Tp0gs95OWL8+6HCMKda8efOoXbs2WSEtPWrUqMF7773H+eefX+rz5efn07dvX1JTU3nyySf3rE9PTwfg+uuvp1GjRjRo0IDrrruOKVOm7PtNeDIyCvsNp6en7/U50tAbK1eupHnz5lSrFr1habNmzQBX7NSsWTOSkgq//po3b86qVasAmDBhwp6GCGeeeSYHHXQQo0aN4u677+aAAw6gd+/erF69muXLl7N69Wrq1au3Z3nggQdYt25dsTGVdP0CmSHFHjVq1CA7O5vVq1fvNaRO8+bN97wPjbVVq1Z7Yo0Xv814TwQU2AK0jbC9co6Im5/vKkV69IDRo4OOxiSS4sbkqlGj+O0NGrBjypTow0x4X3SlMXfuXNq1a1fkiyUlJYWGDUuclXQvqrqn7mHKlClFBtvbb7/99hrWJRF66Tdr1owVK1awe/fuqEmkIM7GjRuzcuVK8vPz93yJr1ixgkMOOQSAPn360KdPnyLHXnLJJVxyySVs2bKFQYMGMXToUAYPHkxWVhY//vhjqWIq6frFadSoEatWrUJV99zPihUraNVqT8+HPbGuWrWKW265haFDhzI+Tj2hfT2BqGpWCUvkJhgVXVISn+zuxNqxU8FGjTcJrDT1HyW55pprWLRoEZMnT97zxBHqsssu44knnuC3335j06ZNPPXUU5x99tkRz7V792527txJXl4eeXl57Ny5My6toI477jgaNWrEbbfdxrZt29i5cyeff/55xH07duxIjRo1eOihh8jNzWXWrFlMnjx5rzqTAosXL+ajjz5i165dpKWlkZ6eTlJSEscddxy1a9dmxIgR7Nixg7y8PBYuXMjXX39dbEylvX6oTp06Ua1aNR5//HFyc3N58803+eqrr0qMNV4qwlAmgfqwTi+W7mrM2k+WBB2KMVHNmzevVAnk6quv5uqrr95r/fLlyxkzZgxz584lMzNzT1HOhAkT9uxz55130qFDBw455BDatGlDu3btGDZs2J7tBZXeAPfffz/p6ek8+OCDvPzyy6Snp8elw1tycjKTJ0/mp59+4sADD6Rp06ZMmjQp4r6pqalMnjyZqVOn0qBBAwYPHsy4ceM49NBDI+6/a9cubrvtNho0aEBmZia//fYb//jHP0hOTubdd99l7ty5ZGVl0aBBA6688ko2b95cbEylvX547G+++SZjx46lfv36TJo0iV69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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "# Fit the data to an exponential\n", + "# The correct answers are a=1, and c=0, and t1=25/15 for qubit 0/2\n", + "# The user does not know the correct answer exactly,\n", + "# so starts the fit from a different but close location\n", + "\n", + "initial_t1 = t1*1.2\n", + "initial_a = 1.0\n", + "initial_c = 0.0\n", + "\n", + "fit = T1Fitter(backend_result, xdata, qubits,\n", + " fit_p0=[initial_a, initial_t1, initial_c],\n", + " fit_bounds=([0, 0, -1], [2, initial_t1*2, 1]))\n", + "\n", + "fit.plot(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Measuring $T_2^*$ time\n", + "\n", + "**Theory**\n", + "\n", + "Amplitude damping noise affects the off-diagonal elements of the density matrix in addition to the on-diagonal elements. However, there are other noise processes that only affect the off-diagonal elements, while keeping the on-diagonal elements the same. These kinds of noise processes cause _decoherence_.\n", + "\n", + "As a simple example of decoherence, consider the pure superposition state\n", + "$$| \\psi(\\theta) > = \\frac{1}{\\sqrt{2}}\\left(|0> + e^{i\\theta} |1>\\right).$$\n", + "Expressed as a density matrix, this state is\n", + "$$\\rho(\\theta) = | \\psi(\\theta) >< \\psi(\\theta) | = \\frac{1}{2}\\begin{pmatrix}1 & e^{-i\\theta} \\\\ e^{i\\theta} & 1\\end{pmatrix}.$$\n", + "\n", + "This state has _coherence_ between $|0>$ and $|1>$, which manifests itself in the non-zero off-diagonal terms. If the state had _decohered_, those off-diagonal terms would be zero:\n", + "$$\\rho_{\\mathrm{decohered}} = \\frac{1}{2}\\begin{pmatrix}1 & 0 \\\\ 0 & 1\\end{pmatrix}.$$\n", + "When the state has decohered, it can be written as a classical _mixture_:\n", + "$$\\rho_{\\mathrm{decohered}} = \\frac{1}{2}\\left(|0><0| + |1><1| \\right).$$\n", + "\n", + "One mechanism by which decoherence happens is _dephasing_. Under dephasing noise, the state of the qubit evolves as\n", + "$$\\rho(t) = \\begin{pmatrix}\\rho_{00} & e^{-\\Gamma_{2}t}\\rho_{01} \\\\ e^{-\\Gamma_{2}t}\\rho_{01}^{\\star} & \\rho_{11}\\end{pmatrix} \\underset{t\\rightarrow \\infty}{\\longrightarrow} \\begin{pmatrix}\\rho_{00} & 0\\\\ 0& \\rho_{11}\\end{pmatrix}.$$\n", + "\n", + "The time evolution of $\\rho$ under dephasing noise can be derived as the continuous-time limit of the following noise channel:\n", + "$$\\mathcal{E}[\\rho] = M_{0}\\rho M_{0}^{\\dagger} + M_{1} \\rho M_{1}^{\\dagger} + M_{2}\\rho M_{2}^{\\dagger},$$\n", + "where\n", + "$$M_{0} =\\sqrt{1-p}I~,~M_{1} = \\sqrt{p}\\begin{pmatrix}1 &0 \\\\ 0 & 0 \\end{pmatrix}~,~M_{2} = \\sqrt{p}\\begin{pmatrix}0 & 0 \\\\ 0 & 1\\end{pmatrix}.$$\n", + "\n", + "\n", + "The rate of decay in the coherences can be measured by the following experiment:\n", + "\n", + "* Prepare the qubit in the $|+>$ state, which can be done by initializing the qubit to $|0>$ and applying a Hadamard gate, $H$.\n", + "* Wait a delay time $t_{j}$.\n", + "* Measure the qubit in the $| \\pm >$ basis, which can be done by applying a Hadamard and then measuring in the computational basis.\n", + "\n", + "If decoherence processes are present, then after a delay time $t_{j}$, the state of the qubit is\n", + "\n", + "$$\\rho(t_{j}) = \\frac{1}{2}\\begin{pmatrix}1 & e^{-\\Gamma_{2}t_{j}} \\\\ e^{-\\Gamma_{2}t_{j}} & 1\\end{pmatrix}.$$\n", + "\n", + "Measuring in the $| \\pm >$ basis, the probability of observing the outcome $|+>$ is given by\n", + "\n", + "$$P_{+}(t_{j}) = \\mathrm{Tr}\\left(|+><+| \\rho(t_{j})\\right) = \\frac{1}{2}\\left(1 + e^{-\\Gamma_{2}t_{j}}\\right).$$\n", + "\n", + "Again, by estimating $P_{+}(t_{j})$ for a variety of $t_{j}$, we can then fit a decay curve to extract an estimate of $\\Gamma_{2}$.\n", + "\n", + "In the actual experiment, we change the phase of the pulse before the measurement in order to create oscillations in the observed dynamics of $P_{+}(t_{j})$. If we just did two Hadamard gates separated by a delay, we would observe a decay of characteristic time $T^*_2$, but with a strong dependence on any deviation of the calibrated qubit frequency from the actual one. By implementing the qubit pulses with different phases, we shift the frequency dependence into the oscillating feature of the dynamics, and can fit the decaying envelope for a more faithful measure of the coherence time." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
        \n", + "\n", + "There is one subtle point of note. In the discussion of $T_{1}$ time above, we saw that amplitude damping noise also causes the off-diagonal elements to decay (at a rate $\\Gamma_{1}/2$). Suppose a qubit was affected by only amplitude damping noise, and dephasing noise was absent. In this scenaro, _the rate of decay of coherences can be non-zero, even in the absense of dephasing noise_.\n", + "\n", + "For this reason, it's important to recognize there are many noise processes contributing to the rate at which coherences decay. In this tutorial, we assume that the total rate of decoherence, $\\Gamma$, can be decomposed into a sum of independent rates:\n", + "\n", + "$$\\Gamma = \\Gamma_{T_{1}} + \\Gamma_{2} + \\Gamma_{\\mathrm{other}}. $$\n", + "\n", + "Phenomenologically, the rate $\\Gamma_{\\mathrm{other}}$ quantifies the rate of decoherence due to other noise processes in addition to pure amplitude damping and pure dephasing about the $Z$-axis. Note that because general noise can cause dephasing about the $Z$-axis -- in addition to doing other things to the qubit -- echo sequences are typically used to help mitigate the effects of those kind(s) of noise on $T_{2}^{\\star}$. (Echo sequences are discussed below, in the sections $T_{2}$ echo and CPMG measurement.)\n", + "\n", + "If decoherence at a rate $\\Gamma$ is taking place, then the state of the qubit changes as\n", + "$$\\begin{equation}\n", + "\\rho(t) = \\begin{pmatrix}\\rho_{00} & e^{-\\Gamma t}\\rho_{01} \\\\ e^{-\\Gamma t}\\rho_{01}^{\\star} & 1-\\rho_{00}\\end{pmatrix}.\n", + "\\end{equation}$$\n", + "\n", + "The timescale associated with this decay rate is called $T_{2}$, and is given by $T_{2} = 1/\\Gamma$.\n", + "\n", + "\n", + "$T_{2}$ relates to the other timescales introduced previously as\n", + "$$T_{2} = \\left(\\frac{2}{T_{1}} + \\frac{1}{T_{2}} + \\frac{1}{T_{\\mathrm{other}}}\\right)^{-1} = T_{2}^{\\star}\\left( 1 + \\frac{2T_{2}^{\\star}}{T_{1}} + \\frac{T^{\\star}_{2}}{T_{\\mathrm{other}}}\\right)^{-1} \\leq T_{2}^{\\star},$$\n", + "where we've defined $T_{\\mathrm{other}} = 1 /\\Gamma_{\\mathrm{other}}$.\n", + "\n", + "
        " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2018-12-18T15:34:52.275440Z", + "start_time": "2018-12-18T15:32:05.667514Z" + } + }, + "outputs": [], + "source": [ + "# 50 points linearly spaced in two regions (fine and coarse)\n", + "# 30 from 10->150, 20 from 160->450\n", + "num_of_gates = np.append((np.linspace(10, 150, 30)).astype(int), (np.linspace(160,450,20)).astype(int))\n", + "gate_time = 0.1\n", + "\n", + "# Select the qubits whose T2* are to be measured\n", + "qubits = [0]\n", + "\n", + "# Generate experiments\n", + "circs, xdata, osc_freq = t2star_circuits(num_of_gates, gate_time, qubits, nosc=5)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "\n", + "# Set the simulator with phase damping noise\n", + "t2 = 10\n", + "p = 1 - np.exp(-2*gate_time/t2)\n", + "error = phase_damping_error(p)\n", + "noise_model = NoiseModel()\n", + "noise_model.add_quantum_error(error, 'id', [0])\n", + "\n", + "# Run the simulator\n", + "shots = 300\n", + "backend_result = qiskit.execute(circs, backend,\n", + " shots=shots, noise_model=noise_model).result()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEvCAYAAABrI5dsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzsnXl4VNXZwH9vliEhiewmgECCKFUUQVCEikQUV6y7UDGKKxXFre2nrQuo1YpbFXGJthWJilpFrQuuELQugCgCyqYEkFVlD2TP+/1xZkIymZncSWZNzu957jNzzz33nPfeTO57zznvIqqKxWKxWCzBkhBtASwWi8USn1gFYrFYLJZGYRWIxWKxWBqFVSAWi8ViaRRWgVgsFoulUVgFYrFYLJZGYRWIxWKxWBqFVSCWZoGI5IrIpGjLYbG0JKwCscQ1InK5iFxUa/8oEbk/mjJZLC0Fq0As8c40YD/g78Bo93ZfMA2ISI6IvCEiv4iIisi0kEsZQURkrPs6ch3Wz3XXHxteySzNDatALDGBiKSLSJX7QeZka1/r9NrxeKrdWzBMA4YBk4E8IL9JF9MMEJF+IjJJRLKDPC9BRG4UkeUiUioiP4nIQyKSFh5JLdEkKdoCWCxukoBLvMquBoYAfwK21CovU9Vt7u9jgWLgL0Au8C7wV+D/nHQqIq2AocBUVX2wkbLHO58AqUBFrbJ+wESgEFgTRFv/AK4DXgceAg5x7/cXkRNVNVjlbolhrAKxxASqugN4vnaZiNwIlAKPqmqln/P+5a6b696fD8wPoutMQIBtDVUMFhFJBFqp6t5Qtx1K3A/10qa2IyJ9gAnATFU9t1Z5ETAFM734YlP7scQOdgrLEpOISDJwGLDYn/KojaoWquqkIPuYBqx1706sNT2W6z7eUUQed0/DlLs/HxeRDj7a8qw7nCgit4vIj5iH8gUNyNBNRF4RkZ0isktE3hKRA0VkjYgU1qo3yd1+to826tStRZL7vLUiUiYii0VktI/z66yBuK3ZnnUfnlPrvkwLdC3A7zHK+BGv8meAvcBF9c6wxDV2BGKJVfoALuCbMPaRDyzCTLu8Dsx0ly8TkTbA50Av4N/A10B/zLTacBE5WlV3+2jzQSAZ89DcBazw17mItMVMH3UDngK+x6zFzMFMKTWVyUAa8IR7/1JghoikqOq0AOfNBDoDVwH3Asvc5T820N9RmPWnOiNAVS0VkUXu45ZmhFUgllilv/vz63B1oKpfiMgmjAJZrKo1U2gicg9wEHCNqj5Rq3wRMBWzxnK7j2ZTgf4Op63+D8gGLlNVzxv/EyLyCHB9Iy7Jm45AX1XdCSAiTwGLgYdF5GVVLfF1kqouFpEvMArkQ1UtdNhfF+BXVS3zcWwDMEREXKpaHuyFWGITO4VliVWOdH+GcwQSiLOBX4Cnvcrz3eVn+znvySDWPM7CGAdM9yqf7FTIBnjSozwA3N+fAtphDA5CTWvAl/KAfWssrcPQryVKWAViiVX6A5XAkij1nwOs8F5/ce+vBHr6OW9lEH30BFapapVXH5uAHUG0449lPsq+r9V3qNkLtPJzLKVWHUszwSoQS8whIgnAEcAyVW2ydVCECdcDMlDu6ViZit4IdHSbRnvTFTO9ZaevmhFWgVhikYOAdHysf4hIKxF5RkRWi8huEVkpIhPCIMNqoLeI1Hk4u/cPdh8PRR8Huc19a/fRGWjrVddjZtzeq24KZsHbF4f4KDu0Vt+BCKSw/LEA80w5unahW8Z+wFeNaNMSw1gFYolFAq1/JAGbgZOANhgz2dtEJKC5bCN4A+gEXOFVfqW7/PUQ9PEmxg/lYq/ym33U9UyNnehVfiP+/4+vdluTAeD+/gfM9NjcBmQrdn+2D1irLi9jFM8NXuVXYtY+XgiiLUscECtDX4ulNn4tsFR1D3WtnxaJyH+BY4FXQijD/cD5wOMiciRGmfUHLseY5oYiYOP9wIXAMyIyAPgOs7g9GPjVq+5H7n7vcvuhFGGu+RgfdT38CswTEY+F16VAd+AKBwv9CzAmubeKSDtgD1CkqvP8naCqS0TkceBaEZmJiQrg8USfi3UibHbYEYglFumPeZP9tqGKbofDoRjz1JDhtlj6Lcbq6jSMJ/VpGCumY/34gATbx3aM7G9gRiGTMW/qx2Me2LXrVgG/w4QWmYAJGOnC+I3UqVuLmzGjgmuAuzChSsZ4vPcbkG0dcBnGLPlJYAbGB6YhbsCEnukDPI7xPn8MGGnDmDQ/RLUxU50WS2wgIvmYKa/fNqcFWhFZA6xR1dwoi2Kx+MVOYVniFhF5GDPdM7w5KQ+LJV6wCsQSl7i9tU/AKA9/awAWiyWMWAViiTtEZAowHDheVX+JtjwWS0vFroFY4goR6YHJT1GG8VT38KmqnhoVoSyWFopVIBaLxWJpFNaM12KxWCyNolmvgXTs2FGzs7MD1tmzZw9paTZdc23sPamPvSf1sfekPs3lnixcuPBXVe3UUL1mrUCys7P56qvA4XcKCwvJzc2NjEBxgr0n9bH3pD72ntSnudwTEVnbcC07hWWxWCyWRmIViMVisVgahVUgFovFYmkUVoFYLBaLpVE060V0i6WxVFRUsH79ekpLTULENm3asGyZrwyxLRd7T+oTT/ckJSWFAw44gOTk5Ea3YRWIxeKD9evXk5GRQXZ2NiLC7t27ycjIiLZYMYW9J/WJl3uiqmzdupX169eTk5PT6HbsFJbF4oPS0lI6dOiAiERbFIsl5IgIHTp0qBlhNxarQCwWP1jlYWnOhOL3bRWIH3JzzWaxWCwW31gFYrE0Q7Zv386aNWuYNm0a27dvj7Y4lmaKXUS3WJohCxcuZNasWaxZs4aKigquvPLKaItkaYY4HoGIyCUi8p6IfC8iq722H8MpZDQoL4edO2Hz5mhLYrFY/NGnTx8KCwujLUZUGTt2LLfddltU+nakQETkduBZoAuwCJjrtX0SLgGjQUEBzJsHS5ZAz55m32KJFZ577jnS09NJT08nJSWFxMTEmv22bdtSVlbGgAEDmDBhAmeccQbnnXdeUO1PnTqVgQMH0qpVK8aOHev3eMeOHX0e91BWVsbll19Ojx49yMjIoF+/fsyaNSvIqw3Md9991yyCF8YrTqewLgceVdUbwylMLLB5M4wbB9XVZr+kxOyPGAFZWdGVzWIBuOSSS7jkkksAuOuuu1i4cCFvvvlmnTqtWrWiXbt2AR/w/ujSpQu33XYb77//PiUlJX6Pv/3221RWVvpowVBZWUm3bt2YO3cu3bt359133+WCCy5gyZIlNJRmIZxUVlaSlGRn70OB0ymsDsBb4RQkVigqguTkulkaXS5TbrHEGosWLeKII44IaZvnnHMOZ511Fh06dAh4vF27dgHbSUtLY9KkSWRnZ5OQkMDIkSPJyclh4cKFfs/Jzs7mgQceoG/fvqSlpXH55ZezZcsWTj31VDIyMjjxxBPrGAVkZ2fz0UcfAfDTTz9xzjnn0KlTJzp06MC1115bp97kyZNr2l2yZAm5ubm0bduWPn368N///jfgtUyePJmuXbuSkZFB7969+fjjjwHYuHEj5557Lp06dSInJ4cnn3yyznn+ZFq2bFnA/rOzs3nwwQfp27cvbdq0YdSoUTU+G9988w1HHnkkGRkZdcobkjUcOFUgc4HQ/kpjlJwcqCivq0DKy025xRJrLFq0iH79+gV93vjx4xk/fnwYJPLPli1bWLlyJX369AlY77XXXuPDDz9k5cqVvPXWW5x66qnce++9/PLLL1RXVzNlypR651RVVTFy5Eh69OjBmjVr2LBhA6NHj65TZ8aMGbzzzjv8+uuvnH322Zx00kn8/PPPPPbYY4wZM4YVK1b4lGfFihVMnTqVBQsWsHv3bt5//32ys7Oprq7mjDPO4IgjjmDDhg18/PHHPPnkk7z//vsBZaqoqOCMM85osP9XXnmF9957j6KiIhYvXsy0adMoLy/nrLPOIi8vj23btnH++efz2muvNShruHCqQG4ALhWRi0Wko4gkeG/BdCoi40WkSERKRWShiAxtoP6FIrJIRPaKyGYReV5EwjKhlJUF+VPKSWUvqVJKairk59vpK0vssWvXLtasWdMoBfLEE0/wxBNPhEEq31RUVDBmzBguueQSfvOb3wSsO2HCBDIzM+natStDhw5l0KBB9O/fn5SUFM4++2y++eabeufMnz+fjRs38sADD5CWlkZKSgrHHntsnTrXXXcd3bp1Y9GiRRQXF3PLLbfgcrkYPnw4I0eOZMaMGT7lSUxMpKysjO+//56Kigqys7M58MADWbBgAb/88gt33HEHLpeLnj17cskll/DSSy8FlOnLL7901P91111Hly5daN++PWeccQaLFi3iyy+/pKKightuuIHk5GTOO+88jjrqqAZlDRdOH/wrgcMwC+lbgAqvrdxphyIyCngUuBfoD3wOzBKR7n7q/xYoAJ4D+gBnAYcCLzjtM1jyrkxhScIR3NbhCVavhry8cPVksTSeb7/9loyMjCbFMooE1dXV5OXl4XK5mDp1aoP1MzMza76npqbW2y8uLq53zk8//USPHj0Crm1069YNMNNO3bp1IyFh3+OvR48ebNiwAYAXXnihxijh1FNPpVevXjzyyCNMmjSJ/fffn9GjR7Nx40bWrl3Lxo0badu2bc320EMPsWXLloAyNdS/h6xab62tW7emuLiYjRs30rVr1zpe5D169Kj57k/WcOF0JekuQBus5YybgGmq+ox7f4KInAJcDfzFR/3BwHpV/Yd7v0hEHgMe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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "# Fit the data to an oscillator\n", + "# The correct answers are a=0.5, f=osc_freq, phi=0, c=0.5, and t2=10/5 for qubit 0/2\n", + "# The user does not know the correct answer exactly,\n", + "# so starts the fit from a different but close location\n", + "\n", + "initial_t2 = t2*1.1\n", + "initial_a = 0.5\n", + "initial_c = 0.5\n", + "initial_f = osc_freq \n", + "initial_phi = -np.pi/20\n", + "\n", + "fit = T2StarFitter(backend_result, xdata, qubits,\n", + " fit_p0=[initial_a, initial_t2, initial_f, initial_phi, initial_c],\n", + " fit_bounds=([-0.5, 0, 0, -np.pi, -0.5],\n", + " [1.5, 2*t2, 2*osc_freq, np.pi, 1.5]))\n", + "\n", + "fit.plot(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Measuring T2 Time using a single echo pulse" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have referred to the previous experiment's characteristic time as 𝑇∗2 and not 𝑇2\n", + "\n", + "by analogy to nuclear magnetic resonance (NMR). Indeed, one can isolate different frequency components to the decoherence process by devising increasingly elaborated pulse sequences. To illustrate the analogy with NMR, one can think about an ensemble of nuclear spins precessing in an external DC magnetic field. Due to field inhomogeneities, each spin might precess with a slightly different Larmor frequency. This certainly will affect the observed coherence time of the ensemble. However, it is possible to echo away this low-frequency decoherence process by applying a pi-pulse to the system halfway through the delay. The effect of this pi-pulse is to reverse the direction of the precession of each individual spin due to field inhomogeneities. Thus, the spins that had precessed more now start precessing in the opposite direction faster than the spins that had precessed less, and after an equal delay, all the spins in the system recover the initial coherence, except for other, higher-frequency, decoherence mechanisms.\n", + "\n", + "Here, we are measuring only a single qubit rather than an ensemble of spins. Consequently coherence measurements require averaging an ensemble of measurements in order to eliminate projection noise, and run-to-run fluctuations in the qubit's frequency which will similarly manifest themselves as decoherence if they are not canceled out. By running this 𝑇2\n", + "echo sequence, we can therefore remove low-frequency components of the decoherence." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "ExecuteTime": { + "end_time": "2018-12-18T15:34:52.275440Z", + "start_time": "2018-12-18T15:32:05.667514Z" + } + }, + "outputs": [], + "source": [ + "# 50 points linearly spaced to 300\n", + "num_of_gates = (np.linspace(10, 300, 50)).astype(int)\n", + "gate_time = 0.1\n", + "\n", + "# Select the qubits whose T2 are to be measured\n", + "qubits = [0]\n", + "\n", + "# Generate experiments\n", + "circs, xdata = t2_circuits(num_of_gates, gate_time, qubits)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "\n", + "# Set the simulator with phase damping noise\n", + "t2 = 10\n", + "p = 1 - np.exp(-2*gate_time/t2)\n", + "error = phase_damping_error(p)\n", + "noise_model = NoiseModel()\n", + "noise_model.add_quantum_error(error, 'id', [0])\n", + "\n", + "# Run the simulator\n", + "shots = 300\n", + "backend_result = qiskit.execute(circs, backend,\n", + " shots=shots, noise_model=noise_model).result()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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hx9+4G9/+xsjRoxg8eLFQWVavHgxDz/8MPPmzWPLli1Mnz6d7t27U1VVxZAhQ+jTpw8rV67knXfe4cEHH2T69OlhZdq5c+ce7Z9zzjm12n/++ed58803KS0t5bPPPmPixIkAVFRU8Ktf/Yphw4axceNGzjzzTF588cU95Fy1alWNnHFDVes8gNeAa7yUTaajX79+GsjMmTP3SAtk0iTVjAzVzMwqzctz58mMlz6lEqnUn6+++spTuZ9++inOkoRn8+bNKiL67bff1qTNmTNHBw4cqEcddZQOHTpUKyoq6qynoqJCi4qKdMyYMVpRUaHTp0/X7OxsHTx4cNjyY8eO9VS+W7du+vTTT9ecn3766XrJJZfUnD/00EN62mmn1So/Y8YM/eCDD7Rt27a6c+fOkPX+4x//qDmfNWuWdujQQSsrK2vSzjjjDL3tttuCXv/1119ru3btdMaMGbX+Th9++KF26dKlVtm7775bhw8fHlamYO0PHTq0pv1u3brp5MmTa/Kuu+46HTlypKqqvvfee9qxY0etqqqqyR80aJD+8Y9/rCXnhg0bgvbFn1D/v8BH6uEZ63UEcjVwgYicJyJtRSQj8IiXgksEw85VXssfyp9aPcDSpTBsWKIlMlKK6kVEfkf2E0+4vG3bgubje7tk/frg+VOmuPzvv49KpE8//ZT8/PxaYSu6dOnCu+++y6xZs+jevTv/+c9/6qwnOzubV155henTp1NYWMj999/P//3f/7HXXnuFLf/66697Kg/QoUOHmu95eXl7nJeVle1xzffff0+3bt3IygodnalLly4131etWkWXLl1qLQLt2rUrK1eu5JlnnqlxNDj55JMB2GeffXjwwQe5/fbbad++PUOHDmXVqlUsX76cVatW0bJly5rj7rvvZu3atWFlCtZ+t27dWLlyZc15YWFhzfemTZvW9HvVqlV07ty51kLAbt267SHn3nvvXSNnvPD64F8CHIAzpK8FdgYcFXGRLlGIkN0kg0s33U1hq8i9VAwj2ViwYAEHHXRQrYdOx44dycvLAyAnJ8fzivqDDjqIadOmsWHDBqZPn87SpUs57LDDwpZ/7733PJePhi5duvDdd9+FNZD7971Tp058//33VFVV1aR9//33dO7cmXPOOafG0WDatGk1+WeffTbvv/8+y5cvR0S44YYb6NKlC0VFRWzatKnm2LJl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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "# Fit the data to an exponent\n", + "# The correct answers are a=1, c=0, and t2=10/5 for qubit 0/2\n", + "# The user does not know the correct answer exactly,\n", + "# so starts the fit from a different but close location\n", + "\n", + "initial_t2 = t2*1.1\n", + "initial_a = 0.5\n", + "initial_c = 0.5\n", + "\n", + "fit = T2Fitter(backend_result, xdata, qubits,\n", + " fit_p0=[initial_a, initial_t2, initial_c],\n", + " fit_bounds=([-0.5, 0, -0.5],\n", + " [1.5, 2*t2, 1.5]))\n", + "\n", + "fit.plot(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Measuring T2 Time by a CPMG sequence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As explained above, the echo sequence removes low-frequency decoherence mechanisms. This noise-filtering procedure can be extended with increased number of pi-pulses within the delay. In the following experiment, we implement an echo experiment with seven pi-pulses during the delay between the initial and final pulses. This kind of echo with several pi-pulses is referred to as a CPMG experiment, after Carr, Purcell, Meiboom, and Gill." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "ExecuteTime": { + "end_time": "2018-12-18T15:34:52.275440Z", + "start_time": "2018-12-18T15:32:05.667514Z" + } + }, + "outputs": [], + "source": [ + "num_of_gates = (np.linspace(1, 30, 30)).astype(int)\n", + "gate_time = 0.1\n", + "\n", + "# Select the qubits whose T2 are to be measured\n", + "qubits = [0]\n", + "\n", + "# Echo parameters\n", + "n_echos = 5\n", + "alt_phase_echo = True\n", + "\n", + "# Generate experiments\n", + "circs, xdata = t2_circuits(num_of_gates, gate_time, qubits, n_echos, alt_phase_echo)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "\n", + "# Set the simulator with phase damping noise\n", + "t2 = 10\n", + "p = 1 - np.exp(-2*gate_time/t2)\n", + "error = phase_damping_error(p)\n", + "noise_model = NoiseModel()\n", + "noise_model.add_quantum_error(error, 'id', [0])\n", + "\n", + "# Run the simulator\n", + "shots = 300\n", + "backend_result = qiskit.execute(circs, backend,\n", + " shots=shots, noise_model=noise_model).result()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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P/9k5MiRQc/PyMjgrbfe4r333iMnJ4cHH3yQs846i9133z3kPbKzd64fl5WVtcv+li1bdnnPsmXL6NSpE/XqhZ6dyX910pUrV9KhQ4dKg0A7duzIihUrePHFFys6Ghx//PEAdO3alUceeYTbb7+dNm3acM4557By5UqWLFnCypUrad68ecV2zz33sGbNmrAxBbt/p06dWLFiRcV+jt9jj4YNG1bke+XKlbRv377SQMBOnTrtEucee+xREWeseJ0Lq7zF67kQxzWCayWPVq3g/vtdVyxVsKkqjBdBupWWbN5MA4CGDYMer9CqVfjjAUs0ezV79mx69epV6UOnbdu2Fa8zMzM9jajfsGEDS5cuZdiwYdSvX5/69etz4YUXcvPNN3PfffcFfU+vXr2YNm1axX7//v254IILqpWPUDp06MDSpUvZsWNHyELEP+/t2rVj2bJllZZ9XbZsGT179uTcc8/l3HPP3eX9gwcPZvDgwWzatInhw4czcuRIRowYQW5uLr/++usu53/99dchYwp2/6VLl9KtW7cq89q2bVtWrFiBqlbkaenSpeyxxx6V4lyxYgXXX389I0eODNnmVFNeaw534NbtuCPEdmdMoksEl14KV10FNl2FSWLh2j+WLFnCRx99xKBBg6q8TqtWrcjNzeXZZ59lx44dFBQUMH78eHr16hXyPT/88ANFRUVs27aNBx54gFWrVjF06NDqZiWofv360bZtW2688Ua2bt1KUVERX375ZcjzDzzwQBo2bMh9991HSUkJ+fn5fPDBB7u0m5SbP38+n376Kdu3b6dBgwZkZWWRlpZGv379aNKkCaNGjaKwsJDS0lJ++uknZsyYETamYPefNGlSyPv7O/jgg6lXrx6jR4+mpKSEiRMn8u2334aNM1Y8XVlVb1fVf4fbYhZhIlCF556D8ePjHYkx1TJnzpygBcimTZsYMmQI48aNqzSt92WXXcZll10W9FoTJ07k448/pnXr1nTt2pWMjAwefvjhiuPljd7lJkyYQNu2bWnTpg2ffPIJU6ZMqVb34XDS09OZNGkSv/32Gx07dmT33XfnlVdeCXl+ZmYmkyZNYvLkybRq1YoRI0YwduxY9tprr6Dnb9++nRtvvJFWrVqRk5PDH3/8wb333kt6ejrvvvsus2fPJjc3l1atWnHJJZewcePGsDEFu//zzz8f8v6BsU+c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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "# Fit the data to an exponent\n", + "# The correct answers are a=1, c=0, and t2=10/5 for qubit 0/2\n", + "# The user does not know the correct answer exactly,\n", + "# so starts the fit from a different but close location\n", + "\n", + "initial_t2 = t2*1.1\n", + "initial_a = 0.5\n", + "initial_c = 0.5\n", + "\n", + "fit = T2Fitter(backend_result, xdata, qubits,\n", + " fit_p0=[initial_a, initial_t2, initial_c],\n", + " fit_bounds=([-0.5, 0, -0.5],\n", + " [1.5, 2*t2, 1.5]))\n", + "\n", + "fit.plot(0)" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "hide_input": false, + "kernelspec": { + "display_name": "Python 3", + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/ignis/gate_errors.ipynb b/community/ignis/gate_errors.ipynb new file mode 100644 index 000000000..984e7e4aa --- /dev/null +++ b/community/ignis/gate_errors.ipynb @@ -0,0 +1,162 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## _*Gate Errors*_ \n", + "\n", + "\n", + "***\n", + "### Contributors\n", + "David McKay" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "The general form of an arbitrary single qubit gate is a rotation $\\theta$ around some axis in the Bloch sphere with unit vector $\\hat{n}$ such that\n", + "$$U(\\theta,\\hat{n}) = e^{-i \\theta \\hat{n} \\cdot \\sigma} $$\n", + "Physically these rotations are performed by applying some oscillating electromagnetic field at the qubit frequency to the location of the qubit. It is not necessary to calibrate all such rotations, only a few rotation angles and axes are enough. At minimum we need a $\\pi/2$ rotation ($\\theta=\\pi/4$) along two orthogonal axis. So then the calibration question becomes how to tell that the gate $X90p$ ($\\pi/2$ around $X$) is really $ e^{-i \\frac{\\pi}{4} \\sigma_X} $?\n", + "\n", + "Here we will look at different sequences to amplify possible errors in the gate.\n", + "\n", + "\n", + "**Contents**\n", + "\n", + "[Amplitude](#sect1)\n", + "\n", + "[Phase](#sect2)\n", + "\n", + "\n", + "### References\n", + "\n", + "[1] David C. McKay, Christopher J. Wood, Sarah Sheldon, Jerry M. Chow and Jay M. Gambetta. Efficient Z-Gates for Quantum Computing. https://arxiv.org/abs/1612.00858" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Code imports\n", + "==============" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-12-18T15:13:54.475305Z", + "start_time": "2018-12-18T15:13:53.026353Z" + } + }, + "outputs": [], + "source": [ + "# Import general libraries (needed for functions)\n", + "import numpy as np\n", + "import time\n", + "\n", + "# Import Qiskit classes\n", + "import qiskit \n", + "from qiskit import QuantumRegister, QuantumCircuit, ClassicalRegister, Aer\n", + "from qiskit.providers.aer import noise\n", + "from qiskit.tools.visualization import plot_histogram\n", + "\n", + "# Import measurement calibration functions\n", + "from qiskit.ignis.mitigation.measurement import (complete_meas_cal,\n", + " CompleteMeasFitter, MeasurementFilter)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Amplitude Error\n", + "\n", + "Consider a gate which is a X90p, but with a slight rotation error. \n", + "$$U = e^{-i (\\pi/2+d\\theta) \\sigma_X/2} $$\n", + "One way to measure $d\\theta$ would be to apply the gate starting with the qubit in the ground state and look at the $|0\\rangle$ and $|1\\rangle$ counts. However, the signal could be lost in the noise. To amplify the roration error we continually apply the gate in groups of 2,\n", + "$$U = X90p-[X90p-X90p]^n$$\n", + "\n", + "To predict the outcome we expand using Euler's formula,\n", + "$$X90p = \\text{cos}\\left(\\frac{\\pi}{4}+\\frac{d\\theta}{2}\\right)I - \\text{sin}\\left(\\frac{\\pi}{4}+\\frac{d\\theta}{2}\\right) \\sigma_X $$\n", + "$$X90p^{2n+1} = \\text{cos}\\left(n\\frac{\\pi}{2}+nd\\theta+\\frac{\\pi}{4}+\\frac{d\\theta}{2}\\right)I - \\text{sin}\\left(n\\frac{\\pi}{2}+nd\\theta+\\frac{\\pi}{4}+\\frac{d\\theta}{2}\\right) \\sigma_X $$\n", + "and the population in the excited state is\n", + "$$ P_{|1\\rangle, 2n+1} = \\text{sin}^2\\left(n\\frac{\\pi}{2}+nd\\theta+\\frac{\\pi}{4}+\\frac{d\\theta}{2}\\right) $$ \n", + "$$ P_{|1\\rangle, 2n+1} = \\frac{1}{2}-\\frac{1}{2}\\text{cos}\\left(n\\pi+2nd\\theta+\\frac{\\pi}{2}+d\\theta\\right) $$ \n", + "$$ P_{|1\\rangle, 2n+1} = \\frac{1}{2}+\\frac{(-1)^n}{2}\\text{sin}\\left(2nd\\theta+d\\theta\\right) $$ \n", + "for small $d\\theta$ this amplifies the error by $n$,\n", + "$$ P_{|1\\rangle, 2n+1} \\approx \\frac{1}{2}+\\frac{(-1)^n d\\theta}{2}(2n+1) $$ \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Phase Error\n", + "\n", + "A phase error means that the angle between the X90p and Y90p is not perfectly $\\pi/2$. We assume the amplitude is correct so,\n", + "$$X90p = e^{-i \\frac{\\pi}{4}\\sigma_X}$$\n", + "$$Y90p = e^{-i \\frac{\\pi}{4}\\left[\\text{cos}(d\\phi)\\sigma_Y+\\text{sin}(d\\phi)\\sigma_X\\right]}$$\n", + "The angle error can be amplified by the sequence\n", + "$$X90p-[\\{Y90p\\}^2 \\{X90p\\}^2]^n - Y90p$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "anaconda-cloud": {}, + "celltoolbar": "Tags", + "hide_input": false, + "kernelspec": { + "display_name": "Python 3", + "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.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/ignis/hamiltonian.ipynb b/community/ignis/hamiltonian.ipynb new file mode 100644 index 000000000..c801423f9 --- /dev/null +++ b/community/ignis/hamiltonian.ipynb @@ -0,0 +1,421 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## _*Hamiltonian Parameters*_ \n", + "\n", + "\n", + "***\n", + "### Contributors\n", + "David McKay" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "The basic architecture of a quantum device for superconducting transmon qubits [[1](#ref1)] is that of several qubits coupled together by resonant bus structures. This can be described by the Hamiltonian \n", + "$$H = \\sum_{i=0}^{N_{\\text{qubits}}} \\left(\\omega_i \\hat{n}_{i} + \\alpha_i \\frac{\\hat{n}_i}{2} (\\hat{n}_i-1) \\right) + \\sum_{j=0}^{N_{\\text{bus}}} \\omega_{\\text{bus},i} \\hat{n}_{\\text{bus},j}+ \\sum_{i,j} g_{ij} \\left(\\hat{a}_i \\hat{b}_j^{\\dagger} + \\hat{a}_i^{\\dagger} \\hat{b}_j\\right) $$\n", + "\n", + "where $\\omega_i$ is the $0\\rightarrow 1$ frequency of qubit $i$, $\\alpha_i$ is the anharmonicity of the transmon qubit $i$, $\\omega_{\\text{bus},j}$ is the frequency of bus $j$ and $g_{ij}$ is the coupling of qubit $i$ to bus $j$. In a planar architure there will only be a few non-zero values of $g_{ij}$. \n", + "\n", + "**Contents**\n", + "\n", + "[Dressed Basis](#sect1)\n", + "\n", + "[ZZ](#sect2)\n", + "\n", + "[Dispersive Shifts](#sect3)\n", + "\n", + "\n", + "### References\n", + "\n", + "[1] Jens Koch, Terri M. Yu, Jay Gambetta, A. A. Houck, D. I. Schuster, J. Majer, Alexandre Blais, M. H. Devoret, S. M. Girvin and R. J. Schoelkopf. Charge insensitive qubit design derived from the Cooper pair box. https://arxiv.org/abs/cond-mat/0703002\n", + "\n", + "[2] Jerry Chow. Quantum Information Processing with Superconducting Qubits. https://rsl.yale.edu/sites/default/files/files/RSL_Theses/jmcthesis.pdf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Code imports and basis functions\n", + "==============" + ] + }, + { + "cell_type": "code", + "execution_count": 257, + "metadata": { + "ExecuteTime": { + "end_time": "2018-12-18T15:13:54.475305Z", + "start_time": "2018-12-18T15:13:53.026353Z" + } + }, + "outputs": [], + "source": [ + "import numpy as np \n", + "\n", + "# qubit frequency (fq) dressed by resonance fres\n", + "# interacting with g\n", + "def qubit_dressed(fq, fres, g):\n", + " return fq + g**2/(fq-fres)\n", + "\n", + "# exchange interaction between qubits coupled to a \n", + "# common bus\n", + "def J(fq1, fq2, fbus, g1, g2):\n", + " d1 = (fq1-fbus)\n", + " d2 = (fq2-fbus)\n", + " return g1*g2*(d1+d2)/2/d1/d2\n", + "\n", + "# state dependent cavity shift\n", + "def Chi(fq1, fbus, g, alpha):\n", + " d1 = (fq1-fbus)\n", + " d2 = (fq1+alpha-fbus)\n", + " return g**2*alpha/d1/d2\n", + "\n", + "# build an operator from a list\n", + "# using kronecker product\n", + "def multiqop(curop=None, oplist=None):\n", + " if curop is None or len(curop)==0:\n", + " return multiqop(oplist[0],oplist[1:])\n", + " if oplist is None or len(oplist)==0:\n", + " return curop\n", + " \n", + " return multiqop(np.kron(curop,oplist[0]),oplist[1:])\n", + "\n", + "def nop(n=1):\n", + " return np.diag(np.arange(n+1,dtype=complex))\n", + "\n", + "def aop(n=1):\n", + " aop_tmp = np.zeros([n+1,n+1],dtype=complex)\n", + " for i in range(n):\n", + " aop_tmp[i,i+1] = np.sqrt(i+1)\n", + " return aop_tmp\n", + "\n", + "def iop(n=1):\n", + " return np.eye(n+1, dtype=complex)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Dressed Basis\n", + "\n", + "The first assumption made in these systems is that the bus frequency and qubit frequencies are far apart and that the bus is not thermally occupied. Under these assumptions we can rewrite the Hamiltonian in a basis with the bus degrees of freedom removed and an effective coupling between qubits (rewriting without the anharmoncity for simplicity),\n", + "$$H = \\sum_{i=0}^{N_{\\text{qubits}}} \\gamma_i \\hat{n}_{i} + \\sum_{i,j" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ZZ\n", + "\n", + "One of the consequences of the coupling is that there is a small ``ZZ`` term left over after the diagonalization. So \n", + "\n", + "$$H = \\sum_{i=0}^{N_{\\text{qubits}}} \\lambda_i \\hat{\\tilde{n}}_{i} $$\n", + "\n", + "is more realistically\n", + "\n", + "$$H = \\sum_{i=0}^{N_{\\text{qubits}}} \\lambda_i \\hat{\\tilde{n}}_{i} + \\sum_{i,j" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Dispersive Shifts\n", + "\n", + "When the qubit is coupled to a bus there is also a dispersive shift of the bus frequency depending on the state of the qubit. For coupling buses this is neglected (there should be no photons in the bus), however, this concept is the basis for qubit measurement with a separate set of readout buses. \n", + "\n", + "$$H = \\omega \\hat{n} + \\alpha \\frac{\\hat{n}}{2} (\\hat{n}-1) + \\omega_{\\text{bus}} \\hat{n}_{\\text{bus}}+ g \\left(\\hat{a} \\hat{b}^{\\dagger} + \\hat{a}^{\\dagger} \\hat{b}\\right) $$\n", + "\n", + "is \n", + "\n", + "$$H = \\tilde{\\omega} \\hat{n} + \\tilde{\\omega}_{\\text{bus}} \\hat{n}_{\\text{bus}}+ 2\\chi \\hat{n} \\hat{n}_{\\text{bus}} $$\n", + "\n", + "where \n", + "\n", + "$$\\chi = \\frac{g^2}{\\omega-\\omega_{\\text{bus}}} \\frac{\\alpha}{\\omega+\\alpha-\\omega_{\\text{bus}}} $$\n", + "\n", + "We can look at this numerically as the difference of the cavity frequencies with the qubit in $|0\\rangle$ or $|1\\rangle$" + ] + }, + { + "cell_type": "code", + "execution_count": 264, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Chi: -238.359594 kHz\n", + "Chi (Formula): -239.061142 kHz\n" + ] + } + ], + "source": [ + "# Hamiltonian parameters in MHz\n", + "g = [50.]\n", + "alpha = [-330]\n", + "fq = [5000.]\n", + "fbus = 6700.\n", + "\n", + "#Hamiltonian with 1 qubit coupled to the bus\n", + "H1 = Hq(fq, fbus, g, alpha=alpha, qlevels=2, buslevels=3)\n", + "\n", + "eigvals = np.real(np.linalg.eig(H1)[0])\n", + "\n", + "# need to be careful here because \n", + "# of how to track from the bare states\n", + "# this code works ok except near resonances\n", + "inds = [0,0,0]\n", + "bare_e = [fq[0], fbus, fq[0]+fbus]\n", + "closeness = [1000,1000,1000]\n", + "for eind, eigval in enumerate(eigvals):\n", + " for i in range(3):\n", + " if np.abs(eigval-bare_e[i]) Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## _*Measurement Error and Mitigation*_ \n", + "\n", + "\n", + "***\n", + "### Contributors\n", + "David McKay" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "The last step of a typical quantum experiment is to perform a measurement on the qubits in the circuit. Although the qubit state $|\\Psi\\rangle$ (or more generally the density matrix $\\rho$) is the general description of the quantum state, in a typical strong projective measurement our measurement _projects_ the general state into a specific computational state $|x\\rangle$ (where $x$ is a bitstring, e.g., `1001010`) The probability of measuring bitstring $x$ is given by:\n", + "$$P_x = \\mathrm{Trace}(\\langle x|\\rho|x \\rangle)$$\n", + "Therefore, the measurement process is stochastic. The above distribution of $x$ given a state $\\rho$ is true only in the absence of measurement errors. There are multiple sources of possible measurement error, all of which are dependent on the physical mechanism of measurement in the system. For superconducting qubits coupled to readout cavities [[1](#ref1),[2](#ref2),[3](#ref3),[4](#ref4),[5](#ref5)] the state of the qubit is determined by measurement the response of a microwave tone incident on the readout cavity. The cavity signal is measured for some time where $V(t)$ is the complex amplitude of the signal which is converted to a single complex number based on a measurement kernel \n", + "$$V = \\int_0^{T} V(t) K(t) dt $$\n", + "which is then turned into a _bit_ by a nonlinear discriminator [[6](#ref6)]. The simplest example being if $|V| Alexandre Blais, Ren-Shou Huang, Andreas Wallraff, S. M. Girvin, and R. J. Schoelkopf, Cavity quantum electrodynamics for superconducting electrical circuits: An architecture for quantum computation, https://arxiv.org/abs/cond-mat/0402216\n", + "\n", + "[2] Jay Gambetta, Alexandre Blais, D. I. Schuster, A. Wallraff, L. Frunzio, J. Majer, M. H. Devoret, S. M. Girvin, and R. J. Schoelkopf. Qubit-photon interactions in a cavity: Measurement induced dephasing and number splitting\n", + "https://arxiv.org/abs/cond-mat/0602322 \n", + "\n", + "[3] Alexandre Blais, Jay Gambetta, A. Wallraff, D. I. Schuster, S. M. Girvin, M. H. Devoret, and R. J. Schoelkopf. Quantum information processing with circuit quantum electrodynamics. https://arxiv.org/abs/cond-mat/0612038\n", + "\n", + "[4] Jay Gambetta, W. A. Braff, A. Wallraff, S. M. Girvin, R. J. Schoelkopf. Protocols for optimal readout of qubits using a continuous quantum nondemolition measurement. https://arxiv.org/abs/cond-mat/0701078\n", + "\n", + "[5] Jay Gambetta, Alexandre Blais, M. Boissonneault, A. A. Houck, D. I. Schuster and S. M. Girvin. Quantum trajectory approach to circuit QED: Quantum jumps and the Zeno effect. https://arxiv.org/abs/0709.4264\n", + "\n", + "[6] Colm A. Ryan, Blake R. Johnson, Jay M. Gambetta, Jerry M. Chow, Marcus P. da Silva, Oliver E. Dial and Thomas A. Ohki. Tomography via Correlation of Noisy Measurement Records. https://arxiv.org/abs/1310.6448" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Code imports\n", + "==============" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-12-18T15:13:54.475305Z", + "start_time": "2018-12-18T15:13:53.026353Z" + } + }, + "outputs": [], + "source": [ + "# Import general libraries (needed for functions)\n", + "import numpy as np\n", + "import time\n", + "\n", + "# Import Qiskit classes\n", + "import qiskit \n", + "from qiskit import QuantumRegister, QuantumCircuit, ClassicalRegister, Aer\n", + "from qiskit.providers.aer import noise\n", + "from qiskit.tools.visualization import plot_histogram\n", + "\n", + "# Import measurement calibration functions\n", + "from qiskit.ignis.mitigation.measurement import (complete_meas_cal,\n", + " CompleteMeasFitter, MeasurementFilter)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Constructing a Full Calibration Matrix\n", + "\n", + "The assumption of the error mitigation technique is that we can prepare each of the basis states with very low error. Given this assumption, in separate experiments we can prepare one of the $2^n$ states and then measure the outputs in all $2^n$ states. Normalizing these outputs and making each set of output probabilities for a given prepared state the columns of a matrix we obtain the matrix $\\mathbf{A}$ which translates the ideal probability distribution of the state $\\rho$ ($P_\\rho$) into the experimental probability distribution $\\tilde{P}_{\\rho}$\n", + "$$\\tilde{P}_{\\rho} = \\mathbf{A} \\cdot P_{\\rho}$$\n", + "\n", + "\n", + "**Code**\n", + "\n", + "The code below constructs the calibration matrix for 2 qubits with error artificially put into the Aer simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ideal calibration matrix:\n", + "[[1. 0. 0. 0.]\n", + " [0. 1. 0. 0.]\n", + " [0. 0. 1. 0.]\n", + " [0. 0. 0. 1.]]\n", + "Noisy calibration matrix:\n", + "[[0.803 0.22 0.221 0.059]\n", + " [0.104 0.68 0.021 0.195]\n", + " [0.084 0.028 0.674 0.182]\n", + " [0.009 0.072 0.084 0.564]]\n" + ] + } + ], + "source": [ + "# Generate the calibration circuits\n", + "qr = qiskit.QuantumRegister(2)\n", + "meas_calibs, state_labels = complete_meas_cal(qubit_list=[0,1], qr=qr)\n", + "# Generate a noise model for the 2 qubits\n", + "noise_model = noise.NoiseModel()\n", + "for qi in range(2):\n", + " read_err = noise.errors.readout_error.ReadoutError([[0.9, 0.1],[0.25,0.75]])\n", + " noise_model.add_readout_error(read_err, [qi])\n", + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "job_no_noise = qiskit.execute(meas_calibs, backend=backend, shots=1000)\n", + "job_w_noise = qiskit.execute(meas_calibs, backend=backend, noise_model=noise_model, shots=1000)\n", + "cal_results = job_no_noise.result()\n", + "meas_fitter = CompleteMeasFitter(cal_results, state_labels)\n", + "print(\"Ideal calibration matrix:\")\n", + "print(meas_fitter.cal_matrix)\n", + "cal_results = job_w_noise.result()\n", + "meas_fitter = CompleteMeasFitter(cal_results, state_labels)\n", + "print(\"Noisy calibration matrix:\")\n", + "print(meas_fitter.cal_matrix)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see that with noise when we prepare the state $|11\\rangle$ and measure we get counts in states other than $|11\\rangle$" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmEAAAE+CAYAAADFxcf0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl4VeXZ7/HvTULCIEMSU0iCECCIYRA3UI+tGvAVLGhVqrwVh+JQtVqrbTnUobZVe6qeUrV6qtbpbZ3qhGJ9q6JUcYZWjYwSEQgEIQEjICBTQrjPH2snbwhJyIadvWLy+1xXLvZe61nPvjeLkF+e9exnmbsjIiIiIonVLuwCRERERNoihTARERGRECiEiYiIiIRAIUxEREQkBAphIiIiIiFQCBMREREJgUKYiIiISAgUwkRERERCoBAmIiIiEgKFMBEREZEQJIddQJgyMjK8d+/eYZchIiItyPz5879w98zq54WFhd9ITk5+CBiCBi+k6fYAi3fv3n3xiBEjPq+vQZsOYb1792b27NlhlyEiIi1Ienp6Se3nycnJD/Xs2TM/MzNzU7t27XTDZWmSPXv2WHl5+aB169Y9BJxWXxslehERkcYNyczM3KIAJrFo166dZ2ZmbiYYQa2/TQLrERER+TpqpwAmByL676bBrKUQJiIiIhIChTARERGRECiEiYiISLPIy8sb/OKLL3ZpSf1OmTIle8qUKdnxrulAKISJiIh8jeXk5Azt0KHD8E6dOkUyMjKGTZw4MXfz5s0t4uf78uXLP/7ud7+7tSX3e8stt2QOGTIkPyUlZfiZZ56ZG8v+nJycoStWrGh/oK/dppeoEBERORCX3MmI5uz/wZ9RGEv7p556atmECRO2rly5sv1JJ510+HXXXZd17733rq3dprKykvbtDzgvxCSRr3WwcnJyKq+55pqyV155pevOnTv3Ca+N7R87duyX06dP737ttdeWH8hrt4ikLCIiIgevb9++lf/xH/+xuaioqCMEIzXXX399z8MPP3xQ586dh1dWVrJq1ar23/nOd/qnpaUNy8nJGfq73/3uG9XH5+TkDL3uuut69u/ff3DXrl2PmjhxYu727dutev8vf/nLnocddtiQzp07R/r37z/40Ucf7V772LqvlZOTM/Tvf/97l+r9v/nNb3ocfvjhg7p06XLUKaec0q923++++26n/Pz8QZ07d46MHz++3ymnnNLvqquuqveyYe1+m9J3Y84///wvf/CDH3yZkZGxO9b9EyZM+PIf//hH9/qOawqFMBERkVZi+fLl7V9//fVuRx555Pbqbc8991z6yy+/vGzjxo3z2rVrxymnnJI3dOjQ7WVlZQv/+c9/Lr3vvvt6PPfcc12r2z/77LMZr7766qfLli1bVFxc3OHaa6/Nqt6Xl5e365133lm6ZcuWeddee23pj370o74lJSXt63ut+kbCnn/++fRZs2YtW758+aKioqKOd99996EAO3futO9///v9zznnnC82btw4f9KkSRtnzZoVU7hpqO/mNH78+K+Kioo6bdiwIelAjlcIExER+Zo755xz8rp06XJUQUHBEcccc8zWm2++uax632WXXbY+Ly+v8pBDDvG33nqr88aNG5Nvu+22sg4dOvigQYMqfvCDH5Q/+eST6dXtL7nkks/z8vIqe/ToUXXNNdeUPf/88zX7Lrrook25ubmVSUlJXHLJJZv69Omz65133ulc32vVV+fll1++Pjc3t7JHjx5VJ5100ub58+d3BHjjjTc67969266//vrPU1NT/fzzz//yyCOP3BbL30FDfTen1NRUP/bYY7fUDrGx0JwwERGRr7knnnhi+YQJE+qdqN6nT5/K6sfFxcUp5eXlKV26dDmqetuePXts5MiRNcf27t27ovpx//79d5WXl6dUP7/77rsz7r777h5r165NAdixY0dSeXl5TZao/Vr1yc7OrtnfqVOnPWVlZe0BPvvss/Y9evSobNeuXe22FfV0EXPfzW3IkCE7Fi1a1AnYFOuxCR8JM7Mfm9lKM9tpZoVmdvx+2qeY2W+jx+wys9VmdlWdNmea2ZLo/iVm9r3mfRciIiJfD2ZWMyqVm5tbkZOTs2vr1q3zq7+2bds276233lpe3Wb16tU1oau4uDglMzOzAuDTTz9NmTJlSp+77rpr9aZNm+Zv3bp1fl5e3g53r/e1YpGTk1O5fv369nv27KnZVlpamtLIIS3G7Nmzu44bN27zgRyb0BBmZmcBdwG3ABFgDjDTzHo3ctiTwDjgUmAg8J/Awlp9fgt4GvgbcFT0z+lm9r+a4z2IiIh8XY0ePXrbIYccUnX99df3/Oqrr2z37t188MEHHd56661O1W0eeuihzBUrVrRfv3590u9/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kdZMIUxERJps+PDhFBcXU1JSQkVFBTNmzGDcuHF7tVm3bl3N45kzZ3L44cGNTtauXVtzE+8vv/yS999/nwEDBrB79+6aG3FXVlby6quvkp+fn6B3JBIezQkTEZEmS05OZtq0aUycOJGqqirOPfdc8vPzueWWW4hEIowfP54HHniAmTNnkpycTFpaGvfccw8An376Kb/+9a8xM9ydK664gkGDBrFt2zYmTpxIZWUlVVVVjBo1ismTJ4f8TkWan9V3fb+tiEQiPnv27LDLEBGRFiQ9Pb3Q3UeGXYe0frocKSIiIhIChTARERGRECiEiYiIiIRAIUxEREQkBAphIiIiIiFQCBMREREJgUKYiIiISAgUwkRERERCoBAmIiIiEgKFMBEREZEQKISJiIiIhEAhTERERCQEyWEXICIi4bn6kbSwS4ibaedvCrsEkZhoJExEREQkBAphIiIiIiFQCBMREREJgUKYiIiISAgUwkRERERCoBAmIiIiEgKFMBEREZEQKISJiIiIhEAhTERERCQECmEiIiIiIVAIExEREQmBQpiIiIhICBTCREREREKgECYiIiISAoUwERERkRAohImIiIiEQCFMREREJAQKYSIiIiIhUAgTERERCYFCmIiIiEgIFMJEREREQqAQJiIiIhIChTARERGRECiEiYiIiIRAIUxEREQkBAphIiIiIiFQCBMREREJgUKYiIiISAgUwkRERERCoBAmIiIiEoKEhzAz+7GZrTSznWZWaGbHN/G448xst5ktrrP9AjPzer46NM87EBERETl4CQ1hZnYWcBdwCxAB5gAzzaz3fo5LAx4FXm+gyXYgq/aXu++MV90iIiIi8ZbokbApwMPu/qC7F7n7lUAZcPl+jvsv4BFgbgP73d3X1f6KY80iIiIicZewEGZmKcAIYFadXbOAbzdy3I+BnsDvGum+o5mVmNkaM3vRzCIHXbCIiIhIM0rkSNihQBKwvs729QQhax9mNhS4ATjX3asa6HcpcBFwOnA2sBN4z8wGxKNoERERkeaQHMJrep3nVs82zCwVeAqY6u4rG+zMfS61LlOa2RxgPnAlcFU9/V4KXAqQlZXFRx99BEB2djadOnVi+fLlAHTr1o1+/foxb948AJKSkhg2bBhLly5l27ZtAOTn57Nx40bWrw9yZa9evUhJSaG4uBiAtLQ0evfuzYIFCwBo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FMJEREREQqAQJiIiIhIChTARERGRECiEiYiIiIRAISwkr732GkcffTQjRozgzjvv3Gf/rl27uOiiixgxYgRjxoxh9erVAKxevZrs7GwKCgooKChgypQpNcfMnz+fY489lhEjRnDttdfi7gl7PyIiIhIbhbAQVFVVcfXVV/PMM88wd+5cnnvuOT755JO92jz++ON0796dwsJCLr/8cm688caafbm5ubz99tu8/fbb3HHHHTXbp06dyh//+Ec+/PBDVqxYwWuvvZaotyQiIiIxUggLQWFhIX379iU3N5eUlBTOOOMMZs6cuVebl19+mUmTJgFw+umn8/bbbzc6srVu3Tq2bt3K0UcfjZkxadIkXn755WZ9HyIiInLgFMJCUFZWRk5OTs3z7OxsysrKGmyTnJxM165d2bhxIxBckhw1ahTf/e53mTt3bk377OzsRvsUERGRliM57ALaovpGtMysSW169OjBwoULSU9PZ/78+Zx33nnMmTOnSX2KiIhIy6GRsBBkZ2ezdu3amuelpaX07NmzwTa7d+9my5YtpKWlkZqaSnp6OgBHHXUUffv2ZcWKFWRnZ1NaWtponyIiItJyKISFYPjw4RQXF1NSUkJFRQUzZsxg3Lhxe7UZP348Tz31FAAvvPACxx9/PGbGF198QVVVFQCrVq2iuLiY3NxcevbsySGHHMIHH3yAu/PUU09x8sknJ/y9iYiISNPocmQIkpOTmTZtGhMnTqSqqopzzz2X/Px8brnlFiKRCOPHj+e8887jsssuY8SIEaSlpfHQQw8BMGfOHG699VaSk5NJSkri9ttvJy0tDYDbbruNK664gp07dzJmzBjGjBkT5tsUERGRRiiEhWTs2LGMHTt2r22//OUvax536NCBhx9+eJ/jTjvtNE477bR6+4xEIsyZMyeudYqIiEjz0OVIERERkRAohImIiIiEQJcj4+DqR9LCLiFupp2/KewSRERE2gSNhImIiIiEQCFMREREJAQKYSIiIiIhUAgTERERCYFCmIiIiEgIFMJEREREQqAQJiIiIhIChTARERGRECiEiYiIiIRAIUxEREQkBAphIiIiIiFQCBMREREJgUKYiIiISAgUwkRERERCoBAmIiIiEgKFMBEREZEQJDyEmdmPzWylme00s0IzO34/7UdF2+00s2Izu+xg+xQREREJW0JDmJmdBdwF3AJE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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_histogram([cal_results.get_counts('cal_11')], legend=[r'Preparing in $|11\\rangle$'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Correcting Using the Calibration Matrix\n", + "\n", + "If we have the calibration matrix $\\mathbf{A}$ which gives the transformation between the distributions, \n", + "$$\\tilde{P}_{\\rho} = \\mathbf{A} \\cdot P_{\\rho}$$\n", + "then to work back to $P_{\\rho}$ we just need to invert $\\mathbf{A}$,\n", + "$$P_{\\rho} = \\mathbf{A}^{-1} \\cdot \\tilde{P}_{\\rho}$$\n", + "However, there are some issues to watch out for.\n", + "\n", + "Below, we simulate a calibration with 200 shots and then prepare the state $|11\\rangle$ and measure with 2000 shots. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Corrected Results using Matrix Inversion:\n", + "{'10': -92.91098988658939, '00': 46.80774751538827, '01': -22.521419828642696, '11': 2068.6246621998444}\n" + ] + } + ], + "source": [ + "# Generate the calibration circuits\n", + "qr = qiskit.QuantumRegister(2)\n", + "meas_calibs, state_labels = complete_meas_cal(qubit_list=[0,1], qr=qr)\n", + "# Generate a noise model for the 2 qubits\n", + "noise_model = noise.NoiseModel()\n", + "for qi in range(2):\n", + " read_err = noise.errors.readout_error.ReadoutError([[0.9, 0.1],[0.25,0.75]])\n", + " noise_model.add_readout_error(read_err, [qi])\n", + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "job_w_noise_cal = qiskit.execute(meas_calibs, backend=backend, noise_model=noise_model, shots=200)\n", + "job_for_correction = qiskit.execute(meas_calibs[-1], backend=backend, noise_model=noise_model, shots=2000)\n", + "cal_results = job_w_noise_cal.result()\n", + "raw_results = job_for_correction.result()\n", + "meas_fitter = CompleteMeasFitter(cal_results, state_labels)\n", + "meas_filter = meas_fitter.filter\n", + "print(\"Corrected Results using Matrix Inversion:\")\n", + "print(meas_filter.apply(raw_results,method='pseudo_inverse').get_counts('cal_11'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you run the above code several times, you will likely see some negative counts. This is because there is some statistical noise in the calibration matrix which means that the corrected results will be unphysical. To correct for this we can find the $P_{\\rho}$ which is closest to reproducing the measured output,\n", + "$$\\text{min}_{P_{\\rho}} ||\\tilde{P}_{\\rho}-\\mathbf{A}\\cdot P_{\\rho}||$$\n", + "but where all elements of $P$ are non-zero." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Corrected Results using Constrained Least Square:\n", + "{'10': 7.279108826113712e-11, '00': 4.655538471194395, '01': 0.2706670283213603, '11': 1995.0737945004114}\n" + ] + } + ], + "source": [ + "print(\"Corrected Results using Constrained Least Square:\")\n", + "print(meas_filter.apply(raw_results).get_counts('cal_11'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "anaconda-cloud": {}, + "celltoolbar": "Tags", + "hide_input": false, + "kernelspec": { + "display_name": "Python 3", + "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.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/ignis/readme.md b/community/ignis/readme.md new file mode 100644 index 000000000..8f5a61366 --- /dev/null +++ b/community/ignis/readme.md @@ -0,0 +1,19 @@ +# Quantum characterization, validation, verification and mitigation with Qiskit Ignis + +In this folder we have a collection of great tutorials from our fantastic Qiskitters describing various concepts in quantum characterization, validation, verification and mitigation. + +* [Incoherent Noise](coherence-overview.ipynb): Overview of common sources of incoherent noise on quantum devices (e.g. T1 and T2) and what experiments used used to measure these noise parameters. + +* [Measurement Error and Mitigation](measurement_error_mitigation.ipynb): Introduction to measurement, assignment error and how to mitigate. + +* [State and Process Tomography Overview](tomography-overview.ipynb): Introduction to state and process tomography and different representations of a quantum process. + +* [Hamiltonian Parameters](hamiltonian.ipynb): Introduction to the Hamiltonian for a multi-qubit circuit and how the Hamiltonian transforms to the dressed basis, leads to dispersive shifts used for qubit state measurement and gives rise to ZZ. + +* [Gate Errors](gate_errors.ipynb): Introduction to error amplification sequences and a derivation of the amplitude error amplification sequence fit function. + +* [Randomized Benchmarking](RB_overview.ipynb): Introduction to randomized benchmarking (RB), which is a scalable technique for measuring the average gate error. + +## Contributing + +Quantum characterization is such an interesting topic and we have by no means covered everything! We welcome additional notebooks in the relevant folder. diff --git a/community/ignis/tomography-overview.ipynb b/community/ignis/tomography-overview.ipynb new file mode 100644 index 000000000..a4aa4aef7 --- /dev/null +++ b/community/ignis/tomography-overview.ipynb @@ -0,0 +1,642 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum Tomography Overview\n", + "\n", + "***\n", + "### Contributors\n", + "Gadi Aleksandrowicz (gadia@il.ibm.com), Christopher J. Wood" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import itertools\n", + "import qiskit \n", + "from qiskit import QuantumRegister, QuantumCircuit\n", + "from qiskit import Aer\n", + "import qiskit.ignis.verification.tomography as tomo\n", + "from qiskit.quantum_info import state_fidelity" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The General Theory\n", + "\n", + "Quantum tomography is an experimental procedure to reconstruct a description of part of quantum system from the measurement outcomes of a specific set of experiments. In Qiskit Ignis we are currently concerned with the following two tomography tasks:\n", + "\n", + "1. **Quantum state tomography**: Given a state-preparation circuit that prepares a system in a state, reconstruct a description of the density matrix $\\rho$.\n", + "2. **Quantum process tomograhpy**: Given a circuit, reconstruct a description of the quantum channel $\\mathcal{E}$ that describes the circuit.\n", + "\n", + "In both cases we rely on the assumption that we have access to a large number of identical copies of the system and so can perform several different measures on it.\n", + "\n", + "We can roughly split the tomography process to three stages:\n", + "1. Preperation: Add suitable initialization/measurement devices to the quantum system.\n", + "2. Experiment: Obtain measurement data from the quantum system.\n", + "3. Tomography: Use the obtained data to reconstruct the system's description.\n", + "\n", + "Steps 1 and 2 are related to the quantum system being studied, whereas step 3 is a classical computation which can be carried out on standard computers.\n", + "\n", + "## State Tomography Overview\n", + "\n", + "Quantum state tomography is a method of reconstructing a description of the quantum state of a system from a set of experiments. While the state of ideal quantum system is described by a state-vector the state of an open quantum system (one that may experiences noise or other errors) is given by a density matrix $\\rho$. Quantum state tomography aims to reconstruct this density matrix. \n", + "\n", + "To do this we assume that the state $\\rho$ can be reliably prepared by a state-preparation circuit, and that itcan be subjected to several measurements with respect to different operators; this data can be used to reconstruct $\\rho$ or a close approximation of it by several different methods.\n", + "\n", + "\n", + "### Definitions\n", + "\n", + "We denote by $\\mathcal{X}$ the state space of a closed (ideal) quantum system. In quantum computing this is typically the tensor product of $N$ 2-dimensional (qubit) systems $\\mathcal{X} = \\mathbb{C^{2N}}$. Valid quantum states $|\\psi\\rangle \\in \\mathcal{X}$ are those with norm-1:$|\\langle\\psi|\\psi\\rangle|^2 = 1$. \n", + "\n", + "We denote by $L(\\mathcal{X})$ the state space of linear maps on $\\mathcal{X}$, ($L: \\mathcal{X}\\rightarrow\\mathcal{X}$). The density-matrix for quantum system with state space $\\mathcal{X}$ is a linear map $\\rho \\in L(\\mathcal{X})$ that is also positive-semidefinite, and has trace equal to 1:\n", + "1. **Unit trace:** $\\text{tr}[\\rho] = 1$\n", + "2. **Positive-semidefinite:**: For all $|\\psi\\rangle \\in \\mathcal{X}$, $\\langle\\psi|\\rho|\\psi\\rangle \\ge 0$. This is denoted by $\\rho \\ge 0$.\n", + "\n", + "\n", + "\n", + "### Example: 1-qubit reconstruction using the Pauli basis\n", + "\n", + "Given the Pauli matrices $\n", + "I=\\left(\\begin{array}{cc}\n", + "1 & 0\\\\\n", + "0 & 1\n", + "\\end{array}\\right),\n", + "X=\\left(\\begin{array}{cc}\n", + "0 & 1\\\\\n", + "1 & 0\n", + "\\end{array}\\right),\n", + "Y=\\left(\\begin{array}{cc}\n", + "0 & -i\\\\\n", + "i & 0\n", + "\\end{array}\\right),\n", + "Z=\\left(\\begin{array}{cc}\n", + "1 & 0\\\\\n", + "0 & -1\n", + "\\end{array}\\right)$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "I = np.array([[1,0],[0,1]])\n", + "X = np.array([[0,1],[1,0]])\n", + "Y = np.array([[0,-1j],[1j,0]])\n", + "Z = np.array([[1,0],[0,-1]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is easy to see they constitute an orthonormal basis for $M_2(\\mathbb{C})$ with respect to the Hilbert-Schmidt inner product $\\left\\langle A,B\\right\\rangle =\\frac{1}{2}\\text{tr}\\left(B^{\\dagger}A\\right)$" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def HS_product(A,B):\n", + " return 0.5*np.trace(np.conj(B).T @ A)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "And hence,\n", + "\n", + "$$ \\rho =\\left\\langle \\rho,I\\right\\rangle I+\\left\\langle \\rho,X\\right\\rangle X+\\left\\langle \\rho,Y\\right\\rangle Y+\\left\\langle \\rho,Z\\right\\rangle Z = $$\n", + "\n", + "$$=\\frac{\\text{tr}\\left(\\rho\\right)I+\\text{tr}\\left(X\\rho\\right)X+\\text{tr}\\left(Y\\rho\\right)Y+\\text{tr}\\left(Z\\rho\\right)Z}{2}$$\n", + "\n", + "The values of $\\text{tr}\\left(X\\rho\\right), \\text{tr}\\left(Y\\rho\\right), \\text{tr}\\left(Z\\rho\\right)$ are the expectation values of $X$, $Y$, $Z$, respectively, and can be approximated by repeated measuring in the $X, Y$ and $Z$ bases. Since $\\text{tr}\\left(\\rho\\right)=1$ there is no need for additional measurements for the coefficient of $I$.\n", + "\n", + "### Example: 1-qubit Linear inversion\n", + "\n", + "The above method can be rephrased in more general form. First, any hermitian operator $H$ has a spectral decomposition of the form $H=\\sum \\lambda_i P_i$ where $\\lambda_i$ is an eigenvalue of $H$ and $P_i$ is the projection operator to the corresponding eigenspace. For the hermitian operators $X,Y,Z$ whose eigenvalues are 1 and -1 we can therefore write\n", + "\n", + "* $X = P^X_0-P^X_1$\n", + "* $Y = P^Y_0-P^Y_1$\n", + "* $Z = P^Z_0-P^Z_1$\n", + "\n", + "Where\n", + "\n", + "\n", + "\n", + "$$P^X_0=\\frac{1}{2}\\left(\\begin{array}{cc}\n", + "1 & 1\\\\\n", + "1 & 1\n", + "\\end{array}\\right), P^X_1=\\frac{1}{2}\\left(\\begin{array}{cc}\n", + "1 & -1\\\\\n", + "-1 & 1\n", + "\\end{array}\\right)$$\n", + "\n", + "$$P^Y_0=\\frac{1}{2}\\left(\\begin{array}{cc}\n", + "1 & -i\\\\\n", + "i & 1\n", + "\\end{array}\\right), P^Y_1=\\frac{1}{2}\\left(\\begin{array}{cc}\n", + "1 & i\\\\\n", + "-i & 1\n", + "\\end{array}\\right)$$\n", + "\n", + "$$P^Z_0=\\left(\\begin{array}{cc}\n", + "1 & 0\\\\\n", + "0 & 0\n", + "\\end{array}\\right), P^Z_1=\\left(\\begin{array}{cc}\n", + "0 & 0\\\\\n", + "0 & 1\n", + "\\end{array}\\right)$$\n", + "\n", + "In the Ignis code, these matrices are defined in **tomography.fitters.utils.pauli_preparation_matrix**. We give an explicit definition here:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "PX0 = 0.5*np.array([[1, 1], [1, 1]])\n", + "PX1 = 0.5*np.array([[1, -1], [-1, 1]])\n", + "\n", + "PY0 = 0.5*np.array([[1, -1j], [1j, 1]])\n", + "PY1 = 0.5*np.array([[1, 1j], [-1j, 1]])\n", + "\n", + "PZ0 = np.array([[1, 0], [0, 0]])\n", + "PZ1 = np.array([[0, 0], [0, 1]])\n", + "\n", + "projectors = [PX0, PX1, PY0, PY1, PZ0, PZ1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By Born's rule, $\\text{tr}\\left(P_{i}^{X}\\rho\\right)$ is the probability for the outcome $\\left|i\\right\\rangle$ when measuring in the X-basis, and this probability can be estimated directly using repeated meausrements in the X-basis. The $Y$ and $Z$ bases are handled\n", + "similarily.\n", + "\n", + "The computation $\\text{tr}\\left(P_{i}^{X}\\rho\\right)$ can be replaced by the scalar product $\\vec{P}_i^X \\cdot \\vec{\\rho}$ where $\\vec{E}$ denotes the vector obtained from the operator $E$ by flattening its matrix (the result vector consists of the first row, then the second row etc.)\n", + "\n", + "Now we can construct a matrix $$M=\\left(\\begin{array}{c}\n", + "\\vec{P}_{0}^{X}\\\\\n", + "\\vec{P}_{1}^{X}\\\\\n", + "\\vec{P}_{0}^{Y}\\\\\n", + "\\vec{P}_{1}^{Y}\\\\\n", + "\\vec{P}_{0}^{Z}\\\\\n", + "\\vec{P}_{1}^{Z}\n", + "\\end{array}\\right)$$\n", + "\n", + "Such that $$M\\vec{\\rho}=\\vec{p}=\\left(\\begin{array}{c}\n", + "p_{\\left|0\\right\\rangle }^{X}\\\\\n", + "p_{\\left|1\\right\\rangle }^{X}\\\\\n", + "p_{\\left|0\\right\\rangle }^{Y}\\\\\n", + "p_{\\left|1\\right\\rangle }^{Y}\\\\\n", + "p_{\\left|0\\right\\rangle }^{Z}\\\\\n", + "p_{\\left|1\\right\\rangle }^{Z}\n", + "\\end{array}\\right)$$\n", + "\n", + "Is the equation relating the density operator to the observed probabilities." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.5+0.j , 0.5+0.j , 0.5+0.j , 0.5+0.j ],\n", + " [ 0.5+0.j , -0.5+0.j , -0.5+0.j , 0.5+0.j ],\n", + " [ 0.5+0.j , 0. -0.5j, 0. +0.5j, 0.5+0.j ],\n", + " [ 0.5+0.j , 0. +0.5j, 0. -0.5j, 0.5+0.j ],\n", + " [ 1. +0.j , 0. +0.j , 0. +0.j , 0. +0.j ],\n", + " [ 0. +0.j , 0. +0.j , 0. +0.j , 1. +0.j ]])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "M = np.array([p.flatten() for p in projectors])\n", + "M" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since $M$ can be computed by knowing the operators used in the tomography, and the vector $\\vec{p}$ of probabilities can be estimated using the tomography results, all that remains is to solve the equation $M\\vec{\\rho}=\\vec{p}$ for $\\vec{\\rho}$. If the rank of $M$ is large enough this can be done by multiplying both sides by $M^\\dagger$:\n", + "\n", + "$M^\\dagger M\\vec{\\rho} = M^\\dagger \\vec{p}$\n", + "\n", + "$\\vec{\\rho} = (M^\\dagger M)^{-1} M^\\dagger \\vec{p}$\n", + "\n", + "In our example, we obtain the matrix \n", + "$$(M^\\dagger M)^{-1} M^\\dagger = \\left(\\begin{array}{cccccc}\n", + "\\frac{1}{6} & \\frac{1}{6} & \\frac{1}{6} & \\frac{1}{6} & \\frac{4}{6} & -\\frac{2}{6}\\\\\n", + "\\frac{1}{2} & -\\frac{1}{2} & \\frac{i}{2} & -\\frac{i}{2} & 0 & 0\\\\\n", + "\\frac{1}{2} & -\\frac{1}{2} & -\\frac{i}{2} & \\frac{i}{2} & 0 & 0\\\\\n", + "\\frac{1}{6} & \\frac{1}{6} & \\frac{1}{6} & \\frac{1}{6} & -\\frac{2}{6} & \\frac{4}{6}\n", + "\\end{array}\\right)$$" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "M_dg = np.conj(M).T\n", + "linear_inversion_matrix = np.linalg.inv(M_dg @ M) @ M_dg" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Multiplication by the linear inversion matrix performs the reconstruction stage described earlier to obtain the density operator.\n", + "\n", + "### Example: 2-qubit Linear inversion\n", + "\n", + "For multiple qubit systems the technique of linear inversion remains the same. The projector operators are tensor products of 1-qubit projectors: $6^n$ projectors in total, since we measure according to $3^n$ operators (tensor products of $X,Y,Z$) and each operator has two projectors." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "projectors_2 = [np.kron(p1, p2) for (p1, p2) in itertools.product(projectors, repeat = 2)]\n", + "M_2 = np.array([p.flatten() for p in projectors_2])\n", + "M_dg_2 = np.conj(M_2).T\n", + "linear_inversion_matrix_2 = np.linalg.inv(M_dg_2 @ M_2) @ M_dg_2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will now attempt to reconstruct the Bell state $\\frac{\\left|00\\right\\rangle +\\left|11\\right\\rangle }{\\sqrt{2}}$ from simulated tomography results. First, we prepare a quantum circuit which generates this bell state from the input $\\left|00\\right\\rangle$." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'OPENQASM 2.0;\\ninclude \"qelib1.inc\";\\nqreg q0[2];\\nh q0[0];\\ncx q0[0],q0[1];\\n'" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "q2 = QuantumRegister(2)\n", + "bell = QuantumCircuit(q2)\n", + "bell.h(q2[0])\n", + "bell.cx(q2[0], q2[1])\n", + "bell.qasm()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now use Ignis' **state_tomography_circuits** procedure which generates the $3^n$ circuits obtained by adding to the bell circuit a measurement according to each of our measurement operators (Pauli by default). Then we execute on a standard simulator." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "qst_bell = tomo.state_tomography_circuits(bell, q2)\n", + "job = qiskit.execute(qst_bell, Aer.get_backend('qasm_simulator'), shots=5000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we load the data into the **StateTomographyFitter** which takes results data and can fit to a density matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "statefit = tomo.StateTomographyFitter(job.result(), qst_bell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is the data we loaded into the **StateTomographyFitter** " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{('X', 'X'): {'00': 2492, '11': 2508},\n", + " ('X', 'Y'): {'00': 1256, '11': 1245, '10': 1262, '01': 1237},\n", + " ('X', 'Z'): {'00': 1283, '11': 1286, '10': 1161, '01': 1270},\n", + " ('Y', 'X'): {'00': 1253, '11': 1277, '10': 1263, '01': 1207},\n", + " ('Y', 'Y'): {'10': 2478, '01': 2522},\n", + " ('Y', 'Z'): {'00': 1311, '11': 1283, '10': 1198, '01': 1208},\n", + " ('Z', 'X'): {'00': 1261, '11': 1207, '10': 1256, '01': 1276},\n", + " ('Z', 'Y'): {'00': 1243, '11': 1251, '10': 1262, '01': 1244},\n", + " ('Z', 'Z'): {'00': 2500, '11': 2500}}" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "statefit.data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now use a private function **\\_fitter_data** to explicitly extract the probability vector $\\vec{p}$ and projector matrix $M$ that satisfy $M\\vec{\\rho} = \\vec{p}$. For typical usage we don't need to expose this data. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "p, M, weights = statefit._fitter_data(True, 0.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we use the linear inversion technique to reconstructo $\\vec{\\rho}$. Since we usually represent density matrices as matrices and not vectors, we use Numpy's **reshape** function to convert $\\vec{\\rho}$ into $\\rho$." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 5.03133333e-01+0.j 5.36666667e-03+0.0095j\n", + " -3.56666667e-03-0.00053333j 5.00000000e-01+0.0031j ]\n", + " [ 5.36666667e-03-0.0095j 1.66666667e-03+0.j\n", + " 2.77555756e-17-0.0029j 2.83333333e-03+0.00066667j]\n", + " [-3.56666667e-03+0.00053333j 2.77555756e-17+0.0029j\n", + " -1.66666667e-03+0.j -8.43333333e-03-0.0093j ]\n", + " [ 5.00000000e-01-0.0031j 2.83333333e-03-0.00066667j\n", + " -8.43333333e-03+0.0093j 4.96866667e-01+0.j ]]\n" + ] + } + ], + "source": [ + "M_dg = np.conj(M).T\n", + "linear_inversion_matrix = np.linalg.inv(M_dg @ M) @ M_dg\n", + "rho_bell = linear_inversion_matrix @ p\n", + "rho_bell = np.reshape(rho_bell, (4, 4))\n", + "print(rho_bell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To check the quality of our solution, we compute the fidelity between the real quantum state (obtained via simulation by a simulator that can return state vectors) and our calculated $\\rho$. The closer the fidelity to 1, the better." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fit Fidelity linear inversion = 0.9999999999999998\n" + ] + } + ], + "source": [ + "job = qiskit.execute(bell, Aer.get_backend('statevector_simulator'))\n", + "psi_bell = job.result().get_statevector(bell)\n", + "F_bell = state_fidelity(psi_bell, rho_bell)\n", + "print('Fit Fidelity linear inversion =', F_bell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Maximum Likelihood \n", + "\n", + "Linear inversion works perfectly on accurate data, but tomography data is never fully accurate. Two obvious obstacles are\n", + "1. Since the number of measurements is limited, we do not obtain the probability vector $\\vec{p}$ but an approximation.\n", + "2. The measurement process might be noisy.\n", + "\n", + "This may result in non-accurate or even self-contradicting $\\vec{p}$, and the result of linear inversion might not be a density function at all (e.g. not nonnegative, or trace different than 1).\n", + "\n", + "Since we want to solve the linear problem $A\\vec{x}=\\vec{p}$ for $x$, we can turn it into an optimization problem by attempting to minimize $\\|A\\vec{x}-\\vec{p}\\|_2$ while subjecting $x$ to additional constraints to ensure it is indeed a density matrix. This is done by **state_cvx_fit**.\n", + "\n", + "Another approach is to solve this optimization problem with no further constraints. The result might not be a density operator, i.e. positive semidefinite with trace 1; in this case the algorithm first rescales in order to obtain a density operator. This is done using **state_mle_fit**." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fit Fidelity CVX fit = 0.9998549234477454\n", + "Fit Fidelity MLE fit = 0.9939629890765465\n" + ] + } + ], + "source": [ + "rho_cvx_bell = statefit.fit(method='cvx')\n", + "F_bell = state_fidelity(psi_bell, rho_cvx_bell)\n", + "print('Fit Fidelity CVX fit =', F_bell)\n", + "\n", + "rho_mle_bell = statefit.fit(method='lstsq')\n", + "F_bell = state_fidelity(psi_bell, rho_mle_bell)\n", + "print('Fit Fidelity MLE fit =', F_bell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Process Tomography Overview\n", + "\n", + "A quantum process, or quantum channel, describes the fixed-time evolution of a density matrix $\\rho^\\prime = \\mathcal{E}(\\rho)$. While ideal quantum processes are described by unitary matrix evolution, general quantum process can include the effect of errors in the ideal evolution such as those due to unwanted interaction with an environment system, systematic errors in gate operations, or other error processes. \n", + "\n", + "Quantum process tomography aims to find a description of $\\mathcal{E}$ from a set of experiments. Like state tomography, we measure with respect to several different bases. Process tomography also uses several different initial states, as opposed to state tomography where only $\\left|0^n\\right\\rangle$ is used. It can be thought of as performing state-tomography on tomographically complete set of a complete set of input states for the system.\n", + "\n", + "\n", + "### Definitions\n", + "\n", + "Let $D(\\mathcal{X})$ be the set of density-matrices on a quantum system. Quantum channels are maps $\\mathcal{E}:L(\\mathcal{X})\\rightarrow L(\\mathcal{X})$ that are *completely positive-trace preserving* (CPTP):\n", + "\n", + "1. **CP:** $\\mathcal{E}$ is *completely-positive* if and only if $(\\mathcal{I}\\otimes\\mathcal{E})(\\rho)\\ge 0$ for all $\\rho \\ge 0$, where $\\mathcal{I}$ is an identity channel on an ancilla system.\n", + "2. **TP:** $\\mathcal{E}$ is *trace-preserving* if and only if $\\text{Tr}[\\mathcal{E}(\\rho)] = \\text{Tr}[\\rho]$ for all $\\rho$.\n", + "\n", + "Together these two requirements ensure that the output of the quantum process will always be a valid density matrix.\n", + "\n", + "There are numerous representations for a quantum channel $\\mathcal{E}$. The simplest way to perform process tomogrpahy is to reconstruct a description of $\\mathcal{E}$ known as the *Choi-matrix* or process-matrix. This is because it is analogous to a density matrix $\\rho$, and hence the reconstruction is similar to quantum state tomography. Another common representation is the *Kraus* representation which we will also describe and show how it is related to the Choi-matrix. Another common representation is the Pauli Tranfer Matrix (PTM), which is useful for evolution since compositing channels becomes matrix multiplication. For more details about different representations of quantum channels and their relationships see [this paper](https://arxiv.org/abs/1111.6950).\n", + "\n", + "#### Choi-matrix representation\n", + "\n", + "The Choi-matrix description of a quantum channel $\\mathcal{E}$ is a unique bipartite matrix $\\Lambda_{\\mathcal{E}}\\in L(\\mathcal{X}\\otimes\\mathcal{X})$ given by the *Choi-Jamiolkowski isomorphism*.\n", + "Given a basis $\\left\\{\\left|0\\right\\rangle, \\left|1\\right\\rangle,\\dots, \\left|n-1\\right\\rangle\\right\\}$ of $\\mathcal{X}$, the Choi-matrix $\\Lambda_{\\mathcal{E}}$ is defined as:\n", + "\n", + "\n", + "$$\\Lambda_\\mathcal{E} = \\sum_{i,j=0}^{n-1} \\left|i\\right\\rangle\\left\\langle j\\right| \\otimes \\mathcal{E}(\\left|i\\right\\rangle\\left\\langle j\\right|)$$\n", + "\n", + "Evolution of a quantum state can be described in terms of this matrix by \n", + "$$\\mathcal{E}(\\rho) = \\text{Tr}_1[\\Lambda_{\\mathcal{E}}(\\rho^T\\otimes\\mathbb{1})]$$\n", + "\n", + "where $\\text{Tr}_1$ denotes **partial trace**: $\\text{Tr}_1[A\\otimes B] = \\text{Tr}[A]\\,B$ and $\\mathbb{1}$ is the identity operator on $X$.\n", + "\n", + "In terms of the Choi-matrix, the requirements that $\\mathcal{E}$ is CPTP are:\n", + "\n", + "1. **CP:** $\\mathcal{E}$ is *completely-positive* if and only if the Choi-matrix is positive-semidefinite ( $\\Lambda_{\\mathcal{E}} \\ge 0$).\n", + "2. **TP:** $\\mathcal{E}$ is *trace-preserving* if and only if $\\text{Tr}_2[\\Lambda_{\\mathcal{E}}] = \\mathbb{id}$.\n", + "\n", + "where $\\text{Tr}_2$ denotes **partial trace**: $\\text{Tr}_2[A\\otimes B] =\\text{Tr}[B]\\,A$.\n", + "\n", + "#### Kraus representation\n", + "\n", + "Another commonly used description of a quantum channel $\\mathcal{E}$ is via **Kraus operators**. A set $\\left\\{K_1, K_2, \\dots, K_t\\right\\}$ such that $K_i \\in L(X)$. In terms of this representation the evolution of a state is given by \n", + "\n", + "$$\\mathcal{E}(\\rho) = \\sum_{i=1}^k K_i\\rho K_i^\\dagger$$\n", + "\n", + "In terms of the Kraus operators the requirement that $\\mathcal{E}$ is CPTP is equivalent to $\\sum_{i=1}^k K_i^\\dagger K_i = \\mathbb{1}$.\n", + "\n", + "This is a common description of quantum processes. In case of a unitary operator $U$, the set $\\left\\{U\\right\\}$ is a Kraus operator representation of it,\n", + "$$\\mathcal{E}(\\rho) = U \\rho U^{\\dagger}$$\n", + "Measurements and noises are also commonly given via Kraus operators. Note however that the Kraus representation of a quantum process is not unique.\n", + "\n", + "The Choi-matrix may be constructed from Kraus operators via \n", + "$$\\Lambda_\\mathcal{E} = \\sum_{i,j=0}^{n-1}\\sum_{l=1}^k \\left|i\\right\\rangle\\left\\langle j\\right| \\otimes K_l\\left|i\\right\\rangle\\left\\langle j\\right|K_l^\\dagger = \\sum_{l=1}^k |K_l\\rangle\\!\\rangle\\!\\langle\\!\\langle K_l|$$\n", + "\n", + "where $|A\\rangle\\!\\rangle$ denotes a vectorized matrix, which is a column-vector obtained by stacking the columns of $A$.\n", + "\n", + "To construct a set of Kraus operators from a Choi-matrix we may use the spectral-decomposition of $\\Lambda_{\\mathcal{E}}$ and define $ |K_l\\rangle\\!\\rangle\\ = \\sqrt{\\lambda_l}|v_l\\rangle$, where ${\\lambda_l} \\ge 0$ and $|v_l\\rangle \\in \\mathcal{X}\\otimes\\mathcal{X}$ are the eigenvalues and eigenvectors respectively of $\\Lambda_{\\mathcal{E}} \\ge 0$.\n", + "\n", + "#### Pauli-Transfer-Matrix (PTM) representation\n", + "\n", + "Another description of a quantum channel $\\mathcal{E}$ is via **PTM**. The elements of the PTM are given as \n", + "\n", + "$$R_{ij} = \\frac{1}{d}\\text{Tr}[\\sigma_i\\mathcal{E}(\\sigma_j)] $$\n", + "\n", + "where $\\sigma$ are the Pauli matrices ($4^n$ possible matrices). The advantage of this method is that composing channels,\n", + "\n", + "$$\\mathcal{E}(\\rho) = \\mathcal{E_1}(\\mathcal{E_2}(\\rho)) $$\n", + "\n", + "is\n", + "\n", + "$$R = R_1 \\cdot R_2 $$\n", + "\n", + "### Process tomography with the Choi matrix\n", + "\n", + "The CP condition on the Choi-matrix ($\\Lambda_{\\mathcal{E}})\\ge 0$ is equivalent to the state-tomography condition that a density matrix is positive-semidefinite. The only difference is that the normalization of the Choi-matrix is not trace-1, but trace given by the dimension of $\\mathcal{X}$ ($\\text{Tr}[\\Lambda_{\\mathcal{E}}] = d$). This allows us to use the same fitters from state-tomography to fit the Choi-matrix adjusting for this difference in normalization. *The key difference between state tomography is the TP condition which is an additional constraint we must add to the tomography fitters if we want to ensure the fitted channel is CPTP.*\n", + "\n", + "To see this relationship explicity consider preparing the system in an initial state $\\rho$ and measuring. The probability of measurement for a projector $\\Pi$ is given by\n", + "\n", + "$$p_{ij} = \\text{Tr}[\\Lambda_{\\mathcal{E}}(\\rho^T\\otimes\\Pi_j)]$$\n", + "\n", + "Using the above equation we can see that the act of measuring the outcome of $\\mathcal{E}$ on some initial $\\rho$ with some projector $\\Pi$ can be seen as the act of measuring $\\Lambda_\\mathcal{E}$ (when it is considered as a **state** in the space $L(\\mathcal{X}\\otimes\\mathcal{X})$) with a measurement operator $\\overline{\\rho}\\otimes \\Pi$, where we have used that $\\rho^T=\\overline{\\rho}$ since $\\rho$ is Hermitian.\n", + "\n", + "This gives rise to the following algorithm for process tomography:\n", + "\n", + "1. Obtain a set of initial states $\\left\\{\\rho_1, \\dots \\rho_{k}\\right\\}$ and a set of projectors $\\left\\{P_1, \\dots P_{t}\\right\\}$ such that the set of all projectos $\\Pi_{i,j} = \\overline{\\rho_i}\\otimes P_j$ is tomographically complete for $L(\\mathcal{X}\\otimes\\mathcal{X})$.\n", + "2. Obtain measurements of $\\Lambda_\\mathcal{E}$ with $\\Pi_{i,j}$ by initializing a system to $\\rho_{i}$, applying $\\mathcal{E}$ (e.g. via a simulator or the quantum computer to check) and measuring via $P_j$.\n", + "3. Pass the results and the description of $\\Pi_{i,j}$ to an algorithm for state tomography and obtain $\\Lambda_\\mathcal{E}$. *Note that to ensure the fitted state is also TP requires adding the additional constraint to the fitter (if supported) that $\\text{Tr}_2[\\Lambda_{\\mathcal{E}}]=\\mathbb{1}$.*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/teach_me_qiskit_2018/w_state/W State 1 - Multi-Qubit Systems.ipynb b/community/teach_me_qiskit_2018/w_state/W State 1 - Multi-Qubit Systems.ipynb deleted file mode 100644 index 389192d04..000000000 --- a/community/teach_me_qiskit_2018/w_state/W State 1 - Multi-Qubit Systems.ipynb +++ /dev/null @@ -1,649 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# W state in multi-qubit systems\n", - "\n", - "The latest version of this notebook is available on https://github.com/qiskit/qiskit-tutorial.\n", - "\n", - "For more information about how to use the IBM Q experience (QX), consult the [tutorials](https://quantumexperience.ng.bluemix.net/qstage/#/tutorial?sectionId=c59b3710b928891a1420190148a72cce&pageIndex=0), or check out the [community](https://quantumexperience.ng.bluemix.net/qstage/#/community).\n", - "\n", - "***\n", - "## Contributors\n", - "\n", - "Pierre Decoodt, Université Libre de Bruxelles" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "# useful additional packages \n", - "import matplotlib.pyplot as plt\n", - "%matplotlib inline\n", - "import numpy as np\n", - "import time\n", - "from pprint import pprint\n", - "\n", - "# importing Qiskit\n", - "from qiskit import Aer, IBMQ\n", - "from qiskit.backends.ibmq import least_busy\n", - "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister, execute\n", - "\n", - "# import basic plot tools\n", - "from qiskit.tools.visualization import plot_histogram" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "IBMQ.load_accounts()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Theoretical background\n", - "\n", - "In addition to the GHZ states, the generalized W states, as proposed by Dür, Vidal and Cirac, in 2000, is a class of interesting examples of multiple qubit entanglement.\n", - "\n", - "A generalized $n$ qubit W state can be written as :\n", - "$$ |W_{n}\\rangle \\; = \\; \\sqrt{\\frac{1}{n}} \\: (\\:|10...0\\rangle \\: + |01...0\\rangle \\: +...+ |00...1\\rangle \\:) $$\n", - "\n", - "Here are presented circuits allowing to deterministically produce respectively a three, a four and a five qubit W state.\n", - "\n", - "A 2016 paper by Firat Diker proposes an algorithm in the form of nested boxes allowing the deterministic construction of W states of any size $n$. The experimental setup proposed by the author is essentially an optical assembly including half-wave plates. The setup includes $n-1$ so-called two-qubit $F$ gates (not to be confounded with the Fredkin's three-qubit gate).\n", - "\n", - "It is possible to construct the equivalent of such a $F$ gate on a superconducting quantum computing system using transmon qubits in ground and excited states. A $F_{k,\\, k+1}$ gate with control qubit $q_{k}$ and target qubit $q_{k+1}$ is obtained here by:\n", - "\n", - " - First a rotation round Y-axis $R_{y}(-\\theta_{k})$ applied on $q_{k+1}$\n", - " - Then a controlled Z-gate $cZ$ in any direction between the two qubits $q_{k}$ and $q_{k+1}$\n", - " - Finally a rotation round Y-axis $R_{y}(\\theta_{k})$ applied on $q_{k+1}$\n", - " \n", - "The matrix representations of a $R_{y}(\\theta)$ rotation and of the $cZ$ gate can be found in the \"Quantum gates and linear algebra\" Jupyter notebook of the Qiskit tutorial. \n", - "\n", - "The value of $\\theta_{k}$ depends on $n$ and $k$ following the relationship:\n", - "\n", - "$$\\theta_{k} = \\arccos \\left(\\sqrt{\\frac{1}{n-k+1}}\\right) $$\n", - "\n", - "Note that this formula for $\\theta$ is different from the one mentioned in the Diker's paper. This is due to the fact that we use here Y-axis rotation matrices instead of $W$ optical gates composed of half-wave plates.\n", - "\n", - "At the beginning, the qubits are placed in the state: $|\\varphi_{0} \\rangle \\, = \\, |10...0 \\rangle$.\n", - "\n", - "This is followed by the application of $n-1$ sucessive $F$ gates. \n", - "\n", - "$$|\\varphi_{1}\\rangle = F_{n-1,\\,n}\\, ... \\, F_{k,\\, k+1}\\, ... \\, F_{2,\\, 3} \\,F_{1,\\, 2}\\,|\\varphi_{0} \\rangle \\,= \\; \\sqrt{\\frac{1}{n}} \\: (\\:|10...0\\rangle \\: + |11...0\\rangle \\: +...+ |11...1\\rangle \\:) $$\n", - "\n", - "Then, $n-1$ $cNOT$ gates are applied. The final circuit is: \n", - "\n", - "$$|W_{n}\\rangle \\,= cNOT_{n,\\, n-1}\\, cNOT_{n-1,\\, n-2}...cNOT_{k,\\, k-1}...cNOT_{2,\\, 1}\\,\\,|\\varphi_{1} \\rangle$$\n", - "\n", - "Let's launch now in the adventure of producing deterministically W states, on simulator or in the real world!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now you will have the opportunity to choose your backend.\n", - "\n", - "(If you run the following cells in sequence, you will end with the local simulator, which is a good choice for a first trial)." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Your choice for the backend is: ibmq_qasm_simulator flag_qx2 is: True\n" - ] - } - ], - "source": [ - "\"Choice of the backend\"\n", - "# using local qasm simulator\n", - "backend = Aer.get_backend('qasm_simulator') \n", - "\n", - "# using IBMQ qasm simulator \n", - "# backend = IBMQ.get_backend('ibmq_qasm_simulator')\n", - "# using real device\n", - "# backend = least_busy(IBMQ.backends(simulator=False))\n", - "\n", - "flag_qx2 = True\n", - "if backend.name() == 'ibmqx4':\n", - " flag_qx2 = False\n", - " \n", - "print(\"Your choice for the backend is: \", backend, \"flag_qx2 is: \", flag_qx2)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# Here, two useful routine\n", - "# Define a F_gate\n", - "def F_gate(circ,q,i,j,n,k) :\n", - " theta = np.arccos(np.sqrt(1/(n-k+1)))\n", - " circ.ry(-theta,q[j]) \n", - " circ.cz(q[i],q[j])\n", - " circ.ry(theta,q[j])\n", - " circ.barrier(q[i])\n", - "# Define the cxrv gate which uses reverse CNOT instead of CNOT\n", - "def cxrv(circ,q,i,j) :\n", - " circ.h(q[i])\n", - " circ.h(q[j])\n", - " circ.cx(q[j],q[i])\n", - " circ.h(q[i])\n", - " circ.h(q[j])\n", - " circ.barrier(q[i],q[j])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Three-qubit W state, step 1\n", - "\n", - "In this section, the production of a three qubit W state will be examined step by step.\n", - "\n", - "In this circuit, the starting state is now: $ |\\varphi_{0} \\rangle \\, = \\, |100\\rangle$.\n", - "\n", - "The entire circuit corresponds to: \n", - " \n", - "$$ |W_{3}\\rangle \\,=\\, cNOT_{3,2}\\, \\, cNOT_{2,1}\\, \\, F_{2,3} \\, \n", - "\\, F_{1,2} \\, \\, |\\varphi_{0} \\rangle \\, $$ \n", - "\n", - "Run the following cell to see what happens when we first apply $F_{1,2}$." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "start W state 3-qubit (step 1) on ibmq_qasm_simulator N= 1024 09/10/2018 10:53:17\n", - "end W state 3-qubit (step 1) on ibmq_qasm_simulator N= 1024 09/10/2018 10:53:17\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
        " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# 3-qubit W state Step 1\n", - "n = 3\n", - "q = QuantumRegister(n)\n", - "c = ClassicalRegister(n)\n", - "W_states = QuantumCircuit(q,c) \n", - "\n", - "W_states.x(q[2]) #start is |100>\n", - "F_gate(W_states,q,2,1,3,1) # Applying F12\n", - " \n", - "for i in range(3) :\n", - " W_states.measure(q[i] , c[i]) \n", - "\n", - "# circuits = ['W_states']\n", - "\n", - "shots = 1024\n", - "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", - "print('start W state 3-qubit (step 1) on', backend, \"N=\", shots,time_exp)\n", - "result = execute(W_states, backend=backend, shots=shots)\n", - "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", - "print('end W state 3-qubit (step 1) on', backend, \"N=\", shots,time_exp)\n", - "plot_histogram(result.result().get_counts(W_states))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Three-qubit W state: adding step 2\n", - "\n", - "In the previous step you obtained an histogram compatible with the following state:\n", - "\n", - "$$ |\\varphi_{1} \\rangle= F_{1,2}\\, |\\varphi_{0} \\rangle\\,=F_{1,2}\\, \\,|1 0 0 \\rangle=\\frac{1}{\\sqrt{3}} \\: |1 0 0 \\rangle \\: + \\sqrt{\\frac{2}{3}} \\: |1 1 0 \\rangle $$\n", - "\n", - "NB: Depending on the backend, it happens that the order of the qubits is modified, but without consequence for the state finally reached.\n", - "\n", - "We seem far from the ultimate goal.\n", - "\n", - "Run the following circuit to obtain $|\\varphi_{2} \\rangle =F_{2,3}\\, \\, |\\varphi_{1} \\rangle$" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "start W state 3-qubit (steps 1 + 2) on ibmq_qasm_simulator N= 1024 09/10/2018 10:53:36\n", - "end W state 3-qubit (steps 1 + 2) on ibmq_qasm_simulator N= 1024 09/10/2018 10:53:36\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
        " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# 3-qubit W state, first and second steps\n", - "n = 3\n", - "q = QuantumRegister(n) \n", - "c = ClassicalRegister(n)\n", - "W_states = QuantumCircuit(q,c) \n", - " \n", - "W_states.x(q[2]) #start is |100>\n", - "F_gate(W_states,q,2,1,3,1) # Applying F12\n", - "F_gate(W_states,q,1,0,3,2) # Applying F23\n", - " \n", - "for i in range(3) :\n", - " W_states.measure(q[i] , c[i]) \n", - "\n", - "shots = 1024\n", - "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", - "print('start W state 3-qubit (steps 1 + 2) on', backend, \"N=\", shots,time_exp)\n", - "result = execute(W_states, backend=backend, shots=shots)\n", - "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", - "print('end W state 3-qubit (steps 1 + 2) on', backend, \"N=\", shots,time_exp)\n", - "plot_histogram(result.result().get_counts(W_states))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Three-qubit W state, full circuit\n", - "\n", - "In the previous step, we got an histogram compatible with the state:\n", - "\n", - "$$ |\\varphi_{2} \\rangle =F_{2,3}\\, \\, |\\varphi_{1} \\rangle=F_{2,3}\\, \\, (\\frac{1}{\\sqrt{3}} \\: |1 0 0 \\rangle \\: + \\sqrt{\\frac{2}{3}} \\: |1 1 0 )= \\frac{1}{\\sqrt{3}} \\: (|1 0 0 \\rangle \\: + |1 1 0 \\:\\rangle + |1 1 1\\rangle) $$\n", - "\n", - "NB: Again, depending on the backend, it happens that the order of the qubits is modified, but without consequence for the state finally reached.\n", - "\n", - "It looks like we are nearing the goal.\n", - "\n", - "Indeed, two $cNOT$ gates will make it possible to create a W state.\n", - "\n", - "Run the following cell to see what happens. Did we succeed?" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "start W state 3-qubit on ibmq_qasm_simulator N= 1024 09/10/2018 10:53:48\n", - "end W state 3-qubit on ibmq_qasm_simulator N= 1024 09/10/2018 10:53:48\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEMCAYAAADTfFGvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAH41JREFUeJzt3XucXWV97/HPl4RE5GK5RCUJIReCmBiakAGlUpCLJpQ2qed4CbwU5NIcepLSczxWoaWJJ8EitlVaiWJaUUAxoiCkmnLRiEoRSbgoJDZmklAYoBoFknJLmOTbP9ZK3JlMMrOS2XvPJN/36zUv1nrW8+z9G147+zdrPc/6LdkmIiKiu/ZpdgAREdG3JHFEREQlSRwREVFJEkdERFSSxBEREZUkcURERCVJHBERUUkSR0REVJLEERERlSRxREREJf2bHUA9HHbYYR4+fHizw4iI6FMefPDBX9se1FW/PTJxDB8+nKVLlzY7jIiIPkXSf3SnXy5VRUREJUkcERFRSRJHRERUksQRERGVNCxxSJosaYWkVkmX7qTfeyRZUktN22XluBWSJjUm4oiI6ExDVlVJ6gfMA94JtAFLJC20vbxDvwOBS4Cf1LSNAaYBY4HBwHclHW17UyNij4iIbTXqjOMEoNX2atsbgQXA1E76zQU+BbxS0zYVWGB7g+01QGv5ehER0QSNShxDgCdr9tvKtq0kTQCOsP3tqmMjIqJxGpU41Embtx6U9gE+A/y/qmNrXmO6pKWSlq5du3aXA42IiJ1rVOJoA46o2R8KPF2zfyDwFuAeSY8DbwMWlhPkXY0FwPZ82y22WwYN6vKO+YiI2EWNShxLgNGSRkgaQDHZvXDLQdvrbB9me7jt4cD9wBTbS8t+0yQNlDQCGA080KC4IyKig4asqrLdLmkmcCfQD7jO9jJJc4ClthfuZOwySTcDy4F2YEZWVEVENI/s7aYL+ryWlhanyGFERDWSHrTd0lW/3DkeERGVJHFEREQlSRy74Y477uBNb3oTRx11FJ/85Ce3O37ttdcybtw4xo8fz0knncTy5cWN8o8//jj77bcf48ePZ/z48Vx88cVbxzz44IOMGzeOo446iksuuYQ98VJiRPRxtve4n4kTJ7re2tvbPXLkSK9atcobNmzwscce62XLlm3TZ926dVu3b7/9dk+aNMm2vWbNGo8dO7bT1z3++ON93333efPmzZ48ebIXLVpUv18iIqIGxWKlLr9jc8axix544AGOOuooRo4cyYABA5g2bRq33377Nn0OOuigrdsvvvgiUmf3Mv7WM888w/r16znxxBORxLnnnsttt91Wl/gjInZVEscueuqppzjiiN/elzh06FCeeuqp7frNmzePUaNG8dGPfpR//Md/3Nq+Zs0aJkyYwCmnnMKPfvSjra85dOjQLl8zIqKZkjh2kTuZe+jsjGLGjBmsWrWKq666iiuuuAKAww8/nCeeeIKHH36YT3/605xzzjmsX7++268ZEdFMSRy7aOjQoTz55G9rL7a1tTF48OAd9p82bdrWy04DBw7k0EMPBWDixImMGjWKX/ziFwwdOpS2trZuv2ZERDMkceyi448/npUrV7JmzRo2btzIggULmDJlyjZ9Vq5cuXX7O9/5DqNHjwZg7dq1bNpU3Py+evVqVq5cyciRIzn88MM58MADuf/++7HNDTfcwNSpnVWfj4honoaUHNkT9e/fn2uuuYZJkyaxadMmLrjgAsaOHcusWbNoaWlhypQpXHPNNXz3u99l33335eCDD+b6668H4Ic//CGzZs2if//+9OvXj2uvvZZDDjkEgM9//vN86EMf4uWXX+bMM8/kzDPPbOavGRGxnZQciYgIICVHIiKiTpI4IiKikiSOiIioJIkjImI37WrdurvvvpuJEycybtw4Jk6cyOLFi7eO+drXvsa4ceM49thjmTx5Mr/+9a8b9vt0qTt1SfraTyNqVUVE2LtXt+6hhx7yU089Zdt+9NFHPXjwYNv2q6++6kGDBnnt2rW27b/4i7/w7Nmz6/67kFpVERH1tzt16yZMmLD1Jt+xY8fyyiuvsGHDhq1f0C+++CK2Wb9+fa+6GbhhiUPSZEkrJLVKurST4xdLelTSI5LulTSmbB8u6eWy/RFJ1zYq5oiu9PQlipdeeomzzjqLY445hrFjx3Lppdv9U4leZnfr1m1xyy23MGHCBAYOHMi+++7L5z//ecaNG8fgwYNZvnw5F154YV1/j0q6c1qyuz8UzxlfBYwEBgA/BcZ06HNQzfYU4I5yezjwWJX3y6WqaIR6XKJ48cUXvXjxYtv2hg0bfNJJJ6W0fi938803+8ILL9y6f8MNN3jmzJk77P/Vr37V55577jZtjz32mEeOHOnW1lbb9saNG33aaae5tbXVmzdv9owZMzx37tz6/AI16GWXqk4AWm2vtr0RWABsU0vD9vqa3f2BPe/OxNij1OMSxWtf+1pOPfVUAAYMGMBxxx23Tf2y6H12p27dlv7vfve7ueGGGxg1ahQAjzzyCACjRo1CEu973/u477776vQbVNeoxDEEeLJmv61s24akGZJWAZ8CLqk5NELSw5J+IOn36xtqRPfU4xJFreeff55/+Zd/4fTTT+/54KPH7E7duueff56zzjqLK6+8kre//e1b+wwZMoTly5ezdu1aoLi0+eY3v7kBv033NKpWVWe1wbc7o7A9D5gn6RzgcuA84BlgmO3fSJoI3CZpbIczFCRNB6YDDBs2bLeCHX7pd3ZrfDM8/smzmh3CXscVSuvPmDGDm266iSuuuGJrzTKAZcuW8bGPfYy77rprmzHt7e2cffbZXHLJJYwcObLng48eszt166655hpaW1uZO3cuc+fOBeCuu+5i8ODBzJ49m5NPPpl9992XI488ki9/+ctN/C231ZBaVZJOBD5ue1K5fxmA7St30H8f4Dnbr+vk2D3AR2zvsBjV7taqSuKI7vjxj3/Mxz/+ce68804Arryy+DhfdtllnfbfvHkzBx98MOvWrQOKSxSnnXYaX/rSl7b5axPgggsu4IADDuj0DCWiXnpbraolwGhJIyQNAKYBC2s7SBpds3sWsLJsHySpX7k9EhgNrG5I1BE7UY9LFACXX34569at4+qrr67/LxGxCxpyqcp2u6SZwJ0UK6yus71M0hyKWfyFwExJZwCvAs9RXKYCOBmYI6kd2ARcbPvZRsQdsTP1uESxceNGPvGJT3DMMcdw3HHHATBz5kwuuuiipv2eER2lrHoncqkqIvZGve1SVURE7CGSOCIiopIkjoiIqCSJIyIiKkniiIiISpI4IiKikkaVHImI6HOyNL9zOeOIiIhKkjgiIqKSXKqK6ERfvEQBqSAQjZEzjoiIqCSJIyIiKkniiIiISpI4IiKikiSOiIioJIkjIiIqSeKIiIhKGpY4JE2WtEJSq6RLOzl+saRHJT0i6V5JY2qOXVaOWyFpUqNijoiI7TUkcUjqB8wDzgTGAGfXJobSTbbH2R4PfAr4dDl2DDANGAtMBj5Xvl5ERDRBo844TgBaba+2vRFYAEyt7WB7fc3u/sCWh6FPBRbY3mB7DdBavl5ERDRBo0qODAGerNlvA97asZOkGcCHgQHAaTVj7+8wdkh9woyIiK406oxDnbR5uwZ7nu1RwMeAy6uMlTRd0lJJS9euXbtbwUZExI41KnG0AUfU7A8Fnt5J/wXAH1cZa3u+7RbbLYMGDdrNcCMiYkcalTiWAKMljZA0gGKye2FtB0mja3bPAlaW2wuBaZIGShoBjAYeaEDMERHRiYbMcdhulzQTuBPoB1xne5mkOcBS2wuBmZLOAF4FngPOK8cuk3QzsBxoB2bY3tSIuCMiYnsNex6H7UXAog5ts2q2/3wnYz8BfKJ+0UVERHflzvGIiKgkiSMiIipJ4oiIiEqSOCIiopIkjoiIqCSJIyIiKkniiIiISrqdOCQNknRAud1P0vmSzpWU5BMRsRep8qX/bYpyH1DcjPcRikq2f9/TQUVERO9V5c7xo4FHyu0PAL8HvAAsA/5vD8cVERG9VJXEsQkYIOloYJ3tJ8rLVAfUJ7SIiOiNqiSOfwVuBg6lKHsOxWNgn+rpoCIioveqkjguoqhY+ypwY9l2GPDxHo4pIiJ6sW4nDtsbgPnl5ak3AM/YvqdegUVERO9UZTnu70i6CXgFaC3bpki6ol7BRURE71NlOe61wDrgSGBj2fZj4P09HVRERPReVeY4TgcG235VkgFsr5X0+vqEFhERvVGVM451FJPhW0kaBjzTncGSJktaIalV0qWdHP+wpOWSfibpe5KOrDm2SdIj5c/CjmMjIqJxqiSOfwZukXQqsI+kE4HrKS5h7ZSkfsA84EyKJbxnSxrTodvDQIvtY4FvAp+qOfay7fHlz5QKMUdERA+rkjiuoriPYx6wL3AdcDvwD90YewLQanu17Y0U94FMre1g+/u2Xyp37weGVogtIiIapMpyXANXlz9VDQGerNlvA966k/4XUtxwuMVrJC0F2oFP2r5tF2KIiIgesNPEIelk2z8st0/bUT/bi7t4H3U2bAfv+QGgBTilpnmY7acljQQWS3rU9qoO46YD0wGGDRvWRTgREbGrujrj+BzwlnL7izvoY2BkF6/TBhxRsz8UeLpjJ0lnAH8FnFLecFi8gf10+d/Vku4BJgDbJA7b84H5AC0tLZ0mpYiI2H07TRy231KzPWI33mcJMFrSCIraVtOAc2o7SJoAfAGYbPtXNe0HAy/Z3iDpMODtbDtxHhERDVTlzvHbd9B+a1djbbcDM4E7gZ8DN9teJmmOpC2rpP6WotLuNzosu30zsFTST4HvU8xxLO9u3BER0bOq3AB46g7a39GdwbYXAYs6tM2q2T5jB+PuA8Z1L8SIiKi3LhOHpDnl5oCa7S1GAv/R41FFRESv1Z0zji2T2vuw7QS3KZbYfryHY4qIiF6sy8Rh+3wASffZ/qf6hxQREb1ZV/dxDLf9eLn7vfI+iu3YXt3TgUVERO/U1RnHo8CB5XYrxeWpjjfzGejXw3FFREQv1dV9HAfWbFepaxUREXuoJIOIiKikqzmOH7GDmlK1bJ/cYxFFRESv1tUcxz83JIqIiOgzuprjuL5RgURERN/Q1aWqD9q+sdy+YEf9bF/X04FFRETv1NWlqrOBG8vtD+6gjymeBhgREXuBri5V/UHN9o6KHEZExF6kSnVcJP0OcBYwmOJBTN+x/Xw9AouIiN6pyvM4TgMeBy4Bjgf+DHhc0un1CS0iInqjKmcc1wDTbd+8pUHSe4F5wDE9HVhERPROVe4cHwzc0qHtW8AbuzNY0mRJKyS1Srq0k+MflrRc0s8kfU/SkTXHzpO0svw5r0LMERHRw6okjhuAGR3a/rRs3ylJ/SjOTM4ExgBnSxrTodvDQIvtY4FvUj5XXNIhwGzgrcAJwOzyOeQREdEEVUqO7AP8qaSPAk8BQ4A3APd3431OAFq3lF+XtACYCmx9drjt79f0vx/4QLk9Cbjb9rPl2LuBycDXuvG+ERHRw6qWHNnVBzkNoXha4BZtFGcQO3Ih8K87GTtkF+OIiIjd1KiSIx2f4QE7KJ4o6QNAC3BKlbGSpgPTAYYNG7ZrUUZERJeq3sfxBorLTodR84XejZIjbWz7vPKhFPeBdHz9M4C/Ak6xvaFm7Ds6jL2n41jb84H5AC0tLV1W9I2IiF3T7cQh6Y+BrwArgbHAMuAtwL10XXJkCTBa0giK+ZFpwDkdXn8C8AVgsu1f1Ry6E/ibmgnxdwGXdTfuiIjoWVXOOK4Azrf9DUnP2Z4g6XyKJLJTttslzaRIAv2A62wvkzQHWGp7IfC3wAHANyQBPGF7iu1nJc2lSD4Ac7ZMlEdERONVSRzDbH+jQ9v1wH8CH+lqsO1FwKIObbNqts/YydjrSCHFiIheocp9HL8q5zigKDVyIjCK4gwiIiL2ElUSxz8BJ5XbnwG+D/wU+FxPBxUREb1Xty9V2b6qZvsGSfcA+9v+eT0Ci4iI3qnqctx+wNv4bVn17tw1HhERe5Aqy3GPBW4DXkNxb8VQ4BVJ77b90zrFFxERvUyVOY7rKAoVDrF9AkXZj2vIaqeIiL1KlcRxNHC1bQOU//0HYHQ9AouIiN6pSuJYBEzp0PZHwHd6LpyIiOjtuiqrfiO/LSjYD1gg6UGKarVHABOB2+saYURE9CpdTY63dth/rGZ7OUUJkYiI2It0VVb9/zcqkIiI6Buq3sdxKvBBihVVTwFfsb24HoFFRETv1O3JcUkXAV+nKGp4K/AMcJOkP6lTbBER0QtVOeP4KPDO2pv9JH0duIVdf6RsRET0MVWW4x5KMSFeawVwSM+FExERvV2VxHEv8GlJrwWQtD/Fw5fuq0dgERHRO1VJHBcD44B1kn4JPA/8LvC/6hFYRET0Tt1KHCqe5bofcAYwguKO8RG2T7H9dDdfY7KkFZJaJV3ayfGTJT0kqV3Sezoc2yTpkfJnYXfeLyIi6qNbk+O2LelR4EDbbRTVcbutLMc+D3hnOXaJpIW2a+dMngA+ROePoX3Z9vgq7xkREfVR5VLVwxSFDnfFCUCr7dW2NwILgKm1HWw/bvtnwOZdfI+IiGiAKstx7wHukPRlilpVW2pYYbur0upDyjFbtAFvrfDer5G0FGgHPmn7tgpjIyKiB1VJHG8H1gCndGg3XT+TQ520uZO2HRlm+2lJI4HFkh61vWqbN5CmA9MBhg0bVuGlIyKiii4TR7n89nLgBeAh4G9sb6j4Pm0U1XS3GErx6Nlu2TIBb3t1+azzCcCqDn3mA/MBWlpaqiSliIiooDtzHNdQrKL6OfA/gb/bhfdZAoyWNELSAGAa0K3VUZIOljSw3D6M4syn442IERHRIN1JHGcC77L90XL7D6u+ie12YCZFGfafAzfbXiZpjqQpAJKOl9QGvBf4gqRl5fA3A0sl/RT4PsUcRxJHRESTdGeOY3/bzwDYflLS63bljWwvoniKYG3brJrtJRSXsDqOu4/ixsOIiOgFupM4+pfl1LWDfVJaPSJi79GdxPErtl019ZsO+wZG9mRQERHRe3WZOGwPb0AcERHRR1S5czwiIiKJIyIiqkniiIiISpI4IiKikiSOiIioJIkjIiIqSeKIiIhKkjgiIqKSJI6IiKgkiSMiIipJ4oiIiEqSOCIiopIkjoiIqCSJIyIiKmlY4pA0WdIKSa2SLu3k+MmSHpLULuk9HY6dJ2ll+XNeo2KOiIjtNSRxSOoHzKN4ZvkY4GxJYzp0ewL4EHBTh7GHALOBtwInALMlHVzvmCMionONOuM4AWi1vdr2RmABMLW2g+3Hbf8M2Nxh7CTgbtvP2n4OuBuY3IigIyJie41KHEOAJ2v228q2eo+NiIge1qjEoU7a3JNjJU2XtFTS0rVr11YKLiIiuq9RiaMNOKJmfyjwdE+OtT3fdovtlkGDBu1yoBERsXONShxLgNGSRkgaAEwDFnZz7J3AuyQdXE6Kv6tsi4iIJmhI4rDdDsyk+ML/OXCz7WWS5kiaAiDpeEltwHuBL0haVo59FphLkXyWAHPKtoiIaIL+jXoj24uARR3aZtVsL6G4DNXZ2OuA6+oaYEREdEvuHI+IiEqSOCIiopIkjoiIqCSJIyIiKkniiIiISpI4IiKikiSOiIioJIkjIiIqSeKIiIhKkjgiIqKSJI6IiKgkiSMiIipJ4oiIiEqSOCIiopIkjoiIqCSJIyIiKkniiIiIShqWOCRNlrRCUqukSzs5PlDS18vjP5E0vGwfLullSY+UP9c2KuaIiNheQx4dK6kfMA94J9AGLJG00Pbymm4XAs/ZPkrSNOAq4P3lsVW2xzci1oiI2LlGnXGcALTaXm17I7AAmNqhz1Tg+nL7m8DpktSg+CIiopsalTiGAE/W7LeVbZ32sd0OrAMOLY+NkPSwpB9I+v16BxsRETvWkEtVQGdnDu5mn2eAYbZ/I2kicJuksbbXbzNYmg5MBxg2bFgPhBwREZ1p1BlHG3BEzf5Q4Okd9ZHUH3gd8KztDbZ/A2D7QWAVcHTHN7A933aL7ZZBgwbV4VeIiAhoXOJYAoyWNELSAGAasLBDn4XAeeX2e4DFti1pUDm5jqSRwGhgdYPijoiIDhpyqcp2u6SZwJ1AP+A628skzQGW2l4IfBG4UVIr8CxFcgE4GZgjqR3YBFxs+9lGxB0REdtr1BwHthcBizq0zarZfgV4byfjbgFuqXuAERHRLblzPCIiKkniiIiISpI4IiKikiSOiIioJIkjIiIqSeKIiIhKkjgiIqKSJI6IiKgkiSMiIipJ4oiIiEqSOCIiopIkjoiIqCSJIyIiKkniiIiISpI4IiKikiSOiIioJIkjIiIqaVjikDRZ0gpJrZIu7eT4QElfL4//RNLwmmOXle0rJE1qVMwREbG9hiQOSf2AecCZwBjgbEljOnS7EHjO9lHAZ4CryrFjKJ4/PhaYDHyufL2IiGiCRp1xnAC02l5teyOwAJjaoc9U4Ppy+5vA6ZJUti+wvcH2GqC1fL2IiGiCRiWOIcCTNfttZVunfWy3A+uAQ7s5NiIiGqR/g95HnbS5m326MxZJ04Hp5e4LklZUirAxDgN+XY8X1lX1eNWok3wOord+Bo7sTqdGJY424Iia/aHA0zvo0yapP/A64NlujsX2fGB+D8bc4yQttd3S7DiiufI5iL7+GWjUpaolwGhJIyQNoJjsXtihz0LgvHL7PcBi2y7bp5WrrkYAo4EHGhR3RER00JAzDtvtkmYCdwL9gOtsL5M0B1hqeyHwReBGSa0UZxrTyrHLJN0MLAfagRm2NzUi7oiI2J6KP+qjESRNLy+pxV4sn4Po65+BJI6IiKgkJUciIqKSJI6IiKgkiSMiIipJ4ohoAhXy7y/6pHxwGyRfFCFpgKRjJA11YXPZ3ll1hNgLSNqnL34vZFVVA0ja3/aLNfsCcP7n7zXKkjh/AvyGogbbC8DXgZtsr29mbNFYkl4PjAJ+Yfs3Ne3qK98JSRx1Juko4LPAj4AfAg+UFYJr+xxu+5lmxBf1J6mFogLCJcB/UdwEezxwOvASMNv2T5oXYTSCpCHAZRSPh1gBDAOeAL4EfKsv3dicxFFnkj4L/DFwBzAIeA54CPiB7Z+VZx/fBKbZfrV5kUa9SLoSeKPt82vaBlKUz5kOHAe82/baJoUYDSDpRoqirV8EXqY48zwV+D3gMeAvbdel8GFPS+KoM0k3AfcD3wPGA79LUYFyIPDvwATgYNt5xsgeStI5wJ8DF9p+rMOx/YBbgBttf60Z8UVjSFoOnGt7aU3bARTfAX8DLLH94WbFV0Wfm5TpS8q/Km8FltleZvurwGzg74C7KP76eCcwp3lRRgPcAqwBrpb0R1saJe1j+2WK690529yDlcVdvw98uEwWANh+wfaPgIuBt0nqVlnzZssZRwNIGmh7Q8fJL0knA/fYTgLfQ5XJYbOkQcDlwPnARoo5jxXA7wNDbE9oYpjRAJImAP8ErAb+zvYDNceOBP7d9n7Niq+KJI46k3Sg7f/q0Na/rBh8ATDR9owmhRcNJum1wJnA+4DXAP9K8cfDvzc1sKirLX80ShpL8QfEuylW2N1Kcdl6PPBD2x9pYpjdlsRRJ5LeDPwhRXn4gyi+IL4N/NuWpbmShgIv2H6+aYFGQ2xZq7/l3o3Yu0g6BMD2s+X+64EzKBbO/CfwLYpHTPzXDl+kF0niqBNJ9wC/pFirfyDFw6kmUnxIZtn+dvOii0aQdDXF40G/YvvxmvZ9s4Ju7yHpQmAKRaJYTbEs/17gm7Zf3XI5s5kxVpXEUQflXxOrbR/Qof0g4CMUZyEX2L63GfFF/Ul6A/AMxRfFCIqnVv4zcKvt58o+NwHfsP2tpgUadSVpMMVS2z8DFgPvAN5FsbryZeCvbS+W1K8v3ceRSdn6eA2wRNIf1jbaXm97FsV9GxdJ2rcp0UUjnAbcDRxNsfz6HmAu8LSkb0maQvEHxGM7fIXYE7wfeND2V20/Y/tr5f08ZwJLgc9KemNfShqQxFEvTwL/BsyW9L8ljS3X62+xDBiTyxV7tCXADcBhtttsX2Z7MMUNX78EbqOY71rZzCCj7n4CHCBpfG2j7V/a/nOK74IPNiWy3dCQZ47vbcrVE7OBzcDJwDHAM5JeBl4H/AHwlSaGGHVmu1XSamBAh/b7gfvLMiQLmhJcNNIjFPfwXCvpVuC7wHLbr5THh1LMefQpmePoYZKOpigj8TqKM7pRFMvt2igmSscCn6O4tt2nTk+jeyS9CbiIosTMPsBaipIz3y3/qDi0bDvI9gvNizQaobzaMAN4G9BOUeByH4o/3I+nWJL/UvMirC6Jo4dJ+jlFQcP1FHWpDgaOADYA8zMhvuer+Qw8D6wDhgMjgceBT9teJuk1NX91xl5A0vHAicDrgd+hSCDX1q646yuSOHqQpEnAPNtHlfv9gSEUy3DPokggH7L9dPOijHrq5DPQDzicopDh/6D4PJxvu615UUa9lUni/1CspLrX9oqaY1sqSQy0vaFpQe6GTI73rP2BX0o6AsB2u+3/sH0r8NeAgUnNDDDqruNnYFM5Ob4Q+EuKea93NjPAaIjLgBaKxRBXSvqMpPdLGlImjTcCn2luiLsuiaNnfYviBr/PShpZe6A8y1hFcZ0z9lz5DOzlyrPMA4BPAdcCPwD2o1ia+xlJHwZuBt7YtCB3U1ZV9aBy4vMvgb8HHpH0U4p7NhYDp1DcPfqeJoYYdZbPQFCspLue4ibgHwP3lmcYEyguWR4DnEQxMd4nZY6jTiQdB0yluK59OMUXxx22r2tqYNEw+Qzs3WoqI3esij0duNL2oU0Mb7ckcTRAuRxvgO11zY4lmiOfgaipkDsX2Mf2XzU7pl2VxBER0UCSDgNeLB/i1SclcURERCVZVRUREZUkcURERCVJHBERUUkSR0REVJLEERERlSRxREREJf8N8BbYJv9LIXsAAAAASUVORK5CYII=\n", - "text/plain": [ - "
        " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# 3-qubit W state\n", - "n = 3\n", - "q = QuantumRegister(n) \n", - "c = ClassicalRegister(n)\n", - "\n", - "W_states = QuantumCircuit(q,c) \n", - "\n", - "W_states.x(q[2]) #start is |100>\n", - "F_gate(W_states,q,2,1,3,1) # Applying F12\n", - "F_gate(W_states,q,1,0,3,2) # Applying F23\n", - "\n", - "if flag_qx2 : # option ibmqx2 \n", - " W_states.cx(q[1],q[2]) # cNOT 21\n", - " W_states.cx(q[0],q[1]) # cNOT 32\n", - " \n", - "else : # option ibmqx4 \n", - " cxrv(W_states,q,1,2)\n", - " cxrv(W_states,q,0,1)\n", - "\n", - "for i in range(3) :\n", - " W_states.measure(q[i] , c[i]) \n", - "\n", - "shots = 1024\n", - "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", - "print('start W state 3-qubit on', backend, \"N=\", shots,time_exp)\n", - "result = execute(W_states, backend=backend, shots=shots)\n", - "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", - "print('end W state 3-qubit on', backend, \"N=\", shots,time_exp)\n", - "plot_histogram(result.result().get_counts(W_states))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now you get an histogram compatible with the final state $|W_{3}\\rangle$ through the following steps:\n", - "\n", - "$$ |\\varphi_{3} \\rangle = cNOT_{2,1}\\, \\, |\\varphi_{2} \\rangle =cNOT_{2,1}\\,\\frac{1}{\\sqrt{3}} \\: (|1 0 0 \\rangle \\: + |1 1 0 \\rangle\\: + |1 1 1\\rangle) = \\frac{1}{\\sqrt{3}} \\: (|1 0 0 \\rangle \\: + |0 1 0 \\: + |0 1 1\\rangle) $$\n", - "\n", - "$$ |W_{3} \\rangle = cNOT_{3,2}\\, \\, |\\varphi_{3} \\rangle =cNOT_{3,2}\\,\\frac{1}{\\sqrt{3}} \\: (|1 0 0 \\rangle \\: + |010 \\: \\rangle+ |0 1 1\\rangle) = \\frac{1}{\\sqrt{3}} \\: (|1 0 0 \\rangle \\: + |0 1 0 \\: + |0 0 1\\rangle) $$\n", - "\n", - "Bingo!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Four-qubit W state\n", - "\n", - "In this section, the production of a four-qubit W state will be obtained by extending the previous circuit.\n", - "\n", - "In this circuit, the starting state is now: $ |\\varphi_{0} \\rangle \\, = \\, |1000\\rangle$.\n", - "\n", - "A $F$ gate was added at the beginning of the circuit and a $cNOT$ gate was added before the measurement phase.\n", - "\n", - "The entire circuit corresponds to:\n", - "\n", - "$$ |W_{4}\\rangle \\,=\\, cNOT_{4,3}\\, \\, cNOT_{3,2}\\, \\, cNOT_{2,1}\\, \\, F_{3,4} \\, \\, F_{2,3} \\, \\, F_{1,2} \\, \\,|\\varphi_{0} \\rangle \\, $$ \n", - "\n", - "Run the following circuit and see what happens." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "start W state 4-qubit ibmq_qasm_simulator N= 1024 09/10/2018 10:54:12\n", - "end W state 4-qubit on ibmq_qasm_simulator N= 1024 09/10/2018 10:54:12\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAETCAYAAAAh/OHhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzt3X2YVWW9//H3RwgS8SkZNZ4EEjyAGOj42ElFfEA9ghoqXqeOx4fIflZmPmQnxQ7lLxSP2ZVSGfrTNEOTtKmQSlHDJ2QM1EBJRIURjyKihg/gjN/fH2vNuNkOzF7MzNqb4fO6rrlc+17r3vPd68L57nvd9/ouRQRmZmal2qrcAZiZ2ebFicPMzDJx4jAzs0ycOMzMLBMnDjMzy8SJw8zMMnHiMDOzTJw4zMwsEycOMzPLxInDzMwy6VzuANpDjx49ol+/fuUOw8xss/LEE0+8HhFVLR3XIRNHv379qK2tLXcYZmabFUkvlXKcL1WZmVkmThxmZpaJE4eZmWXixGFmZpk4cZiZWSZOHGZmlokTh5mZZeLEYWZmmThxmJlZJrklDkmjJS2WtETSxc3sP1vS05IWSHpI0pCCfd9J+y2WdFReMZuZ2cflkjgkdQKuA44GhgCnFiaG1G0RMSwihgNXAlenfYcA44GhwGhgavp+ZmZWBnmNOPYDlkTE0ohYB0wHxhYeEBFvF7zcBoh0eywwPSLWRsQLwJL0/czMrAzyKnLYC1he8LoO2L/4IEnnAN8CugCHFfR9rKhvr/YJ08zMWpLXiEPNtMXHGiKui4jPAN8GLsnSV9IESbWSaleuXNmqYM3MbMPyShx1QJ+C172BFRs5fjpwfJa+EXF9RFRHRHVVVYvl5M3MbBPllTjmAQMl9ZfUhWSyu6bwAEkDC14eCzyXbtcA4yV1ldQfGAg8nkPMlrNZs2axxx57sPvuuzN58uSP7b/66qsZMmQIe+21F6NGjeKllz56dMCyZcs48sgjGTx4MEOGDOHFF18EYPbs2ey9997sueeenHbaadTX1+f1ccw6rojI5Qc4BvgH8Dzw3bRtEjAm3f4xsBBYANwPDC3o+92032Lg6JZ+1z777BO2eamvr48BAwbE888/H2vXro299torFi5cuN4xs2fPjnfeeSciIqZOnRonn3xy075DDjkk/vznP0dExD//+c945513oqGhIXr37h2LFy+OiIhLL700pk2bltMnMtv8ALVRwt/z3O7jiIiZETEoIj4TEZenbRMjoibdPjcihkbE8IgYGRELC/penvbbIyLuyStmy8/jjz/O7rvvzoABA+jSpQvjx4/nd7/73XrHjBw5km7dugFwwAEHUFdXB8CiRYuor6/niCOOAKB79+5069aNVatW0bVrVwYNGgTAEUccwYwZM3L8VGYdk+8ct4rw8ssv06fPR1NZvXv35uWXX97g8TfccANHH300AP/4xz/YYYcdOPHEExkxYgQXXnghDQ0N9OjRgw8++KDpMcJ33nkny5cv3+B7mllpnDisIiSj5PVJzS2og1tvvZXa2louvPBCAOrr65kzZw5XXXUV8+bNY+nSpdx0001IYvr06Zx33nnst99+bLvttnTunNcKdLOOy4nDKkLv3r3XGw3U1dXRs2fPjx137733cvnll1NTU0PXrl2b+o4YMYIBAwbQuXNnjj/+eP72t78BcOCBBzJnzhwef/xxDj74YAYOHPix9zSzbJw4rCLsu+++PPfcc7zwwgusW7eO6dOnM2bMmPWOmT9/Pl/5yleoqalh5513Xq/v6tWrabx/Z/bs2QwZklS0ee211wBYu3YtV1xxBWeffXZOn8is43LisIrQuXNnrr32Wo466igGDx7MySefzNChQ5k4cSI1NcnK7QsvvJA1a9Zw0kknMXz48KbE0qlTJ6666ipGjRrFsGHDiAi+/OUvAzBlyhQGDx7MXnvtxXHHHcdhhx22wRjMrDRq7try5q66ujoaJ0TNzKw0kp6IiOqWjvOIw8zMMnHiMDOzTJw4zMwsEycOMzPLxInDbAvUmoKSnTp1Yvjw4eutbAN44YUX2H///Rk4cCCnnHIK69aty+WzWP6cOMy2MA0NDZxzzjncc889LFq0iF//+tcsWrRovWNGjBhBbW0tTz31FOPGjeOiiy5q2rf11luzYMECFixY0LRUGuDb3/425513Hs899xw77rgjN9xwQ26fyfLlxGG2hWlNQckNiQhmz57NuHHjADjttNO4++672+cDWNk5cZhtYVpTUBLg/fffp7q6mgMOOKApOaxatYoddtihqRZYS+9pmzdXfDPbwmxKQckHH3ywqW3ZsmX07NmTpUuXcthhhzFs2DC22267kt/TNn8ecZhtYVpTUBJoOnbAgAEceuihzJ8/nx49evDmm282PWFxQ+9pHYNHHFZW/S7+Y9l+94uTjy3b7y6nwoKSvXr1Yvr06dx2223rHdNYUHLWrFnrFZRcvXo13bp1o2vXrrz++us8/PDDXHTRRUhi5MiR3HnnnYwfP56bb76ZsWPH5v3RKtKsWbM499xzaWho4KyzzuLiiy9eb//VV1/NtGnT6Ny5M1VVVdx4443stttuTfvffvttBg8ezAknnMC1117Lu+++y0knncTzzz9Pp06dOO6445pdGdeePOIw28K0pqDkM888Q3V1NZ/97GcZOXIkF198cVMl4iuuuIKrr76a3XffnVWrVnHmmWeW7TNWitauYAO49NJLOeSQQ9Zru+CCC3j22WeZP38+Dz/8MPfck++DUT3iaMGmflt46aWXOPHEE2loaOCDDz7g61//elNJ79tvv53LL7+choYGjj32WK688spyfDTbgh1zzDEcc8wx67VNmjSpafvee+9ttt9BBx3E008/3ey+AQMG8Pjjj7ddkB1A4Qo2oGkFW2OyhWQFW6MDDjiAW2+9ten1E088wauvvsro0aObnmTZrVu3pj5dunRh7733bnHVW1vziGMjWvNt4dOf/jSPPPIICxYsYO7cuUyePJkVK1awatUqLrzwQu677z4WLlzIq6++yn333VeOj2dm7aw1K9g+/PBDzj//fKZMmbLB4998801+//vfM2rUqLYLugROHBvRmvXuXbp0aZpQXLt2LR9++CEAS5cuZdCgQVRVVQFw+OGHM2PGjLw+kpnlqDWPRJ46dSrHHHPMeomnUH19Paeeeirf+MY3mkY0efGlqo1o7tvC3LlzN3h88Xr35cuXc+yxx7JkyRKmTJlCz5492XrrrXn22Wd58cUX6d27N3fffbdLM5h1UFlXsD344INNXzgfffRR5syZw9SpU1mzZg3r1q2je/fuTRPhEyZMYODAgXzzm9/M58MUcOLYiNaud+/Tpw9PPfUUK1as4Pjjj2fcuHHssssu/PSnP+WUU05hq6224qCDDmLp0qXt9hnMrHxas4LtV7/6VdP2TTfdRG1tbVPSuOSSS3jrrbeYNm1aPh+kiC9VbURr17s36tmzJ0OHDmXOnDkAHHfcccydO5dHH32UPfbYg4EDB7bfhzCzsmnNCrYNqaur4/LLL2fRokXsvffeDB8+PPcEktujYyWNBn4MdAKm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\n", - "text/plain": [ - "
        " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# 4-qubit W state\n", - "n = 4\n", - "q = QuantumRegister(n) \n", - "c = ClassicalRegister(n)\n", - "W_states = QuantumCircuit(q,c) \n", - "\n", - "W_states.x(q[3]) #start is |1000>\n", - "F_gate(W_states,q,3,2,4,1) # Applying F12\n", - "F_gate(W_states,q,2,1,4,2) # Applying F23\n", - "F_gate(W_states,q,1,0,4,3) # Applying F34 \n", - "cxrv(W_states,q,2,3) # cNOT 21\n", - "if flag_qx2 : # option ibmqx2 \n", - " W_states.cx(q[1],q[2]) # cNOT 32\n", - " W_states.cx(q[0],q[1]) # cNOT 43\n", - "\n", - "else : # option ibmqx4 \n", - " cxrv(W_states,q,1,2)\n", - " cxrv(W_states,q,0,1)\n", - "\n", - "for i in range(4) :\n", - " W_states.measure(q[i] , c[i]) \n", - "\n", - "# circuits = ['W_states']\n", - "\n", - "shots = 1024\n", - "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", - "print('start W state 4-qubit ', backend, \"N=\", shots,time_exp)\n", - "result = execute(W_states, backend=backend, shots=shots)\n", - "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", - "print('end W state 4-qubit on', backend, \"N=\", shots,time_exp)\n", - "plot_histogram(result.result().get_counts(W_states))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, if you used a simulator, you get an histogram clearly compatible with the state:\n", - "\n", - "$$ |W_{4}\\rangle \\;=\\; \\frac{1}{2} \\: (\\:|1000\\rangle + |0100\\rangle + |0010\\rangle + |0001\\rangle \\:) $$\n", - "\n", - "If you used a real quantum computer, the columns of the histogram compatible with a $|W_{4}\\rangle$ state are not all among the highest one. Errors are spreading..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Five-qubit W state\n", - "\n", - "In this section, a five-qubit W state will be obtained, again by extending the previous circuit.\n", - "\n", - "In this circuit, the starting state is now: $ |\\varphi_{0} \\rangle = |10000\\rangle$.\n", - "\n", - "A $F$ gate was added at the beginning of the circuit and an additionnal $cNOT$ gate was added before the measurement phase.\n", - "\n", - "$$ |W_{5}\\rangle = cNOT_{5,4} cNOT_{4,3} cNOT_{3,2} cNOT_{2,1} F_{4,5} F_{3,4} F_{2,3} F_{1,2} |\\varphi_{0} \\rangle $$\n", - "\n", - "Run the following cell and see what happens." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "start W state 5-qubit on ibmq_qasm_simulator N= 1024 09/10/2018 10:54:59\n", - "end W state 5-qubit on ibmq_qasm_simulator N= 1024 09/10/2018 10:54:59\n" - ] - }, - { - "data": { - "image/png": "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7t277zynffv23H777Vx//fW7XPvggw/y9NNPs2rVKrZu3cqJJ57I8OHDadmyJeeccw6zZ88G4Oyzz2bGjBlceOGFeX1vInuiOw6RvZTNzogdOnSgd+/eNGmy6z+1yspKTjzxRJo2bcoBBxxAnz59WLhwIRD2hDEzzIz+/fvvspuiSCFQ4hDZS5l2Rly/fn1W1/bp04cFCxbwwQcf8M4777B06dJd9jwB2L59O7NmzWLYsGGNGnc+NKQJ7/LLL6dHjx5069aN73//+zs3Eps3bx69e/emR48eu+xpL/mnxCGyl+LsjJhuyJAhjBgxgi996UucddZZDBgwgKZNd205/t73vsegQYMYOHBgo8SbL7VNeAsWLKCyspI5c+ZQWVm5yzm1TXhnn332LuXLly/nr3/9K6tXr+a5556joqKCRx99lHfffZdJkyaxePFi1qxZw1tvvcXixYvz+bYaRS4S6pw5c+jVqxe9e/dm2LBhvPPOOzl/H0ocInsp250R63LllVeyatUqFi1ahLvTpUuXnc/95Cc/YcOGDdxwww2NGnM+NKQJz8z46KOP2LZtG1u3bmX79u0cdthhrF27lq5du9K6dWsATjnllH1ux8hcJNSamhouvfRSli5dyurVq+nduzfTpk3L+XtR4hDZS9nsjFiXHTt28O677wKwevVqVq9ezZAhQwCYMWMGDz30EHPmzNntg3Vf0JAmvAEDBnDSSSdxxBFHcMQRRzB06FC6detG586deeGFF3j11Vepqanhvvvu261pr9DlIqG6O+7O+++/j7uzefPmWF9e9ta+91cpUiBSd0bs1q0bZ5555s6dEWt3P6yoqKC0tJQ777yT888/nx49egCh/2LgwIF0796diRMnMnv27J1NVRdccAFvvfUWAwYM4Nhjj2XKlCmJvce90ZAmvKqqKp5//nmqq6tZv349S5YsYdmyZbRq1Yqbb76ZMWPGMHDgQDp06LBb016hy0VC3W+//bj55pvp1asXbdq0obKykgkTJuTqLeyUt5o3s2HAb4ASYIa7X5f2/GXAeUANsAEY7+6vRc+dC1wVnXqNu9+Rr7hF9mTEiBGMGDFil7LUD/p+/fplHBW1//7779ZMUaumpqZxg8yzhjTh3XvvvRx//PG0aNECgOHDh7NixQoGDRrEaaedxmmnnQbA9OnTKSkpafzgc6ixEirA4MGD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\n", - "text/plain": [ - "
        " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# 5-qubit W state\n", - "n = 5\n", - "q = QuantumRegister(n) \n", - "c = ClassicalRegister(n)\n", - "W_states = QuantumCircuit(q,c) \n", - "\n", - "W_states.x(q[4]) #start is |10000>\n", - "F_gate(W_states,q,4,3,5,1) # Applying F12\n", - "F_gate(W_states,q,3,2,5,2) # Applying F23\n", - "F_gate(W_states,q,2,1,5,3) # Applying F34\n", - "F_gate(W_states,q,1,0,5,4) # Applying F45\n", - "W_states.cx(q[3],q[4]) # cNOT 21\n", - "cxrv(W_states,q,2,3) # cNOT 32\n", - "if flag_qx2 : # option ibmqx2 \n", - " W_states.cx(q[1],q[2]) # cNOT 43\n", - " W_states.cx(q[0],q[1]) # cNOT 54\n", - " \n", - "else : # option ibmqx4 \n", - " cxrv(W_states,q,1,2)\n", - " cxrv(W_states,q,0,1) \n", - " \n", - "for i in range(5) :\n", - " W_states.measure(q[i] , c[i]) \n", - "\n", - "shots = 1024\n", - "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", - "print('start W state 5-qubit on', backend, \"N=\", shots,time_exp)\n", - "result = execute(W_states, backend=backend, shots=shots)\n", - "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", - "print('end W state 5-qubit on', backend, \"N=\", shots,time_exp)\n", - "plot_histogram(result.result().get_counts(W_states))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, if you used the simulator, you see an histogram compatible with the state:\n", - "\n", - "$$|W_{5}\\rangle=\\frac{1}{\\sqrt{5}}\\:(\\:|10000\\rangle + |01000\\rangle + |00100\\rangle +|00010\\rangle\\ +|00001\\rangle)$$\n", - "\n", - "But if you were running the program on one of the available real quantum computers, things are still less clear than in the previous case." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "## Conclusion:\n", - "\n", - "When the quantum computer simulator is used, the results accurately reflect the expected spectrum of frequency corresponding to a given $n$ value.\n", - "\n", - "For $n = 3$ on a real quantum computer, the results are obviously in accordance with W states.\n", - "\n", - "The errors amplify significantly for higher $n$ values, but the histogram shows the persistence of some frequency peaks compatible with W states creation.\n", - "\n", - "One cause of errors is the increasing number of gates. Even for an ideal quantum computer, where all the qubits are connected together bidirectionally, the number of elementary gates necessary for building the $F$ gates increases linearly with n, just like the number of late $cNOT$ in this model. Another cause of error is the interval between successive values of $\\theta_{k}$. Indeed these intervals decreases significantly for lower $k$ as $n$ increases.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "## Mathematical appendix :\n", - "\n", - "The operator allowing to deterministically obtain a n-qubit W state from the starting state $\\, |00...0 \\rangle$ can be coined a $W_{n}$ gate.\n", - "\n", - "For a three-qubit W state, the equation in Dirac notation is:\n", - "\n", - "$$W_{3}\\;\\, |000 \\rangle=\\sqrt{\\frac{1}{3}}(|100\\rangle + |010\\rangle + |001\\rangle)$$\n", - "\n", - "which becomes in matrix notation:\n", - "\n", - "$$\\begin{pmatrix}0 & 0 & 0 & 0 & \\;\\;1\\;\\; & 0 & 0 & 0\\\\\\sqrt{\\frac{1}{3}} & -\\sqrt{\\frac{1}{3}} & -\\sqrt{\\frac{1}{6}} & \\sqrt{\\frac{1}{6}} & 0 & 0 & 0 & 0\\\\\\sqrt{\\frac{1}{3}} & \\sqrt{\\frac{1}{3}} & -\\sqrt{\\frac{1}{6}} & -\\sqrt{\\frac{1}{6}} & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & \\;\\;1\\;\\; & 0 & 0\\\\\\sqrt{\\frac{1}{3}} & 0 & \\sqrt{\\frac{2}{3}}\n", - " & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & 0 & \\sqrt{\\frac{1}{2}}\n", - " & -\\sqrt{\\frac{1}{2}}\\\\0 & 0 & 0 & 0 & 0 & 0 & \\sqrt{\\frac{1}{2}} & \\sqrt{\\frac{1}{2}}\\\\0 & \\sqrt{\\frac{1}{3}} & 0 & \\sqrt{\\frac{2}{3}}\n", - " & 0 & 0 & 0 & 0\\end{pmatrix} \\;\n", - " \\begin{pmatrix}1\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\end{pmatrix} = \n", - " \\begin{pmatrix}0\\\\\\sqrt{\\frac{1}{3}}\\\\\\sqrt{\\frac{1}{3}}\\\\0\\\\\\sqrt{\\frac{1}{3}}\\\\0\\\\0\\\\0\\end{pmatrix}$$\n", - " \n", - " One can easily verify that:\n", - " \n", - " $$W_{3}^{\\dagger}W_{3} = I$$\n", - " \n", - " and that there is reversibility:\n", - " \n", - " $$W_{3}^{\\dagger}\\;\\, \\sqrt{\\frac{1}{3}}(|100\\rangle + |010\\rangle + |001\\rangle) = |000 \\rangle$$" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python 3", - "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.7.0" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} diff --git a/community/terra/images/quantum_walk/8_white.jpg b/community/terra/images/quantum_walk/8_white.jpg new file mode 100644 index 000000000..3454d12a2 Binary files /dev/null and b/community/terra/images/quantum_walk/8_white.jpg differ diff --git a/community/terra/images/quantum_walk/8_white.png b/community/terra/images/quantum_walk/8_white.png new file mode 100644 index 000000000..0d4814a20 Binary files /dev/null and b/community/terra/images/quantum_walk/8_white.png differ diff --git a/community/terra/images/quantum_walk/executiontime.png b/community/terra/images/quantum_walk/executiontime.png new file mode 100644 index 000000000..415ac101e Binary files /dev/null and b/community/terra/images/quantum_walk/executiontime.png differ diff --git a/community/terra/images/quantum_walk/fast.gif b/community/terra/images/quantum_walk/fast.gif new file mode 100644 index 000000000..f2af41132 Binary files /dev/null and b/community/terra/images/quantum_walk/fast.gif differ diff --git a/community/terra/images/quantum_walk/implement_toffoli.png b/community/terra/images/quantum_walk/implement_toffoli.png new file mode 100644 index 000000000..cb303f7f4 Binary files /dev/null and b/community/terra/images/quantum_walk/implement_toffoli.png differ diff --git a/community/terra/images/quantum_walk/random_walk.jpg b/community/terra/images/quantum_walk/random_walk.jpg new file mode 100644 index 000000000..c7584e601 Binary files /dev/null and b/community/terra/images/quantum_walk/random_walk.jpg differ diff --git a/community/terra/images/quantum_walk/random_walk.png b/community/terra/images/quantum_walk/random_walk.png new file mode 100644 index 000000000..a2aa39141 Binary files /dev/null and b/community/terra/images/quantum_walk/random_walk.png differ diff --git a/community/terra/images/quantum_walk/result.gif b/community/terra/images/quantum_walk/result.gif new file mode 100644 index 000000000..e61d6979d Binary files /dev/null and b/community/terra/images/quantum_walk/result.gif differ diff --git a/community/terra/images/quantum_walk/toffoli.png b/community/terra/images/quantum_walk/toffoli.png new file mode 100644 index 000000000..15b0ffc78 Binary files /dev/null and b/community/terra/images/quantum_walk/toffoli.png differ diff --git a/community/terra/images/quantum_walk/whole_circuit.jpg b/community/terra/images/quantum_walk/whole_circuit.jpg new file mode 100644 index 000000000..a4bd1e576 Binary files /dev/null and b/community/terra/images/quantum_walk/whole_circuit.jpg differ diff --git a/community/terra/qis_adv/Clifford_Group.ipynb b/community/terra/qis_adv/Clifford_Group.ipynb new file mode 100644 index 000000000..bcc52437e --- /dev/null +++ b/community/terra/qis_adv/Clifford_Group.ipynb @@ -0,0 +1,2119 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tutorial: The Structure of the Clifford Group\n", + "\n", + "### Contributors\n", + "\n", + "Shelly Garion$^1$ and Gadi Aleksandrowicz$^1$\n", + "\n", + "1. IBM Research Haifa, Haifa University Campus, Mount Carmel Haifa, Israel" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction \n", + "\n", + "The goal of this notebook is to describe the structure of the **Clifford group**. This group consists of the quantum operators that can be efficiently simulated (in polynomial time) using a classical computer, via a **Clifford simulator** (see [1]). \n", + "In addition, the Clifford group is used for **Randomized Benchmarking**.\n", + "\n", + "## Definiton\n", + "\n", + "The **Pauli group** $P_n$ on $n$-qubits is generated by the $n$-fold tensor products of the **Pauli matrices** $\\{I,X,Y,Z\\}$:\n", + "\n", + "$$I=\\left(\\begin{array}{cc}\n", + "1 & 0\\\\\n", + "0 & 1\n", + "\\end{array}\\right),X=\\left(\\begin{array}{cc}\n", + "0 & 1\\\\\n", + "1 & 0\n", + "\\end{array}\\right),Y=\\left(\\begin{array}{cc}\n", + "0 & -i\\\\\n", + "i & 0\n", + "\\end{array}\\right),Z=\\left(\\begin{array}{cc}\n", + "1 & 0\\\\\n", + "0 & -1\n", + "\\end{array}\\right)$$\n", + "\n", + "We denote $A \\equiv B$ if $A = \\lambda B$ for some $\\lambda \\in \\mathbb{C}$, and define $U(1) = \\{\\lambda I_n: \\lambda \\in \\mathbb{C} \\} \\cong \\mathbb{C}$. Under this equivalence relation (i.e., neglecting the global phase), we have the following relations betweeen the Pauli matrices:\n", + "\n", + "$$XY\\equiv YX \\equiv Z$$\n", + "$$YZ\\equiv ZY \\equiv X$$\n", + "$$ZX\\equiv XZ \\equiv Y$$\n", + "$$X^{2}=Y^{2}=Z^{2}=I$$\n", + "\n", + "so the group $\\{I,X,Y,Z\\}$ is isomorphic to the Klein four-group $\\mathbb{F}_2^2$ and in general we have the group isomorphism $P_n/U(1) \\cong \\mathbb{F}_2^{2n}$.\n", + "\n", + "The **Clifford group** $C_n$ on $n$-qubits is defined as the normalizer of the Pauli group $P_n$, when neglecting the global phase $U(1) \\cong \\mathbb{C}$ (see [2]).\n", + "\n", + "It turns out that $C_n/P_n \\cong Sp(2n)$, where $Sp(2n)$ denotes the group of $2n \\times 2n$ **symplectic matrices** over the field $\\mathbb{F}_2$, which is *simple* for $n>2$ (see [3]). We recall that the symplectic group $Sp(2n)$ is the group of $2n \\times 2n$ matrices $S$ with entries in the field $\\mathbb{F}_2$ such that $S \\Lambda (n) S^{T} = \\Lambda (n)$ where $\\Lambda (n) = \\oplus_{i=1}^n$ $\\begin{pmatrix} 0 & 1 \\\\ 1 & 0\\end{pmatrix}$.\n", + "\n", + "We explicitly describe below the structure and elements in 1-qubit Clifford group $C_1$ and the 2-qubit Cliffod group $C_2$.\n", + "\n", + "### References\n", + "\n", + "[1] Scott Aaaronson and Daniel Gottesman, Improved Simulation of Stabilizer Circuits, https://arxiv.org/abs/quant-ph/0406196\n", + "\n", + "[2] Maris Ozlos, Clifford group, 2008,\n", + "http://home.lu.lv/~sd20008/papers/essays/Clifford%20group%20[paper].pdf \n", + "\n", + "[3] Robert Koenig and John Smolin, How to efficiently select an arbitrary Clifford group element, https://arxiv.org/abs/1406.2170\n", + "\n", + "[4] A. D. C'orcoles, Jay M. Gambetta, Jerry M. Chow, John A. Smolin, Matthew Ware, J. D. Strand, B. L. T. Plourde, and M. Steffen, Supplementary material for ''Process verification of two-qubit quantum gates by randomized benchmarking'', https://arxiv.org/pdf/1210.7011.pdf " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "import matplotlib\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import sympy\n", + "from sympy import *\n", + "import itertools\n", + "from IPython.display import display\n", + "init_printing() #allows nice math displays" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Quantum matrix class\n", + "\n", + "We use the following class to explicitly present a quantum matrix in the Clifford group $C_1$ up to a global phase (coefficient)." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "class QuantumMatrix():\n", + " def __init__(self, m, coeff = 1):\n", + " self.matrix = sympy.Matrix(m)\n", + " self.coefficient = coeff\n", + " self.canonize()\n", + " \n", + " def canonize(self):\n", + " a = next((x for x in self.matrix if x != 0), None)\n", + " if a is not None: #zero vector\n", + " for i,j in itertools.product([0,1], [0,1]):\n", + " self.matrix[i,j] = sympy.simplify(self.matrix[i,j] / a)\n", + " self.coefficient = sympy.simplify(self.coefficient * a) \n", + " \n", + " def __str__(self):\n", + " coeff_string = \"\"\n", + " if self.coefficient != 1:\n", + " coeff_string = \"{} * \".format(self.coefficient)\n", + " return \"{}[[{}, {}], [{}, {}]]\".format(coeff_string,self.matrix[0], self.matrix[1], self.matrix[2], self.matrix[3])\n", + " \n", + " def __mul__(self, rhs):\n", + " return QuantumMatrix(self.matrix * rhs.matrix, self.coefficient * rhs.coefficient)\n", + " \n", + " def __add__(self, rhs):\n", + " temp_rhs_matrix = sympy.Matrix([[1,0],[0,1]])\n", + " for i,j in itertools.product([0,1], [0,1]):\n", + " temp_rhs_matrix[i,j] = sympy.simplify((rhs.matrix[i,j] * self.coefficient) / rhs.coefficient)\n", + " return QuantumMatrix(self.matrix + temp_rhs_matrix, self.coefficient * 1/sympy.sqrt(2))\n", + " \n", + " def __sub__(self, rhs):\n", + " return self + QuantumMatrix(rhs.matrix, rhs.coefficient * -1)\n", + " \n", + " def __eq__(self, rhs):\n", + " return (self.matrix == rhs.matrix and self.coefficient == rhs.coefficient)\n", + " \n", + " def equiv(self, rhs):\n", + " return (self.matrix == rhs.matrix)\n", + " \n", + " def __iter__(self):\n", + " for x in self.matrix:\n", + " yield x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The Clifford group on 1 qubit\n", + "\n", + "The **Pauli group** $P_1$ is generated by the Pauli matrices $\\{I,X,Y,Z\\}$. When neglecting the global phase $U(1) \\cong \\mathbb{C}$ we get that $P_1/U(1) \\cong \\mathbb{F}_2^2$. \n", + "\n", + "The **Clifford group** $C_1$ on 1-qubit is defined as the normalizer of the Pauli group $P_1$ (when neglecting the global phase $U(1) \\cong \\mathbb{C}$).\n", + "\n", + "It turns out that $C_1/P_1 \\cong Sp(2) \\cong SL(2,2) \\cong S_3$, where $Sp(2)$ and $SL(2,2)$ denote the $2 \\times 2$ symplectic matrices and the $2 \\times 2$ matrices of determinant 1 over the field with 2 elements, respectively, and $S_3$ is the symmetric group on 3 elements. Indeed, one can explicitly verify that \n", + "\n", + "$$Sp(2) \\cong SL(2,2) = \\left\\{ \\begin{pmatrix} 1 & 0 \\\\ 0 & 1\\end{pmatrix} , \n", + "\\begin{pmatrix} 0 & 1 \\\\ 1 & 0\\end{pmatrix} , \\begin{pmatrix} 1 & 1 \\\\ 0 & 1\\end{pmatrix} ,\n", + "\\begin{pmatrix} 1 & 0 \\\\ 1 & 1\\end{pmatrix} , \\begin{pmatrix} 0 & 1 \\\\ 1 & 1\\end{pmatrix} ,\n", + "\\begin{pmatrix} 1 & 1 \\\\ 1 & 0\\end{pmatrix} \\right\\} \\cong S_3$$\n", + "\n", + "We can think of $C_1$ as rotations of the Bloch sphere that permutes $\\pm x, \\pm y, \\pm z$ directions. There are 6 possibilities where the $x$ axis can go. Once we have fixed the $x$ axis, we can still rotate around it and thus there are 4 possibilities where the $z$ axis can go. Thus $C_1$ corresponds to the group $S_4$ of rotational symmetries of the cube (of order 24).\n", + "\n", + "We will explicitly show these statements below." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Pauli gates" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Pauli matrices (when neglecting the global phase):\n", + "Identity: I=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABKElEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC1Y51qJFDgg5wwCQShjgNGDdA5NjTc9HkVvIwKAJk2Ng6EeRu8bAYB8Atw9V7hsDw3sD7HKs34FyDdjleICB4a+AQw6oD5ccPjMZgG6xx+EWhrsMDOtx+QHo90pcfuc2YAXGADSsy+SnLYAFJpBm1WhzgMshiSOY2OMIIj8qxxCupYIIKxgLGi6TGaIPwIRANLMokIDIcQkwME1Akgsr+wqX401gYAbx4IADIcefwMD3GS4BZCDJxRcw8P3AIXdegYEFJfMi6TtfgFsOn5lAtzDjcgvvBQYuXH4A+p0d2e/IfmDYzBDogMMPDEEdKchS7Ik/s2DhiSyOYA+y9ImvjMRTtgIAz1JTjnSjBSoAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & 1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0⎤\n", + "⎢ ⎥\n", + "⎣0 1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "X=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCZZs3dIrurRHbLQ9+lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABIklEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC0QuTF0FUwVUrpkhcgGyJLMoXB+7AANTA5JcTM5XuBz3AQZmEA8O+BBy/AcYeD/DJYAMJLn4BAbefzjk1iswsKAEAJK+9Qm45fCZCXQLMy63cG9gYMflB6Df2RpwuJNhMkOgAy65oHdHkKXYDv44Do8HZAk4GxoPcD4yY1QOOTRAbNakIgdEeBoGIMtzGLDOgsmxHjuPIlfIwKABk2NgeI8it4eBwT4AllfQ5P4wMNw3wC7H+g0o9wC7HBcwHfsr4JAD6sMlh89MBqBb7HG4hWE3A0M9Lj8A/Z6By++cBqzA0gOaznLkewqQApRV7w1SWCNJwJmDLH3iKyPxlK0AGSZZVRPbH6EAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}0 & 1\\\\1 & 0\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡0 1⎤\n", + "⎢ ⎥\n", + "⎣1 0⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Y=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCZZs3dIrurRHbLQ9+lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABNUlEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko5wNWHqKjhUI9Q0M0QuQFfELAoSgathF2BgakBTE5PzFUUN9wEGZrAIsjo+VDX8Bxh4PyPLg9hoauITGHj/EVCzXoGBBSMw0cxZn0BYDTF2Ad3MTMjN3BsY2An5HRiGbA0E/MUwmSHQgZCaoHdH0JWwHfxxHCgGjy90eST+qBqkwMDCpEv4sCYVOQDtRrPLMADZPRwGrLPQ1bAeO4+ippCBQQNdDQPDexQ1exgY7IECaHahqvnDwHDfAL8a1m9ANQ/wq+EC5kl/BQJqgObA1bB2zgSCGQ5obibGLgagm+0JuJlhNwNDPSG/A8Mwg1AYchqwgkpd1DDMke8pAArCAKveGwcgG1UNTBKVHppqiKmbiKjjACjPZa0KlYQXAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$$\\left[\\begin{matrix}0 & 1\\\\-1 & 0\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡0 1⎤\n", + "⎢ ⎥\n", + "⎣-1 0⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Z=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABRUlEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko641LAWLXIAKQACqBrDAAgXQXIasO6B8sBqWNPzMdQsZGDQRFbDwNCPoeYaA4M9VBBqF6aabwwM7w0gBuFSw/odqKYBvxoeYMD6KxBQAzSHkBpi7GIAutmegJsZ7jIwrCfkd2AYVkKcDIsLzPDhNmCFxTYkfMrkpy2AaoJRrBptDlA2NAxhMljpUTVYgwUuSN3wCddSgZuMyYDYNZkh+gCmHAMDsyhIFKyGS4CBaQIWNWFlX+FqeBMYmME8dHUcCDX8CQx8n9HlQXwkNfEFDHw/CKg5r8DAgrUwQzLnfAFhNeh2Re4GgSko7gG6mZmQm3kvMHAR8jswDNmxhSGy3xk2MwQ6EPA7Q1BHCjYl7Ik/s4Di1E0/2CxCiNHXLmLqJiLqOABOc2CwB6TLmwAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & -1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0 ⎤\n", + "⎢ ⎥\n", + "⎣0 -1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "X = QuantumMatrix( [[0,1], [1,0]])\n", + "Y = QuantumMatrix( [[0,-sympy.I], [sympy.I,0]])\n", + "Z = QuantumMatrix( [[1,0], [0,-1]])\n", + "I = QuantumMatrix( [[1,0], [0,1]])\n", + "\n", + "print (\"The Pauli matrices (when neglecting the global phase):\")\n", + "print (\"Identity: I=\")\n", + "display(sympy.Matrix(I.matrix))\n", + "print (\"X=\")\n", + "display(sympy.Matrix(X.matrix))\n", + "print (\"Y=\")\n", + "display(sympy.Matrix(Y.matrix))\n", + "print (\"Z=\")\n", + "display(sympy.Matrix(Z.matrix))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Pauli gates X,Y,Z are of order 2:\n", + "X*X=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABKElEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC1Y51qJFDgg5wwCQShjgNGDdA5NjTc9HkVvIwKAJk2Ng6EeRu8bAYB8Atw9V7hsDw3sD7HKs34FyDdjleICB4a+AQw6oD5ccPjMZgG6xx+EWhrsMDOtx+QHo90pcfuc2YAXGADSsy+SnLYAFJpBm1WhzgMshiSOY2OMIIj8qxxCupYIIKxgLGi6TGaIPwIRANLMokIDIcQkwME1Akgsr+wqX401gYAbx4IADIcefwMD3GS4BZCDJxRcw8P3AIXdegYEFJfMi6TtfgFsOn5lAtzDjcgvvBQYuXH4A+p0d2e/IfmDYzBDogMMPDEEdKchS7Ik/s2DhiSyOYA+y9ImvjMRTtgIAz1JTjnSjBSoAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & 1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0⎤\n", + "⎢ ⎥\n", + "⎣0 1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Y*Y=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABKElEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC1Y51qJFDgg5wwCQShjgNGDdA5NjTc9HkVvIwKAJk2Ng6EeRu8bAYB8Atw9V7hsDw3sD7HKs34FyDdjleICB4a+AQw6oD5ccPjMZgG6xx+EWhrsMDOtx+QHo90pcfuc2YAXGADSsy+SnLYAFJpBm1WhzgMshiSOY2OMIIj8qxxCupYIIKxgLGi6TGaIPwIRANLMokIDIcQkwME1Akgsr+wqX401gYAbx4IADIcefwMD3GS4BZCDJxRcw8P3AIXdegYEFJfMi6TtfgFsOn5lAtzDjcgvvBQYuXH4A+p0d2e/IfmDYzBDogMMPDEEdKchS7Ik/s2DhiSyOYA+y9ImvjMRTtgIAz1JTjnSjBSoAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & 1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0⎤\n", + "⎢ ⎥\n", + "⎣0 1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Z*Z=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABKElEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC1Y51qJFDgg5wwCQShjgNGDdA5NjTc9HkVvIwKAJk2Ng6EeRu8bAYB8Atw9V7hsDw3sD7HKs34FyDdjleICB4a+AQw6oD5ccPjMZgG6xx+EWhrsMDOtx+QHo90pcfuc2YAXGADSsy+SnLYAFJpBm1WhzgMshiSOY2OMIIj8qxxCupYIIKxgLGi6TGaIPwIRANLMokIDIcQkwME1Akgsr+wqX401gYAbx4IADIcefwMD3GS4BZCDJxRcw8P3AIXdegYEFJfMi6TtfgFsOn5lAtzDjcgvvBQYuXH4A+p0d2e/IfmDYzBDogMMPDEEdKchS7Ik/s2DhiSyOYA+y9ImvjMRTtgIAz1JTjnSjBSoAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & 1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0⎤\n", + "⎢ ⎥\n", + "⎣0 1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print (\"The Pauli gates X,Y,Z are of order 2:\")\n", + "A=X*X\n", + "print (\"X*X=\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=Y*Y\n", + "print (\"Y*Y=\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=Z*Z\n", + "print (\"Z*Z=\")\n", + "display(sympy.Matrix(A.matrix))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "For example, one can verify that X*Y=Y*X=Z:\n", + "X*Y = Z =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABRUlEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko641LAWLXIAKQACqBrDAAgXQXIasO6B8sBqWNPzMdQsZGDQRFbDwNCPoeYaA4M9VBBqF6aabwwM7w0gBuFSw/odqKYBvxoeYMD6KxBQAzSHkBpi7GIAutmegJsZ7jIwrCfkd2AYVkKcDIsLzPDhNmCFxTYkfMrkpy2AaoJRrBptDlA2NAxhMljpUTVYgwUuSN3wCddSgZuMyYDYNZkh+gCmHAMDsyhIFKyGS4CBaQIWNWFlX+FqeBMYmME8dHUcCDX8CQx8n9HlQXwkNfEFDHw/CKg5r8DAgrUwQzLnfAFhNeh2Re4GgSko7gG6mZmQm3kvMHAR8jswDNmxhSGy3xk2MwQ6EPA7Q1BHCjYl7Ik/s4Di1E0/2CxCiNHXLmLqJiLqOABOc2CwB6TLmwAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & -1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0 ⎤\n", + "⎢ ⎥\n", + "⎣0 -1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Y*X = Z =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABRUlEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko641LAWLXIAKQACqBrDAAgXQXIasO6B8sBqWNPzMdQsZGDQRFbDwNCPoeYaA4M9VBBqF6aabwwM7w0gBuFSw/odqKYBvxoeYMD6KxBQAzSHkBpi7GIAutmegJsZ7jIwrCfkd2AYVkKcDIsLzPDhNmCFxTYkfMrkpy2AaoJRrBptDlA2NAxhMljpUTVYgwUuSN3wCddSgZuMyYDYNZkh+gCmHAMDsyhIFKyGS4CBaQIWNWFlX+FqeBMYmME8dHUcCDX8CQx8n9HlQXwkNfEFDHw/CKg5r8DAgrUwQzLnfAFhNeh2Re4GgSko7gG6mZmQm3kvMHAR8jswDNmxhSGy3xk2MwQ6EPA7Q1BHCjYl7Ik/s4Di1E0/2CxCiNHXLmLqJiLqOABOc2CwB6TLmwAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & -1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0 ⎤\n", + "⎢ ⎥\n", + "⎣0 -1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Similarly, X*Z=Z*X=Y, Y*Z=Z*Y=X\n" + ] + } + ], + "source": [ + "print (\"For example, one can verify that X*Y=Y*X=Z:\")\n", + "A=X*Y\n", + "B=Y*X\n", + "print (\"X*Y = Z =\")\n", + "display(sympy.Matrix(A.matrix))\n", + "print (\"Y*X = Z =\")\n", + "display(sympy.Matrix(B.matrix))\n", + "print (\"Similarly, X*Z=Z*X=Y, Y*Z=Z*Y=X\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In conclusion, we obtain an isomorphism of groups: $P_1/U(1) \\cong \\mathbb{F}_2^2$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now discuss other elements in the Clifford group (when neglecting the global phase).\n", + "\n", + "### Hadamard gate" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hadamard gate: H=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAJ1BMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAilU6eAAAADHRSTlMA74lUMhCrmXbNZt1t74nvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAoUlEQVQ4EWOQOXOIAR/QOXOQQdjFFZ8ShhAXQwYRvCpAko7EqzEMwDCNWRQmBDaHNT0HQ01Y2VEUNQwMPRhqGDhG1SDigkrhUyYzbQEs5KE0e+LJLCiThHhHMwSVO2oOanig86gcPljyIMhGSD7EmQdBSqD5EOoeLGkMpAiSD4eEmsjdIDBlcLsZSx4EBTM0H1I5bYBMxgnoaxcxdRMRdRwAb3pMCRzR/q8AAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 1\\\\1 & -1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 1 ⎤\n", + "⎢ ⎥\n", + "⎣1 -1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H is of order 2:\n", + "H*H =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABKElEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC1Y51qJFDgg5wwCQShjgNGDdA5NjTc9HkVvIwKAJk2Ng6EeRu8bAYB8Atw9V7hsDw3sD7HKs34FyDdjleICB4a+AQw6oD5ccPjMZgG6xx+EWhrsMDOtx+QHo90pcfuc2YAXGADSsy+SnLYAFJpBm1WhzgMshiSOY2OMIIj8qxxCupYIIKxgLGi6TGaIPwIRANLMokIDIcQkwME1Akgsr+wqX401gYAbx4IADIcefwMD3GS4BZCDJxRcw8P3AIXdegYEFJfMi6TtfgFsOn5lAtzDjcgvvBQYuXH4A+p0d2e/IfmDYzBDogMMPDEEdKchS7Ik/s2DhiSyOYA+y9ImvjMRTtgIAz1JTjnSjBSoAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & 1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0⎤\n", + "⎢ ⎥\n", + "⎣0 1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H operates on the Pauli gates by conjugation as a reflection: X<-->Z:\n", + "H*X*H = Z =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABRUlEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko641LAWLXIAKQACqBrDAAgXQXIasO6B8sBqWNPzMdQsZGDQRFbDwNCPoeYaA4M9VBBqF6aabwwM7w0gBuFSw/odqKYBvxoeYMD6KxBQAzSHkBpi7GIAutmegJsZ7jIwrCfkd2AYVkKcDIsLzPDhNmCFxTYkfMrkpy2AaoJRrBptDlA2NAxhMljpUTVYgwUuSN3wCddSgZuMyYDYNZkh+gCmHAMDsyhIFKyGS4CBaQIWNWFlX+FqeBMYmME8dHUcCDX8CQx8n9HlQXwkNfEFDHw/CKg5r8DAgrUwQzLnfAFhNeh2Re4GgSko7gG6mZmQm3kvMHAR8jswDNmxhSGy3xk2MwQ6EPA7Q1BHCjYl7Ik/s4Di1E0/2CxCiNHXLmLqJiLqOABOc2CwB6TLmwAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & -1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0 ⎤\n", + "⎢ ⎥\n", + "⎣0 -1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*Z*H = X =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCZZs3dIrurRHbLQ9+lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABIklEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC0QuTF0FUwVUrpkhcgGyJLMoXB+7AANTA5JcTM5XuBz3AQZmEA8O+BBy/AcYeD/DJYAMJLn4BAbefzjk1iswsKAEAJK+9Qm45fCZCXQLMy63cG9gYMflB6Df2RpwuJNhMkOgAy65oHdHkKXYDv44Do8HZAk4GxoPcD4yY1QOOTRAbNakIgdEeBoGIMtzGLDOgsmxHjuPIlfIwKABk2NgeI8it4eBwT4AllfQ5P4wMNw3wC7H+g0o9wC7HBcwHfsr4JAD6sMlh89MBqBb7HG4hWE3A0M9Lj8A/Z6By++cBqzA0gOaznLkewqQApRV7w1SWCNJwJmDLH3iKyPxlK0AGSZZVRPbH6EAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}0 & 1\\\\1 & 0\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡0 1⎤\n", + "⎢ ⎥\n", + "⎣1 0⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*Y*H = Y =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCZZs3dIrurRHbLQ9+lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABNUlEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko5wNWHqKjhUI9Q0M0QuQFfELAoSgathF2BgakBTE5PzFUUN9wEGZrAIsjo+VDX8Bxh4PyPLg9hoauITGHj/EVCzXoGBBSMw0cxZn0BYDTF2Ad3MTMjN3BsY2An5HRiGbA0E/MUwmSHQgZCaoHdH0JWwHfxxHCgGjy90eST+qBqkwMDCpEv4sCYVOQDtRrPLMADZPRwGrLPQ1bAeO4+ippCBQQNdDQPDexQ1exgY7IECaHahqvnDwHDfAL8a1m9ANQ/wq+EC5kl/BQJqgObA1bB2zgSCGQ5obibGLgagm+0JuJlhNwNDPSG/A8Mwg1AYchqwgkpd1DDMke8pAArCAKveGwcgG1UNTBKVHppqiKmbiKjjACjPZa0KlYQXAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$$\\left[\\begin{matrix}0 & 1\\\\-1 & 0\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡0 1⎤\n", + "⎢ ⎥\n", + "⎣-1 0⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "H = QuantumMatrix( [[1,1], [1,-1]], 1/sympy.sqrt(2))\n", + "print (\"Hadamard gate: H=\")\n", + "display(sympy.Matrix(H.matrix))\n", + "\n", + "print (\"H is of order 2:\")\n", + "A=H*H\n", + "print (\"H*H =\")\n", + "display(sympy.Matrix(A.matrix))\n", + "\n", + "print (\"H operates on the Pauli gates by conjugation as a reflection: X<-->Z:\")\n", + "A=H*X*H\n", + "print(\"H*X*H = Z =\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=H*Z*H\n", + "print(\"H*Z*H = X =\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=H*Y*H\n", + "print(\"H*Y*H = Y =\")\n", + "display(sympy.Matrix(A.matrix))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We therefore get the commutator relations:\n", + "$$HX=ZH$$\n", + "$$HZ=XH$$\n", + "$$HY=YH$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Phase gate" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Phase gate: S=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABQ0lEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC1Y51qJFDgg5wwCQShjgNGDdA5NjTc9HkVvIwKAJk2Ng6EeRu8bAYB8Atw9V7hsDw3sD7HKs34FyDdjleICB4a+AQw6oD5ccPjMZgG6xx+EWhrsMDOtx+QHo90pcfuc2YAXGADSsy+SnLYAFJpBm1WhzgMshiSOY2OMIIj8qxxCupYIIKxCL7QI8PCczRB9AkWRbAJPjEmBgmoAiB+JAwpM3gYH5Kw45/gQGvs845OILGPh+IMtFVMDNPK/AwIKSeRUeIuQKUOV4DIBJCeoWdDNZGUA2QNwJdAszilvArob64QIDF4ofOBOA+REiB/Q7O4rf4w0UYHIMmxkCHYA2wMF7ngVwuaCOFLg4iMG2CkhAzEQRh3MGmRy+MhJP2QoAqlhPskD1oYsAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0⎤\n", + "⎢ ⎥\n", + "⎣0 ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Z=S*S, thus S has order 4, and the inverse of S is S*Z:\n", + "S*S = Z =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABRUlEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko641LAWLXIAKQACqBrDAAgXQXIasO6B8sBqWNPzMdQsZGDQRFbDwNCPoeYaA4M9VBBqF6aabwwM7w0gBuFSw/odqKYBvxoeYMD6KxBQAzSHkBpi7GIAutmegJsZ7jIwrCfkd2AYVkKcDIsLzPDhNmCFxTYkfMrkpy2AaoJRrBptDlA2NAxhMljpUTVYgwUuSN3wCddSgZuMyYDYNZkh+gCmHAMDsyhIFKyGS4CBaQIWNWFlX+FqeBMYmME8dHUcCDX8CQx8n9HlQXwkNfEFDHw/CKg5r8DAgrUwQzLnfAFhNeh2Re4GgSko7gG6mZmQm3kvMHAR8jswDNmxhSGy3xk2MwQ6EPA7Q1BHCjYl7Ik/s4Di1E0/2CxCiNHXLmLqJiLqOABOc2CwB6TLmwAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & -1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0 ⎤\n", + "⎢ ⎥\n", + "⎣0 -1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The inverse of S: Sdg = S*Z =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEIAAAAyBAMAAAAaWBAaAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABQ0lEQVQ4EWOQ//+JATfQ//+RQdjFFbcChhAXQwYRPPIgKUccKliLFjmA5GEqmEUhPATJacC6B8IDmxFW9hUhB2EtZGDQRFLBwIGh4hoDg30AWAnEHZgqvjEwvDfAp4L1O1BFAz4VPMBQ9FfAqwJoBn4VhG1hALrUHq9LGe4yMKzH71tgiFWCHQqNF8zw4DZghUYpOMTYE39mQTTASVaNNgdkM+ASWBi4Yh+hdFQFIixALCLDA5F9ULUzsF2AmoHIPugqFkBVILIPmgoQF+wORPbBpQKRfXCoQErYqCoiKqC2IGUfVBUKD2EqENkHRQWPASgxg1yKYUvkbhCYwsrwA6oCKfugmMHADCo0wL5FZB9UFZwJwEwFVoHIPqgq4g0UoCoQ2QdVxXueBVAViOyDqoJtFZAPtgVVHI03lFQQrj0I1kAAZrVeD9caneUAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & - i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0 ⎤\n", + "⎢ ⎥\n", + "⎣0 -ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Indeed, S*Sdg =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABKElEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC1Y51qJFDgg5wwCQShjgNGDdA5NjTc9HkVvIwKAJk2Ng6EeRu8bAYB8Atw9V7hsDw3sD7HKs34FyDdjleICB4a+AQw6oD5ccPjMZgG6xx+EWhrsMDOtx+QHo90pcfuc2YAXGADSsy+SnLYAFJpBm1WhzgMshiSOY2OMIIj8qxxCupYIIKxgLGi6TGaIPwIRANLMokIDIcQkwME1Akgsr+wqX401gYAbx4IADIcefwMD3GS4BZCDJxRcw8P3AIXdegYEFJfMi6TtfgFsOn5lAtzDjcgvvBQYuXH4A+p0d2e/IfmDYzBDogMMPDEEdKchS7Ik/s2DhiSyOYA+y9ImvjMRTtgIAz1JTjnSjBSoAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & 1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0⎤\n", + "⎢ ⎥\n", + "⎣0 1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "S = QuantumMatrix( [[1,0], [0,sympy.I]])\n", + "print (\"Phase gate: S=\")\n", + "display(sympy.Matrix(S.matrix))\n", + "\n", + "print (\"Z=S*S, thus S has order 4, and the inverse of S is S*Z:\")\n", + "A=S*S\n", + "print (\"S*S = Z =\")\n", + "display(sympy.Matrix(A.matrix))\n", + "print (\"The inverse of S: Sdg = S*Z =\")\n", + "Sdg = S*Z\n", + "display(sympy.Matrix(Sdg.matrix))\n", + "print (\"Indeed, S*Sdg =\")\n", + "A = S*Sdg\n", + "display(sympy.Matrix(A.matrix))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "S operates on the Pauli gates by conjugation as a reflection: Y<-->Z:\n", + "S*X*Sdg = Y =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCZZs3dIrurRHbLQ9+lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABNUlEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko5wNWHqKjhUI9Q0M0QuQFfELAoSgathF2BgakBTE5PzFUUN9wEGZrAIsjo+VDX8Bxh4PyPLg9hoauITGHj/EVCzXoGBBSMw0cxZn0BYDTF2Ad3MTMjN3BsY2An5HRiGbA0E/MUwmSHQgZCaoHdH0JWwHfxxHCgGjy90eST+qBqkwMDCpEv4sCYVOQDtRrPLMADZPRwGrLPQ1bAeO4+ippCBQQNdDQPDexQ1exgY7IECaHahqvnDwHDfAL8a1m9ANQ/wq+EC5kl/BQJqgObA1bB2zgSCGQ5obibGLgagm+0JuJlhNwNDPSG/A8Mwg1AYchqwgkpd1DDMke8pAArCAKveGwcgG1UNTBKVHppqiKmbiKjjACjPZa0KlYQXAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$$\\left[\\begin{matrix}0 & 1\\\\-1 & 0\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡0 1⎤\n", + "⎢ ⎥\n", + "⎣-1 0⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "S*Y*Sdg = X =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCZZs3dIrurRHbLQ9+lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABIklEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC0QuTF0FUwVUrpkhcgGyJLMoXB+7AANTA5JcTM5XuBz3AQZmEA8O+BBy/AcYeD/DJYAMJLn4BAbefzjk1iswsKAEAJK+9Qm45fCZCXQLMy63cG9gYMflB6Df2RpwuJNhMkOgAy65oHdHkKXYDv44Do8HZAk4GxoPcD4yY1QOOTRAbNakIgdEeBoGIMtzGLDOgsmxHjuPIlfIwKABk2NgeI8it4eBwT4AllfQ5P4wMNw3wC7H+g0o9wC7HBcwHfsr4JAD6sMlh89MBqBb7HG4hWE3A0M9Lj8A/Z6By++cBqzA0gOaznLkewqQApRV7w1SWCNJwJmDLH3iKyPxlK0AGSZZVRPbH6EAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}0 & 1\\\\1 & 0\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡0 1⎤\n", + "⎢ ⎥\n", + "⎣1 0⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "S*Z*Sdg = Z =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABRUlEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko641LAWLXIAKQACqBrDAAgXQXIasO6B8sBqWNPzMdQsZGDQRFbDwNCPoeYaA4M9VBBqF6aabwwM7w0gBuFSw/odqKYBvxoeYMD6KxBQAzSHkBpi7GIAutmegJsZ7jIwrCfkd2AYVkKcDIsLzPDhNmCFxTYkfMrkpy2AaoJRrBptDlA2NAxhMljpUTVYgwUuSN3wCddSgZuMyYDYNZkh+gCmHAMDsyhIFKyGS4CBaQIWNWFlX+FqeBMYmME8dHUcCDX8CQx8n9HlQXwkNfEFDHw/CKg5r8DAgrUwQzLnfAFhNeh2Re4GgSko7gG6mZmQm3kvMHAR8jswDNmxhSGy3xk2MwQ6EPA7Q1BHCjYl7Ik/s4Di1E0/2CxCiNHXLmLqJiLqOABOc2CwB6TLmwAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & -1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0 ⎤\n", + "⎢ ⎥\n", + "⎣0 -1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "We therefore get the commutator relations:\n", + "S*X = Y*S and Sdg*Y = X*Sdg\n", + "S*Y = X*S and Sdg*X = Y*Sdg\n", + "S*Z = Z*S = Sdg and Sdg*Z = Z*Sdg = S\n" + ] + } + ], + "source": [ + "print (\"S operates on the Pauli gates by conjugation as a reflection: Y<-->Z:\")\n", + "A = S*X*Sdg # =Y\n", + "print (\"S*X*Sdg = Y =\")\n", + "display(sympy.Matrix(A.matrix))\n", + "print (\"S*Y*Sdg = X =\")\n", + "A = S*Y*Sdg # =X\n", + "display(sympy.Matrix(A.matrix))\n", + "print (\"S*Z*Sdg = Z =\")\n", + "A = S*Z*Sdg # =Z\n", + "display(sympy.Matrix(A.matrix))\n", + "\n", + "print (\"We therefore get the commutator relations:\")\n", + "print (\"S*X = Y*S and Sdg*Y = X*Sdg\")\n", + "print (\"S*Y = X*S and Sdg*X = Y*Sdg\")\n", + "print (\"S*Z = Z*S = Sdg and Sdg*Z = Z*Sdg = S\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The axis swap group" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Let: V = H*S*H*S =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEIAAAAyBAMAAAAaWBAaAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt27RCIPdUgdAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA2ElEQVQ4EWOQ//+JATfQ//+RQdjFFbcChhAXQwYRPPIgKUcSVBgGYBgGFoKZwZqej64CKgRTwcDQj64CKjSqAh624CAiITzK5KctgGuGMCBCCDPQpOHcURXwoAAzqB8ebAdQbABzUW1hW4CqAsRFVYEiD+VQXUVEBYo1EC6KLQoXUVRAuMgq+AwqkVVAuWAVkbtBYAorww9kFVAushkMzF+RVUC5KCo4E1DKEAgXRUW8gQKyIRAuior7fAuQVUC4KCrYViErYIBwUVSgyMM4Q0kF4dqDYA0EAM4zSlkWArJNAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 1\\\\- i & i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 1⎤\n", + "⎢ ⎥\n", + "⎣-ⅈ ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "V is of order 3:\n", + "V*V*V =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABKElEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC1Y51qJFDgg5wwCQShjgNGDdA5NjTc9HkVvIwKAJk2Ng6EeRu8bAYB8Atw9V7hsDw3sD7HKs34FyDdjleICB4a+AQw6oD5ccPjMZgG6xx+EWhrsMDOtx+QHo90pcfuc2YAXGADSsy+SnLYAFJpBm1WhzgMshiSOY2OMIIj8qxxCupYIIKxgLGi6TGaIPwIRANLMokIDIcQkwME1Akgsr+wqX401gYAbx4IADIcefwMD3GS4BZCDJxRcw8P3AIXdegYEFJfMi6TtfgFsOn5lAtzDjcgvvBQYuXH4A+p0d2e/IfmDYzBDogMMPDEEdKchS7Ik/s2DhiSyOYA+y9ImvjMRTtgIAz1JTjnSjBSoAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & 1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0⎤\n", + "⎢ ⎥\n", + "⎣0 1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hence, V = Sdg*H =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEIAAAAyBAMAAAAaWBAaAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt27RCIPdUgdAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA2ElEQVQ4EWOQ//+JATfQ//+RQdjFFbcChhAXQwYRPPIgKUcSVBgGYBgGFoKZwZqej64CKgRTwcDQj64CKjSqAh624CAiITzK5KctgGuGMCBCCDPQpOHcURXwoAAzqB8ebAdQbABzUW1hW4CqAsRFVYEiD+VQXUVEBYo1EC6KLQoXUVRAuMgq+AwqkVVAuWAVkbtBYAorww9kFVAushkMzF+RVUC5KCo4E1DKEAgXRUW8gQKyIRAuior7fAuQVUC4KCrYViErYIBwUVSgyMM4Q0kF4dqDYA0EAM4zSlkWArJNAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 1\\\\- i & i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 1⎤\n", + "⎢ ⎥\n", + "⎣-ⅈ ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The inverse of V is: W = S*Z*H*S*Z*H = H*S = \n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEIAAAAyBAMAAAAaWBAaAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZrtEIt2xBfeDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA4klEQVQ4EWOQ//+JATfQ//+RQdjFFbcChhAXQwYRPPIgKUecKtg2QLRCVDCLYhrEtgBJRVjZV0wVMBGIGRy0URFRAbUGpy0KBwmo4DWoJKCCleEHARUMzDDv4XQHZ0IAxBCcKuINFAioOM+7AEkFe+LPLAgXQbKtgrIhtiAkMFmjKlDDhPbhAcpVEFuw5SiQa0C5Cqxi4HIUyBngXAVxKY58C85V+FRAchVWFZHvQGAKJFdhVQFyAwiAcxVeFeBchVcFOFfhVQHOVWAV2HIUyB3gXAUxA8TFBYaSCsK1B8EaCAByaU2m4mkAygAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & i\\\\1 & - i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 ⅈ ⎤\n", + "⎢ ⎥\n", + "⎣1 -ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Indeed, W = V*V =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEIAAAAyBAMAAAAaWBAaAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZrtEIt2xBfeDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA4klEQVQ4EWOQ//+JATfQ//+RQdjFFbcChhAXQwYRPPIgKUecKtg2QLRCVDCLYhrEtgBJRVjZV0wVMBGIGRy0URFRAbUGpy0KBwmo4DWoJKCCleEHARUMzDDv4XQHZ0IAxBCcKuINFAioOM+7AEkFe+LPLAgXQbKtgrIhtiAkMFmjKlDDhPbhAcpVEFuw5SiQa0C5Cqxi4HIUyBngXAVxKY58C85V+FRAchVWFZHvQGAKJFdhVQFyAwiAcxVeFeBchVcFOFfhVQHOVWAV2HIUyB3gXAUxA8TFBYaSCsK1B8EaCAByaU2m4mkAygAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & i\\\\1 & - i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 ⅈ ⎤\n", + "⎢ ⎥\n", + "⎣1 -ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "V = H*S*H*S\n", + "print (\"Let: V = H*S*H*S =\")\n", + "display(sympy.Matrix(V.matrix))\n", + "\n", + "print (\"V is of order 3:\")\n", + "A=V*V*V\n", + "print (\"V*V*V =\")\n", + "display(sympy.Matrix(A.matrix))\n", + "\n", + "print (\"Hence, V = Sdg*H =\")\n", + "A=Sdg*H\n", + "display(sympy.Matrix(A.matrix))\n", + "\n", + "print (\"The inverse of V is: W = S*Z*H*S*Z*H = H*S = \")\n", + "W=H*S\n", + "display(sympy.Matrix(W.matrix))\n", + "\n", + "print (\"Indeed, W = V*V =\")\n", + "A=V*V\n", + "display(sympy.Matrix(A.matrix))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "V operates on the Pauli gates by conjugation as a rotation: Z-->X-->Y-->Z:\n", + "W*X*V = Y =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCZZs3dIrurRHbLQ9+lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABNUlEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko5wNWHqKjhUI9Q0M0QuQFfELAoSgathF2BgakBTE5PzFUUN9wEGZrAIsjo+VDX8Bxh4PyPLg9hoauITGHj/EVCzXoGBBSMw0cxZn0BYDTF2Ad3MTMjN3BsY2An5HRiGbA0E/MUwmSHQgZCaoHdH0JWwHfxxHCgGjy90eST+qBqkwMDCpEv4sCYVOQDtRrPLMADZPRwGrLPQ1bAeO4+ippCBQQNdDQPDexQ1exgY7IECaHahqvnDwHDfAL8a1m9ANQ/wq+EC5kl/BQJqgObA1bB2zgSCGQ5obibGLgagm+0JuJlhNwNDPSG/A8Mwg1AYchqwgkpd1DDMke8pAArCAKveGwcgG1UNTBKVHppqiKmbiKjjACjPZa0KlYQXAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$$\\left[\\begin{matrix}0 & 1\\\\-1 & 0\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡0 1⎤\n", + "⎢ ⎥\n", + "⎣-1 0⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "W*Y*V = Z =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABRUlEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko641LAWLXIAKQACqBrDAAgXQXIasO6B8sBqWNPzMdQsZGDQRFbDwNCPoeYaA4M9VBBqF6aabwwM7w0gBuFSw/odqKYBvxoeYMD6KxBQAzSHkBpi7GIAutmegJsZ7jIwrCfkd2AYVkKcDIsLzPDhNmCFxTYkfMrkpy2AaoJRrBptDlA2NAxhMljpUTVYgwUuSN3wCddSgZuMyYDYNZkh+gCmHAMDsyhIFKyGS4CBaQIWNWFlX+FqeBMYmME8dHUcCDX8CQx8n9HlQXwkNfEFDHw/CKg5r8DAgrUwQzLnfAFhNeh2Re4GgSko7gG6mZmQm3kvMHAR8jswDNmxhSGy3xk2MwQ6EPA7Q1BHCjYl7Ik/s4Di1E0/2CxCiNHXLmLqJiLqOABOc2CwB6TLmwAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & -1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0 ⎤\n", + "⎢ ⎥\n", + "⎣0 -1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "W*Z*V = X = \n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCZZs3dIrurRHbLQ9+lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABIklEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC0QuTF0FUwVUrpkhcgGyJLMoXB+7AANTA5JcTM5XuBz3AQZmEA8O+BBy/AcYeD/DJYAMJLn4BAbefzjk1iswsKAEAJK+9Qm45fCZCXQLMy63cG9gYMflB6Df2RpwuJNhMkOgAy65oHdHkKXYDv44Do8HZAk4GxoPcD4yY1QOOTRAbNakIgdEeBoGIMtzGLDOgsmxHjuPIlfIwKABk2NgeI8it4eBwT4AllfQ5P4wMNw3wC7H+g0o9wC7HBcwHfsr4JAD6sMlh89MBqBb7HG4hWE3A0M9Lj8A/Z6By++cBqzA0gOaznLkewqQApRV7w1SWCNJwJmDLH3iKyPxlK0AGSZZVRPbH6EAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}0 & 1\\\\1 & 0\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡0 1⎤\n", + "⎢ ⎥\n", + "⎣1 0⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print (\"V operates on the Pauli gates by conjugation as a rotation: Z-->X-->Y-->Z:\")\n", + "A=W*X*V\n", + "print(\"W*X*V = Y =\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=W*Y*V\n", + "print(\"W*Y*V = Z =\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=W*Z*V\n", + "print(\"W*Z*V = X = \")\n", + "display(sympy.Matrix(A.matrix))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The 24 elements in the Clifford group $C_1$\n", + "\n", + "Since $C_1/P_1 \\cong Sp(2) \\cong S_3$, we can explicitly present each element of $C_1$ as a product $AB$ where $A \\in \\{ I, V, W, H, HV, HW\\}$ and $B \\in P_1=\\{I,X,Y,Z\\}$." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "I=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABKElEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC1Y51qJFDgg5wwCQShjgNGDdA5NjTc9HkVvIwKAJk2Ng6EeRu8bAYB8Atw9V7hsDw3sD7HKs34FyDdjleICB4a+AQw6oD5ccPjMZgG6xx+EWhrsMDOtx+QHo90pcfuc2YAXGADSsy+SnLYAFJpBm1WhzgMshiSOY2OMIIj8qxxCupYIIKxgLGi6TGaIPwIRANLMokIDIcQkwME1Akgsr+wqX401gYAbx4IADIcefwMD3GS4BZCDJxRcw8P3AIXdegYEFJfMi6TtfgFsOn5lAtzDjcgvvBQYuXH4A+p0d2e/IfmDYzBDogMMPDEEdKchS7Ik/s2DhiSyOYA+y9ImvjMRTtgIAz1JTjnSjBSoAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & 1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0⎤\n", + "⎢ ⎥\n", + "⎣0 1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "X=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCZZs3dIrurRHbLQ9+lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABIklEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC0QuTF0FUwVUrpkhcgGyJLMoXB+7AANTA5JcTM5XuBz3AQZmEA8O+BBy/AcYeD/DJYAMJLn4BAbefzjk1iswsKAEAJK+9Qm45fCZCXQLMy63cG9gYMflB6Df2RpwuJNhMkOgAy65oHdHkKXYDv44Do8HZAk4GxoPcD4yY1QOOTRAbNakIgdEeBoGIMtzGLDOgsmxHjuPIlfIwKABk2NgeI8it4eBwT4AllfQ5P4wMNw3wC7H+g0o9wC7HBcwHfsr4JAD6sMlh89MBqBb7HG4hWE3A0M9Lj8A/Z6By++cBqzA0gOaznLkewqQApRV7w1SWCNJwJmDLH3iKyPxlK0AGSZZVRPbH6EAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}0 & 1\\\\1 & 0\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡0 1⎤\n", + "⎢ ⎥\n", + "⎣1 0⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Y=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCZZs3dIrurRHbLQ9+lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABNUlEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko5wNWHqKjhUI9Q0M0QuQFfELAoSgathF2BgakBTE5PzFUUN9wEGZrAIsjo+VDX8Bxh4PyPLg9hoauITGHj/EVCzXoGBBSMw0cxZn0BYDTF2Ad3MTMjN3BsY2An5HRiGbA0E/MUwmSHQgZCaoHdH0JWwHfxxHCgGjy90eST+qBqkwMDCpEv4sCYVOQDtRrPLMADZPRwGrLPQ1bAeO4+ippCBQQNdDQPDexQ1exgY7IECaHahqvnDwHDfAL8a1m9ANQ/wq+EC5kl/BQJqgObA1bB2zgSCGQ5obibGLgagm+0JuJlhNwNDPSG/A8Mwg1AYchqwgkpd1DDMke8pAArCAKveGwcgG1UNTBKVHppqiKmbiKjjACjPZa0KlYQXAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$$\\left[\\begin{matrix}0 & 1\\\\-1 & 0\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡0 1⎤\n", + "⎢ ⎥\n", + "⎣-1 0⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Z=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABRUlEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko641LAWLXIAKQACqBrDAAgXQXIasO6B8sBqWNPzMdQsZGDQRFbDwNCPoeYaA4M9VBBqF6aabwwM7w0gBuFSw/odqKYBvxoeYMD6KxBQAzSHkBpi7GIAutmegJsZ7jIwrCfkd2AYVkKcDIsLzPDhNmCFxTYkfMrkpy2AaoJRrBptDlA2NAxhMljpUTVYgwUuSN3wCddSgZuMyYDYNZkh+gCmHAMDsyhIFKyGS4CBaQIWNWFlX+FqeBMYmME8dHUcCDX8CQx8n9HlQXwkNfEFDHw/CKg5r8DAgrUwQzLnfAFhNeh2Re4GgSko7gG6mZmQm3kvMHAR8jswDNmxhSGy3xk2MwQ6EPA7Q1BHCjYl7Ik/s4Di1E0/2CxCiNHXLmLqJiLqOABOc2CwB6TLmwAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & -1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0 ⎤\n", + "⎢ ⎥\n", + "⎣0 -1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print (\"I=\")\n", + "display(sympy.Matrix(I.matrix))\n", + "print (\"X=\")\n", + "display(sympy.Matrix(X.matrix))\n", + "print (\"Y=\")\n", + "display(sympy.Matrix(Y.matrix))\n", + "print (\"Z=\")\n", + "display(sympy.Matrix(Z.matrix))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "V=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEIAAAAyBAMAAAAaWBAaAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt27RCIPdUgdAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA2ElEQVQ4EWOQ//+JATfQ//+RQdjFFbcChhAXQwYRPPIgKUcSVBgGYBgGFoKZwZqej64CKgRTwcDQj64CKjSqAh624CAiITzK5KctgGuGMCBCCDPQpOHcURXwoAAzqB8ebAdQbABzUW1hW4CqAsRFVYEiD+VQXUVEBYo1EC6KLQoXUVRAuMgq+AwqkVVAuWAVkbtBYAorww9kFVAushkMzF+RVUC5KCo4E1DKEAgXRUW8gQKyIRAuior7fAuQVUC4KCrYViErYIBwUVSgyMM4Q0kF4dqDYA0EAM4zSlkWArJNAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 1\\\\- i & i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 1⎤\n", + "⎢ ⎥\n", + "⎣-ⅈ ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "V*X=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEIAAAAyBAMAAAAaWBAaAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZrtEIt2xBfeDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA1ElEQVQ4EWOQ//+JATfQ//+RQdjFFbcChhAXQwYRPPIgKUciVTCLYhgEFwKbEVb2FV0FQghiCweGCga40KgKcOiRGh7siT+z0IIdIURs3KIZgMIdNQMlOIjOLwxsG1A1QnkgYWiYsi3ArgIoTM9Qj6jA6gywMMQdCgexqgALg1XwGlRiUwERBqtgZfiBoiLyHQhMgQhDbGHGLB1AWsDCEBWcCQEohkA5YGGIingDBWwqwMIQFed5F2BTARaGqGBbhU0BA1gYogKrPFRwKKkgXHsQrIEAK4FNpqXe9f8AAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 1\\\\i & - i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 1 ⎤\n", + "⎢ ⎥\n", + "⎣ⅈ -ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "V*Y=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt27RCIPdUgdAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA4UlEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko7EqzEMwGoasyjcHNb0fKxqwsq+wtUwMPRjVcPAMXTURO4GgSkMg9rNZfLTFmCJMPbEn1lAYRLiHYshCKFRcxBhgY1FQviwHcA0AC4GNYdtARY1MDES7MI0BUmEeHMiKpC0QZkIMYg5Chcx1SDEwGr4DCox1CCJgdWwMvzAUIMkBrGLGVyGoKpDiEHUcCZglj8IMYiaeAMFVEOAPIQYRM19vgUYahBiEDVsqzCUMCDEIGowVSCLDE01xNRNRNRxAK4cS7IOkmrwAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & -1\\\\i & i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 -1⎤\n", + "⎢ ⎥\n", + "⎣ⅈ ⅈ ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "V*Z=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFMAAAAyBAMAAADSNPrMAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt27RCIPdUgdAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA50lEQVRIDWOQ//+JgTBg+v9fgEHYxZWwSgZWF2cBBhEiFIKUsJCllFkUp/GGASimhpV9xaGUNT0fVSkDBy6lDAz9w0kp6+zdQLDTYUh7iz3xZxaOmC2Tn7aA3JSFw0i4MHnpFa4dB2PUVApCIAd7oIKE0U3FkWJAwuhKsRsKFqWHUtb2BmwugAijOoCJVwCbUogwqtLH7BOwKYUIQ5TCCocAfhQHoAqjmspgDyodMQFYGE3pNFZMdUARsDCqUtbPTNiUQoRRlfJ+eIVNKUQYVSlD1gJsSiHCaEqxKoQKDl+lJFTyxDcdAIYmTAG8BXFDAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & -1\\\\- i & - i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 -1⎤\n", + "⎢ ⎥\n", + "⎣-ⅈ -ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print (\"V=\")\n", + "display(sympy.Matrix(V.matrix))\n", + "A=V*X\n", + "print (\"V*X=\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=V*Y\n", + "print (\"V*Y=\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=V*Z\n", + "print (\"V*Z=\")\n", + "display(sympy.Matrix(A.matrix))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "W=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEIAAAAyBAMAAAAaWBAaAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZrtEIt2xBfeDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA4klEQVQ4EWOQ//+JATfQ//+RQdjFFbcChhAXQwYRPPIgKUecKtg2QLRCVDCLYhrEtgBJRVjZV0wVMBGIGRy0URFRAbUGpy0KBwmo4DWoJKCCleEHARUMzDDv4XQHZ0IAxBCcKuINFAioOM+7AEkFe+LPLAgXQbKtgrIhtiAkMFmjKlDDhPbhAcpVEFuw5SiQa0C5Cqxi4HIUyBngXAVxKY58C85V+FRAchVWFZHvQGAKJFdhVQFyAwiAcxVeFeBchVcFOFfhVQHOVWAV2HIUyB3gXAUxA8TFBYaSCsK1B8EaCAByaU2m4mkAygAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & i\\\\1 & - i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 ⅈ ⎤\n", + "⎢ ⎥\n", + "⎣1 -ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "W*X=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFMAAAAyBAMAAADSNPrMAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt27RCIPdUgdAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA60lEQVRIDWOQ//+JgTBg+v9fgEHYxZWwSgZWF2cBBhEiFIKUsBCpNAdVqWEAbvOzkJWypufjUYrmgH46K2Vtb0B2KwMDbgcw8QoQq/Qx+wRCSlln7waCnQ4B/EQ7gMEeGDjIsYXbrQzTWIlVyvqZiVilvB9eoSgtk5+2ABh/WEHWAhSlWNUgCSJ7C0kYG3NU6ZAJAbQiAxSbuIoNlCIDpBBvsYEeAnhyAtWVYhQZINdidwBGkYFbKVKRASsa0E2FiWMUGbhNxSgy8ChFLzJwK8UoMnArRS8yQCpxFRujRQYodIDplYRKnvimAwAR+0qoL4BdogAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & - i\\\\-1 & - i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 -ⅈ⎤\n", + "⎢ ⎥\n", + "⎣-1 -ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "W*Y=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEIAAAAyBAMAAAAaWBAaAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZrtEIt2xBfeDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA3ElEQVQ4EWOQ//+JATfQ//+RQdjFFbcChhAXQwYRPPIgKUe8Ktg2oKgwDMAwjW0BkgrW9HxMFWi29NNERUQFql8wbVE4SEAFr0ElARWsDD8IqGBg/kpIBWcCMACQQh3TpfEGCgRUnOddgKyiTH4akI8C2FYBuUi2oEgiOKMqEGEBYtE+PNByFNBOZlFUN6DkKJBUWBkoUaEBVJdyUF8Feo4C2o9mC3qOwlCBlKMi34HAFHQzMHIUhhkYOQpTBXqOwlSBnqMwVaDlKKAC9sSfWUAKDoZhjiJcexCsgQDmJkxNSosYWgAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & i\\\\-1 & i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 ⅈ⎤\n", + "⎢ ⎥\n", + "⎣-1 ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "W*Z=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEIAAAAyBAMAAAAaWBAaAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt27RCIPdUgdAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA4ElEQVQ4EWOQ//+JATfQ//+RQdjFFbcChhAXQwYRPPIgKUe8KtgOwFQwi4JUYwK2BVAVYWVfMWVhIhBbOGinIqICaBVeWxQuElDBZ1CJS0XkbhCYwsrwA5cKoDgYMIO8iNcdnAkBBFTEGygQUHGfbwFUBXvizyywxWgE2yqgAP64BekYVYEabrQND7YDENsgtmDLUaDcBAJgFQOXo8C5Ce4OBiz5Fpyb8KmA5CZ8KiC5CZ8KBnBuwqsCnJvwqgDnJrwqwLkJrgJbjgLnJrgKEAMnoG0KgllLHVsI1x4EayAAUZdNC8h64JoAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & - i\\\\1 & i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 -ⅈ⎤\n", + "⎢ ⎥\n", + "⎣1 ⅈ ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print (\"W=\")\n", + "display(sympy.Matrix(W.matrix))\n", + "A=W*X\n", + "print (\"W*X=\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=W*Y\n", + "print (\"W*Y=\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=W*Z\n", + "print (\"W*Z=\")\n", + "display(sympy.Matrix(A.matrix))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAJ1BMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAilU6eAAAADHRSTlMA74lUMhCrmXbNZt1t74nvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAoUlEQVQ4EWOQOXOIAR/QOXOQQdjFFZ8ShhAXQwYRvCpAko7EqzEMwDCNWRQmBDaHNT0HQ01Y2VEUNQwMPRhqGDhG1SDigkrhUyYzbQEs5KE0e+LJLCiThHhHMwSVO2oOanig86gcPljyIMhGSD7EmQdBSqD5EOoeLGkMpAiSD4eEmsjdIDBlcLsZSx4EBTM0H1I5bYBMxgnoaxcxdRMRdRwAb3pMCRzR/q8AAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 1\\\\1 & -1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 1 ⎤\n", + "⎢ ⎥\n", + "⎣1 -1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*X=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAJ1BMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAilU6eAAAADHRSTlMA74lUMhCrmXbNZt1t74nvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAlElEQVQ4EWOQOXOIAR/QOXOQQdjFFZ8ShhAXQwYRvCpAko6kqTEMwDCRWRTFHNb0HAw1YWVHUdQwMPRgqGHgGFWDiAsqhU+ZzLQFaBHGnngyCyhEYryjGYLgjpqDCAtsLBqFD1o+RMuDIIeg50PMPAhShZbOMPLg4FHDOns3EOx0GEpuBoUeGKDlw2GfB4mpm4io4wDbXUv625yfzAAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 1\\\\-1 & 1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 1⎤\n", + "⎢ ⎥\n", + "⎣-1 1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*Y=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFYAAAAyBAMAAAA0HTGIAAAAJ1BMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAilU6eAAAADHRSTlMA74lUMhCrmXbNZt1t74nvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAApElEQVRIDWOQOXOIgRigc+Ygg7CLKzFKGUJcDBlEiFIJUuRInlrDAJw2MIuimMuanoNTbVjZURS1DAw9ONUycAw/tZG7QWAKw5D3W5nMtAU4EgR74sksoBSZ6QyHoQjhUXMhYTHEwwFHeYJWloC8iqs8wSxLQKpxlCcYZcnQUcs6G1Rm7HRA9xvusmTo+A3kUjDAUZ6MliWwAALTjiS1CUhoawAAXZ5VIi34dkkAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & -1\\\\-1 & -1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 -1⎤\n", + "⎢ ⎥\n", + "⎣-1 -1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*Z=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAJ1BMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAilU6eAAAADHRSTlMA74lUMhCrmXbNZt1t74nvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAApElEQVQ4EWOQOXOIAR/QOXOQQdjFFZ8ShhAXQwYRvCpAko7EqzEMwGoasyjcHNb0HKxqwsqOwtUwMPRgVcPAMXTURO4GgSkMg9rNZTLTFmCJMPbEk1lAYRLiHYshCKFRcxBhgY1F5fDBkgch+Q9kN9gubHkQmv/garDmQUj+G1UDLjOxlFHkhA+WPAjNf0jhDGLiBFROPzjtAUlQzy5i6iYi6jgAiLpMCTlkv4IAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & -1\\\\1 & 1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 -1⎤\n", + "⎢ ⎥\n", + "⎣1 1 ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print (\"H=\")\n", + "display(sympy.Matrix(H.matrix))\n", + "A=H*X\n", + "print (\"H*X=\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=H*Y\n", + "print (\"H*Y=\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=H*Z\n", + "print (\"H*Z=\")\n", + "display(sympy.Matrix(A.matrix))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*V=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAALVBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMA74lUMhCrmXbNZrtEIgF018AAAAAJcEhZcwAADsQAAA7EAZUrDhsAAADmSURBVDgRY5B794gBC2B6906AQdjFFYsUA6uLswCDCDYZkBgLDjm2DQg5wwBU3WwLYHKs6Xlocshm9lFHLqICyZ1oZiocxCnHa1CJU46V4QVOOQbmp7jlOBOAfoKFGZpb4gwUcMqd410AlyuTmwbkIADbKiAbZiZCGMEalUOEBTILHi7ZyKIQNlwuC0WOWRTIhcuhSIWVIcc7ihQDAweRcqztDSg6kfUx8QjglLvMPgGnXAAfbjMZ7FDzGLJ9DNNYcZrJ+pgJpxzPg1s45RiyFiDLsSe+BIYv9vCEqBtkcvjKSDxlKwBn+jyUJETdBAAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & i\\\\i & 1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 ⅈ⎤\n", + "⎢ ⎥\n", + "⎣ⅈ 1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*V*X=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAE8AAAAyBAMAAADvppuqAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt27RCIPdUgdAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA+0lEQVRIDWOQ//+JgRBg+v9fgEHYxZWQOgZWF2cBBhGCykAKWIhSmIOi0DAAp9FZSApZ0/NxK0S1up9+ClnbG5DcyMCA02omXgHiFD5mn4BfIevs3UCw0yGAn0irGeyB4YEUMzjdyDCNlTiFrJ+ZiFPI++EVssIy+WkLgFGFDWQtQFaITQWSGJJnkESxMEcVYgkUhBDtgweY1bEDdKuBWR0VMItC+OgKUVUxMISVfSVOIQMHZQrBWR3VduwmgrM6MQrBWR2fQpSsjk8hXA6U1VEBdjeCszoxCsFZnRiF4KxOjEIGUFZHAeyJPyHRTyiu4bqGm0Kiq2FiK3YA871HfP7ePDUAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & - i\\\\- i & 1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 -ⅈ⎤\n", + "⎢ ⎥\n", + "⎣-ⅈ 1 ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*V*Y=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFMAAAAyBAMAAADSNPrMAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZrtEIt2xBfeDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABA0lEQVRIDWOQ//+JgTBg+v9fgEHYxZWwSgZWF2cBBhEiFIKUsBBWmg01Ckkpsyh247MwlIaVfcWuFCaKZCoHHZWytjdguJUBuwOYeASIVXqZfQKxSgP4iXYAg30AsaYyTGMlVinrZyZilfJ8uIWhlD3xJyy2oXIQKmsBhlIUeWwcpDSATRpZbFTpoAsBWPmAHE1QNrpbsaYYBkNQ8kZXisU0Btb0fGKVMjD0U6QUUT6gOgSLqYjygaBSRPmAUynrvHdA8NIBUT6AlMJEsXsLXj7gNBUuAS8f4CJgBhZvIcoHgkoR5QNBpQzw8gFFaZn8tAXEpQGoNmKSy9BUSkIlT3zTAQB7zEk0JVjycAAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & i\\\\- i & -1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 ⅈ ⎤\n", + "⎢ ⎥\n", + "⎣-ⅈ -1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*V*Z=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt27RCIPdUgdAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABCElEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko741bAdQKgxDACysQC2BUBBsDms6fk41IC1Qe3qp62aiAqQZfjtUrhIUA2fQSVuNZG7QWAKK8MP3GpAMiDA/BVE4ncPZwIoTPCriTdQIKjmPt8CuJoy+WkgDgZgWwUSgtqFIYssMKoGOTQw2VQOH7YDmFbARaB2gfMaXBDOYBYFMfG6J6wMOR3CdaIyOEhUA8lrqGaAeMjmQPIaXjXQvIZXDTSvwdVAsyCqXZC8BlcDZyC7B5LX4FJwBrIaSF6DS8EZyGogeQ0uBWcgq4HkNbgUjMGe+DMLyMYbX1C1Q1MNMXUTEXUcAPB5UEbyxr5/AAAAAElFTkSuQmCC\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & - i\\\\i & -1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 -ⅈ⎤\n", + "⎢ ⎥\n", + "⎣ⅈ -1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print (\"H*V=\")\n", + "A=H*V\n", + "display(sympy.Matrix(A.matrix))\n", + "A=H*V*X\n", + "print (\"H*V*X=\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=H*V*Y\n", + "print (\"H*V*Y=\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=H*V*Z\n", + "print (\"H*V*Z=\")\n", + "display(sympy.Matrix(A.matrix))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*W=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABQ0lEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC1Y51qJFDgg5wwCQShjgNGDdA5NjTc9HkVvIwKAJk2Ng6EeRu8bAYB8Atw9V7hsDw3sD7HKs34FyDdjleICB4a+AQw6oD5ccPjMZgG6xx+EWhrsMDOtx+QHo90pcfuc2YAXGADSsy+SnLYAFJpBm1WhzgMshiSOY2OMIIj8qxxCupYIIKxCL7QI8PCczRB9AkWRbAJPjEmBgmoAiB+JAwpM3gYH5Kw45/gQGvs845OILGPh+IMtFVMDNPK/AwIKSeRUeIuQKUOV4DIBJCeoWdDNZGUA2QNwJdAszilvArob64QIDF4ofOBOA+REiB/Q7O4rf4w0UYHIMmxkCHYA2wMF7ngVwuaCOFLg4iMG2CkhAzEQRh3MGmRy+MhJP2QoAqlhPskD1oYsAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0⎤\n", + "⎢ ⎥\n", + "⎣0 ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*W*X=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCZZs3dIrurRHbLQ9+lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABRElEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC0QuTF0FUwVUrpkhcgGyJLMoXB+7AANTA5JcTM5XuBz3AQZmEA8O+BBy/AcYeD/DJYAMJLn4BAbefzjk1iswsKAEAJK+9Qm45fCZCXQLMy63cG9gYMflB6Df2RpwuJNhMkOgAy65oHdHkKXYDv44Do8HZAk4GxoPcD4yY1QOGBqnkUOENanIASk8gWGLABwGrLOQ5BASQFYhA4MGLrk9DAz2AbC8gqKLgeEPA8N9A5gc67MHSNKs34ByD2ByTLwCSHJcwHTsrwCTW4ySlLiA+hByAfy4zQQ5CwkA3WIPdwtDDyuSFMNuBoZ6uB9YPzMhywH9ngH3O++H5chynAaswNIDls6OFyDLseq9cUDIIcvA2DB9MD4yPQBy+MpIPGUrAF5OU8ZYOufWAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$$\\left[\\begin{matrix}0 & 1\\\\i & 0\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡0 1⎤\n", + "⎢ ⎥\n", + "⎣ⅈ 0⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*W*Y=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEIAAAAyBAMAAAAaWBAaAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCZZs3dIrurRHbLQ9+lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABMElEQVQ4EWOQ//+JATfQ//+RQdjFFbcChhAXQwYRPPIgKUeYijB1FexK4SqaGSIXoCsxDEAyg12AgakBVQXrsfPIKrgPMDB/RVXBwPAeWQX/AQbez3hVxCcw8P7Dq2K9AgMLRsih2LI+gZAKwrYAXcqM36XcGxjY8fsWGGJsDXj9wjCZIdABv4qgd0fQFeTI9xQgxS26NJwPj1u4CDpjVAVqiJAaHjwbkPVDMhmqGTzAmEIASCZDVYGQBbKgmQyPCmgmw6MCmslQVMTlIVsDTf4oKhQuIquAZjJkFVwGGSgqIJkMrCJiJgi0sDKg5FxstqCWD9BMhmwLA8cBUIEBA9BMhqIi3kABJg2koZkMRcV9LpRQh2QyFBU85UhGMDBAMhmKChR5GGcoqSBcexCsgQCcdGGzloNnYwAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}0 & 1\\\\- i & 0\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡0 1⎤\n", + "⎢ ⎥\n", + "⎣-ⅈ 0⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*W*Z=\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEIAAAAyBAMAAAAaWBAaAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABQ0lEQVQ4EWOQ//+JATfQ//+RQdjFFbcChhAXQwYRPPIgKUccKliLFjmA5GEqmEUhPATJacC6B8IDmxFW9hUhB2EtZGDQRFLBwIGh4hoDg30AWAnEHZgqvjEwvDfAp4L1O1BFAz4VPMBQ9FfAqwJoBn4VhG1hALrUHq9LGe4yMKzH71tgiFWCHQqNF8zw4DZghUYpOMTYE39mQTTASVaNNgdkM+ASWBi4Yh+hdFQFIixALCLDA5F9ULUzsF2AmoHIPugqFkBVILIPmgoQF+wORPbBpQKRfXCoQErYqCoiKqC2IGUfVBUKD2EqENkHRQWPASgxg1yKYUvkbhCYwsrwA6oCKfugmMHADCo0wL5FZB9UFZwJwEwFVoHIPqgq4g0UoCoQ2QdVxXueBVAViOyDqoJtFZAPtgVVHI03lFQQrj0I1kAAZrVeD9caneUAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & - i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0 ⎤\n", + "⎢ ⎥\n", + "⎣0 -ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print (\"H*W=\")\n", + "A=H*W\n", + "display(sympy.Matrix(A.matrix))\n", + "A=H*W*X\n", + "print (\"H*W*X=\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=H*W*Y\n", + "print (\"H*W*Y=\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=H*W*Z\n", + "print (\"H*W*Z=\")\n", + "display(sympy.Matrix(A.matrix))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "### An alternative approach to the elements in the Clifford group $C_1$\n", + "\n", + "There are certain elements in the group $C_1$ that can be written with less gates (in particular, less Hadamard gates)." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*V = H*H*S*H*S = S*H*S =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAALVBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMA74lUMhCrmXbNZrtEIgF018AAAAAJcEhZcwAADsQAAA7EAZUrDhsAAADmSURBVDgRY5B794gBC2B6906AQdjFFYsUA6uLswCDCDYZkBgLDjm2DQg5wwBU3WwLYHKs6Xlocshm9lFHLqICyZ1oZiocxCnHa1CJU46V4QVOOQbmp7jlOBOAfoKFGZpb4gwUcMqd410AlyuTmwbkIADbKiAbZiZCGMEalUOEBTILHi7ZyKIQNlwuC0WOWRTIhcuhSIWVIcc7ihQDAweRcqztDSg6kfUx8QjglLvMPgGnXAAfbjMZ7FDzGLJ9DNNYcZrJ+pgJpxzPg1s45RiyFiDLsSe+BIYv9vCEqBtkcvjKSDxlKwBn+jyUJETdBAAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & i\\\\i & 1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 ⅈ⎤\n", + "⎢ ⎥\n", + "⎣ⅈ 1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*V*Y = H*H*S*H*S*Y = S*H*S*Y = S*H*X*S = S*Z*H*S = Sdg*H*S =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFMAAAAyBAMAAADSNPrMAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZrtEIt2xBfeDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABA0lEQVRIDWOQ//+JgTBg+v9fgEHYxZWwSgZWF2cBBhEiFIKUsBBWmg01Ckkpsyh247MwlIaVfcWuFCaKZCoHHZWytjdguJUBuwOYeASIVXqZfQKxSgP4iXYAg30AsaYyTGMlVinrZyZilfJ8uIWhlD3xJyy2oXIQKmsBhlIUeWwcpDSATRpZbFTpoAsBWPmAHE1QNrpbsaYYBkNQ8kZXisU0Btb0fGKVMjD0U6QUUT6gOgSLqYjygaBSRPmAUynrvHdA8NIBUT6AlMJEsXsLXj7gNBUuAS8f4CJgBhZvIcoHgkoR5QNBpQzw8gFFaZn8tAXEpQGoNmKSy9BUSkIlT3zTAQB7zEk0JVjycAAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & i\\\\- i & -1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 ⅈ ⎤\n", + "⎢ ⎥\n", + "⎣-ⅈ -1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*V*Z = H*H*S*H*S*Z = S*H*Sdg =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAyBAMAAAATs7BgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt27RCIPdUgdAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABCElEQVQ4EWOQ//+JAR/Q//+RQdjFFZ8ShhAXQwYRvCpAko741bAdQKgxDACysQC2BUBBsDms6fk41IC1Qe3qp62aiAqQZfjtUrhIUA2fQSVuNZG7QWAKK8MP3GpAMiDA/BVE4ncPZwIoTPCriTdQIKjmPt8CuJoy+WkgDgZgWwUSgtqFIYssMKoGOTQw2VQOH7YDmFbARaB2gfMaXBDOYBYFMfG6J6wMOR3CdaIyOEhUA8lrqGaAeMjmQPIaXjXQvIZXDTSvwdVAsyCqXZC8BlcDZyC7B5LX4FJwBrIaSF6DS8EZyGogeQ0uBWcgq4HkNbgUjMGe+DMLyMYbX1C1Q1MNMXUTEXUcAPB5UEbyxr5/AAAAAElFTkSuQmCC\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & - i\\\\i & -1\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 -ⅈ⎤\n", + "⎢ ⎥\n", + "⎣ⅈ -1⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print (\"H*V = H*H*S*H*S = S*H*S =\")\n", + "A=S*H*S #H*V\n", + "display(sympy.Matrix(A.matrix))\n", + "A=Sdg*H*S #H*V*Y\n", + "print (\"H*V*Y = H*H*S*H*S*Y = S*H*S*Y = S*H*X*S = S*Z*H*S = Sdg*H*S =\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=S*H*Sdg #H*V*Z\n", + "print (\"H*V*Z = H*H*S*H*S*Z = S*H*Sdg =\")\n", + "display(sympy.Matrix(A.matrix))" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*W = H*H*S = S =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABQ0lEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC1Y51qJFDgg5wwCQShjgNGDdA5NjTc9HkVvIwKAJk2Ng6EeRu8bAYB8Atw9V7hsDw3sD7HKs34FyDdjleICB4a+AQw6oD5ccPjMZgG6xx+EWhrsMDOtx+QHo90pcfuc2YAXGADSsy+SnLYAFJpBm1WhzgMshiSOY2OMIIj8qxxCupYIIKxCL7QI8PCczRB9AkWRbAJPjEmBgmoAiB+JAwpM3gYH5Kw45/gQGvs845OILGPh+IMtFVMDNPK/AwIKSeRUeIuQKUOV4DIBJCeoWdDNZGUA2QNwJdAszilvArob64QIDF4ofOBOA+REiB/Q7O4rf4w0UYHIMmxkCHYA2wMF7ngVwuaCOFLg4iMG2CkhAzEQRh3MGmRy+MhJP2QoAqlhPskD1oYsAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0⎤\n", + "⎢ ⎥\n", + "⎣0 ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*W*X = S*X = \n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAADUAAAAyBAMAAAAOzY77AAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCZZs3dIrurRHbLQ9+lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABRElEQVQ4EWOQ//+JAQtg+v9fgEHYxRWLFAOri7MAgwg2GZAYC0QuTF0FUwVUrpkhcgGyJLMoXB+7AANTA5JcTM5XuBz3AQZmEA8O+BBy/AcYeD/DJYAMJLn4BAbefzjk1iswsKAEAJK+9Qm45fCZCXQLMy63cG9gYMflB6Df2RpwuJNhMkOgAy65oHdHkKXYDv44Do8HZAk4GxoPcD4yY1QOGBqnkUOENanIASk8gWGLABwGrLOQ5BASQFYhA4MGLrk9DAz2AbC8gqKLgeEPA8N9A5gc67MHSNKs34ByD2ByTLwCSHJcwHTsrwCTW4ySlLiA+hByAfy4zQQ5CwkA3WIPdwtDDyuSFMNuBoZ6uB9YPzMhywH9ngH3O++H5chynAaswNIDls6OFyDLseq9cUDIIcvA2DB9MD4yPQBy+MpIPGUrAF5OU8ZYOufWAAAAAElFTkSuQmCC\n", + "text/latex": [ + "$$\\left[\\begin{matrix}0 & 1\\\\i & 0\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡0 1⎤\n", + "⎢ ⎥\n", + "⎣ⅈ 0⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*W*Y = S*Y =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEIAAAAyBAMAAAAaWBAaAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCZZs3dIrurRHbLQ9+lAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABMElEQVQ4EWOQ//+JATfQ//+RQdjFFbcChhAXQwYRPPIgKUeYijB1FexK4SqaGSIXoCsxDEAyg12AgakBVQXrsfPIKrgPMDB/RVXBwPAeWQX/AQbez3hVxCcw8P7Dq2K9AgMLRsih2LI+gZAKwrYAXcqM36XcGxjY8fsWGGJsDXj9wjCZIdABv4qgd0fQFeTI9xQgxS26NJwPj1u4CDpjVAVqiJAaHjwbkPVDMhmqGTzAmEIASCZDVYGQBbKgmQyPCmgmw6MCmslQVMTlIVsDTf4oKhQuIquAZjJkFVwGGSgqIJkMrCJiJgi0sDKg5FxstqCWD9BMhmwLA8cBUIEBA9BMhqIi3kABJg2koZkMRcV9LpRQh2QyFBU85UhGMDBAMhmKChR5GGcoqSBcexCsgQCcdGGzloNnYwAAAABJRU5ErkJggg==\n", + "text/latex": [ + "$$\\left[\\begin{matrix}0 & 1\\\\- i & 0\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡0 1⎤\n", + "⎢ ⎥\n", + "⎣-ⅈ 0⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H*W*Z = Sdg =\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEIAAAAyBAMAAAAaWBAaAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhCrmXbNZt0iu0TKQvJ9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABQ0lEQVQ4EWOQ//+JATfQ//+RQdjFFbcChhAXQwYRPPIgKUccKliLFjmA5GEqmEUhPATJacC6B8IDmxFW9hUhB2EtZGDQRFLBwIGh4hoDg30AWAnEHZgqvjEwvDfAp4L1O1BFAz4VPMBQ9FfAqwJoBn4VhG1hALrUHq9LGe4yMKzH71tgiFWCHQqNF8zw4DZghUYpOMTYE39mQTTASVaNNgdkM+ASWBi4Yh+hdFQFIixALCLDA5F9ULUzsF2AmoHIPugqFkBVILIPmgoQF+wORPbBpQKRfXCoQErYqCoiKqC2IGUfVBUKD2EqENkHRQWPASgxg1yKYUvkbhCYwsrwA6oCKfugmMHADCo0wL5FZB9UFZwJwEwFVoHIPqgq4g0UoCoQ2QdVxXueBVAViOyDqoJtFZAPtgVVHI03lFQQrj0I1kAAZrVeD9caneUAAAAASUVORK5CYII=\n", + "text/latex": [ + "$$\\left[\\begin{matrix}1 & 0\\\\0 & - i\\end{matrix}\\right]$$" + ], + "text/plain": [ + "⎡1 0 ⎤\n", + "⎢ ⎥\n", + "⎣0 -ⅈ⎦" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print (\"H*W = H*H*S = S =\")\n", + "A=S #H*W\n", + "display(sympy.Matrix(A.matrix))\n", + "A= S*X #H*W*X\n", + "print (\"H*W*X = S*X = \")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=S*Y #H*W*Y\n", + "print (\"H*W*Y = S*Y =\")\n", + "display(sympy.Matrix(A.matrix))\n", + "A=Sdg #H*W*Z\n", + "print (\"H*W*Z = Sdg =\")\n", + "display(sympy.Matrix(A.matrix))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## The Clifford group on 2 qubits\n", + "\n", + "The **Pauli group** $P_2$ is generated by the tensor products of the Pauli matrices $\\{A \\otimes B: A,B \\in \\{I,X,Y,Z\\}\\}$. When neglecting the global phase $U(1) \\cong \\mathbb{C}$ we get that $P_2/U(1) \\cong \\mathbb{F}_2^4$. \n", + "\n", + "The **Clifford group** $C_2$ on 2-qubits is defined as the normalizer of the Pauli group $P_2$ (when neglecting the global phase $U(1) \\cong \\mathbb{C}$).\n", + "\n", + "It turns out that $C_2/P_2 \\cong Sp(4)$, where $Sp(4)$ contains all the symplectic $4 \\times 4$ matrices over the field $\\mathbb{F}_2$, so $Sp(4)$ has 720 elements.\n", + "\n", + "According to [4], there are four distinct classes of the 2-qubit Clifford group, and it is proven that this is the optimal decomposition of the 2-qubit Clifford group in terms of the number of CNOT gates." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Recall that the CNOT gate, where qubit 0 is the control and qubit 1 is the target, is:\n", + "$CX_{0,1} = \\begin{pmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0 \\end{pmatrix}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Class 1:** Consists of $576=24^2$ elements, and represents all 1-qubit Clifford operations.\n", + "\n", + "Each element in this class can be written as:\n", + "$(h_0\\otimes h_1) (v_0\\otimes v_1) (p_0\\otimes p_1)$ where $h_i \\in \\{I,H\\}, v_i \\in \\{I,V,W\\}$ and $p_i \\in \\{I,X,Y,Z\\}$ ,\n", + "\n", + "($h_i, v_i, p_i$ operates on the $i$-th qbit)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The size of Class 1 is: 576\n" + ] + } + ], + "source": [ + "Class1Size = 2*2*3*3*4*4\n", + "print (\"The size of Class 1 is: \", Class1Size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Class 2 is called the CNOT-class:** Consists of $5184 = 24^2 \\times 3^2$ elements, \n", + "and contains the following sequences, which require exactly one CNOT gate.\n", + "\n", + "Each element in this class can be written as:\n", + "$(h_0\\otimes h_1) (v_0\\otimes v_1) CX_{0,1} (v'_0\\otimes v'_1) (p_0\\otimes p_1)$ where $h_i \\in \\{I,H\\}, v_i, v'_i \\in \\{I,V,W\\}, p_i \\in \\{I,X,Y,Z\\}$,\n", + "and $CX_{0,1}$ is a CNOT-gate, where qubit 0 is the control and qubit 1 is the target." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The size of Class 2 is: 5184\n" + ] + } + ], + "source": [ + "Class2Size = 2*2*3*3*3*3*4*4\n", + "print (\"The size of Class 2 is: \", Class2Size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Class 3 is called the iSWAP-class:** Consists of $5184 = 24^2 \\times 3^2 $ elements, \n", + "and contains the following sequences, which require two CNOT gates.\n", + "\n", + "Each element in this class can be written as:\n", + "$(h_0\\otimes h_1) (v_0\\otimes v_1) CX_{0,1}CX_{1,0} (v'_0\\otimes v'_1) (p_0\\otimes p_1)$ where $h_i \\in \\{I,H\\}, v_i, v'_i \\in \\{I,V,W\\}, p_i \\in \\{I,X,Y,Z\\}$, and $CX_{0,1}, CX_{1,0}$ are CNOT-gates." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The size of Class 3 is: 5184\n" + ] + } + ], + "source": [ + "Class3Size = 2*2*3*3*3*3*4*4\n", + "print (\"The size of Class 3 is: \", Class3Size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Class 4 is called the SWAP-class:** Consists of $576 = 24^2$ elements, \n", + "and contains the following sequences, which require three CNOT gates.\n", + "\n", + "Each element in this class can be written as:\n", + "$(h_0\\otimes h_1) (v_0 \\otimes v_1) CX_{0,1} CX_{1,0} CX_{0,1} (p_0\\otimes p_1)$ where $h_i \\in \\{I,H\\}, v_i, \\in \\{I,V,W\\}, p_i \\in \\{I,X,Y,Z\\}$, and $CX_{0,1}, CX_{1,0}$ are CNOT-gates." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The size of Class 4 is: 576\n" + ] + } + ], + "source": [ + "Class4Size = 2*2*3*3*4*4\n", + "print (\"The size of Class 4 is: \", Class4Size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**The size of the Clifford group on 2-qubits**" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The size of the 2-qubit Clifford group is: 11520\n" + ] + } + ], + "source": [ + "TotalSize = Class1Size + Class2Size + Class3Size + Class4Size\n", + "print (\"The size of the 2-qubit Clifford group is: \", TotalSize)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:YaelEnv]", + "language": "python", + "name": "conda-env-YaelEnv-py" + }, + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/terra/qis_adv/Multi-Qubit_W_States_with_Tomography.ipynb b/community/terra/qis_adv/Multi-Qubit_W_States_with_Tomography.ipynb index a64da0384..6a3604254 100644 --- a/community/terra/qis_adv/Multi-Qubit_W_States_with_Tomography.ipynb +++ b/community/terra/qis_adv/Multi-Qubit_W_States_with_Tomography.ipynb @@ -25,6 +25,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "### Introduction\n", + "\n", "A generalized $n$-qubit W state system can be written as$^{[1]}$:\n", "$$ |W_{n}\\rangle \\; = \\; \\sqrt{\\frac{1}{n}} \\: (\\:|10...0\\rangle \\: + |01...0\\rangle \\: +...+ |00...1\\rangle \\:) $$\n", "\n", @@ -38,14 +40,25 @@ "\n", "For the creation of such states, an other approach is to use a general algorithm of arbitrary initialization, as described _at the end_ of the following tutorial:\n", "\n", - "https://nbviewer.jupyter.org/github/Qiskit/qiskit-tutorial/blob/master/qiskit/terra/using_different_gates.ipynb\n", - "\n", + "https://nbviewer.jupyter.org/github/Qiskit/qiskit-tutorial/blob/master/qiskit/terra/summary_of_quantum_operations.ipynb\n", "\n", "Therefore, why worry about using a specific algorithm, sophisticated on the theoretical level, while a ready-made alternative, valid for any entangled state, is at our disposal?\n", "\n", - "For this reason, it seemed interesting to compare the two approaches by using quantum fidelity as a benchmark, with the help of the methodology presented here:\n", + "For this reason, it seemed interesting to compare the two approaches by using quantum fidelity as a benchmark, with the help of the methodology proposed by Smolin, Gambetta and Smith$^{[3]}$, described here:\n", + "\n", + "https://nbviewer.jupyter.org/github/Qiskit/qiskit-tutorial/blob/master/qiskit/ignis/state_tomography.ipynb \n", + "\n", + "(the code to calculate the quantum fidelity used here comes mostly from this last tutorial).\n", + "\n", + "In the present tutorial, we start by testing the algorithms in noise free simulation, using the high performance Qiskit Aer qasm simulator:\n", + "\n", + "https://nbviewer.jupyter.org/github/Qiskit/qiskit-tutorial/blob/master/qiskit/aer/aer_provider.ipynb\n", + "\n", + "Then, we use device noise simulation (DNS). Details can be obtained here:\n", + "\n", + "https://nbviewer.jupyter.org/github/Qiskit/qiskit-tutorial/blob/master/qiskit/aer/device_noise_simulation.ipynb\n", "\n", - "https://nbviewer.jupyter.org/github/Qiskit/qiskit-tutorial/blob/master/qiskit/ignis/state_tomography.ipynb (the code to calculate the quantum fidelity used here comes mostly from this last tutorial).\n", + "Finally we run the algorithms on superconducting quantum computing device (SQC).\n", "\n", "As you will see at the end of the notebook in the \"results\" section, one of the algorithms in competition clearly outperforms the other..." ] @@ -54,18 +67,29 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\decpi\\Anaconda3\\envs\\q7env\\lib\\site-packages\\marshmallow\\schema.py:364: ChangedInMarshmallow3Warning: strict=False is not recommended. In marshmallow 3.0, schemas will always be strict. See https://marshmallow.readthedocs.io/en/latest/upgrading.html#schemas-are-always-strict\n", + " ChangedInMarshmallow3Warning\n" + ] + } + ], "source": [ "#Import packages\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", + "import time\n", "\n", "# import from qiskit\n", "from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister, execute, compile\n", "from qiskit.converters import qobj_to_circuits\n", "from qiskit import Aer, IBMQ\n", + "from qiskit.providers.aer import noise\n", "\n", "# import tomography library\n", "import qiskit.tools.qcvv.tomography as tomo\n", @@ -73,7 +97,9 @@ "# useful additional packages \n", "from qiskit.tools.visualization import plot_state, plot_histogram \n", "from qiskit.tools.qi.qi import state_fidelity, outer\n", - "from qiskit.tools.monitor import job_monitor\n", + "from qiskit.tools.qi.qi import outer\n", + "from qiskit.quantum_info import state_fidelity\n", + "from qiskit.tools.monitor import job_monitor, backend_overview\n", "from qiskit.providers.ibmq import least_busy" ] }, @@ -81,87 +107,43 @@ "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], - "source": [ - "# You may skip this if you don't have a credential. It will work locally on simulators from Aer\n", - "IBMQ.load_accounts()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[,\n", - " ,\n", - " ]" + "[,\n", + " ,\n", + " ]" ] }, - "execution_count": 3, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "IBMQ.backends() #for info" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BackendStatus(backend_name='ibmqx4', backend_version='1.0.0', operational=True, pending_jobs=111, status_msg='active')\n", - "BackendStatus(backend_name='ibmq_16_melbourne', backend_version='1.0.0', operational=True, pending_jobs=2, status_msg='active')\n", - "BackendStatus(backend_name='ibmq_qasm_simulator', backend_version='0.1.547', operational=True, pending_jobs=0, status_msg='active')\n" - ] - } - ], - "source": [ - "# You may skip this if you want\n", - "for backend in IBMQ.backends():\n", - " print(backend.status())" + "Aer.backends() # No need for credentials for running the next cells" ] }, { - "cell_type": "code", - "execution_count": 5, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[,\n", - " ,\n", - " ]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "Aer.backends() #for info" + "### Choose the number of qubits involved and select an algorithm" ] }, { "cell_type": "code", - "execution_count": 6, - "metadata": {}, + "execution_count": 3, + "metadata": { + "scrolled": false + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "type number of qubits + enter: 4\n", + "type number of qubits + enter: 3\n", "Do you want to use the specific method?\n", " Answer by (y/n) + enter\n", "y\n" @@ -192,6 +174,7 @@ "W_state_circuit = input(\" Answer by (y/n) + enter\\n\").upper()\n", "\n", "if (W_state_circuit == \"N\") :\n", + " method = \"arbitrary\"\n", "# Initialize a n-qubit W quantum state using the arbitrary method \n", " for j in range(n) : \n", " qr_vector.append(qr[j])\n", @@ -199,6 +182,7 @@ " \n", "else:\n", "# Quantum circuit to make a n-qubit W state using the specific method\n", + " method = \"specific\"\n", " my_state.x(qr[n-1]) #start is |10...0>\n", " for i in range(1,n) :\n", " theta = np.arccos(np.sqrt(1/(n-i+1)))\n", @@ -206,18 +190,9 @@ " my_state.cz(qr[n-i],qr[n-i-1])\n", " my_state.ry(theta,qr[n-i-1])\n", " for i in range(1,n) :\n", - " my_state.cx(qr[n-i-1],qr[n-i])" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "# Test circuit \"my_state\" : Measurements\n", + " my_state.cx(qr[n-i-1],qr[n-i])\n", + "\n", + "# Measurement circuit\n", "measuring = QuantumCircuit(qr, cr, name='measuring')\n", "for i in range(n) :\n", " measuring.measure(qr[i] , cr[i])\n", @@ -225,52 +200,69 @@ ] }, { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'0001': 256, '1000': 256, '0100': 253, '0010': 259}\n" - ] - } - ], + "cell_type": "markdown", + "metadata": {}, "source": [ - "# Test circuit \"my_state\" : Local simulator\n", - "backend_sim = Aer.get_backend('qasm_simulator')\n", - "shots = 1024\n", - "job = execute(test, backend_sim, shots=shots, max_credits=5)\n", - "print(job.result().get_counts(test))" + "### Test the algorithm using a noise free simulation" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 4, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdAAAAFOCAYAAAA2MUwzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3X+cVmWd//HXB1ADA2uUCFJUFkRsi0atzN+atGWbGvm1rLa00lWLMrdstfLHttlambatZrm5qWT5izQtyzVK1CwNkTSIdEEUQVMwJJTA4fP945zBYRpk5szMfd8z83o+HvPwvs8595nPzeXc7/tc5zrXicxEkiR1zaB6FyBJUl9kgEqSVIEBKklSBQaoJEkVGKCSJFVggEqSVIEBKklSBQaoJEkVGKCSJFUwpN4F1NO2226bY8eOrXcZkqQGct999z2VmSM3t92ADtCxY8cyc+bMepchSWogTU1NizuznV24kiRVYIBKklSBASpJUgUGqCRJFRigkiRVYIBKklSBASpJUgUGqCRJFRigkiRVYIBKklSBASpJUgUGqCRJFRigkiRVYIBKklSBASpJUgUGqCRJFRigkiRVYIBKklSBASpJUgUGqCRJFRigkiRVYIBKklSBASpJUgUGqFS69dZbecMb3sAee+zBBRdc8DfrL7zwQvbaay/23XdfjjjiCB599NEN67bbbjv2339/9t9/f9773vduWD5t2jT2228/9t13Xz74wQ/yl7/8pSbvRVLvi8ysdw1109zcnDNnzqx3GWoALS0tvP71r2fGjBmMGTOGN7/5zVxyySXsuuuuG7a5/fbb2WOPPRg2bBiXXnopd9xxB5deeikAO+yww0aB2uqZZ55hxIgRAHz2s59l5MiRnHzyybV5U5IqaWpqmp2Ze25uO49A66Q3jnYWL17MIYccwh577MGHPvQh1q5dW5P30h/Mnj2bnXfemZ122oktt9ySqVOncvPNN2+0zX777cewYcMA2HPPPVm6dOlm99sanpnJmjVriIieL16qMT+/CgZoHbS0tHDqqady9dVXc9ddd3Hdddfxhz/8YaNtXvva1zJz5kzuuOMODjvsMM4888wN64YOHcqsWbOYNWsWV1555YblZ511FieeeCKzZ8/mZS97GdOnT6/Ze+rrli1bxqte9aoNz8eMGcOyZcs2uf306dM55JBDNjxfs2YNBx98MFOmTOHHP/7xRtt+9KMfZdddd+XBBx/kuOOO6/nipRry8+sFBmgd9MbRTmZy++23c/jhhwPwnve8528+yNUzrr76aubMmcO0adM2LJs7dy4zZ87kkksu4fTTT2fRokUb1l144YXMmzePXXbZhR/+8If1KFnqMX5+vcAArYPeONpZsWIF22yzDUOGDOnUPrWx0aNH89hjj214vnTpUkaPHv032/3yl7/kvPPO48orr2SrrbbasHzMmDEA7LTTTuy777787ne/2+h1gwcPZurUqdx444299A76r+50F0JxHvrVr341p556KgCrVq3a0IW4//77M378eE477bSavJf+wM+vFwypdwF6ca1HOzfddNOGZXPnzmXMmDE8/PDDHH744ey2224bzrWpmt13352FCxeyePFiRo8ezYwZM/j2t7+90Ta/+93vOOWUU7jmmmsYOXLkhuV//vOfGTp0KFtttRXLly/nN7/5DdOmTSMzWbRoEePGjSMzufnmm5kwYUKt31qf1tpd2HZw11vf+taNBne1dhe2Du4688wzNwzuAjjnnHPYe++9NzwfPnw4s2bN2vD8oIMO4h3veEdt3tAA098/vzwCrYPeONppampi5cqVPP/88y+6T3VsyJAhfPnLX+bII49kr7324ogjjmDSpEmcc845G7qnzjzzTFavXs2xxx670QCIBQsWcPDBB7Pffvtx2GGH8YlPfIJdd92VzOSkk05in332YZ999uGJJ57g05/+dD3fZp/T3e7C++67jyeffJKDDjqow/0/9NBDPPnkk7zpTW/qvTfRz/j59QKPQOugN452IoJ9992XG264gXe961384Ac/4NBDD631W+vTpkyZwpQpUzZadvrpp294vKnzl2984xu58847/2b5oEGD+OlPf9qzRQ4wHXUXzp49e5Pbt+0uXL9+PZ///Oe5+OKLue222zrcfsaMGbzzne90dHQX+Pn1AgO0Dtoe7bS0tPC+971vw9FOc3Mzb3vb2zY62gHYfvvtufLKK1mwYAGnnHIKgwYNYv369RuOdqAYxfaRj3yEc845h9e85jW8//3vr+fblGqqfXfhd77zHaZMmbJRALc3Y8YMLr744lqV2C/4+fUCJ1JwIgWpYd19992ce+65XHfddQCcf/75AHzyk5/caLtf/vKXfOYzn+Gm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\n", + "application/vnd.jupyter.widget-view+json": { + "model_id": "e75c8b003dcc4cc392f22273d8a5d472", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HTML(value=\"

        Job Status: job is actively running

        \")" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Date (DMY): 08/01/2019 08:35:45\n", + "{'100': 325, '001': 345, '010': 354}\n" + ] + }, + { + "data": { + "image/png": "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cSPr1oVwBw0aRFFREbW1tQD079+f8vJyqqurASgsLGTMmDHU1NSwfft2AEaOHElDQwMNDQ0ADBkyBDNjxYoVAAwYMIDS0lIWLAi3Ubt3786oUaNYuHAhO3bsAGD06NHU19ezYcMGAIYOHYq7U1cXnmMtKSmhpKSERYsWAdCjRw8qKyuZP38+O3fuBGDs2LGsXLmSTZs2ATBs2DCamppYtWoVAAMHDqS4uJiamtDLU69evaioqKC6uprm5tDna1VVFbW1tWzevBmA4cOHs23bNtasWUPL9u7bty+LFy8GoE+fPowYMYJ58+bh7pgZVVVVLFmyhMbGRgAqKirYsmUL9fX12k/aT9pP2k9Z2U9tlbWGx6POMlcD4939xYTh1wPnuvuRsem7A3OBm939kWjYFOBsdx/d2vdVVVW5WsgREZFExcXFc9x9XGvTZfPKcT3QTCgiTXQI77+aBCgFRgIPmFlLr9HdADOzXcBp7h4vohUREWm3rN1zdPcmYA4wMTZqIqHWatxqYAxwVMLrXmBp9D7ZPCIiIu2W7YbHfwQ8YmavAS8Dk4EyQtLDzB4GcPcL3H0nsMczjWb2FrDD3fWso4iIdJisJkd3f8zMBgDXEYpNFxCKR1taSVcfUyIiknNZq5CTbaqQIyIicW2tkKO2VUVERGKUHEVERGKUHEVERGKUHEVERGKUHEVERGKUHEVERGKUHEVERGKUHEVERGKUHEX2M88//zwf/vCHOeaYY5g6der7xj/wwAN87GMfY/z48Zx66qm88cYbe4xftWoVgwcP5sc//vHuYZs3b+ZLX/oSxx57LMceeyyvvfZah6+HSD7LdtuqItIOzc3NXH311UybNo2ysjJOOukkTjnlFI488r0e38466ywuuugiAKZPn851113Hk08+uXv8tddey0knnbTHcq+55hpOOukkHnroIZqamnb3zSfSVenKUWQ/MmfOHA4//HCGDh1KUVERkyZNYvr06XtM07dv393vt23bRmIn4c899xxDhw7dI5lu2bKFV155hfPPPx+AoqIi+vXr18FrIpLflBxF9iP19fUcdthhuz+XlZXt7vk90f3338/RRx/N9ddfz8033wzA1q1bufPOO7n66qv3mLauro6DDz6Yr371q5xwwglceeWVu3uGF+mqlBxF9iPJOgpIvDJscfHFFzN37lymTJnC7bffDsDNN9/MZZddRu/evfeYdteuXVRXV3PRRRcxa9YsevbsmfRepkhXonuOIvuRsrIyVq9evfvzmjVrOPTQQ1NOP2nSJL75zW8CoUj2mWeeYcqUKWzevJlu3bpx4IEHcsYZZ1BWVsa4caGjgjPPPFPJUbo8XTnm0L7WOpwzZw7jx49n/PjxHH/88Tz77LMALFmyZPfw8ePHU15ezj333JPVdZKOdfTRR1NbW0tdXR1NTU1MmzaNU045ZY9pli1btvv9jBkzOOKIIwD4/e9/T3V1NdXV1UyePJlvfOMbXHLJJQwcOJDDDjuMJUuWADBr1iwqKiqyt1IieUhXjjnSnlqHlZWVzJw5kwMOOIC1a9cyfvx4TjnlFEaMGMHs2bN3L3/UqFF8+tOfzsn6Scc44IAD+OEPf8jZZ59Nc3Mz5513HpWVldx4441UVVVx6qmnct999zFr1iwKCws56KCD+OlPf9rqcm+55Ra+8pWv0NTUxNChQ/nJT36ShbURyV9KjjmSWOsQ2F3rMDE5pqp12LNnz93Dd+zYkfSe06xZsxg6dCiDBw/uoDWQXJk4cSITJ07cY9i11167+31LBZy9+c53vrPH5zFjxqDOwUXeo+SYI8lqHc6ZM+d9091///3cfffdNDU18fTTT+8e/ve//50rrriCVatWcc8993DAAXvuymnTpnHWWWd13AqIiHRiuueYI+2pdQgwbtw4/vKXv/D8888zdepU3nnnnd3jmpqa+MMf/sCZZ57ZMcGLiHRySo45si+1Dp977rn3Da+oqKBnz57U1NTsHvb888/zwQ9+kEMOOSSzQYuIdBFKjjnSnlqHdXV17Nq1C4A333yTpUuXUl5evnvap556SkWqIiLtoHuOOdKeWoevvvoqU6dOpbCwkG7dunHrrbcyYMAAIFTceeGFF7jjjjtyuXoiIvs1S3bvqzOoqqpy1b4TEZFExcXFc9x9XGvTqVhVREQkRslRREQkRslRREQkRslRREQkRslRREQkRslRRKQL2NdegDZu3MgZZ5zB4MGD9+gou7GxcY9egIYPH84111yTtfXpaHrOUaQD3FV8V65DyFtXbrwy1yF0Oe3pBah79+5ce+211NTU7NESV58+fXb3AgRw4okncvrpp2dvpTqYrhxFRDq5xF6AioqKdvcClChVL0C9evXiuOOOo3v37imXv2zZMhoaGvjIRz7SMSuQA7pyFBHp5NrbC1BrnnrqKT772c8m7Txhf6UrRxGRTq69vQC1pjN2kafkKCLSyWWqF6BkFixYQHNzM0cddVS748wnKlZthSpWpKaKFSL7h8RegEpLS5k2bRo///nP95hm2bJlu3v+SewFqDVPPfUUkyZNynjMuabkKCLSybWnFyCAsWPH0tjYyM6dO3nuued46qmndtd0/e1vf8tjjz2Wq1XrMEqOIiJdwMSJE5k4ceIew6699trd72+++eaU81ZXV6ccN2/evPYHl4d0z1FERCRGyVFERCRGyVFERCRGyVFERCRGyVFERCRGyVFERCRGyVFERCRGyVFERCRGyVFERCRGyVFERCRGzceJiOQJdXSQWrY7OtCVo4iISIySo4iISIySo4iISIySo4iISIySo4iISIySo4iISIySo4iISEzWk6OZXW5my83sHTObY2bH72XaE8zsFTPbYGbbzewNM/tWNuMVEZGuJ6uNAJjZ54E7gcuBl6K/081spLuvTDLLv4C7gPnANuBjwM/MbJu7352lsEVEpIvJ9pXjVcCD7n6fu9e4+xVAPXBZsondfY67/9rdF7r7cnd/FPgjkPJqU0REpL2ylhzNrAg4BpgRGzUD+Ggbl1EVTTsrs9GJiIi8J5vFqgcDBcC62PB1wMl7m9HMVgElhHhvcPd7U0x3KXApQGlpKXPnzgWgrKyMnj17snTpUgD69evHsGHDmDdvHgAFBQWMHTuWxYsXs3XrVgAqKyvZuHHjvqxnl7F27VrWrFkDhO3dt29fFi9eDECfPn0YMWIE8+bNw90xM6qqqliyZAmNjY0AVFRUsGXLFurr64H27ad168JhNWjQIIqKiqitrQWgf//+lJeXU11dDUBhYSFjxoyhpqaG7du3AzBy5EgaGhpoaGgAYMiQIZgZK1asAGDAgAGUlpayYMECALp3786oUaNYuHAhO3bsAGD06NHU19ezYcOGjtjUncrcuXPzZj8NHToUd6eurg6AkpISSkpKWLRoEQA9evSgsrKS+fPns3PnTgDGjh3LypUr2bRpEwDDhg2jqamJVatWATBw4ECKi4upqakBoFevXlRUVFBdXU1zczMAVVVV1NbWsnnzZgCGDx/Otm3bMr6tO5MNGzZkZD+1lbl7hlchxReZlQGrgfHu/mLC8OuBc939yL3MezjQGzgOuAX4mrs/srfv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\n", "text/plain": [ "
        " ] }, - "execution_count": 9, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "plot_histogram(job.result().get_counts(test))" + "# Test circuit \"my_state\" : Noise free model on simulator\n", + "backend_sim = Aer.get_backend('qasm_simulator')\n", + "shots = 1024\n", + "job_noisefree = execute(test, backend_sim, shots=shots, max_credits=5)\n", + "job_monitor(job_noisefree)\n", + "\n", + "noisefree_count = job_noisefree.result().get_counts(test)\n", + "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", + "print(\"Date (DMY):\", time_exp)\n", + "print(noisefree_count)\n", + "plot_histogram(noisefree_count, color=['purple'], \n", + " title=str(n) + '- qubit W state, noise free simulation, ' + method + \" method\")" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -279,25 +271,20 @@ "text": [ "OPENQASM 2.0;\n", "include \"qelib1.inc\";\n", - "qreg q0[4];\n", - "creg c0[4];\n", - "x q0[3];\n", - "ry(-1.04719755119660) q0[2];\n", - "cz q0[3],q0[2];\n", - "ry(1.04719755119660) q0[2];\n", + "qreg q0[3];\n", + "creg c0[3];\n", + "x q0[2];\n", "ry(-0.955316618124509) q0[1];\n", "cz q0[2],q0[1];\n", "ry(0.955316618124509) q0[1];\n", "ry(-0.785398163397448) q0[0];\n", "cz q0[1],q0[0];\n", "ry(0.785398163397448) q0[0];\n", - "cx q0[2],q0[3];\n", "cx q0[1],q0[2];\n", "cx q0[0],q0[1];\n", "measure q0[0] -> c0[0];\n", "measure q0[1] -> c0[1];\n", "measure q0[2] -> c0[2];\n", - "measure q0[3] -> c0[3];\n", "\n" ] } @@ -310,17 +297,19 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": {}, + "execution_count": 6, + "metadata": { + "scrolled": true + }, "outputs": [ { "data": { - "image/png": "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tEaHnzURaSIpKQl9+vTBTz/9hFWrVuGPP/7At99+i7lz5+KFF14AAAQEBOCTTz5BVlYWYmNjYWBgAG9vb4SFhUEQBJHfARE1VBzNiWqVmpoKmUyG5557DgDQrl07ODk54erVq+IGa4T4WRNRXaWkpGD48OGwsbFBTEwMunfvXuPyUqkUL774Is6dO4e5c+fi3//+NyQSCT788EM9Jdauv//+GwYGBpBK+fdRIjGwmKBapaamwsXFBRKJBOXl5YiPj8euXbsQEREhdrRGh581EdVFcXExAgIC0KFDByQmJsLS0lLt57Zq1QqbNm0CACxZsgSenp4YPHiwjpLWrrCwEHv37kVKSgr+97//oaioCIaGhnjuuefw/PPPY9y4cbCzs1N5TllZmfL9r127FhKJRKT0RE1XkynjN23aVOexp52dnXH48GHdBGpAUlNTkZSUBDMzMxgZGWHixInYsGEDpk+fLna0OsnJycGePXuwZ88eXLt2Tew4T9RYPutLly5h165dAIBbt26JnEY9JSUlOHjwIHbs2IHk5GSe9kENwgcffIBr165h69atdSokqkilUqxduxb29vaYPn26KKM93bt3D/PmzYO1tTVmzZqFffv2oXXr1ujZsyesrKyQlJSEoKAgdO3aFf7+/sjKygLwTyGxf/9+9O7dm4UEkUhELSYqKirw7rvvon379jAxMcG4ceNw9+7detO3v78/YmJi9JKnPktLS8OOHTtQWFiI69evw8bGBhcvXhQ7ltpyc3MxatQodOnSBRMnTsTEiRPRtWtXjBw5Ejdu3BA7noqG/llnZWXBx8cHPXr0QEBAAADAxsYGkydPxr1790RO92SVlZX46KOPYGVlBT8/P0yePBmDBg1Cjx49+P2neq2wsBCRkZEIDAzEwIEDNX6d1q1bY/Xq1bhy5QoOHDigxYS1i4uLQ+/evREZGYmAgACkpaXh7t27OHLkCPbu3YuDBw8iJycHV69exfvvv4/jx49DLpfj888/VxYSa9aswZtvvqnX3ET0D1GLifDwcERHRyMlJUW5U/fqq6/Wm75ZTACXL19GQUEBnJycAABWVlYICgrC119/jcrKSgBAcnKyymc3ZcoUnD59WpS8j7t16xbc3Nxw8OBBZV7g4Q5kbGws3NzccPPmTRET/qOhf9a//fYb3N3dq40OU1FRgZ07d8LT0xMKhUKc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3OYEQD3VJSY+jG9961u577778oMf/KDeqwDUnZgAoJ6m3IfWjeXXv/51KpVKXn311bS1teXLX/5yvVcCAIBpq+bv5vRhtLW15Xe/+1291wAAAHKLPTMBAABMHWICAAAoREwAAACFiAkAAKAQMQEAABQiJgAAgELEBAAAUIiYAAAAChETAABAIWICAAAoREwAAACFiAkAAKAQMQEAABQiJgAAgELEBAAAUIiYAAAAChETAABAIWICAAAoREwAAACFiAkAAKAQMQEAABQiJgAAgELEBAAAUIiYAAAAChETAABAIWICAAAoREwAAACFiAkAAKCQmfVeAICJuXz5ct4+9R9XHf/3d85c83Hprjn56Px7arIbANNTQ7VardZ7CQAm5sBf/13+5TcDE7p2y6Zn84nFD07yRgBMZ25zAriFPNu2MjMbG8e97pNLFggJACadmAC4hdxTbsrTTzw25jUzZjTkuc+uqtFGAExnYgLgFvPZVUtTuusj1z3/5LJHc29LuYYbATBdTbmYuHTpUnbu3Jn58+enVCqlo6Mjg4ODt/1sgImaNevOtH/m09c8N2f2rKx9anmNNwJguppyMdHT05NDhw6lr68vZ868/64kmzdvvu1nA9yI5Y99Ivff13LV8XVPr8icj8yuw0YATEd1i4mjR49m7dq1aWpqSrlczqZNm5IklUolnZ2dWbx4cZqbm7N379709vbm5MmTk75TPWcD3IgZDQ35wtrVVxy7t2VuVi57pE4bATAd1SUmDh48mI0bN2bHjh05d+5cTp8+na1bt2ZoaCinTp3KihUrRq9dsmRJmpqacvz48Rua0dPTk9bW1glffzNnA9TCQw9+LI89vHj0z59fsyqNM6bcE84A3MZq/m+dixcvZvv27alUKuno6Mjs2bNTKpXS3t6eCxcuJEmam5uv+DvlcjnDw8N59913s3r16rS1tWXlypV59dVXrztn165deeONNya813izAaaiZ9s+nZmNjXl48YPeChaAmqv5J2AfOXIkDQ0N2bBhw1XnSqVSkuT8+fNXHB8aGkpTU1PmzZuX1157LY2Njenv789XvvKVvP766zdlr/FmT7ZdeyqTPgO4ff2m/7TfIwBMip7Obdc9V/OYGBwczNy5c9PQ0HDVuXK5nAULFuTYsWNZunRpkqS/vz/Dw8NpbW1N4wc+qGloaOiGbmMaz3izJ9tY3ySAsVSr1Wv+TgWAyVbz25yWL1+egYGBHD58OJcvX87Q0FBeeeWV0fPbtm3Lnj17MjAwkOHh4XR2dqa9vT2LFi1KkgwMDOTpp59Oe3t7Nm7ceFN3G282wFQkJACol4ZqtVqt9dD9+/enu7s7Z8+eTalUypYtW9LV1ZXk/c966OzszL59+zIyMpL169enUqlk3rx5V3yN/v7+rFmzJu+88841Z3R3d+fAgQM5ceLEhPea6OzJ4PYEAACmorHuoKlLTBQ1MjKSWbNmJXn/dqm2tra8+eabdd4KAACmp5q/ZuLDeP3117N79+40Njbm97//fX7yk5/UeyUAAJi2bqlnJgAAgKnDpxsBAACFiAkAAKAQMQEAABQiJgAAgELEBAAAUIiYAAAAChETAABAIWICAAAoREwAAACFiAkAAKAQMQEAABQiJgAAgELEBAAAUIiYAAAAChETAABAIWICAAAoREwAAACFiAkAAKAQMQEAABQiJgAAgELEBAAAUIiYAAAAChETAABAIWICAAAo5H8BDVhncsf1XaMAAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl0AAAEsCAYAAAD5FAbSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3XtcVGX+B/DPgAJegFFEQRAQSysSB1DJC4KionnBNBU007zQplnmJUjLWlNDc11FtzZWzRIvlZfQTdGFFRMjFi94q0xFBFxvJDCJrMjM+f3hj0nkMoPOPGcGPu/X67waz2We7wxznvl0zpnnKCRJkkBEREREJmUldwFEREREDQFDFxEREZEADF1EREREAjB0EREREQnA0EVEREQkAEMXERERkQAMXUREREQCMHQRERERCcDQRURERCQAQxcRERGRAAxdRERERAIwdBEREREJwNBFREREJABDFxEREZEADF1EREREAjB0EREREQnA0EVEREQkAEMXERERkQAMXUREREQCMHQRERERCcDQRURERCQAQxcRERGRAAxdRERERAIwdBEREREJwNBFREREJABDFxEREZEAjeQugOQ1a9YsZGVlCW9XpVJh1apVwtslIuORq/8A2IdYCn7HVMYjXQ1cVlaW8B1CjjaJyPjk2pfZh1gOfsdUxiNdBJVKhdTUVGHthYSECGuLiExLdP8BsA+xNPyO+QOPdBEREREJwNBFREREJABDFxEREZEADF1kkLZt26JJkyZo3rw5HB0dMWjQIOTl5cldFhFZCPYhRAxdZIArV67g6tWrOH78OG7fvo3s7GzcuHEDMTExcpdGRBaAfQjRfQxdpFdmZiYcHBzw1FNPAQCcnJzg7++P69evy1wZEVkC9iFkSvfu3YNWq5W7DINwyAjSKzMzE926dYNCoUB5eTmSk5Px1VdfYfXq1XKXRkQWgH0IGaKoqAjbt29HRkYGTp8+jd9//x22trZ46qmn0LVrV4waNQqenp6VtikrK0NERARat26NTz/9FAqFQqbqDdNgjnRt3LixzmN3BAQE4MCBA6YpyIJkZmYiLS0NSqUSdnZ2GDNmDNavX4/JkyfLXRqZqV9//RVfffUVtm/fjmvXrsldDsmsPvQhkiThP//5D7Zu3Yrdu3fj9u3bcpdUb9y6dQvTp0+Hm5sb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\n", "text/plain": [ - "
        " + "
        " ] }, - "execution_count": 11, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -330,35 +319,103 @@ "test.draw(output='mpl')" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### State tomography and quantum fidelity in noise free device simulation" + ] + }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "9d6a3abbc93a465fbf0a89c56debe996", + "model_id": "344f68575fd54da1aec764c942034874", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "HTML(value=\"

        Job Status: job is being initialized

        \")" + "HTML(value=\"

        Job Status: job is actively running

        \")" ] }, "metadata": {}, "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Date (DMY): 07/01/2019 07:51:45\n", + "Tomography 3-qubit W state on qasm_simulator , shots: 1024 , method: specific , mode: noise free simulation\n", + "Fidelity with theoretical ideal state\n", + "F = 0.9858785193549825\n" + ] } ], "source": [ - "# Test circuit \"my_state\" : Real Quantum Computer (You may skip this if necessary)\n", + "# Execute state tomography using noise free quantum device simulation\n", + "\n", + "# obtain the final state vector\n", + "backend_stvct = Aer.get_backend('statevector_simulator')\n", + "job = execute(my_state, backend_stvct)\n", + "my_state_psi = job.result().get_statevector(my_state)\n", + "\n", + "# construct state tomography set for measurement of qubits [0, ..., n-1] in the Pauli basis\n", + "qubit_set = []\n", + "for i in range(0,n) :\n", + " qubit_set.append(i)\n", + "\n", + "my_state_tomo_set = tomo.state_tomography_set(qubit_set) # default value for meas_basis ='Pauli'.\n", + "\n", + "# add the state tomography measurement circuits to the Quantum Program\n", + "my_state_tomo_circuits = tomo.create_tomography_circuits(my_state, qr, cr, my_state_tomo_set)\n", "\n", - "# choose the backend\n", - "backend_IBMQ = least_busy(IBMQ.backends(operational=True, simulator=False))\n", + "backend_tomo = Aer.get_backend('qasm_simulator') # for simulation\n", + "\n", + "# take 1024 shots for each measurement basis\n", + "# note: reduce this number for larger number of qubits\n", "shots = 1024\n", + "mode = \"noise free simulation\"\n", + "my_state_job = execute(my_state_tomo_circuits, backend_tomo, shots=shots)\n", + "job_monitor(my_state_job)\n", + "my_state_tomo_result = my_state_job.result() \n", + " \n", + "# extract tomography data from results\n", + "my_state_tomo_data = tomo.tomography_data(my_state_tomo_result, my_state.name, my_state_tomo_set)\n", "\n", - "job = execute(test, backend_IBMQ, shots=shots, max_credits=5)\n", - "job_monitor(job)" + "# Quantum fidelity\n", + "\n", + "# reconstruct experimentally measured density matrix \n", + "rho_fit = tomo.fit_tomography_data(my_state_tomo_data)\n", + "\n", + "# calculate fidelity of fitted state:\n", + "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", + "print(\"Date (DMY):\", time_exp)\n", + "print('Tomography',str(n)+'-qubit W state on', backend_tomo,\n", + " \", shots:\", shots, \", method:\", method, \", mode:\", mode)\n", + "F_fit = state_fidelity(rho_fit, my_state_psi)\n", + "print('Fidelity with theoretical ideal state')\n", + "print('F =', F_fit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### From here, you need credentials:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "IBMQ.load_accounts()" ] }, { @@ -366,30 +423,414 @@ "execution_count": 13, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ibmq_16_melbourne ibmqx4\n", + "----------------- ------\n", + "Num. Qubits: 14 Num. Qubits: 5\n", + "Pending Jobs: 9 Pending Jobs: 92\n", + "Least busy: True Least busy: False\n", + "Operational: True Operational: True\n", + "Avg. T1: 55.0 Avg. T1: 49.0\n", + "Avg. T2: 74.1 Avg. T2: 25.4\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "backend_overview() # you may skip running this cell if you want" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ibmq_16_melbourne\n" + ] + } + ], + "source": [ + "backend_real = least_busy(IBMQ.backends(operational=True, simulator=False))\n", + "print(backend_real)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prepare noise simulation corresponding to a given quantum device" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "device: ibmq_16_melbourne\n", + "noise model prepared for ibmq_16_melbourne\n" + ] + } + ], + "source": [ + "# Prepare device noise simulation (DNS)\n", + "\n", + "device = backend_real\n", + "print(\"device: \", device)\n", + "properties = device.properties()\n", + "coupling_map = device.configuration().coupling_map\n", + "prepared = False\n", + "if device.name() == 'ibmq_16_melbourne' :\n", + " gate_times = [\n", + " ('u1', None, 0), ('u2', None, 100), ('u3', None, 200),\n", + " ('cx', [1, 0], 678), ('cx', [1, 2], 547), ('cx', [2, 3], 721),\n", + " ('cx', [4, 3], 733), ('cx', [4, 10], 721), ('cx', [5, 4], 800),\n", + " ('cx', [5, 6], 800), ('cx', [5, 9], 895), ('cx', [6, 8], 895),\n", + " ('cx', [7, 8], 640), ('cx', [9, 8], 895), ('cx', [9, 10], 800),\n", + " ('cx', [11, 10], 721), ('cx', [11, 3], 634), ('cx', [12, 2], 773),\n", + " ('cx', [13, 1], 2286), ('cx', [13, 12], 1504), ('cx', [], 800)\n", + " ]\n", + " prepared = True\n", + " \n", + "elif device.name() == 'ibmqx4' :\n", + " gate_times = [\n", + " ('u1', None, 0), ('u2', None, 60), ('u3', None, 120),\n", + " ('cx', [1, 0], 340), ('cx', [2, 0], 424), ('cx', [2, 1], 520),\n", + " ('cx', [3, 2], 620), ('cx', [3, 4], 420), ('cx', [4, 2], 920) \n", + " ]\n", + " prepared = True\n", + "\n", + "else :\n", + " print(\"No gate times yet defined in this notebook for: \", device)\n", + " \n", + "if prepared :\n", + " # Construct the noise model from backend properties and custom gate times\n", + " noise_model = noise.device.basic_device_noise_model(properties, gate_times=gate_times)\n", + "\n", + " # Get the basis gates for the noise model\n", + " basis_gates = noise_model.basis_gates\n", + " \n", + " print(\"noise model prepared for\", device)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run the algorithm using device noise simulation (DNS)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e068a86300d84b77a43063bbac94badf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HTML(value=\"

        Job Status: job is actively running

        \")" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + ">\n", + "Date (DMY): 08/01/2019 08:37:23\n", + "{'011': 33, '110': 26, '100': 268, '001': 303, '010': 310, '000': 39, '111': 17, '101': 28}\n" + ] + }, { "data": { - "image/png": "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\n", + "image/png": "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wI033kh+fj4vv/wy7l7WQSc7O5uzzz4bgDPPPJMFCxakeUlEROpHXffCfRC4zMyuMLNcM3sIyAYeBzCz58zsudLCZjbazM40s4Ojvx8CNwEvxJT5KfAr4AfAv82sQ/S3X10uWGOTSC/Wjz/+mBtuuIEJEyaQlZVVNrykpIT169cDsGDBAhYsWMDgwYMBOP3008nPD5e4p0+fTo8ePepoiURE6ladXgN19xfNrD3wM6AjMB843d2XR0Xi7wfNAO4FugK7gM+A/yFKuJEfAU0J94LG+gNwWS2Gv0dJpBfrmDFj2LJlC5dffjkQrnVMmDCB4uJiTj/9dCBcd3niiSdo0iRsStdffz1XXXUVjz32GK1ateKhhx6qt2UUEUknPUx+L70GKiIiFWtw10BFRET2JEqgIiIiKVACFRERSYESqIiISAqUQEVERFKgBCoiIpKC+ngWrkityWzXLm3zXr9BP+gjIpVTDVRERCQFSqAiIiIpUAIVERFJgRKoiIhICpRARUREUqBeuHu5dPZiBfVkFZE9l2qgIiIiKVACFRERSYESqIiISAqUQEVERFKgBCoiSZk6dSr9+vWjb9++jBs3brfxjzzyCP379+eEE05g+PDhfP7552XjVq5cyYgRIzj22GPp378/K1asAOCqq66iX79+HHfccVx77bUUFxfX2fKIpEoJVEQSVlJSws0338xLL73EjBkzmDhxIp988km5Mr169WLatGm8++67nH322YwZM6Zs3NVXX83o0aOZOXMmU6dO5YADDgDg3HPPZebMmUyfPp3t27fz/PPP1+lyiaRCCVREEjZr1iy6detG165dadasGSNGjGDy5MnlygwcOJCWLVsCcPTRR1NYWAjAJ598wq5duxg8eDAArVu3Lis3dOhQzAwzo0+fPmXTiDRkSqAikrCioiI6depU9j47O5uioqJKy7/wwgsMGTIEgM8++4z99tuPSy65hBNPPJFf/OIXlJSUlCtfXFzMSy+9xCmnnJKeBRCpRUqgIpIwd99tmJlVWPall15izpw5jB49GoBdu3YxY8YM7rjjDt58802WLVvGhAkTyk1z0003MWDAAAYMGFD7wYvUMj2JSEQSlp2dzapVq8reFxYW0qFDh93KvfXWWzzwwAO89tprNG/evGzaXr160bVrVwDOOOMMPvzww7Jp7r33XtatW8dvfvOb9C6E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\n", "text/plain": [ "
        " ] }, - "execution_count": 13, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "plot_histogram(job.result().get_counts(test))" + "# Execute test using device noise simulation (DNS)\n", + "\n", + "backend_noise = Aer.get_backend('qasm_simulator') # for simulation (DNS)\n", + "\n", + "shots = 1024\n", + "mode = \"DNS\"\n", + "job_noise = execute(test, backend_noise, \n", + " noise_model=noise_model,\n", + " coupling_map=coupling_map,\n", + " basis_gates=basis_gates)\n", + "job_monitor(job_noise)\n", + "\n", + "print(job_noise.status)\n", + "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", + "print(\"Date (DMY):\", time_exp)\n", + "noisy_count = job_noise.result().get_counts(test) \n", + "print(noisy_count)\n", + "plot_histogram(noisy_count, color=['cyan'],\n", + " title= str(n) + '- qubit W state, ' + mode + ': {}, '.format(device.name()) + method + \" method\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### State tomography and quantum fidelity in device noise simulation (DNS)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 44, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "94ac876bc665474caf2dc9404348e887", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HTML(value=\"

        Job Status: job is actively running

        \")" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Date (DMY): 07/01/2019 15:17:10\n", + "Tomography 3-qubit W state on qasm_simulator , shots: 1024 , method: specific , mode: DNS of ibmq_16_melbourne\n", + "Fidelity with theoretical ideal state\n", + "F = 0.796346002046457\n" + ] + } + ], "source": [ + "# Execute state tomography using device noise simulation (DNS)\n", + "\n", + "# obtain the final state vector\n", + "backend_stvct = Aer.get_backend('statevector_simulator')\n", + "job = execute(my_state, backend_stvct)\n", + "my_state_psi = job.result().get_statevector(my_state)\n", + "\n", + "# construct state tomography set for measurement of qubits [0, ..., n-1] in the Pauli basis\n", + "qubit_set = []\n", + "for i in range(0,n) :\n", + " qubit_set.append(i)\n", + "my_state_tomo_set = tomo.state_tomography_set(qubit_set) # default value for meas_basis ='Pauli'. \n", + "\n", + "# add the state tomography measurement circuits to the Quantum Program\n", + "my_state_tomo_circuits = tomo.create_tomography_circuits(my_state, qr, cr, my_state_tomo_set)\n", + "\n", + "backend_tomo = Aer.get_backend('qasm_simulator') # for simulation\n", + "\n", + "# take 1024 shots for each measurement basis\n", + "# note: reduce this number for larger number of qubits\n", + "shots = 1024\n", + "mode = \"DNS\"\n", + "my_state_job = execute(my_state_tomo_circuits, backend_tomo, \n", + " noise_model=noise_model,\n", + " coupling_map=coupling_map,\n", + " basis_gates=basis_gates)\n", + "job_monitor(my_state_job)\n", + "my_state_tomo_result = my_state_job.result() \n", + "\n", + "# extract tomography data from results\n", + "my_state_tomo_data = tomo.tomography_data(my_state_tomo_result, my_state.name, my_state_tomo_set)\n", + "\n", "# Quantum fidelity\n", "\n", + "# reconstruct experimentally measured density matrix \n", + "rho_fit = tomo.fit_tomography_data(my_state_tomo_data)\n", + "\n", + "# calculate fidelity of fitted state:\n", + "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", + "print(\"Date (DMY):\", time_exp)\n", + "print('Tomography',str(n)+'-qubit W state on', backend_tomo,\n", + " \", shots:\", shots, \", method:\", method, \", mode:\", mode, \"of\", device)\n", + "F_fit = state_fidelity(rho_fit, my_state_psi)\n", + "print('Fidelity with theoretical ideal state')\n", + "print('F =', F_fit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Results using device noise simulation (DNS)###\n", + "\n", + "The following results were obtained by device noise simulation on the qasm simulator, with the ibmqx4 as model, using 1024 shots for each tomographic circuit. " + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.xlabel('Number of Entangled Qubits')\n", + "plt.ylabel('Quantum Fidelity')\n", + "plt.axis([1.4, 6, 0, 1])\n", + "plt.grid()\n", + "plt.plot([2,3,4,5], [0.788,0.734,0.628,0.542], 'mo-', label=\"Specific Algorithm - DNS\")\n", + "plt.plot([2,3,4,5], [0.773,0.682,0.386,0.148], 'cs-', label=\"Arbitrary Initialization - DNS\")\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run the algorithm on superconducting quantum computing device (SQC)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "b15f9a04b95b427a8acb7aba0d3b953a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HTML(value=\"

        Job Status: job is being initialized

        \")" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + ">\n", + "{'011': 35, '110': 39, '100': 200, '001': 318, '010': 264, '000': 124, '111': 21, '101': 23}\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Execute test using superconducting quantum computing device (SQC)\n", + "\n", + "#Choose the backend\n", + "#backend_noise = Aer.get_backend('qasm_simulator') # for optional test before final experiment \n", + "backend_noise = device # for least busy SQC device\n", + "\n", + "# Execute on SQC and get counts\n", + "shots = 1024\n", + "if backend_noise.name() == \"qasm_simulator\" : # optional test before final experiment \n", + " mode = \"DNS\"\n", + " job_noise = execute(test, backend_noise, \n", + " noise_model=noise_model,\n", + " coupling_map=coupling_map,\n", + " basis_gates=basis_gates)\n", + "else: # final experiment on real device\n", + " mode = \"SQC\"\n", + " job_noise = execute(test, backend_noise)\n", + " job_monitor(job_noise)\n", + "\n", + "print(job_noise.status)\n", + "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", + "noisy_count = job_noise.result().get_counts(test) \n", + "print(noisy_count)\n", + "plot_histogram(noisy_count, color=['orange'], \n", + " title= str(n) + '- qubit W state, ' + mode + ': {}, '.format(device.name()) + method + \" method\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### State tomography and quantum fidelity on superconducting quantum computing device (SQC)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "b9073c034ea8437f89a942fb176b061b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HTML(value=\"

        Job Status: job is being initialized

        \")" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Date (DMY): 08/01/2019 10:58:17\n", + "Tomography 3-qubit W state on ibmq_16_melbourne , shots: 1024 , method: specific , mode: SQC ibmq_16_melbourne\n", + "Fidelity with theoretical ideal state\n", + "F = 0.6806596009461401\n" + ] + } + ], + "source": [ + "# Execute state tomography on superconducting quantum computing device (SQC)\n", + "\n", "# obtain the final state vector\n", "backend_stvct = Aer.get_backend('statevector_simulator')\n", "job = execute(my_state, backend_stvct)\n", @@ -406,30 +847,56 @@ "my_state_tomo_circuits = tomo.create_tomography_circuits(my_state, qr, cr, my_state_tomo_set)\n", "\n", "#Choose the backend\n", - "backend_tomo = Aer.get_backend('qasm_simulator') # for remaining local\n", - "#backend_tomo = least_busy(IBMQ.backends(operational=True, simulator=False)) # for using a real device\n", + "#backend_tomo = Aer.get_backend('qasm_simulator') # optional test before final experiment\n", + "backend_tomo = device # for least busy SQC device\n", "\n", "# take 1024 shots for each measurement basis\n", "# note: reduce this number for larger number of qubits\n", "shots = 1024\n", "\n", - "# run the experiment\n", - "my_state_job = execute(my_state_tomo_circuits, backend_tomo, shots=shots)\n", - "print(my_state_job.status)\n", - "my_state_tomo_result = my_state_job.result()\n", - "print(my_state_tomo_result)\n", + "# loop: 27 circuits maximum per job to avoid exceeding the allowed limit for the real device. \n", + "n_circ = 3**n\n", + "i_max = min(27,n_circ)\n", + "my_jobs = []\n", + "index_job = -1\n", + "for i in range(0,n_circ,i_max) :\n", + " circs =[]\n", + " for j in range(i, i+i_max):\n", + " circs.append(my_state_tomo_circuits[j])\n", + " if backend_tomo.name() == \"qasm_simulator\" : # optional test before final experiment\n", + " mode = \"DNS\"\n", + " my_state_job = execute(circs, backend_tomo, \n", + " noise_model=noise_model,\n", + " coupling_map=coupling_map,\n", + " basis_gates=basis_gates)\n", + " else: # final experiment on real device\n", + " mode = \"SQC\" \n", + " my_state_job = execute(circs, backend_tomo, shots=shots)\n", + " my_jobs.append(my_state_job)\n", + " index_job = index_job + 1 \n", + " job_monitor(my_jobs[index_job], monitor_async = True)\n", + " \n", + " my_state_new_result = my_state_job.result()\n", + " if i == 0:\n", + " my_state_tomo_result = my_state_new_result\n", + " else:\n", + " my_state_tomo_result = my_state_tomo_result + my_state_new_result\n", "\n", "# extract tomography data from results\n", "my_state_tomo_data = tomo.tomography_data(my_state_tomo_result, my_state.name, my_state_tomo_set)\n", "\n", + "# Quantum fidelity\n", + "\n", "# reconstruct experimentally measured density matrix \n", "rho_fit = tomo.fit_tomography_data(my_state_tomo_data)\n", "\n", "# calculate fidelity of fitted state:\n", "time_exp = time.strftime('%d/%m/%Y %H:%M:%S')\n", - "print('my state',n, '- qubit on', backend_tomo, \"N=\", shots,time_exp)\n", + "print(\"Date (DMY):\", time_exp)\n", + "print('Tomography',str(n)+'-qubit W state on', backend_tomo,\n", + " \", shots:\", shots, \", method:\", method, \", mode:\", mode, device)\n", "F_fit = state_fidelity(rho_fit, my_state_psi)\n", - "print('Fidelity with ideal state')\n", + "print('Fidelity with theoretical ideal state')\n", "print('F =', F_fit)" ] }, @@ -437,19 +904,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Results: ###\n", + "### Results for superconducting quantum computing device (SQC)###\n", "\n", - "The following results were obtained on the ibmqx4 using 1024 shots in each experiment:" + "The following results were obtained on the ibmqx4 superconductive quantum computing system using 1024 shots for each tomographic circuit:" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEKCAYAAAD9xUlFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl4FFXWwOHfSQgm7EswgGCCyA4hrIKoBFwGEaIIjGBQUJYRxAUVZcRxZ4Zx+dwGdXABF0QFZHFXhKCICoGJICgKCBJQREQxyiJwvj9up+mELE1IpzrJeZ+nnqSqq6tPV6BP1617zxVVxRhjjAGI8DoAY4wx4cOSgjHGGD9LCsYYY/wsKRhjjPGzpGCMMcbPkoIxxhi/kCUFEXlWRH4UkS/yeVxE5FER2SAiq0WkfahiMcYYE5xQXilMB3oV8Pj5QBPfMgp4IoSxGGOMCULIkoKqfgj8XMAuFwLPq/MpUENE6oUqHmOMMYWr4OFrnwRsDVjP9G37PveOIjIKdzVBTExMh4YNG5ZIgMXh8OHDRETYrZuC2DkqmJ2fwtk5KtzXX3/9k6rWKWw/L5NC0FR1KjAVoGPHjpqenu5xRMFLS0sjOTnZ6zDCmp2jgtn5KZydo8KJyJZg9vMytW4DAr/yN/BtM8YY4xEvk8IC4HJfL6QuwK+qelTTkTHGmJITsuYjEZkJJAOxIpIJ3AFEAajqk8BbQG9gA/AHcEWoYjHGGBOckCUFVR1cyOMKXB2q1zemtPrzzz/JzMxk3759AFSvXp0vv/zS46jCm52jI6Kjo2nQoAFRUVFFen6puNFsTHmSmZlJ1apVSUhIQET47bffqFq1qtdhhTU7R46qsmvXLjIzM2nUqFGRjmF9uIwJM/v27aN27dqIiNehmFJGRKhdu7b/KrMoLCkYE4YsIZiiOt5/O5YUjDHG+FlSMMYcZdKkSbRq1YrExESSkpL47LPPivX4vXv35pdffgHg0UcfpUWLFqSmprJgwQImT558TMfKyMigWrVqvPPOOzm2V6lSpdjivf3221m4cCEADz/8MH/88UdIXicsqGqpWjp06KClyeLFi70OIezZOcpp3bp1Odb37NlT8BNefFE1Pl5VxP188cXjev1ly5Zply5ddN++faqqunPnTt22bdtxHbMgzZo1061btxb5+TfffLN27dpVL7/88hzbK1eufLyhqarqwYMHc6zHx8frzp07i/11ilPuf0OqqkC6BvEZa1cKxpRmM2bAqFGwZQuoup+jRrntRfT9998TGxvLCSecAEBsbCz169cHICEhgZtvvpk2bdrQuXNnNmzYAMDOnTvp378/nTp1olOnTnz88ccAZGVlccUVV9CmTRsSExOZM2eO/zg//fQTV111FZs2beL888/noYceYvr06YwdOxaAHTt20K9fP9q2bUvbtm1ZtmzZUbGqKrNmzeKJJ57g/fffz/MG6+HDhxkzZgzNmzfn3HPPpXfv3syePRuADz74gHbt2tGmTRuuvPJK9u/f74/vlltuoX379syaNYthw4Yxe/ZsHn30UbZv306PHj3o0aOH/zUmTpxI27Zt6dKlCzt27ABg2LBhjB49mi5dunDKKaeQlpbGlVdeSYsWLRg2bFiR/z6hZknBmHB2/fXE9O4Nycl5L8OHQ0BTBuDWhw/P/znXX1/gS5533nls3bqVpk2bMmbMGJYsWZLj8erVq7NmzRrGjh3L9b5jXXfddYwbN44VK1YwZ84cRowYAcA999zj33/16tX07Nkzx7GefPJJ6tevz+LFixk3blyOx6699lq6d+/O559/zqpVq2jVqtVRsS5btoxGjRpxyimnkJyczJtvvnnUPq+99hqbN29m3bp1vPDCC3zyySeA6+U1bNgwXnnlFdasWcPBgwd54okjFfxr167NqlWrGDRoUI6YsuNdvHgxAL///jtdunTh888/56yzzuKpp57y7797924++eQTHnroIVJSUhg3bhxr165lzZo1ZGRkFPh38IolBWNKM98326C3B6FKlSqsXLmSqVOnUqdOHS655BKmT5/uf3zw4MH+n9kfsAsXLmTs2LEkJSWRkpLCnj17yMrKYuHChVx99ZExqjVr1gw6jkWLFjF69GgAIiMjqV69+lH7zJw50/+hPWjQIGbOnHnUPkuXLmXgwIFERERQt25d/zf89evX06hRI5o2bQrA0KFD+fDDD/3Pu+SSS4KKs2LFivTp0weADh06sHnzZv9jffv2RURo06YNcXFxtGnThoiICFq1apVjv3Big9eMCWcPP8zeggZmJSS4JqPc4uMhLa3ILxsZGUlycjLJycm0adOG5557zt/kEdjlMfv3w4cP8+mnnxIdHV3k1zxWhw4dYs6cOcyfP597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\n", + "image/png": "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\n", "text/plain": [ "
        " ] @@ -475,11 +942,98 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Concluding remark:\n", - "\n", + "### Comparing DNS to SQC\n", + "The results mentioned above for the DNS and SQC experiments are illustrated together in the next graphs:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Herafter a comparison of the histograms of estimated outcome probabilities obtained during noise-free simulation, DNS and SQC experiments of deterministic generation of W states by the specific algorithm on ibmqx4 using Qiskit 0.7 (Note that the results were less convincing using the ibmq_16_melbourne as shown above)." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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azF27NiyjIwMz/3797vpZQNvvfXW456ensq4jPr6enz++edBb7755uFOnTrVuri44JZbbjnl6emp3n///cB+/fqVjx49utzZ2RkjRow4kZSUdGrlypV+F7M9HMVrFomIiC5hn3zySdbw4cMrvvzyS5/7778/trCw0CUoKKi+oKDA5fTp007XXnttorF8fX29AEBFRYXT+PHjO27YsMH3xIkTLgBw6tQpp7q6Ori4NJ0eFBcXu8bExJzpnNGpUye7O2rYs9zQ0NAzPVi8vLwaKisrL6pyKyQkpM7y3tPTsyE4ONiu+efn57tGREScWTdfX98Gf3//M/MqKChwGzt2bJwxgXR2dkZeXp5rp06davv371++ZMkS88svv1y4atWqgLfeeivXehmFhYUu1dXV0rVr12rrcbm5uW5r164NMJlMZ5LDuro66du3b4Wj2+BisGaRiIjoMjBkyJCTo0ePLnn88ccjASA0NLTOw8OjYdeuXXsrKip2Wl6VlZU7AOCFF14IycrK8tiyZUvGyZMnd3z99de/AIBSqqnFAACCgoJqc3JyzjTHGt8DgIeHR8OpU6fO5Bi//vrrmWsSL2a5InLOMG9v7/qqqqozy8rLy7Prukt7hIWF1R49evTMulVUVDgdP378TCYdEhJS+8UXX+w3bt/q6urtnTp1qgWAu+66q3TlypXmdevWeVdXVzsNHTr0nCQvNDS0zt3dXe3bt8/delzHjh1rRowYUWKcf1VV1Y6ZM2cWNtc62oPJIhER0WXi6aefLtq0aZPv5s2bPZ2dnXHXXXcdmzhxYsejR4+6AEB2drbrypUrfQGgoqLC2cPDoyEoKKi+qKjI+dlnn230ur3G3H777aWvvvpqWHFxsfPBgwdd33333Q7G8YmJiVVLliwx19XVYcWKFb4//fTTmWbmi1luWFhYnZOTEzIyMs4kVj179qz66aeffA4cOOBWUlLiPHPmzNCm5uGIMWPGlK1fv97vq6++8jl9+rQ88cQT4UqpMxnr/fff/+uMGTMiLU3N+fn5LkuXLvW3jB81alR5fn6+29/+9rfw2267rczZ2fmcZTg7O2PUqFHHpk6d2jEnJ8e1rq4O69at866qqpIHH3ywZN26df4rV670raurQ2VlpaxZs8Zkb0ek5sJkkVpEwFqz3S8iImoe4eHhdSNHjix5/vnnwwFgwYIFebGx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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# DSN vs SQC, count histograms\n", + "# Shots = 1024\n", + "count_noisefree = {'010': 344, '001': 335, '100': 345}\n", + "count_DNS = {'110': 42, '010': 258, '111': 9, '011': 38, '000': 76, '001': 281, '100': 286, '101': 34}\n", + "count_real = {'001': 274, '000': 129, '010': 224, '011': 20, '100': 282, '111': 14, '101': 46, '110': 35} \n", + "plot_histogram([count_noisefree, count_DNS, count_real], \n", + " title= 'Determistic W state generation, specific algorithm, device: ibmqx4', \n", + " color=['purple','cyan', 'orange'], bar_labels=False,\n", + " legend = ['Noise free simulation', 'Device noise simulation','Real quantum device']) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hereafter a comparison of the quantum fidelity estimated by state tomography for device noise simulation (DSN) and real device (SQC), using either the specific algorithm or arbitrary initialization:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEKCAYAAAD9xUlFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzsnXlYVdX6xz/7HGZkFMSZwUSRGVFUTEHLyoFyKpXrkAMOWWnltV+Wml2btKvZoFmmZmrOXutWmoF6BVMIcUAlBVFwQEAUEAGB9ftjwxZkFIGDtj/Ps59zzt5rr/XuzeG8e631ru8rCSFQUVFRUVEB0OjaABUVFRWVxoPqFFRUVFRUFFSnoKKioqKioDoFFRUVFRUF1SmoqKioqCioTkFFRUVFRaHenIIkSd9KknRNkqSTlRyXJElaJknSOUmSjkuS5FNftqioqKio1Iz67CmsAZ6u4vgzQPviLQRYXo+2qKioqKjUgHpzCkKIA8D1Koo8C3wnZP4ALCVJalFf9qioqKioVI+eDttuBSSV+pxcvO/KvQUlSQpB7k1gbGzcuU2bNg1iYF1QVFSERqNO3VSFeo+qRr0/1aPeo+r566+/0oQQttWV06VTkCrYV6HmhhBiJbASwNfXV0RFRdWnXXXKvn37CAgI0LUZjRr1HlWNen+qR71H1SNJ0oWalNOla00GSj/ytwYu68gWFRUVFRV06xR2AWOKo5C6ATeFEOWGjlRUVFRUGo56Gz6SJGkjEADYSJKUDMwD9AGEECuAn4H+wDkgB3ixvmxRUVFRUakZ9eYUhBAjqzkugJfqq30Vlfvlzp07JCcnk5ubq2tTymBhYcHp06d1bUajRr1HdzEyMqJ169bo6+vX6nxdTjSrqDQqkpOTMTMzw8HBAUmqKA5CN2RlZWFmZqZrMxo16j2SEUKQnp5OcnIyjo6OtapDjeFSUSkmNzeXpk2bNiqHoKJyP0iSRNOmTR+ot6s6BRWVUqgOQeVh50G/w6pTUFFRUVFRUJ2CikojYuHChbi6uuLh4YGXlxeHDx+u0/r79+/PjRs3AFi2bBkuLi4EBweza9cuPvzww/uq6+jRo0iSxO7du8vsb9KkSZ3ZO3fuXPbu3QvA0qVLycnJqZd2qkKSJF5//XXl8+LFi5k/fz4A8+fPZ/HixQD88ccf+Pn54eXlhYuLi1IGYOfOnXh4eNCxY0fc3NzYunVrg9heK4QQD9XWuXNn8TARFhamaxMaPY3lHp06der+Tvj+eyHs7YWQJPn1++8fqP2IiAjRrVs3kZubK4QQIjU1VVy6dElkZmY+UL2V0aFDB5GQkFDr82fNmiV69uwpxo4dW2a/qanpA1omU1BQUOazvb29SE1NrbCd+rpHQghhaGgoHBwclLYXLVok5s2bJ4QQYt68eWLRokVCCCGcnZ1FTEyMYntsbKwQQoiYmBjRrl075V4nJCQIJycnERUVVW82V/RdBqJEDX5j1Z6CikptWL8eQkLgwgUQQn4NCZH315IrV65gY2ODoaEhADY2NrRs2RIABwcHZs+eTdeuXenatSvnzp0DIDU1laFDh9KlSxe6dOlCeHg4ANnZ2bz44ou4u7vj4eHBtm3blHrS0tKYMmUKCQkJBAUFsWTJEtasWcP06dMBSElJYfDgwXh6euLp6UlEREQ5W4UQbN26lTVr1rBnz54KJzaLioqYNm0arq6uDBw4kP79+ytPyL///jve3t64u7szfvx48vLyFPsWLFhAz5492bJlC+PGjWPr1q0sW7aMy5cvExgYSGBgoNLGnDlz8PT0pE+fPqSkpAAwbtw4pk6dSmBgIE5OTuzfv5/x48fj4uLCuHHj7vvvoqenR0hICEuWLKmy3LVr12jRQtb01Gq1dOrUCZB7Fm+99ZYSDeTo6Mhbb73FJ598ct+2NASqU1BRqYgZMyAgoPJtwgQoNZQByJ8nTKj8nBkzqmyyX79+JCUl4ezszLRp09i/f3+Z4+bm5hw5coTp06czo7iuV199lZkzZxIZGcm2bduYOHEiAO+99x4WFhacOHGC48eP06dPnzJ1rVixgpYtWxIWFsbMmTPLHHvllVfo3bs3x44dIzo6GldX13K2hoeH4+joSLt27QgICODnn38uV2b79u0kJiZy4sQJvvnmGw4dOgTIUV7jxo1j06ZNnDhxgoKCApYvv6ucb2RkxMGDBxkxYkQZm0rsDQsLA+DWrVt069aNY8eO4e/vz9dff62Uz8jIIDQ0lCVLljBo0CBmzpxJbGwsJ06cICYmpsq/Q0W89NJLrF+/nps3b1ZaZubMmXTo0IHBgwfz1VdfKY4yNjaWzp07lynr6+vLqVOn7tuOhkB1CioqtaH4ybbG+2tAkyZN+PPPP1m5ciW2tra88MILrFmzRjk+cuRI5bXkB3bv3r1Mnz4dLy8vgoKCyMzMJCsri7179/LSS3fXhlpZWdXYjtDQUKZOnQrIT7wWFhblymzcuFH50R4xYgQbN24sV+bgwYMMHz4cjUZD8+bNlSf8uLg4HB0dcXZ2BmDs2LEcOHBAOe+FF16okZ0GBgYMHDgQAC8vLxITE5VjgwYNQpIk3N3dsbOzw93dHY1Gg6ura5lyNcXc3JwxY8awbNmySsvMnTuXqKgo+vXrx4YNG3j6aTmdjBCiXESQPJrTOFEXr6moVMTSpVUfd3CQh4zuxd4e9u2rdbNarZaAgAACAgJwd3dn7dq1DB06FCgbaljyvqioiEOHDmFsbFymnop+iOqKwsJCtm3bxq5du1i4cKGyYOreBWSV/fBV94NoampaIzv09fWVa9RqtRQUFCjHSobgNBqN8r7kc+lyAIcPH2by5MkALFiwgKCgoArbmzFjBj4+Prz4YuWKPO3atWPq1KlMmjQJW1tb0tPTcXV1JSoqCg8PD6VcdHQ0vr6+NbrOhkbtKaio1IaFC8HEpOw+ExN5fy2Ji4vj7NmzyueYmBjs7e2Vz5s2bVJeu3fvDshDTp9//nmZcyran5GRUWM7+vbtqwznFBYWkpmZWeb43r178fT0JCkpicTERC5cuMDQoUPZuXNnmXI9e/Zk27ZtFBUVkZKSwr5iZ9mxY0cSExOVeZF169bRu3fvau0yMzMjKyurxtdRU/z8/IiJiSEmJqZShwBgbW3N888/z6pVqyo8/t///ldxeGfPnkWr1WJpackbb7zBBx98oPRQEhMTWbp0KbNmzarza6kLVKegolIbgoNh5Uq5ZyBJ8uvKlfL+WpKdnc3YsWPp1KkTHh4enDp1qkxYY15eHn5+fnz66afKpOeyZcuUp9BOnTqxYsUKAN5++20yMjJwc3PD09NTGYevCZ9++ilhYWG4u7vTuXNnYmNjyxzfuHEjgwcPLrNv6NChbNiwody+1q1b4+bmxuTJk/Hz88PCwgIjIyNWr17N8OHDlWGdKVOmVGtXSEgIzzzzTJmJ5obm9ddfJy0trcJj69ato0OHDnh5eTF69GjWr1+PVqvFy8uLjz76iEGDBuHs7IyzszPLly+nQ4cODWx9DalJiFJj2tSQ1EePxnKP7jsktYHIzMwsF475sJCVlSWEECItLU04OTmJK1eu1Es79RmSWtfMnj1bBAQEiLy8vHpr40FCUtU5BRUVlXpj4MCB3Lhxg/z8fN555x2aN2+ua5N0zv0uEmxoVKegovIQUJuImcbAvgeYdFfRDeqcgoqKioqKguoUVFRUVFQUVKegoqKioqKgOgUVFRUVFQXVKaioNDJ27NiBJEmcOXOm0jKJiYm4ublVeGzixImKrs77779fLzZWRIl4XVWUlujeuXNnGf2f0jLZNWmj9HXeD2vWrOHy5cvK59rWcz+MGzeOVq1aKcJ/aWlpODg4AGX/ljk5OQQHB+Pu7o6bmxs9e/YkOzsbkNPFPvvss7Rv3x4nJyemT5+u1FeXqE5BRaUWNG8ur1m7d6uLiMuNGzfSs2dPfvjhhwqPFxYWVnn+N998oyh0VuYUhBAUFRXVyJ7q2rsfgoKCePPNN4HyTmHBggU88cQTNa6r9HXeD/c6hdrWc79otVq+/fbbKst8+umn2NnZceLECU6ePMmqVavQ19dHCMGQIUN47rnnOHv2LGfPnuX27dv885//rHM7VaegolILilWaa7y/pmRnZxMeHs6qVavKOIV9+/YRGBjIqFGjcHd3B6CgoICxY8fi4eHBsGHDlAQ0AQEBREVF8eabb3L79m28vLwIDg4mMTERFxcXpk2bho+PD0lJSUydOhVfX19cXV2ZN2+e0l5pCesPP/wQHx8f5djZs2fLqX7ei4ODA/PmzcPHxwd3d3el11Mi0R0REcGuXbuYNWsWXl5exMfHl+kFLFiwgC5duuDm5kZISEiFekkl17lr1y78/f3x8vKiQ4cOikR1RXVs3bqVqKgogoOD8fLy4vbt20o9IDvkkqf02bNnK201adJEkenu1q2bItN9P8yYMYMlS5aU014qzZUrV2jVqpXyuUOHDhgaGhIaGoqRkZGiu6TValmyZAnfffed0pOoK1SnoKJSAdUpZ1dFLZWzAfnp+emnn8bZ2Rlra2uio6OVY0eOHGHhwoXK03VcXBwhISEcP34cc3NzvvzyyzJ1ffjhhxgbGxMTE8P64jwPcXFxjBkzhqNHj2Jvb8/ChQuJiori+PHj7N+/n+PHjyvnl0hYz5kzBwsLC0VXafXq1TXKS2BjY0N0dDRTp05VspOV0KNHD4KCgli0aBExMTG0a9euzPHp06cTGRnJyZMnuX37Nj/99FOl7QQFBREeHk5MTAyenp688cYbldYxbNgwfH19Wb9+PTExMWWEBC9fvszs2bMJDQ0lJiaGyMhIRc+ptEx3r169ysh015S2bdvSs2dP1q1bV2mZ8ePH89FHH9G9e3fefvttRQurIvltc3NzHBwcFA2pukJ1CioqjYiqJKm7du2qPAUDtGnTBn9/fwD+8Y9/cPDgwWrrt7e3p1u3bsrnzZs34+Pjg7e3N7GxsWWGc0pLWE+cOJHVq1dTWFjIpk2bGDVqVLVtDRkyBIDOnTvf9+K7sLAw/Pz8cHd3JzQ0tJz+UkV8/PHHGBsbK5Lh91tHZGQkAQEB2NraoqenR3BwsCLpXVqmuzbXU8Jbb73FokWLKh268/LyIiEhgVmzZnH9+nW6dOnC6dOnK1W9ragH9aCoK5pVVCqgOuXsqlSpa7uINz09ndDQUE6ePIkkSRQWFiJJEu+88w5QXlL63h+Jmkhll67j/PnzLF68mMjISKysrBg3blyZDGqlyw4dOpR3332XPn360LlzZ5o2bVptWyWS1ffKWldHbm4u06ZNIyoqijZt2jB//vwKM7uVZt++fWzZskX5Ea9NHVX9wFYl013CU089RUpKCr6+vnzzzTcV1vPYY4/h5eXF5s2bK22rSZMmDBkyhCFDhqDRaPj555/x9PRUsueVkJmZSUpKSp0L66k9BRWVRsLWrVsZM2YMFy5cIDExkaSkJBwdHZWEOvdy8eJF5VjJ5PS96Ovrc+fOnQrPz8zMxNTUFAsLC1JSUvjll18qtc3IyIinnnqKqVOnVplP4H6oTAq75MfbxsaG7OzsaiOaLly4wGuvvcbmzZuV4aCq6qisXT8/P/bv309aWhqFhYVs3LixRpLeJezevZuYmJhKHUIJc+bMKTecVkJ4eLgic56fn8+pU6ewt7enb9++5OTk8N133wHy5P/rr7/O9OnTy+XSeFBUp6CiUgvs7O5vf02oTJJ6y5YtFZZ3cXFh7dq1eHh4cP36dSVbWmlCQkLw8PAguAJJb09PT7y9vXF1dWX8+PHKUFRlBAcHI0kS/fr1u4+rqpwRI0awaNEivL29iY+PV/ZbWloyadIk3N3dee655+jSpUuV9axZs4br168zePBgvLy86N+/f5V1jBs3jilTpigTzSW0aNGCDz74gMDAQDw9PfHx8eHZZ5+tk2stjaura5mJ+9LEx8fTu3dv3N3d8fb2xtfXl6FDhyJJEjt27GDr1q20b9+epk2botFomDNnTp3bJ9XHmFR94uvrK0oiBRorzZtXHIViZwdXrza8PY2dffv2EVDd7G0DcPr0aVxcXHRtRjnuzWimKxYvXszNmzd57733dG1KORrLPWooIiIiGDlyJNu3b68wEqyi77IkSX8KIapN96bOKdQD9RWuqKKiKwYPHkx8fDyhoaG6NkUFOXrrQkXpYOsA1SmoqKhUy44dO3RtgkoDoc4pqKioqKgoqE5BRUVFRUVBdQoNzOHDurZARUVFpXJUp1AP2FncrnC/ViqiTx/4738b2CAVFRWVGqI6hXrgqqULAqncdrlVFzp1gmefhWrWt6j8TVm4cCGurq54eHjg5eXF4TruWvbv358bN24AsGzZMlxcXAgODi4jaV1Tjh49iiRJ7N69u8z+Jk2a1Jm9peW0ly5dqoj+1XU7VaHVavHy8sLV1RVPT0/+/e9/KzIV+/btQ5IkfvzxR6X8wIEDldzUP/30E97e3nh6etKpUye++uqrBrH5gRBC1NsGPA3EAeeANys43hYIA44Cx4H+1dXZuXNn0eiRJCGgwi3rg8/E090zBAjx7rtCFBXp2ljdExYWpmsThBBCnDp16r7KX/3+qoiwjxBhUpiIsI8QV7+/+kDtR0REiG7duonc3FwhhBCpqani0qVLIjMz84HqrYwOHTqIhISEWp8/a9Ys0bNnTzF27Ngy+01NTR/QMpmCgoIyn+3t7UVqamqF7dTXPbq3nZSUFNG3b18xd+5cIYT83W3durXw8/NTygwYMECEhYWJ/Px80aJFC5GUlCSEECI3N1ecOXOm3uwsTUXfZSBK1OB3u956CpIkaYEvgGeATsBISZLuFS1/G9gshPAGRgBf8ijQtm3F+7Vamvzfy+w6ZMtY7TrmzYMpPkco+PEXKF7arvJwkLI+hbiQOPIu5IGAvAt5xIXEkbK+9otRrly5go2NjaIZZGNjQ8uWLQFZinr27Nl07dqVrl27KsqYqampDB06lC5dutClSxfCw8MBWYL7xRdfxN3dHQ8PD0U3x8HBgbS0NKZMmUJCQgJBQUEsWbJEkbQGSElJYfDgwXh6euLp6UlEREQ5W0WxDPWaNWvYs2dPhbpCRUVFTJs2DVdXVwYOHEj//v0VuYnff/8db29v3N3dGT9+vJIsprRk95YtWxQ57WXLlnH58mUCAwMJDAxU2iiRs+7Tp48iZz1u3DimTp1KYGAgTk5O7N+/n/Hjx+Pi4lIjddeqaNasGStXruTzzz9XtJI8PT2xsLDgt99+K1M2KyuLgoICRSfK0NCwznWK6oP6HD7qCpwTQiQIIfKBH4B714wLwLz4vQVwmUeBhQtJ0X+GQ2xkH79ziI2k6D8Da9fCpUvob97A6pf+5K3m37IypitDg/LJsW4Frq4QEiKXO3dO7luo6ISzM85yNOBopduZCWcoyimrdFmUU8SZCWcqPefsjLNVttmvXz+SkpJwdnZm2rRp7N+/v8xxc3Nzjhw5wvTp05lRrMP96quvMnPmTCIjI9m2bRsTJ04E4L333sPCwoITJ05w/Phx+vTpU6auFStW0LJlS8LCwpg5c2aZY6+88gq9e/fm2LFjREdH4+rqWs7W8PBwHB0dadeuHQEBAfz888/lymzfvp3ExEROnDjBN998o+g05ebmMm7cODZt2sSJEycoKChg+fLlynklkt0larElNpXYGxYWBpSVs/b39y8jZ52RkUFoaChLlixh0KBBzJw5k9jYWE6cOKFIgNcWJycnioqKuHbtmrLv7bff5l//+leZctbW1gQFBWFvb8/IkSNZv359jRMb6ZL6XLzWCkgq9TkZ8LunzHxgjyRJLwOmQIVplyRJCgFCAOzs7JTxukbL6VYgXge0AOTRnNPidU6f1kKrv8DWFgY/x5ODIWdLLJ8uD+Jx2+P8YDgVxw0b0Cv+cudbWXHTzY2bbm5kurmR1b49Ql9fhxdWP2RnZzeKv6mFhYUilHYn/06VGcdEXsUOW+SJSs+7k3+nQiG20uzbt4+IiAgOHDjA888/z7vvvsuIESMQQjBo0CCysrIYOHAgM2bMICsri99++42TJ08q59+8eZPLly+zZ88evv32W6U9PT09srKyEEKQnZ2NoaFhmfe5ubnk5+eTlZXF77//zhdffKGcq9Foytm9du1annvuObKysnj22WdZt24dTz75pHI8KyuL0NBQBg0axK1btzA1NeXxxx/n9u3bREdH07ZtW1q0aEFWVhbDhw/n66+/ZsKECQghGDBgwN2/w5073L59u5ztIMtZ9+7dm6ysLDw8PNi/fz9ZWVncuXOHJ554guzsbBwdHbG1tcXBwYFbt27h7OzM6dOny+VvqI57r7/ElpycHAoKCvDy8qKwsJDdu3dTUFBATk4OWVlZLFmyhIkTJxIWFsbHH3/Mzz//zIoVK+6r7dqQm5tb6/+p+nQKFen43vufNBJYI4T4RJKk7sA6SZLchBBl3KkQYiWwEmTto8agk1MVh8YdIq/gntypBVoMvzek+7+6l9kdEAC9noCRIx9jkNVv/Hq8CIecUxAejkF4OLbh4dj+739yYUND6NIF/P3lrUcPqIGEcWOnMWkflejndPqy6vSMhxwOyUNH92Bob4jv/6qVl6mS/v37079/f3x9fVm7dq0iRGdmZoaZmRl37txBo9FgZmaGEILDhw+XU8osXf7e/U2aNMHMzKzMeyMjIwwMDJT9ZmZmyo/vvRQWFvLjjz/y66+/8sknnyCEID09HUBpz8zMDH19fYyMjJR9enp6GBsbY2JiglarVfabmJigp6entG1nZ6cc09fXx9jYuJy9JcfMzc2V9yV26+vrY2lpiZmZGebm5sr5IA/h6Ovrl7kvhw8fZvLkyYCcrS0oKKjcNZcun5CQgFarxcnJiaSkJMX2uXPn8u9//xs9PT1MTEyUc7p160a3bt2YNGkSjo6OSsKj+sTIyAhvb+9anVufw0fJQJtSn1tTfnhoArAZQAhxCDACbOrRpgYh72LFybTzLuQR/894rqy+QubhTAoyZU32wYNh7164dg26+2uIKXCDyZPhu+8gPh4uX4atW2HaNMjPh08+gaAgsLEBFxeYOBFWr4a//lKHnBoIp4VOaEzK/vtoTDQ4LXSqdZ1xcXFKpi2AmJgY7O3tlc+bNm1SXrt3lx8u+vXrx+eff17mnIr2Z9zHnFXfvn2V4ZzCwkIyMzPLHN+7dy+enp4kJSWRmJjIhQsXGDp0qJKlrISePXuybds2ioqKSElJUZ5cO3bsSGJiojIvsm7duhpJVFcmef2g+Pn5ERMTQ0xMTIUOoTSpqalMmTKF6dOnl8tf0a9fPzIyMjh27BhQvgd879+zsVKfPYVIoL0kSY7AJeSJ5HvTNV0E+gJrJElyQXYKqfVoU4MwdAdctyi/3+o67BiZjMi/+8Nt0NIA006m2LmYsGe6Cf+3wpRBPU1Ys1Ofvk8Uf+latIChQ+UN4PZtiIyE8HB5274dVq2Sj9nayj2IHj3k3oSvr9zDUKlT7IJljeyEOQnkXczDsK0hTgudlP21ITs7m5dffpkbN26gp6fHY489xsqVK5XjeXl5+Pn5UVRUpGRkW7ZsGS+99BIeHh4UFBTQq1cvVqxYwdtvv81LL72Em5sbWq2WefPmKZnQquPTTz8lJCSEVatWodVqWb58ueKEoHKJ7+XLlzN69Ogy+37//Xfc3NxwdnbGz88PCwsLjIyMWL16NcOHD6egoIAuXbowZcqUau0KCQnhmWeeoUWLFsq8QkNQkuf6zp076OnpMXr0aF577bUKy86ZM0eR2xZC8PHHHzN58mSMjY0xNTVlzZo1DWZ3balX6WxJkvoDS5EH178VQiyUJGkBcmjUruJopK+BJshDS/8UQuypqs6HQTpbqmIsr7BnL3LP55JzKodbp2+RczpH2Qqz745FZ6KHobMJDr1NMXExwcTFBNNOphi2MSyfYauoCM6cueskwsPliWoAAwPZMZQecrK1rYerrj2NafiosUpnu7u7ExUVhY3Nw9WRzs7OpkmTJqSnp9O1a1fCw8Np3rx5nbfzd5POro5GK50thPgZ+PmefXNLvT8FVJ3Z4xFDo6fBpL0JJu1NsHn27j+4EIK85DxyTueQ9uct/vwsB72/ctAkp6Kfczf1n8ZUg0lH2UEozsLFFCPnjmg6dYJJk+SCKSlw6NBdJ7F0KSxaJB9zdr7rIPz9oWPHqvNLqqjUkoEDB3Ljxg3y8/N555136sUhqNQtqnR2A+MfHU0/a2uetLKiq5kZehp5XFqSJIzaGGHUxgjrftZMfw3GjIEZm+GfIfnMHplDblwOt07JvYsbYTdIWXc3Jl4ykDBub4ypS7Gz6GSCqcsTGD81CK2xFnJzISrqrpPYtUuehwCwtr7rIEqGnOo4xZ/Kg1HbRPG6pjFElancH6pTaGDuCMG7iYnMT0zEXKulj5UV/ays6GdtTbtSP8SGhrBxI7RsCR8vNSDxhgHffWdJy1LTAwWZBeSckYeebp2+Rc6pHLJjskndngol8VsSGDkZFTuLFpi4jMF0zlRMOhqjdyVedhAREfLrTz/J5+jrQ+fOZR3Fg+SZVFFReWhQnUIDc6RzZ9Lv3CE0I4M9GRnsuX6dnWlpADgaGdHPyoonra3pY2mJlb4+S5ZA69bwxhtydNKOHWBpKdelZ66HeVdzzLual2mjMLeQ23/dLuMsck7ncH3P9QomuX0xcemFyasmmLYswOTmcfRPHkSKCIcvvoB//1su3K7dXQfh7y9HPWlU6SwVlUcN1SnUA3b6+qTcuVPhfoCm+voMb9aM4c2aIYTg7O3b/FbsINZfu8ZXV66gAbqam/OklRX9JlixtoU5E8dp6NULfvkFWrWqvH2tkZYmHk1o4lFWMKyooKj8JPepHK6uvlpqktsMPetBmLi8gGmwESam6ZjknMI0KRzDn39B+u47uZilZdkop65dwcSkDu6eioqKLqnX6KP64GGIPirN/UbW3Ckq4nBmJnsyMvgtI4MjmZkUAWZaLW4FlkR/ZY1VghV7Vxvj6lo3k8PKJPc9EVG3Tt2iIP2eSW5HLabmGZjkn8Pk6mFMk8Mx4hIaPQ14e5ftTbRoUaP21eijqlEja6o5KNlwAAAgAElEQVRHvUdleZDoI7X/38jQ12joaWnJAkdHDvn4kObvz1ZXV0Y1a8ZV41vkTTnL1Y+P4B77B4P2x7Hl2jWuV9AruR9KJrmtn7KmzYw2dPiqA94HvOmZ1pMe13rgtd+L9svb02JCC/RbNOHGxaacj/IiNnkyR/iO/+nt5YjldmLPj+H8Z9mkDP+S7JaPU+jgDKNHw/LlcPw43CP/kDJtO4f0tkJgEYf0tpIybfsDXcejwo4dO5AkiTNnzlRaJjExETc3twqPTZw4kVOnTgHw/vvv14uNFVEiXlcVpSW6d+7cqdgJZWWya9JG6eu8H9asWcPly3fX0da2nvth3LhxODo64unpibOzM2PGjOHSpUvKcQcHB4aWrEMCtm7dqoj3paSkMHDgQEV+u3///vVqqzp81Mix0tdnqK0tQ4vXFsTfvs3Gs9f5KCaDn0yv8dOpK0iAr5mZMmHdzdwcgzoa7zewNcDA1gDLXpZl9peZ5C6OiMo+3YzU66V+qC4IjJJTMP0+ARO+xMQoBVNPS0z6tif9ZBPidjlThBEAeYU2xC3PBbZj92XNFlnpkubh4ZUOEV71f7Ao640bN9KzZ09++OEH5s+fX+54VZpMAN+UStbx/vvv89Zbb5Uro8gk1+B7UlhYiFarrd7wGhAUFKSsGt65cycDBw6kUydZUmTBggX3Vdc3tUxKsmbNGtzc3BQF2trWc78sWrSIYcOGIYRg6dKlBAYGcvLkSQwMDACIiooiNja2nADh3LlzefLJJ3n11VcBOH78eL3aqfYUHjLaGRvztkcrzv/DDb/3/eFlb5655oC+JPHhxYv0jonB+uBBBp04wbLkZM7cukV9DBGWTHI3H9ucdh+1w32XO35n/Xj81uP4HvOl0w+dsJ/ngNkQd3Kde5Os9wJxua8SfXgsB9/vweldropDKKEIIxJWNn4VSaBCh1DV/pqSnZ1NeHg4q1at4ocfflD279u3j8DAQEaNGoW7uzsABQUFjB07Fg8PD4YNG6YkoAkICCAqKoo333xTWY0bHBxMYmIiLi4uTJs2DR8fH5KSkpg6dSq+vr64uroyb948pb3SEtYffvghPj4+yrGzZ8/SuXPnKq/DwcGBefPm4ePjg7u7u9LrKZHojoiIYNeuXcyaNQsvLy/i4+PL9AIWLFhAly5dcHNzIyQkpMLvcMl17tq1C39/f7y8vOjQoQOOjo6V1rF161aioqIIDg7Gy8uL27dvK/WA7JDd3d1xc3Nj9uzZSltNmjRRZLq7deumyHTXBkmSmDlzJs2bN+eXX35R9r/xxhsV9uyuXLlC69atlc8eHh61brsmqE7hIcXGBkJ/0xDkZMHPLzgQsM2HNP+e7HB1ZUzz5pzJyeHVc+dwiYyk7R9/MOHMGTZdu0Zafn692lUyyd3shWY4znfEdbMrXeL8efx2b7rGdcVtpxuOc5tT2Vcvr7ApBdkFFR5rSGacPUvA0aOVblVR2TkzSukaVcbOnTt5+umncXZ2xtramujoaOXYkSNHWLhwoTLUERcXR0hICMePH8fc3JwvvyybjuTDDz/E2NiYmJgYRYQtLi6OMWPGcPToUezt7Vm4cCFRUVEcP36c/fv3l3kKLZGwnjNnDhYWFoqu0urVq2uUl8DGxobo6GimTp3K4sWLyxzr0aMHQUFBLFq0iJiYmHKqpdOnTycyMpKTJ09y+/ZtfioJl66AoKAgwsPDiYmJwdPTkzfeeKPSOoYNG4avry/r168nJiamjJDg5cuXmT17NqGhocTExBAZGanoOZWW6e7Vq1cZme7a4uPjU2aI8Pnnnyc6OlrRhCrhpZdeYsKECQQGBrJw4cIyQ1/1geoUHmJMTGDbNjkFw/vvw4xJegywtOVLZ2fO+vkR7+fHCmdn/MzM2J6WxohTp2gWEYFvVBT/l5BAWEYGeQ2k767R02DiLK/itn+3I4ba9EpKSoRb7OOE3+9c+eYy+Wn168QaGxs3blTyCIwYMULROALo2rWr8hQM0KZNG/yLh6r+8Y9/cPDgwWrrt7e3p1u3bsrnzZs34+Pjg7e3N7GxsWXG1l944QXl/cSJE1m9ejWFhYVs2rSJUaPulTErT4nWUufOne978V1YWBh+fn64u7sTGhpKbGxsted8/PHHGBsb89JLL9WqjsjISAICArC1tUVPT4/g4GAOHDgAyDLdAwcOrPX1VMS9vR+tVsusWbP44IMPyux/6qmnSEhIYNKkSZw5cwZvb29SU+tPIk6dU3jI0dODFSvktQxz58LVq7KgapMm4GRszGRjYya3bElBURF/Zmez5/p19mRksDgpiQ8vXsREo6G3paWyPqKTiUl5baV6wClEQ9zy3DJDSBpyad3hGEVJ6aQe8SH9iBZC4rDwN8N2WHNsBttg1NaoilrrjqXt21d5vCp9q321lCxOT08nNDSUkydPIkkShYWFSJLEO++8A4CpqWlZG+75O9Xk71a6jvPnz7N48WIiIyOxsrJi3LhxZTKolS47dOhQ3n33Xfr06UPnzp2VbGJVUSK9rdVqKSioee8vNzeXadOmERUVRZs2bZg/f36Fmd1Ks2/fPrZs2aL8iNemjqqGWUukuau6nqeeeoqUlBR8fX1rNE9x9OhR+vbtW2bf6NGj+eCDD8rNK1hbWzNq1ChGjRrFwIEDOXDgQJmJ6bpE7Sk8AkgSvPMOfP21LMEdECBLH5VGT6PBz9ycdxwc+J+3N+n+/vzHzY3xLVoQf/s2M+PjcYuMpPWhQ7x45gwbUlK4Vo9DTXZfDqHD1BwMtWlAEYbaNDpMzcHpzGwey/gX3b4vorP7Z9iLddyJiOXcjHP8Yf8HUb5RXFh4gVun6meuRJds3bqVMWPGcOHCBRITE0lKSsLR0VHJWHYvFy9eVI6VTE7fi76+PncqmefIzMzE1NQUCwsLUlJSyoxv34uRkRFPPfUUU6dO5cUXX6zF1ZWnMinskh9vGxsbsrOzq41ounDhAq+99hqbN29WhoOqqqOydv38/Ni/fz9paWkUFhaycePGGkl6l7B7925iYmKqdQhCCJYtW8aVK1d4+umnyxzT19dn5syZLF26VNkXGhqqzBdlZWURHx9P28pS/tYBqlN4hJg4EXbuhFOn5GUC9wxNlsFcT48gGxs+a9+eOD8/Ert142tnZ/wtLNiVlkbw6dPYRUTgExXF7Ph4fs/IILeaqJf7xe7LIXQvGAZhGroXDLsbdWRggBQ8CrPj23A8MpWuwb/TVf9FnPgKzbk4zr99nkjXSI50PEL8m/FkHs5EFDWsg7CrJANeZftrQmWS1Fu2bKmwvIuLC2vXrsXDw4Pr168zderUcmVCQkLw8PAgODi43DFPT0+8vb1xdXVl/PjxylBUZZQk++nXr999XFXljBgxgkWLFuHt7U18fLyy39LSkkmTJuHu7s5zzz1Hly5dqqxnzZo1XL9+ncGDB+Pl5UX//v2rrGPcuHFMmTJFmWguoUWLFnzwwQcEBgbi6emJj4+PIoNdF8yaNUsJSY2MjCQsLEyJPCrNhAkTyvRE/vzzT3x9ffHw8KB79+5MnDix2nvyIKiL1+oZXSzMOnwYBgyQVSh++klebHw/FApBdFaWvIDu+nUiMjO5IwTGGg29LCx40tqaflZWuJma1slQU43uUUoKrFwJy5eTdyWfNJvnSLMO4kaCOaJAluywec4Gm8E2WPa2RKN//8876uK1qlm8eDE3b97kvffe07Up5Wgs96ix0Gils1V0g5+frHH39NMQGCjPMTzzTM3P10oSXczN6WJuzhx7e7ILCth/86YyH/FG8VNdcwMDWYbDyoonrKxoXp/JfOzs5DGyN9/EcPt2Wi1bRquIVdwxaUZ675mkaXpzdc1VLn95GT0rPZoObIrNYBusn7JGa1I3MfZ/ZwYPHkx8fDyhoaG6NkWlnlGdwiOKs7PsGAYMgEGD5PmG2g4FN9HTY0DTpgwonlxMys3lt2IZjp/T01lXPIHhYWqqyII/bmGBcR0teCqDvj688IK8RUej/9lnNN84n+Z5eRQGPk1G91dITbIn/ad0UtaloDHWYP2UNTZDbGg6sCn6VrUf3vk7s2PHDl2boNJAqE7hEaZ5c9i3T87iOX48XLoEc+Y8eD6dNkZGjG/RgvEtWlAkBEezs/mtuBexLDmZxUlJGEoSvSwt5Z6EtTXupqZo6jqqycdHzgnx8cfw9ddov/wSm7D+2Dg6UvTmS9x0Hk7q3lzSdqaRtjMNSU/CMsASm8E22Dxrg2Gr8j0bIUSDRF+pqNQXDzoloM4p1DONQewtPx8mTIDvv4epU+Gzz6A+HuIBbhUWcuDGDWU+IrY4aqKZvr7iIJ6wssInKqruZSLu3JFn2j/7DP73P3khx+jRiJemk3W7LWk70kjdkcrtOHly0czPDNvBttgMtsHE2YTz589jZmZG06ZNG5VjUMfLq0e9RzJCCNLT08nKyiqzpgVqPqdQrVOQJCkKWA1sEEJkPIjBdYHqFGqHEPB//wcffQTPPQcbNjRMcrVLeXnsLZYF/y0jg9QayECIurhfMTGyc9iwQc4616cPvPwyDBrErb9ySduRRtqONLKi5NBEk04mWL9gjRgkKDDS/Yrq0uTm5mJk1DDrMx5W1Ht0FyMjI1q3bo3+PZFwdekUHgNeBF4AShzEHqGjLobqFB6Mzz6DV1+F7t3hxx/lTJwNRZEQHM/OZk9GBrMTEiotVydOoYS0NPjmG/jyS0hKAgcHmDZN7jpZW5N7sXh4aUcaNw7cgCIwbGuoRDJZ9LSQZcF1SGP7DjVG1HtUPXUmnS2EOCeEmAM4AxuAb4GLkiS9K0lSA/6kqNQFL78MmzfL6Zr9/eHChYZrWyNJeJmZ8c96XHhTDhsbePNNSEiQNUHs7eGf/5SXgIeEYHTzLK1faY1XmBc9UnrQ4dsONPFswuWvLnMs8BiHWhzizIQzpP2URmFu3a7TUFFpjNToEUiSJA/gE2ARsA0YBmQCanzaQ8iwYbBnD1y5IvcYjh3TtUUNgJ4eDBkiz7wfOwbBwfIki4eHvAR8+3YMLDW0eLEF7rvc8U/zp9OWTlj1syJ1ayonB50kwjaC2OdjSdmYQsHNxjXEpKJSV1TrFCRJ+hNYAkQCHkKIV4QQh4UQnwCVjwGoNGp694aDB+UJ5169oDGFn5+6dat+G/DwkGN0k5PlyKXERDlEy8kJPvwQ0tLQa6JHs2HN6LS+E/6p/nj86kGz4GbcOHCD06NOE24bzvFnjnN55WXyU/5eon0qjzY16SkMF0L0FUJsEELkAUiS5AgghGj82VBUKsXNTV7L0KaNvNCtlHx/vVOZHIQG8D96lAM3btS/EdbWMGsWxMfDjh3Qvr08G9+mjTznUCwVrTGQ1zp0WNGBHpd64H3Qm1avtCLnrxz+mvwXES0iiO4ZTdInSdxOuF1NoyoqjZuaOIWK1KiqVqhSeWho00aO3uzeHUaOhH//u2HavervjwgIQAQEEAbK+3g/P3ml9LFjbL52rWGM0WrlkKzff4cTJ2DsWNlDenvL3agtW+RwV0DSSlj4W/DY4sfwO+eH7zFfHOY5UJhdSPwb8Rxud5hIr0gS300k+3j2Iyfap/LoU6lTkCSpoyRJQwELSZKGlNrGAWrs1yOElRXs3i2PoLz+urw1UJqFcjgYGxPu7U1Xc3NeOHWKJUlJDWuAm5usRZ6cDIsXy6/PPw+OjnLSilI69pIk0cSjCQ7zHOgS0wW/eD/afdIOPTM9Et9NJMozisOPHebcG+e4GX6zwUX7VFRqQ1U9hQ7AQMASGFRq8wEm1b9pKg2JkRFs2gTTp8u9hX/8A/LydGOLtb4+v3l4MNTGhtfi45l57hxFDf3EbWUle8ezZ+E//wEXF3k5eJs2sl5IqYxoJRg7GdPmtTZ4/8+bHld64LzSGZMOJlxadomjPY8S0TKCuMlxpP+aTlH+w5F2VOXvR6UyF0KI/wD/kSSpuxCiYkF3lUcKrRaWLZOjNd98UxYm3b4dLCwa3hYjrZbNrq68du4cS5OTSc7LY13HjhjV11LsytBqIShI3k6dgs8/h+++gzVroEcPeOUVOarpnjkSAzsDWk5qSctJLSnILCD953TSdqRxbcM1rqy8gtZcS9MBxaJ9z1ij10RVnFFpHFQ1fPTP4rejJEladu/WQPapNDCSBLNny797Bw7IQ+r1nBK2UjSSxNL27fl3u3ZsTU3lyePHuV6DFdH1RqdO8iK45GRYskT2miNGyAvi3nuvfGajYvTM9bAbYYfrJld6pPbA7Uc3bIfZkvFbBqeeP0W4TTgnBp3gyrdXyqQfTVmfwiGHQ9AHDjkcImV97ZPFq6jUlKoeT04Xvz48y4dV6ozRo2W16qFD5UnoX3+VR1B0wcw2bWhlaMjo06fxP3qUX9zdcWgIjY7KsLSEGTPkXsIvv8jLxOfOhX/9S1ZvffllqCQJitZIi81AG2wG2lBUUERmeCapO1JJ25FG+k/poAHLXpYYtDEgbWsaRbflYaa8C3nEhcQBYBds12CXqvL3o9KeghDix+LXtRVtDWeiiq7o1w/275elg3r2lMNXdcXzzZrxm6cnV/Pz6X70KEcrSKfY4Gg0sjb5r7/CmTMQEiKHtnbtKnvSDRtkNcLKTtfTYNnbkvZL29MtsRud/+yM/Vv25Kfmc23dNcUhlFCUU0TCHHVpkEr9UtXw0Y+SJO2qbGtII1V0h48PHDoETZtC377ynKuu6GVpyUFvb/QliV4xMey5fl13xtxLhw5yj+HSJfj0U0hPl1dN29vDu+/C1atVni5JEmY+Zji+50jXk12hEpHWvAt5JH2SRFZ0FqJQjWZSqXuqij5ajCxtUdmm8jfByQnCw+WFwEOGwFdf6c4WV1NT/vDxoZ2REQNOnGDNlSu6M6YizM3lYaUzZ+ShJW9vmD8f2raVQ7oOH65RNYZtK85iJ+lJxL8Rz5+d/yTcNpyTQ06S/Hkyt2JvqWsiVOqEqqKP9pe8lyTJGGgrhIhrEKtUGh22trIUxgsvwJQp8lzrggUPnrCnNrQ0NOSAtzdDY2N5MS6O5Lw85tjbN6ocCGg08jLxp5+Gv/6CL76QEwKtXy/PN7zyCgwfDpWkMHVa6ERcSBxFOXeHkDQmGjqs7IBloCU3wm6QEZrBjbAbpO1IA0DfTh+rQCss+1hiGWiJcTvjxnVPVB4KaqJ9NAiIAX4t/uxV0+EjSZKeliQpTpKkc5IkvVlJmeclSTolSVKsJEkb7sd4lYbF1FTOYTN+vDynOnGistC3wTHX0+O/7u6MtrPjncREJv/1FwW6WnFXHc7O8pDSpUtySGtmpjyT37YtzJtXYXiXXbAdHVZ2wNDeECQwtDekw8oO2AXbYdjSELtgOzqu6ki3hG74JfjRYVUHrJ6w4sb+G/wV8hdH2h/hD/s/OD3uNFe/u0puUq4OLlzloUQIUeUG/AlYAEdL7Tteg/O0QDzgBBgAx4BO95RpDxwFrIo/N6uu3s6dO4uHibCwMF2bUOcUFQkxd64QIET//kJkZz9YfQ9yj4qKisRb8fGCsDAx4NgxkV1Q8GDGNASFhULs3i3EgAFCSJIQenpCjBghRHi4fHPv4X7uT1FRkbh15pZI/jJZnBx2Uhy0OSjCCBNhhIk/HvtDnAk5I1J+SBF5V/Pq8IJ0z6P4f1bXAFGimt9XIUSNtI8KhBA3a+FvugLnhBAJQoh84Afg2XvKTAK+EMUZ3YQQDSR2o/IgSJI8d/rVV3LgTWBgGfWHBrZFYqGTE8vbt+eX69cJiInhWhURP40CjUYO7frpJ3nF9Msvw88/ywkuunSBtWvlkK/168HBgd59+shrIdavr7ZqSZIw6WBCq6mtcN3iSo+UHvge86XdknaYuJhw7YdrnBpxiojmERxxO8LZV86SujOVOxk6XP+h0qioSea1VcDvwJvAUOAVQF8IMaWa84YBTwshJhZ/Hg34CSGmlyqzE/gL8EfuWcwXQvxaQV0hQAiAnZ1d5x8aUs7zAcnOzqZJkya6NqPeCA9vyoIFnbC1zeOjj47TqtX9D1PU1T2KABYATYGPgNYPXGPDob19G7s9e2i1YwemFy5QYGyMJj8fTeHdxD6FhobEvfEG1554ovYNFQJnkfvn0cAJIA852ukxZBEbb8AdMKl9Mw3No/5/VhcEBgbWWTpOE2AO0A/5q7MbeE8IUeV/vyRJw4Gn7nEKXYUQL5cq8xNwB3ge+X/4f4CbEKJS3WQ1HWfj49AhGDhQzmPz3/+Cb7Vfu7LU5T06nJnJwBMnEELwk7s73XSh0fEgCCGrtQYFwe0KZLjt7eX8D3VEUX4RmUcyuREqT1xnHspE5AskPQmzLmZY9rHEqo8V5t3N0Ro3sMTIffB3+D97UOoyHWeOEGKOEKKLEMK3+H1NHgeTgTalPrcG7p1RSwb+I4S4I4Q4D8QhzzOoPER07y6HrBoby0nMdu/WnS1+5uYc8vbGUk+PPseO8Z+0NN0ZUxskCZ54Qh4+qogLF+S803WExkCDZU9LHOY64L3Pm54ZPfHc60mbf7YBARc/vMixvsc4aHWQmMAYEt9L5Gb4TVXQ7xGm0pBUSZJ+BCrtRgghgqqpOxJoX5yQ5xIwAhh1T5mdwEhgjSRJNsh5oNUlmw8hHTvKK57795d7DatWwZgxurHlMRMTInx8GHTiBENOnuTz9u2Z2qqVboypLW3bVp5Au1UrOafqlCnyUvM6DDvVmmix6muFVV8rAAoyC7j5v5tkhGVwI/QGifMSSZybiMZUg+XjcuirZR9LzLzNkLRq+OujQFXaR4uLX4cAzYHviz+PBBKrq1gIUSBJ0nTk4SYt8K0QIlaSpAXIs+C7io/1kyTpFPJo5ywhRHqtrkRF57RsKYvoDRki56m5dElWW9VFqHwzAwNCvbwYceoU086e5WJeHgsdHdE8LHH7CxfKshk5OXf3mZjIGkvJybJi4YYNsiDV5MmyB7ayqnMz9Mz1aDqgKU0HNAXgTvodbuy/oayTSJgtP8NpLbRYBlgq6yRMXU2RNA/JvVYpS3XhScCBmuxrqE0NSW385OUJMWqUHLL60ktCVBclWp/36E5hoZh85owgLEwEx8aKvMLCemurzvn+eyHs7UWRJAlhby9/LiE7W4hVq4To2lW+0UZGQowdK0RERIVhrfVF7pVccXXDVXFm0hlxqN0hJfz1oO1BcfL5kyJ5ebK4FXdLFNWzTX/H/7P7hRqGpNZExN1WkiQnIUQCKPmZbevNS6k89BgYwLp1cs9h8WK4cgW+/16ec2ho9DQaljs709bIiDnnz3M1P59tbm5Y6D0E+QuCgyE4mP0VTaKamsqrCMePl3NJf/WVfJPXrgV3d7n38I9/1HsyDMPmhtiNtMNupKzcmnshVxlqygjNIHWzHKts0MoAqz5yL8Iq0AojezV5Y2OlJusUZgL7JEnaJ0nSPiAMmFGvVqk89Gg0sGiRnHZg+3Y5LD8jQze2SJLEW/b2rO3Ykf03b9Lr6FEu6SqtXH3g5QXLl8sro7/6Sk74M3267JUnToTISDmqqQEwsjeixbgWuHznQvek7nT9qyvOK5yx8Lfg+q/XiXsxjj8c/uCPdn8QNymOlI0p5F19hP4WjwDVPi4JIX6VJKk90LF41xkhhPpXVKkRM2ZAixbykHfPnrJGXNu2urFlTPPmtDAwYGhsLN2io/nF3R23Rym23cxMnocICYGoKDnX9MaN8qy/t7c8MT1ypFyuAZAkCZP2Jpi0N6Hl5JYIIbgVe+tuL2JrKle+kQUNTVxMlPBXy96W6DfVr6Z2lfqiKunsPsWvQ4ABQLvibUDxPhWVGvHCC/LK5+RkOYPliRO6s+VJa2sOeHlRKAQ9jx5ln666L/WNry98843ce/jiCygokIeUWraUncPRow1ukiRJNHFrQutXWuO+0x3/NH86R3XG6WMnjOyNuLrmKrFDYwm3DSfKO4pzr58j/b/pFGQWNLitf2eqGj7qXfw6qIJtYD3bpfKIERgI//ufPIrx+OOwb5/ubPEyM+MPHx9aGhry1PHj/FBJGs1HAgsLmDYNjh2TY4aHDpXnHXx8wM8Pvv0Wbt3SiWmSVsKssxltZ7XF4xcPemb0xDvcG4cFDuhZ6XHpi0ucGHiCg9YH+bPbnyS8lcD1vdcpzLm7yltNWVr3VLuiubGhrmh+uLl4UVaTPn264uN2dtXmo6kzMu7c4bmTJzlw8yaLnJx4vU2bRik1XeffoYwMORJgxQr5D2FuLqu2Tp4sT1I3EgpzC8k8dHe1ddaRLESBQDKQMO9mjr6NPun/TUfk3f0NK5EXV1OWlueBVzRLkrSm1PuxdWSXyt+ctm3h4MHKjzfkQ7uVvj67PTx43taWWQkJzDh3jsKH7CGpVlhZyfkcYmPlhSWDBsHXX8tZlPz95TUQFUlsNDBaIy1WgVY4vueIT7gP/hn+uP/iTutXW1N4q5C07WllHAKoKUvrgqqGjzxLvX+1vg1R+ftgba1rC+5ipNWysVMnXmvdmmWXLvF8bCy3S4nQPdJIkjyW9/338krDxYtlCY2xY+VV0zNnyhnkGgl6TfRo+nRT2n3cDt8o38pTll5U42AehKqcwt/gkUlFBTSSxCePPcaSdu3YkZbGk8eOka6r7EG6wsYGXn9ddgKhoXIM8RdfyCume/eWV083sjDeylKWVrZfpWZU5RRaS5K0TJKkz0q9V7aGMlBFpaGY0aYNmzp1IiorC//oaM43giGUBkeS5KiAH36Qw8U+/FB+DQ6G1q1h1iw5B0QjwGmhExqTsj9hGhMNTguddGTRo0FVTmEWcta1qFLvS28qKo8cw5s14zdPT67duUP36Gj+zMrStUm6o1kzmD1bdgJ79kCvXvJqRGdn6NsXtmwBHSY0qiplqUrtqXTxmhBibUMaovL3ws6u4kllfX15jlMXkhglPG5pSbi3N88cP07vo0fZ6urK002b6s4gXaPRwJNPymxL5UAAACAASURBVNuVK3IY69dfw/PPy45j/HiYNAmcGv4J3S7YDrtgO/bt20f3gO4N3v6jSE1kLlRU6pyrV+U1C0JAWNg+hJDlMAoKYNw4KNKxXL+LqSmHfHxob2LCwBMn+PbKFd0a1Fho0QLmzIH4eDmjUrdu8PHH8Nhjcqzxjh3wd5uPecRQnYJKo2HwYHkIe/NmmD9f19ZAC0NDDnh50dfKiglxcbybmMjDtq6n3tBq5eQZ//mPnPdh3jw5xHXIEDk73Ny58qIUlYcO1SmoNCpmzZJHI957T46U1DVmenr85O7OWDs75icmMikujju67sY0Nlq3lp3C+fOyk/D2hn/9Cxwd5YxLP/4If5cw30eAagXxiqWyXwYcSpcX1WdeU1G5byRJFvw8fx4mTAAHB1lIT5foazSs7tiRtkZGvHfhApfz89ncqRNNHgb57YZET0/OLR0UJOeR/uYbWYwvKAjatJEVWydMkNdAqDRaatJT2Imcae0z4JNSm4pKvWBgAFu3yg5h8GBIaAQLVCVJYoGjI185O7P7+nUCYmJI0WHkTaPHwUHuLVy8CNu2yesd5s2Th5aee06Wy1V7D42SmjiFXCHEMiFEmBBif8lW75ap/K2xtoaffpInnAcMgBs3dG2RTEjLlvzHzY3TOTl0j44mrnS6TJXy6OvL8wy7d8O5c/DGG3eTeT/2GLz/fsOJXanUiJo4hU8lSZonSVJ3SZJ8SrZ6t0zlb0/79nJEUnw8DB/eeIJaBtrYsM/Li+zCQvyjo4m4eVPXJj0ctGt3dzHcpk3ynMOcOfLQ0vDhsHev7sPOVGrkFNyBScCH3B06WlyfRqmolNC7N6xcKf9evPxygyUQq5Yu5uYc8vHBSl+fvseOsSM1VdcmPTwYGMhrHEJDIS4OXn0VwsLkdRDOznKIq3o/dUZNnMJgwEkI0VsIEVi89alvw1RUShg3Dt58U840uXSprq25SztjYyK8vfE0NWVobCxfXLqka5MePpydZSG+5GQ53KxlS3kVdatWcpa4ffsaz5PA34SaOIVjgGV9G6KiUhULF8r5YV5/XY5wbCzYGhgQ6uXFoKZNmX72LLPj4ylSf8TuHyMjWV/pwAF5vcO0aXK6vsBAeZJ6yRK4fl3XVv4tqIlTsAPOSJK0W5KkXSVbfRumolIajUaW+e/cWX6AjInRtUV3MdFq2e7mxtSWLfk4KYnRp0+Tp46N155OneQu4eXLsGaNHHXw2mtyL2L0aDkhR4njXb8eHBzo3aePHPG0fr0uLX8kqEmg9bx6t0JFpQaYmMCuXdC1q5wX5sgRWXWhMaCVJL5o3562hob83/nzXMnPZ7urK5b6agL6WmNsLOd2GDsWjh+Xxw+//17eXF3llKJbt8Lt23JqhQsXICREPjc4WJeWP9RU21MoHYaqhqSq6JoWLeTho4wMeU1UY4oIlSSJN+3tWdexIwdv3uTxmBiScnN1bdajgYeHnN/h8mV5UZyJiZxS9F5585wcOaJJpdZU6xQkScqSJCmzeMuVJKlQkqTMhjBORaUivP6/vTsPj6LMFj/+PQkhLAlrJAECyC5byIpXEQ0DenFGccNRBBTHZa4bXBeuCl63Gb0q+LvuOi6DOu4biIrbVaLjwpAFMKyCAcIWZVOMCwic3x9vJTQhSxPSqU7nfJ6nnnRXV1efroY69dZbdd5UePFFyM93ZxPC7UzN+KQk3k1JofjXXzmmoIDC0lK/Q4ocLVu6u6IXLHC3v1fGai4dlmBaCvGq2sqbmgFnAQ+FPjRjqnbqqe6ilTfeCM8DwxFt2/LPtDQUOG7hQj7escPvkCJP166HNt8E5ZAL4qnqbMAuSTW+u/pqdwr5rrtg5ky/ozlYSlwc89PT6RIby6ivvuKFygaQMLV3xx3uNFKgFi3cfFNrwRTEOzPgaRSQiY3fbMKACDz0kKuN9Oc/uzFeTjjB76gO1KVZMz5LS+P0JUsYt3w5G3btYkqXLkhVpz5M8Mo6k6dNQ4uLka5dXUKwTubDEkxL4dSA6d+BH4HTQhmUMcGKiXGjQvbs6UrshMnwwQdoExPD+4MHc26HDlxfVMRVq1ax1+5lqBvjxsHatXzy8ceuMqslhMMWzCWpT6rq54EzRGQo8F1oQjLm0LRp44rnHX20K9//5Zfu0vZwEhsVxfP9+pEcG8uM9evZuHs3L/TrR/PoaL9DM+YAwbQUHgxynjG+6dkTZs92B4tjxvg6nnyVokSY3rMn9/fqxZtbtzJi8WK2hmOgplGrsqUgIscAxwJHiMg1AS+1AuzwxoSd445zY7pMmOCqJDzxRNVXLfppUnIynWNjGbdsGUMXLuTdlBR6NG/ud1jGANW3FJoCcbjEER8w7QTGhD40Yw7d+PFw000uOcwI41q+Zx1xBB+lprL1t984pqCAvJ12648JD1W2FLy7lj8RkadVdV09xmTMYbntNvj6a1dss3dvN9BXOBraujWfp6VxcmEh2YsW8cqAAfy+fXu/wzKNXDB9CrEi8riIfCAiH5dNwaxcREaJyEoRWS0iN1Sz3BgRURHJDDpyY6oQFeXqqA0Z4i5GKSjwO6KqHdWyJV+mpdG3RQtGFxby1ObNfodkGrlgksKrwELgJmBKwFQtEYkGHgZOBvoDY0WkfyXLxQOTgH8FH7Yx1WveHN58ExIS3N3P4TzUQVJsLDmpqYxs25aLV67kljVrULtk1fgkmKSwR1UfVdUFqppfNgXxviHAalUtUtXdwEtUfn/DX4B7AKscZupUYqK7VPXHH11iCOcSRPFNmvDWoEFcmJTE7evWcdHKlfwWbkWdTKMQzH0Kb4nI5cAsYFfZTFWtacSLzsD6gOcbgKMDFxCRNKCLqr4tItdVtSIRuRS4FCAxMZGcnJwgwg4PpaWlDSpeP4R6G02b1o6pUwcxatQ2brttCeF8a8AEYB8ws6SEmYED2nvbpy3whg9xhTv7f1Z3gkkKF3h/A08ZKdCjhvdVdjFgeZtYRKKA/wUm1hSAqj4OPA6QmZmp2dnZNb0lbOTk5NCQ4vVDqLdRdrYriTNpUgLvvZfN9Okh+6g6MRx4pood3A6wf0+VsP9ndafGpKCq3Wu57g1Al4DnycCmgOfxwEAgx6sDkwTMEZHRqppXy880plJXXeXGiJ8xA/r2hYsv9jsiY8JTMC0FRGQgrrO4Wdk8VX22hrflAr1FpDuwETgXOC/g/T8ACQGfkQNcZwnBhMp998Hq1XDZZdC9O4wY4XdExoSfYAbZuQVX1uJBXMv2HmB0Te9T1T3AlcD7wHLgFVVdKiK3i0iN7zemrjVpAi+/DH36uFIYK1b4HVHtrKk42pgxdSiYq4/GACOAElW9EBgMxAazclWdq6p9VLWnqt7hzbtZVedUsmy2tRJMqLVu7a5IiolxxfO2bvU7okM3OC+P50pK7LJVExLBJIVfVHUfsEdEWuGqo9bUyWxM2Ore3d3DsGGDK7e9a1fN76lviTExlc5PiIkhNS6OCStWMG75cr7/7bd6jsxEumD6FPJEpA3wBJAPlAILQhqVMSF2zDFutLbzznMD9MycGV7F80qGDi1/XPHKmr2q3FVczC1r1vD5Dz/wj379OL5NGx+iNJEomDGaL1fV71X1MeBE4ALvNJIxDdrYsXDrrfDMM25Iz4YiWoRp3brxRXo6MSJkL1rEtKIiu9nN1IlgOpqPL5uArkAb77ExDd7NN7vWwtSp8NprfkdzaIa0asWizEwuTErizuJihi5cyKqff/Y7LNPABXP6KPCmtWa48hX5wO9CEpEx9UjEldleu9aNw9CtG2Rl+R1V8OKaNOGpo47i5HbtuPTrr0nLy+P+3r35U1KSjQNtaiWY00enBkwn4m44+zb0oRlTP5o1g1mzICkJRo+G4mK/Izp0Yzp04KvMTIa0asXFK1cyZulStlkntKmFYK4+qmgDLjEYEzE6dIB33oGff3bF83780e+IDl1ys2b83+DB3NOjB29t20ZKbi4f7djhd1imgQmmT+FBEXnAmx4C/gksDn1oxtSv/v3h1Vdh6VLXCb13r98RHbooEaZ07cr89HTio6M5cfFi/uubb9hlndAmSMG0FPJwfQj5wJfA9ao6PqRRGeOTk06CBx90rYbrqqzbG/7S4+MpyMzkz506MX39eo4pKGD5Tz/5HZZpAA5lkJ2FwGuq+nloQzLGX5ddBpMnu1pJjz3mdzS11yI6mkf79OHNgQNZv2sXGfn5PLZxo90JbapVZVIQkRgRuQ83JsJM4BmgqGxYTW8sBGMi0r33wh/+AFdeCR984Hc0h2d0QgJfZWYyrHVrLlu1itOWLGHL7t1+h2XCVHUthXuBOOBIVc1Q1TSgH9BDRB7FxvowESw6Gl58EQYMgLPPhmXL/I7o8HSMjeXdlBTu69WL97dvZ1BuLu9t2+Z3WCYMVZcUfg9coqrl12Go6k7gMlwZ7LEhjs0YX8XHw1tvufGeTzkFtmzxO6LDEyXC5ORkcjMySIiJ4eTCQv5z1Sp+bYg96iZkqksK+7SSk4+quhfYoqrzQxeWMeGha1eYMwc2b4bTT4dfI2Ak8ZS4OHIzMpjUuTP3b9xIVkEBheE8gLWpV9UlhWUicn7FmSIyHjc+gjGNwpAh8Oyz8MUXcNFFEAn9tM2jo7m/d2/mDhrElt27ycrP54ENG6wT2lSbFK4ArhCRHBG5V0RmiMgnwCTg8voJz5jwcPbZ8Ne/wgsvwF/+4nc0defk9u35KiuLE9u1Y/Lq1fy+sJCScKwlbupNlUlBVTeq6tHA7cBaoBi4XVWHqOrGeorPmLAxdSqcfz7ccgu89JLf0dSdDk2bMmfgQB7p3Zuc779nUF4ebzXE0YdMnQim9tHHqvqgqj6gqh/VR1DGhCMRePxxGDYMJk6E+RHUqyYiXNa5MwUZGSTHxjJ6yRIu//prfrZO6EanNrWPjGm0YmPhjTcgORlOO81VV40k/Vq2ZH56Otd16cKjmzaRkZ/PwoZYCMrUmiUFYw5RQoIb53n3blc8b+dOvyOqW7FRUUzv2ZMPU1LYuWcPRxcUMKO4mH3WCd0oWFIwphaOOsoNyrNiBZxzDuzZ43dEdW9ku3Z8lZXFKe3bM6WoiJMWL2ajdUJHPEsKxtTSiBHwyCPw3ntw9dV+RxMa7WNieH3AAJ7s25cvd+4kJTeXNxr6XXymWpYUjDkMl1wC114LDz3kpkgkIlzUsSMLMzPp0bw5Zy1dysUrVlAaic0jY0nBmMN1991uxLbJk+Hdd/2OJnT6tGjBF2lpTO3alb+XlJCen09upHWoGEsKxhyu6Gh4/nlISXH9C0uW+B1R6MRERXFHjx7MS03l1337OHbhQu5ct4691gkdMSwpGFMH4uJc8bz4eFc879sIH8X8hDZtWJyZyVkJCUxbs4bhixaxLhIKQxlLCsbUleRkVzxvyxZ3D8Mvv/gdUWi1jYnhxf79efaoo1hUWsrg3FxeivRs2AhYUjCmDmVkwHPPwYIFcOGFEOlDI4sIE5KSWJSZSf+WLRm7fDnnL1/OTuuEbrAsKRhTx844A+66C15+GW691e9o6keP5s35NDWVW7p14/lvvyU1L48vfvjB77BMLVhSMCYEpkyBP/3JVVR97jm/o6kfTaKiuLV7d/6ZloYCwxYu5NY1a9gT6c2lCGNJwZgQEIFHH4Xhw90YDJ995ndE9efY1q1ZnJnJuMREblu3juMXLaIo0jtYIoglBWNCpGlTVwqjWzd3SqmoyO+I6k+rJk14tl8/XujXj2U//URqXh7PlpTYID4NgCUFY0KoXTt45x3Yu9ddqvr9935HVL/GJiayOCuLtLg4LlixgrHLlrHjt9/8DstUw5KCMSHWu7crt716Nfzxj9DY9ondmjXj49RU7uzende3bmVwXh6fNLbs2ICENCmIyCgRWSkiq0Xkhkpev0ZElonIVyLykYh0C2U8xvglOxv+9jf48EOYNCkyxnk+FNEi3NitG1+kpdEsKorhixYxraiI36wTOuyELCmISDTwMHAy0B8YKyL9Kyy2EMhU1RTgNeCeUMVjjN8uvBCuvx4eewzuv9/vaPyR1aoVBRkZXNSxI3cWF3PswoWs+vlnv8MyAULZUhgCrFbVIlXdDbwEnBa4gKrOU9WyfxHzgeQQxmOM7+68E848E665xg3U0xjFNWnCE3378vqAART98gupeXk8tXmzdUKHCQnVDyEiY4BRqnqx93wCcLSqXlnF8g8BJar610peuxS4FCAxMTHjpQY0anppaSlxcXF+hxHWGts2+vXXKCZPTqO4uAUPPlhAr14/Vbt8JG+fLcBdQAEwDLgWaF2L9UTyNqorw4cPz1fVzBoXVNWQTMDZwJMBzycAD1ax7HhcSyG2pvVmZGRoQzJv3jy/Qwh7jXEbbdyompzspk2bql820rfP3n37dEZxscbk5Ginzz/X/9u+/ZDXEenbqC4AeRrEvjuUp482AF0CnicDmyouJCIjgWnAaFW1sf5Mo9Cpk6uqumOHG4uhMZ9WjxLh2i5d+Fd6Oq2aNGHk4sVM+eYbdlkntC9CmRRygd4i0l1EmgLnAnMCFxCRNOBvuITwXQhjMSbspKbCiy9Cfj6cf37kF8+rSVp8PPkZGVzWqRMz1q/n3woKWP5T9afWTN0LWVJQ1T3AlcD7wHLgFVVdKiK3i8hob7HpQBzwqogsEpE5VazOmIh06qkwYwa8/jrcdJPf0fivRXQ0j/Tpw5yBA9mwaxfp+fk8unGjdULXoyahXLmqzgXmVph3c8DjkaH8fGMagquvhpUr4X/+B/r0gYkT/Y7If6cmJFAYH8/EFSu4fNUq5m7fzlN9+9KhaVO/Q4t4dkezMT4TgYcegpEj4dJL4ZNP/I4oPCTFxjI3JYX7e/Xiw+3bScnN5b1t2/wOK+JZUjAmDMTEwKuvQs+e7j6GVav8jig8RIkwKTmZ3IwMjmjalJMLC5m8ahW/7t3rd2gRy5KCMWGiTRt3Q5uIK563fbvfEYWPQXFx5KanM7lzZx7YuJGsggIKS0v9DisihbRPwRhzaHr2hNmzYdgwaN++bG52+euJiVBS4kdk/msWHc19vXszql07Jq5YQUpe3oEL5OQAkBgTQ8nQofUfYISwloIxYea446p+7dtv6y+OcDWqfXsKs7KqfP3bxlaGto5ZUjDGNDhH2FVIIWNJwZgG5rPPYPduv6Mwkcr6FIxpYIYNg+bN4dhj3RjQ2dmQleWG/zTmcFlSMKaBmTXL9anm5Oy/C7p5cxg6dH+SyMy0JGFqx5KCMWEoMbHyTuXERDj9dDcBbNsGn366P0lMm+bmt2jhkkR2tksUmZnuXohIkhgTU2mncmKkfdF6ZknBmDAUeNlpTk4O2dnZlS7Xvj2ccYabALZurTxJtGx5YJLIyGj4SSLwstPqtpE5NJYUjIkgCQnujugzz3TPt251ZTPKksTUqW5+y5bu0teyJJGe3vCThKkblhSMiWAJCXDWWW4C2LLlwCRx441uflzc/iSRne1aEk1s79Ao2c9uTCNyxBEwZoybAL777sAkccMNbn5cnLvKqSxJpKdbkmgs7Gc2phHr0AHOPttN4Dq3A5PE9de7+fHxByaJtDRLEpHKflZjTLnERPjjH90ErsM7MEnM9UZHadXq4CQRHe1PzKZuWVIwxlQpKQnOOcdN4JJEWYLIyYF33nHzW7WC44/fnyRSUy1JNFSWFIwxQUtKgnPPdRPA5s0HJom333bzW7c+MEkMHmxJoqGwpGCMqbWOHWHsWDcBbNp0YJJ46y03v02bA5NESooliXBlScEYU2c6dYLzznMTwMaNByaJOXPc/LZtD04SUVaeMyxYUjDGhEznzjBunJsANmw4MEm8+aab37YtnHDC/iQxaJAlCb9YUjDG1JvkZBg/3k0A69cfmCRmz3bz27VzLYmyAn8DB1qSqC+WFIwxvunSBSZMcBNAcXHVSeKEE/YniQED3Kmq/UUDs8vX2ZiHLK0LlhSMMWGja1c4/3w3Aaxbd2CSmDXLzW/f3lWIrYwNWXp4rEFmjAlb3brBBRfAzJmwZo2bZs6EU07xO7LIZUnBGNNgHHkkTJwITz/tcyARzJKCMcaYcpYUjDHGlLOkYIxpkBITD22+CY4lBWNMg1RSAqpumjcvp/yxXY56eCwpGGOMKWdJwRhjTDlLCsYYY8pZUjDGGFPOkoIxxphyIU0KIjJKRFaKyGoRuaGS12NF5GXv9X+JyJGhjMcYY0z1QpYURCQaeBg4GegPjBWR/hUWuwjYoaq9gP8F7g5VPMYYY2oWypbCEGC1qhap6m7gJeC0CsucBjzjPX4NGCEiEsKYjDHGVCOUpbM7A+sDnm8Ajq5qGVXdIyI/AO2BrYELicilwKXe01IRWRmSiEMjgQrfxxzEtlH1bPvUzLZRzfoGs1Aok0JlR/xai2VQ1ceBx+siqPomInmqmul3HOHMtlH1bPvUzLZRzUQkL5jlQnn6aAPQJeB5MrCpqmVEpAnQGtgewpiMMcZUI5RJIRfoLSLdRaQpcC4wp8Iyc4ALvMdjgI9V9aCWgjHGmPoRstNHXh/BlcD7QDTwd1VdKiK3A3mqOgd4CviHiKzGtRDODVU8PmqQp73qmW2j6tn2qZlto5oFtY3EDsyNMcaUsTuajTHGlLOkYIwxppwlhRAQkS4iMk9ElovIUhGZ7HdM4UZEmonIAhFZ7G2j2/yOKVyJSLSILBSRt/2OJRyJyFoRKRSRRcFedtmYiEgbEXlNRFZ4+6Rjqls+lPcpNGZ7gGtVtUBE4oF8EflQVZf5HVgY2QX8TlVLRSQG+ExE3lXV+X4HFoYmA8uBVn4HEsaGq6rdvFa5+4H3VHWMdyVoi+oWtpZCCKjqZlUt8B7/iPsP3dnfqMKLOqXe0xhvsqseKhCRZOAPwJN+x2IaHhFpBRyPu9ITVd2tqt9X9x5LCiHmVX5NA/7lbyThxzstsgj4DvhQVW0bHew+4L+AfX4HEsYU+EBE8r2SOGa/HsAWYKZ3CvJJEWlZ3RssKYSQiMQBrwP/qao7/Y4n3KjqXlVNxd3tPkREBvodUzgRkVOA71Q13+9YwtxQVU3HVWS+QkSO9zugMNIESAceVdU04CfgoGEMAllSCBHvPPnrwPOq+obf8YQzrzmbA4zyOZRwMxQYLSJrcVWGfyciz/kbUvhR1U3e3++AWbgKzcbZAGwIaIW/hksSVbKkEAJe+e+ngOWq+v/8jiccicgRItLGe9wcGAms8Deq8KKqN6pqsqoeibvb/2NVHe9zWGFFRFp6F3PgnRY5CVjib1ThQ1VLgPUiUlYhdQRQ7QUvdvVRaAwFJgCF3jlzgKmqOtfHmMJNR+AZbzCmKOAVVbVLLs2hSgRmecOwNAFeUNX3/A0p7FwFPO9deVQEXFjdwlbmwhhjTDk7fWSMMaacJQVjjDHlLCkYY4wpZ0nBGGNMOUsKxhhjyllSMIdMRFRE7g14fp2I3FpH635aRMbUxbpq+JyzvYqR8yrMP1JEfvEqbpZN59ewrtNFpH+I4swRkaAHpBeR7KqqqYrIcV5l2hUislJErjjM9c31KnC2EZHLg43RhDdLCqY2dgFnikiC34EE8u55CNZFwOWqOryS175R1dSA6dka1nU6EJKkUFdEJAl4AfgPVT0Kdy/Nn0TkjNquU1V/792N3gawpBAhLCmY2tiDG+/16oovVDzSF5FS72+2iHwiIq+IyNcicpeIjPOOXAtFpGfAakaKyD+95U7x3h8tItNFJFdEvhKRPwesd56IvAAUVhLPWG/9S0Tkbm/ezcBxwGMiMj3YLy0ipSJyhzcGxHwRSRSRY4HRwHSvVdFTRC7x4lwsIq+LSIuAbfOAiHwhIkVl20lEokTkEXHjSrztHYEf1FoSkZNE5EsRKRCRV73aWojIKO/o/zPgzCrCvwJ4OqB671Zcob0pAbEd9Lt5WonILBFZJiKPiUiUt8xa78DgLqCn9/2ni0hHEfnUe75ERIYFu42N/ywpmNp6GBgnIq0P4T2DcWMDDMLd8d1HVYfgykJfFbDckcAJuJLRj4lIM9yR/Q+qmgVkAZeISHdv+SHANFU94GhdRDoBdwO/A1KBLBE5XVVvB/KAcao6pZI4y3ZwZVPZTq0lMF9VBwOfApeo6hfAHGCK16r4BnhDVbO85ZZ7sZfpiEtIp+B2puB25Ed62+Vi4KBBULyd703ASK/4Wx5wjbdtngBOBYYBSZV8H4ABQMXCenkE18IZAlzrxdeTgxPPDexvXU0BzgPe94odDgYWYRoMK3NhakVVd4rIs8Ak4Jcg35arqpsBROQb4ANvfiEQeBrnFVXdB6wSkSLgKFxNm5SAo9nWQG9gN7BAVddU8nlZQI6qbvE+83lcbfnZNcT5jbdDq2g3UHZ+PR84sYr3DxSRv+JOq8QB7we8Ntv7bstEJNGbdxzwqje/pGI/h+ffcDvwz8WVdGgKfInbNmtUdZX3HZ8DKisfLdR+vIoFqlrkrf9FL97Xqlk+F/i7uKKQs1XVkkIDYi0Fczjuwx0FB9Zn34P370rc3qtpwGu7Ah7vC3i+jwMPUCruvBS3U7sq4Dx/d1UtSyo/VRGfBPtFgvSb7q8Ls5eqD6qeBq5U1UHAbUCzgNcCt4FU+FsdwY05Ufb9+6tqWQskmJ39UqBih3UGrrUA1f9ulf0eVVLVT3HJdyPwj5o66k14saRgak1VtwOvcODpkbW4nQ3AabgR1Q7V2d559p64QUJW4o62L/OOPhGRPlLDYCG4gY1OEJEErxN6LPBJLeKpyY9AfMDzeGCzF+u4IN7/GXCW950TgexKlpkPDBWRXgAi0kJE+uAqy3YP6JMZW8VnPAxMFJFU7/3tgTuAv3ivr6Xq322IiHT3+hLO8eINdMD3F5FuuHEgnsBVC662VLMJL3b6yByue4ErA54/AbwpIguAj6j6KL46K3E770Tc1TK/isiTuPPuBd6R7BbcVT9VUtXNInIjSgRBkgAAAO9JREFUMA93pD1XVd8M4vN7yv7qtgB/V9UHqln+JeAJEZkEjAH+G5eQ1uFOjcVX815w426MwJV8/tp77w8VvssWEZkIvCgisd7sm1T1a3Gjjb0jIltxO+yDBivytsV44HGvH+hIYKKqliXJ6n63L3H9H4NwfSmzKqx7m4h8LiJLgHe97zFFRH4DSgFrKTQgViXVmDAgInGqWuodwS/AjSZWEsLPuwL4D+B4Vd0Rqs8xDY8lBWPCgIjk4DqmmwL3qOrTvgZkGi1LCsYYY8pZR7MxxphylhSMMcaUs6RgjDGmnCUFY4wx5SwpGGOMKff/AZcWzKCa/SV0AAAAAElFTkSuQmCC\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.xlabel('Number of Entangled Qubits')\n", + "plt.ylabel('Quantum Fidelity')\n", + "plt.axis([1.4, 6, 0, 1])\n", + "plt.grid()\n", + "plt.plot([2,3,4,5], [0.812,0.735,0.592,0.457], 'ro-', label=\"Specific Algorithm - SQC\")\n", + "plt.plot([2,3,4,5], [0.838,0.539,0.144,0.060], 'bs-', label=\"Arbitrary Initialization - SQC\")\n", + "plt.plot([2,3,4,5], [0.788,0.734,0.628,0.542], 'mo-', label=\"Specific Algorithm - DNS\")\n", + "plt.plot([2,3,4,5], [0.773,0.682,0.386,0.148], 'cs-', label=\"Arbitrary Initialization - DNS\")\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Concluding remarks:\n", "\n", "The efficiency of the more compact specific algorithm as a deterministic $ |W_{n}\\rangle$ production tool, when estimated from the quantum fidelity, is clearly related to the linear progression of the number of required gates when n increases. On the other hand, the arbitrary initialization requires a number of gate increasing geometrically.\n", - "This can be appreciated by looking at the qasm source and the circuit drawings of the respective circuits. " + "This can be appreciated by looking at the qasm source and the circuit drawings of the respective circuits.\n", + "\n", + "The comparison between DNS and SQC shows a good fit of the simulator noise model with the real results of the ibmqx4 device.\n", + "\n", + "Beyond the comparison of two algorithms for deterministic production of multi-qubit W states, the approach presented here can be generalized to the study of a variety of other quantum states, for example GHZ.\n", + " \n", + "This type of approach can also be considered for the validation of device noise simulation models." ] }, { @@ -490,14 +1044,16 @@ "\n", "[1] Dür, W., Vidal, G., & Cirac, J. I. (2000). Three qubits can be entangled in two inequivalent ways. Physical Review A, 62(6), 062314. \n", "\n", - "[2] Diker, F. (2016). Deterministic construction of arbitrary W states with quadratically increasing number of two-qubit gates. arXiv preprint arXiv:1606.09290\n" + "[2] Diker, F. (2016). Deterministic construction of arbitrary W states with quadratically increasing number of two-qubit gates. arXiv preprint arXiv:1606.09290. https://arxiv.org/abs/1606.09290v2\n", + "\n", + "[3] Smolin, J. A., Gambetta, J. M. & Smith, G. (2012). Efficient method for computing the maximum-likelihood quantum state from measurements with additive gaussian noise. Phys. Rev. Lett 108(7). https://link.aps.org/doi/10.1103/PhysRevLett.108.070502" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -511,7 +1067,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.7" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/community/terra/qis_adv/README.md b/community/terra/qis_adv/README.md index c857151a0..78ca75f6a 100644 --- a/community/terra/qis_adv/README.md +++ b/community/terra/qis_adv/README.md @@ -25,7 +25,13 @@ we will see how they can be used to obtain quantum advantages, as below. * [Quantum Pseudo-Telepathy](quantum_magic_square.ipynb): show that gambling with parties sharing quantum entanglement can be a headache as they can trick you proving something impossible with classical statistics. +* [The Structure of the Clifford Group](Clifford_Group.ipynb): +This notebook describes the structure of the Clifford group, +which consists quantum operators that can be efficiently +simulated (in polynomial time) using a classical computer. +In addition, the Clifford group is used for Randomized Benchmarking. +* [Quantum Walk](quantum_walk.ipynb):an example of quantum walk on circle graph with 2^N(N: number of qubits) lattice points. Quantum walker moves around circle in accordance with unitary coin(In this example Hadamard). This quantum walk is simpler than topological quantum walk(above one). ## Contributing We welcome more examples in this folder, in particular, experimenting with the latest results in quantum information science. diff --git a/community/terra/qis_adv/quantum_walk.ipynb b/community/terra/qis_adv/quantum_walk.ipynb new file mode 100644 index 000000000..3fdbe0626 --- /dev/null +++ b/community/terra/qis_adv/quantum_walk.ipynb @@ -0,0 +1,508 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "yWabJ-GfTENP" + }, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Implementation of Quantum Walks on graph for IBM Q\n", + "This notebook is based on the paper of B L Douglas and J B Wang, \"Efficient quantum circuit implementation of quantum walks\", arXiv:0706.0304 [quant-ph]." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contributors\n", + "Jordan Kemp(University of Chicago), Shin Nishio(Keio University), Ryosuke Satoh(Keio University), Desiree Vogt-Lee(University of Queensland), and Tanisha Bassan(The Knowledge Society)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction: challenges in implementing quantum walk\n", + "\n", + "There are so many types of quantum walks. Walker can walk on n-dimensional space or any limited graphs. First we talk about the concept and dynamics of Quantum and Classical random walk. After that we show the implementation of Quantum Walk on cycle graph." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Random walk \n", + "Random walk is a dynamics which is randomly time evolving system. Figure shows a simple type of random walk. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"center\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The dynamics can be regarded as a simple algorithm as shown.\n", + "1. There is a $n$-dimension(in this case, one for simple) space and a walker start at the point $x=0$\n", + "2. take a step either forward (toward $+x$) or backward(toward $-x$) \n", + "in 2., the choice is to be made randomly(ex: coin-flip). We call this \"Coin Operator\". \n", + "\n", + "In this system, $p+q = 1$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Quantum walk \n", + "Quantum walk is \"quantum version\" of random walk. This means the coin function can be Unitary gate($U(2)$) which is non-random and reversible. \n", + "\n", + "$$p+q = U ∈ U(2)$$\n", + "\n", + "In this experiments, we use Hadamard gate for coin function since it puts our qubits in a state of superposition simulating the coin based probability, \n", + "$$H=\\frac{1}{\\sqrt{2}}\\left [{\\begin{array}{rr}1 & 1 \\\\ 1 & -1\\\\ \\end{array}}\\right]$$\n", + "\n", + "There are continuous and discrete quantum walks, in our experiment we use the discrete framework. In the discrete, unitary operations are made of coin and shift operators U = SC which work in a state space.\n", + "An arbitrary undirected graph $G(V,E)$ where $V = {v_1, v_2, ..v_n}$ as nodes on the graph and $E = {(v_x, v_y) , ( v_i, v_j) …}$ as edges that combine different nodes together.\n", + "The quantum walk extends into a position space where each node vi with a certain valency di is split into di subnodes. The shifting operator then acts as $S (v_i, a_i) = (v_j, a_j)$ and coin operator are unitary gates which combine the probability amplitudes with individual subnodes under each node.\n", + "A unitary of $v_i$ with valency $d_i$ can be represented as $(d_i \\times d_i)$. The total states of system is defined by the hilbert space $$H = H_c + H_p$$, respectively coin hilbert space and position hilbert space. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Coin function\n", + "The first step in a quantum random walk is the coin operator. The operation works by an arbitrary unitary transformation in the coin space which creates a rotation similar to “coin-flip” in random walk. This is mainly the hadamard gate which models the balanced unitary coin. \n", + "$$H=\\frac{1}{\\sqrt{2}}\\left [{\\begin{array}{rr}1 & 1 \\\\ 1 & -1\\\\ \\end{array}}\\right]$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The coin register will continue interfering with it’s position state until measured after all intermediate steps. The results are very different from random walks, it doesn’t converge to a gaussian distribution but to evolves into an asymmetric probability distribution. This happens because the hadamard coin operator treats each basis vectors |↑> and |↓> differently. The rightwards path interferes more destructively as it’s multiplied but -1 but leftwards path is constructive interference. System tends to take steps towards the left. To reach symmetric results, both base vectors will start in superposition states of both |↑> and |↓>. Another way to reach symmetry is use a different coin operator which doesn’t bias the coin towards a certain base vector. \n", + "$$Y=\\frac{1}{\\sqrt{2}}\\left [{\\begin{array}{rr}1 & i \\\\ i & 1\\\\ \\end{array}}\\right]$$\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Quantum walk on cycle graph\n", + "Our experiment is conducting a quantum random walk on circular graph which is efficiently and simply implemented on the quantum circuit. The graph has 8 nodes with 2 attached edges which act as the subnodes on the circuit. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"center\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The operations propagate systemically around the graph as each node is a seperate bit-string value in lexicographic order. For 2n graph, n qubits required to encode problem and 1 ancilla qubit for subnode(coin). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"700 px\" align=\"center\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This circuits shows whole process(for 2 flip) of Quantum Walk on cycle graph with $2^3$nodes. \n", + "Gray square frame is a set of Coin operator and shift operator. \n", + "In this circuit, q[0] to q[2] represents the state (position) of quantum walker, and q[3] represents Coin Operator.\n", + "\n", + "In this style, programmer can insert initial position of walker as 3-qubits state. For example, if the input is $110$, the position is $6$.\n", + "\n", + "Coin operator decide whether walker go Clockwise or Counterclockwise.\n", + "\n", + "INC is gates that increment the state of walker which is equal to Clockwise rotation in the cycle graph. \n", + "DEC is gates that decrement the state of walker which is equal to Counterclockwise rotation in cycle graph.\n", + "\n", + "After repeating of the coin operator and the shift operator, measure the qubits other than the coin qubit, it is possible to know the position of the walker.\n", + "\n", + "## $n$-qubit Toffoli" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" align=\"center\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Toffoli gate is CCNOT(CCX) gate.\n", + "By using Toffoli, X gates executed on Q2 if Q0 and Q1 is 1.\n", + "In quantum walk implementation, we need more connection for expanding quantum walk implementation.\n", + "For example, CCX can be written as below by using only available gate set of IBMQ devices.\n", + "\n", + "Thus, more than 4 qubits, we can implement many qubits of CX gate (\"C$N$X gate\") with this way.\n", + "Reference is shown [here](\"https://journals.aps.org/pra/abstract/10.1103/PhysRevA.52.3457\").\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" align=\"center\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "C$N$X can be represented using C($N-1$)X as shown." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def cnx(qc,*qubits):\n", + " if len(qubits) >= 3:\n", + " last = qubits[-1]\n", + " #A matrix: (made up of a and Y rotation, lemma4.3)\n", + " qc.crz(np.pi/2, qubits[-2], qubits[-1])\n", + " #cry\n", + " qc.cu3(np.pi/2, 0, 0, qubits[-2],qubits[-1])\n", + " \n", + " #Control not gate\n", + " cnx(qc,*qubits[:-2],qubits[-1])\n", + " \n", + " #B matrix (cry again, but opposite angle)\n", + " qc.cu3(-np.pi/2, 0, 0, qubits[-2], qubits[-1])\n", + " \n", + " #Control\n", + " cnx(qc,*qubits[:-2],qubits[-1])\n", + " \n", + " #C matrix (final rotation)\n", + " qc.crz(-np.pi/2,qubits[-2],qubits[-1])\n", + " elif len(qubits)==3:\n", + " qc.ccx(*qubits)\n", + " elif len(qubits)==2:\n", + " qc.cx(*qubits)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Decide the number of qubits $n$ for represent walker's state. (Whole circuits requires $n+1$ qubits)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "lHI4G7fgT9Wn" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "from qiskit import IBMQ, QuantumCircuit, ClassicalRegister, QuantumRegister, execute\n", + "from qiskit.tools.visualization import plot_histogram,plot_state_city\n", + "\n", + "n=3" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 85 + }, + "colab_type": "code", + "id": "kLSxVQxerGyo", + "outputId": "b319f1d1-b5aa-4113-e12b-eecbf993a362" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " ,\n", + " ]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "IBMQ.load_accounts(hub=None)\n", + "IBMQ.backends()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Increment gate and decrement gate are the shift operator for walk.\n", + "Both of them including the C$N$X gates and change the position of the walker based on the coin operator." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "ysx7VXO2a95V" + }, + "outputs": [], + "source": [ + "#IN/DECREMENT GATES FOR N=3\n", + "\n", + "def increment_gate(qwc, q, subnode):\n", + " \n", + " cnx(qwc, subnode[0], q[2], q[1], q[0])\n", + " cnx(qwc, subnode[0], q[2], q[1])\n", + " cnx(qwc, subnode[0], q[2])\n", + " qwc.barrier()\n", + " return qwc\n", + "\n", + "def decrement_gate(qwc, q, subnode):\n", + " \n", + " qwc.x(subnode[0])\n", + " qwc.x(q[2])\n", + " qwc.x(q[1])\n", + " cnx(qwc, subnode[0], q[2], q[1], q[0])\n", + " qwc.x(q[1])\n", + " cnx(qwc, subnode[0], q[2], q[1])\n", + " qwc.x(q[2])\n", + " cnx(qwc, subnode[0], q[2])\n", + " qwc.x(subnode[0])\n", + " return qwc\n", + " \n", + "def ibmsim(circ):\n", + " ibmqBE = IBMQ.get_backend('ibmq_qasm_simulator')\n", + " return execute(circ,ibmqBE, shots=1000).result().get_counts(circ) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Repeat coin operator and shift operator for any steps(in this case 15)." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 408 + }, + "colab_type": "code", + "id": "PUUoi5T69zvX", + "outputId": "11b916d3-4cc9-40d2-9017-dc072de02630" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'0 100': 505, '0 111': 495}\n" + ] + } + ], + "source": [ + "qnodes = QuantumRegister(n,'qc')\n", + "qsubnodes = QuantumRegister(1,'qanc')\n", + "csubnodes = ClassicalRegister(1,'canc')\n", + "cnodes = ClassicalRegister(n,'cr')\n", + "\n", + "qwc = QuantumCircuit(qnodes, qsubnodes, cnodes, csubnodes)\n", + "\n", + "\n", + "def runQWC(qwc, times):\n", + " for i in range(times):\n", + " qwc.h(qsubnodes[0])\n", + " increment_gate(qwc, qnodes, qsubnodes[0])\n", + " decrement_gate(qwc,qnodes,qsubnodes[0])\n", + " qwc.measure(qnodes, cnodes)\n", + "\n", + " return qwc\n", + "\n", + "\n", + "import matplotlib as mpl\n", + "step = 1\n", + "qwc = runQWC(qwc, step)\n", + "qwc.draw(output=\"mpl\")\n", + "# print(qwc)\n", + "result = ibmsim(qwc)\n", + "print(result)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "LprBkgB9AGVr" + }, + "outputs": [], + "source": [ + "def runQWC(qwc, times):\n", + " for i in range(times):\n", + " qwc.h(qsubnodes[0])\n", + " increment_gate(qwc, qnodes, qsubnodes[0])\n", + " decrement_gate(qwc,qnodes,qsubnodes[0])\n", + " qwc.measure(qnodes, cnodes)\n", + "\n", + " return qwc" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first qubit which is always 0 is the coin qubit.\n", + "Second to fourth is the position of the walker(binary).\n", + "You can also see the distribution using plot_histogram." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result = ibmsim(qwc)\n", + "plot_histogram(result)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Results\n", + "This is the example of whole iteration. The size of each node represents probability of existing quantum walker. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" align=\"center\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Required Resources\n", + "In this algorithm, we need $n+1$ qubits for a cycle graph with $2^n$ nodes. As you can see in the circuit, time complexity increases linearly. We take $7$ data points of steps($1, 10, 20, 30, 40, 50, 100$). This is the result of relation between execution time on 'qasm_simulator' and the number of steps." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" align=\"center\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "32 qubits 2^31 nodes ← cost time....(execution) \n", + "Limitations \n", + "\n", + "## Discussion about Future Work and Applications\n", + "\n", + "_Many particle quantum random walk_\n", + "\n", + "Simulation evolution of spatial entanglement in many-body physics problems. The graph is a 1D lattice with a particle on each node as initial state. Each particle has separate position and coin hilbert space H = (Hc ⊗ Hp)⊗M. The particles independantly evolve and don't interact. 3-particle system graph are easily implemented in quantum walk but more particles increase number of steps in quantum walk and measurement of entanglement become difficult. More efficient methods of quantum walk implementation will help increase the number of particle systems studied in evolution. \n", + "\n", + "_Expansion of number of nodes on graph_ \n", + "\n", + "The graph implemented in this project is 3 qubits for 8 nodes and 1 qubit for coin operation. In total only 4 qubits are used for evolution. The total time for iterating through coin and shift operator is 16 seconds for 100 flips. \n", + "We look at a real world problem that can be applied in quantum random walk on graphs with more nodes. Mapping enzymes as nodes on a graph to understand their evolution when in contact with mutagens only requires 33 nodes which can be mapped out on 7 qubit circuit. This will increase total time to 49 seconds for 100 flips. This is a scalable model which can continue to grow to map more complex graphs to problems. \n", + "\n", + "Time complexity for classcal computer (QC-simulator) get approximately $({\\frac{m+1}{n+1}})^2$ if the number of nodes becomes $2^m$ from $2^n$. This value is based on number of qubits and roughly estimated. \n", + "\n", + "## Conclusion\n", + "In this notebook we showed the basics of Quantum Walk and implementation on Quantum Circuit.\n", + "This algorithm requires $n+1$ qubits for any cycle graph with $2^n$ nodes. " + ] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "name": "quantum_walk.ipynb", + "provenance": [], + "version": "0.3.2" + }, + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/community/terra/qis_adv/wigner.py b/community/terra/qis_adv/wigner.py new file mode 100644 index 000000000..442a7bbaa --- /dev/null +++ b/community/terra/qis_adv/wigner.py @@ -0,0 +1,269 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018, IBM. +# +# This source code is licensed under the Apache License, Version 2.0 found in +# the LICENSE.txt file in the root directory of this source tree. + +# pylint: disable=invalid-name,anomalous-backslash-in-string,ungrouped-imports, import-error + +"""Plotting Wigner functions.""" + +import numpy as np +from qiskit.tools.visualization._matplotlib import HAS_MATPLOTLIB + +if HAS_MATPLOTLIB: + from matplotlib import cm + from matplotlib import pyplot as plt + + +def plot_wigner_function(state, res=100, figsize=None): + """Plot the equal angle slice spin Wigner function of an arbitrary + quantum state. + + Args: + state (np.matrix[[complex]]): + - Matrix of 2**n x 2**n complex numbers + - State Vector of 2**n x 1 complex numbers + res (int) : number of theta and phi values in meshgrid + on sphere (creates a res x res grid of points) + figsize (tuple): Figure size in inches. + Returns: + matplotlib.Figure: The matplotlib.Figure of the visualization + Raises: + ImportError: Requires matplotlib. + + References: + [1] T. Tilma, M. J. Everitt, J. H. Samson, W. J. Munro, + and K. Nemoto, Phys. Rev. Lett. 117, 180401 (2016). + [2] R. P. Rundle, P. W. Mills, T. Tilma, J. H. Samson, and + M. J. Everitt, Phys. Rev. A 96, 022117 (2017). + """ + if not HAS_MATPLOTLIB: + raise ImportError('Must have Matplotlib installed.') + if figsize is None: + figsize = (11, 9) + + state = np.asarray(state) + if state.ndim == 1: + state = np.outer(state, + state) # turns state vector to a density matrix + num = int(np.log2(state.shape[0])) # number of qubits + phi_vals = np.linspace(0, np.pi, num=res, + dtype=np.complex_) + theta_vals = np.linspace(0, 0.5*np.pi, num=res, + dtype=np.complex_) # phi and theta values for WF + w = np.empty([res, res]) + harr = np.sqrt(3) + delta_su2 = np.zeros((2, 2), dtype=np.complex_) + + # create the spin Wigner function + for theta in range(res): + costheta = harr*np.cos(2*theta_vals[theta]) + sintheta = harr*np.sin(2*theta_vals[theta]) + + for phi in range(res): + delta_su2[0, 0] = 0.5*(1+costheta) + delta_su2[0, 1] = -0.5*(np.exp(2j*phi_vals[phi])*sintheta) + delta_su2[1, 0] = -0.5*(np.exp(-2j*phi_vals[phi])*sintheta) + delta_su2[1, 1] = 0.5*(1-costheta) + kernel = 1 + for _ in range(num): + kernel = np.kron(kernel, + delta_su2) # creates phase point kernel + + w[phi, theta] = np.real(np.trace(state.dot(kernel))) # Wigner function + + # Plot a sphere (x,y,z) with Wigner function facecolor data stored in Wc + fig = plt.figure(figsize=figsize) + ax = fig.gca(projection='3d') + w_max = np.amax(w) + # Color data for plotting + w_c = cm.RdBu((w+w_max)/(2*w_max)) # color data for sphere + w_c2 = cm.RdBu((w[0:res, int(res/2):res]+w_max)/(2*w_max)) # bottom + w_c3 = cm.RdBu((w[int(res/4):int(3*res/4), 0:res]+w_max) / + (2*w_max)) # side + w_c4 = cm.RdBu((w[int(res/2):res, 0:res]+w_max)/(2*w_max)) # back + + u = np.linspace(0, 2 * np.pi, res) + v = np.linspace(0, np.pi, res) + x = np.outer(np.cos(u), np.sin(v)) + y = np.outer(np.sin(u), np.sin(v)) + z = np.outer(np.ones(np.size(u)), np.cos(v)) # creates a sphere mesh + + ax.plot_surface(x, y, z, facecolors=w_c, + vmin=-w_max, vmax=w_max, + rcount=res, ccount=res, + linewidth=0, zorder=0.5, + antialiased=False) # plots Wigner Bloch sphere + + ax.plot_surface(x[0:res, int(res/2):res], + y[0:res, int(res/2):res], + -1.5*np.ones((res, int(res/2))), + facecolors=w_c2, + vmin=-w_max, vmax=w_max, + rcount=res/2, ccount=res/2, + linewidth=0, zorder=0.5, + antialiased=False) # plots bottom reflection + + ax.plot_surface(-1.5*np.ones((int(res/2), res)), + y[int(res/4):int(3*res/4), 0:res], + z[int(res/4):int(3*res/4), 0:res], + facecolors=w_c3, + vmin=-w_max, vmax=w_max, + rcount=res/2, ccount=res/2, + linewidth=0, zorder=0.5, + antialiased=False) # plots side reflection + + ax.plot_surface(x[int(res/2):res, 0:res], + 1.5*np.ones((int(res/2), res)), + z[int(res/2):res, 0:res], + facecolors=w_c4, + vmin=-w_max, vmax=w_max, + rcount=res/2, ccount=res/2, + linewidth=0, zorder=0.5, + antialiased=False) # plots back reflection + + ax.w_xaxis.set_pane_color((0.8, 0.8, 0.8, 1.0)) + ax.w_yaxis.set_pane_color((0.8, 0.8, 0.8, 1.0)) + ax.w_zaxis.set_pane_color((0.8, 0.8, 0.8, 1.0)) + ax.set_xticks([], []) + ax.set_yticks([], []) + ax.set_zticks([], []) + ax.grid(False) + ax.xaxis.pane.set_edgecolor('k') + ax.yaxis.pane.set_edgecolor('k') + ax.zaxis.pane.set_edgecolor('k') + ax.set_xlim(-1.5, 1.5) + ax.set_ylim(-1.5, 1.5) + ax.set_zlim(-1.5, 1.5) + m = cm.ScalarMappable(cmap=cm.RdBu) + m.set_array([-w_max, w_max]) + cbar = plt.colorbar(m, shrink=0.5, aspect=10, + ticks=[-1, -0.5, 0, 0.5, 1.0]) + cbar.ax.tick_params(labelsize=14) + plt.close(fig) + return fig + + +def plot_wigner_curve(wigner_data, xaxis=None, filename=None): + """Plots a curve for points in phase space of the spin Wigner function. + + Args: + wigner_data(np.array): an array of points to plot as a 2d curve + xaxis (np.array): the range of the x axis + filename (str): the output file to save the plot as. If specified it + will save and exit and not open up the plot in a new window. + Raises: + ImportError: Requires matplotlib. + """ + if not HAS_MATPLOTLIB: + raise ImportError('Must have Matplotlib installed.') + if not xaxis: + xaxis = np.linspace(0, len(wigner_data)-1, num=len(wigner_data)) + + plt.plot(xaxis, wigner_data) + if filename: + plt.savefig(filename) + else: + plt.show() + + +def plot_wigner_plaquette(wigner_data, max_wigner='local', filename=None): + """Plots plaquette of wigner function data, the plaquette will + consist of circles each colored to match the value of the Wigner + function at the given point in phase space. + + Args: + wigner_data (matrix): array of Wigner function data where the + rows are plotted along the x axis and the + columns are plotted along the y axis + max_wigner (str or float): + - 'local' puts the maximum value to maximum of the points + - 'unit' sets maximum to 1 + - float for a custom maximum. + filename (str): the output file to save the plot as. If specified it + will save and exit and not open up the plot in a new window. + Raises: + ImportError: Requires matplotlib. + """ + if not HAS_MATPLOTLIB: + raise ImportError('Must have Matplotlib installed.') + wigner_data = np.matrix(wigner_data) + dim = wigner_data.shape + + if max_wigner == 'local': + w_max = np.amax(wigner_data) + elif max_wigner == 'unit': + w_max = 1 + else: + w_max = max_wigner # For a float input + w_max = float(w_max) + + cmap = plt.cm.get_cmap('seismic_r') + + xax = dim[1]-0.5 + yax = dim[0]-0.5 + norm = np.amax(dim) + + fig = plt.figure(figsize=((xax+0.5)*6/norm, (yax+0.5)*6/norm)) + ax = fig.gca() + + for x in range(int(dim[1])): + for y in range(int(dim[0])): + circle = plt.Circle( + (x, y), 0.49, color=cmap((wigner_data[y, x]+w_max)/(2*w_max))) + ax.add_artist(circle) + + ax.set_xlim(-1, xax+0.5) + ax.set_ylim(-1, yax+0.5) + ax.set_xticks([], []) + ax.set_yticks([], []) + m = cm.ScalarMappable(cmap=cm.seismic_r) + m.set_array([-w_max, w_max]) + plt.colorbar(m, shrink=0.5, aspect=10) + if filename: + plt.savefig(filename) + else: + plt.show() + + +def plot_wigner_data(wigner_data, phis=None, method=None, filename=None): + """Plots Wigner results in appropriate format. + + Args: + wigner_data (numpy.array): Output returned from the wigner_data + function + phis (numpy.array): Values of phi + method (str or None): how the data is to be plotted, methods are: + point: a single point in phase space + curve: a two dimensional curve + plaquette: points plotted as circles + filename (str): the output file to save the plot as. If specified it + will save and exit and not open up the plot in a new window. + Raises: + ImportError: Requires matplotlib. + """ + if not HAS_MATPLOTLIB: + raise ImportError('Must have Matplotlib installed.') + if not method: + wig_dim = len(np.shape(wigner_data)) + if wig_dim == 1: + if np.shape(wigner_data) == 1: + method = 'point' + else: + method = 'curve' + elif wig_dim == 2: + method = 'plaquette' + + if method == 'curve': + plot_wigner_curve(wigner_data, xaxis=phis, filename=filename) + elif method == 'plaquette': + plot_wigner_plaquette(wigner_data, filename=filename) + elif method == 'state': + plot_wigner_function(wigner_data) + elif method == 'point': + plot_wigner_plaquette(wigner_data, filename=filename) + print('point in phase space is '+str(wigner_data)) + else: + print("No method given") diff --git a/community/terra/qis_adv/wigner_functions.ipynb b/community/terra/qis_adv/wigner_functions.ipynb index 100e366ba..f5888e968 100644 --- a/community/terra/qis_adv/wigner_functions.ipynb +++ b/community/terra/qis_adv/wigner_functions.ipynb @@ -52,20 +52,20 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# importing the QISKit\n", - "from qiskit import QuantumCircuit, QuantumProgram\n", - "import Qconfig\n", + "from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister, execute, Aer, IBMQ\n", + "\n", + "# import numpy\n", + "import numpy as np\n", "\n", "# import tomography library\n", "import qiskit.tools.qcvv.tomography as tomo\n", "\n", "#visualization packages\n", - "from qiskit.tools.visualization import plot_wigner_function, plot_wigner_data" + "from wigner import plot_wigner_function, plot_wigner_data" ] }, { @@ -121,13 +121,14 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAH+CAYAAACvCRuMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzsvXmUXFd1//s91VXd1aO7pbYk25It25JHybIkW1gTlixbtmI7WbQcsA2OnUewCYYfIeSXBB4YTHgMSXh+EH7hqQKE/BwS/xLCL4EAC5xAeKwEWDaDscEMthF2S92SWq12j9U13ffHubvOvqfOraG7qmvo/VmrVt06d6hT073f+u599lGe50EQBEEQBEGoLpF6d0AQBEEQBKEVEZElCIIgCIJQA0RkCYIgCIIg1AARWYIgCIIgCDVARJYgCIIgCEINEJElCIIgCIJQA0RkCYIgCIIg1AARWYIgCIIgCDVARJYgCIIgCEINiFa4vZSHFwRBEITGRtW7A4JGnCxBEARBEIQaICJLEARBEAShBojIEgRBEARBqAEisgRBEARBEGqAiCxBEARBEIQaICJLEARBEAShBojIEgRBEARBqAEisgRBEARBEGqAiCxBEARBEIQaICJLEARBEAShBojIEgRBEARBqAEisgRBEARBEGqAiCxBEARBEIQaICJLEARBEAShBojIEgRBEARBqAEisgRBEARBEGqAiCxBEARBEIQaICJLEARBEAShBojIEgRBEARBqAEisgRBEARBEGqAiCxBEARBEIQaICJLEARBEAShBojIEgRBEARBqAEisgRBEARBEGqAiCxBEARBEIQaICJLEARBEAShBojIEgRBEARBqAEisgRBEARBEGqAiCxBEARBEIQaICJLEARBEAShBojIEoQq89RTT+Gzn/0sjh8/Xu+uCIIgCHUkWu8OCEKrkMlk8PDDD+P9738/LrzwQpw6dQorVqzAgQMHcPDgQVx//fU455xz6t1NQRAEYYlQnudVsn1FGwvCcuHFF1/EHXfcgbGxMcTjcezduxee52F8fBwjIyMYHx/HSy+9hMHBwYDoWrNmTb27LghC66Hq3QFBIyJLEBbJP/3TP+F3fud3cNlll2Hz5s34wQ9+gG3bthVs53keTp8+HRBdq1atwo033oibbroJ119/PVavXl2HVyAIQoshIqtBEJElCAtkdnYWb3nLW/CFL3wBe/bswapVqwAAP/jBD7B169aS++dyuYDTNTw8XCC66JiCIAgVICKrQRCRJQgL4Omnn8bQ0BBisRhe8YpXoL29Pb/uhz/8Ia6++uqKj8lF1+nTpzE8PIxzzjkHBw4cyIuus88+u5ovQxCE1kREVoMgIksQKsDzPHz84x/Hu971Lmzbtg0bN26EUsHz2VNPPYUtW7Ys+rlyuVwgvDg8PIxzzz03ILoGBwcX/TyCILQcIrIaBBFZglAmp0+fxj333IOnnnoKe/bsQX9/v3O7H/3oR7jqqquq/vy5XA5jY2MYGRnBmTNn8NJLL2Ht2rW48cYbceONN+L666/HypUrq/68giA0HSKyGgQRWYJQBt/85jfx6le/Gueddx62bduGtra20G2ffvppbN68ueZ94qKLnK5169YFRNeKFStq3g9BEBoOEVkNgogsQShCJpPBQw89hE984hPYuXMn1q1bV3KfZ555Bps2bVqC3gVxia7zzz8/n0j/yle+EgMDA0veL0EQlhwRWQ2CiCxBCOFXv/oVDh8+jDNnzmDXrl3o6uoqa78f//jHuOKKKwpytZaaXC6HU6dOYXR0FKdPn8axY8dwwQUX4KabbsKNN96IvXv3iugShNZERFaDICJLEBz84z/+I+6//35cfvnl2LRpU0WC6Sc/+Qkuv/zyuossGxJd3Olav349Dh48mBddYXlmgiA0FY118lnGiMgSBMbMzAwefPBBfOlLXwrUvqqEn/70p7jkkksQiTT21KDZbDYvus6cOYPh4WFcdNFFAafrrLPOqnc3BUGoHBFZDYKILEHweeqppzA0NIR4PI4dO3YEal9VQrOILBsuusbHx3Hs2DFcfPHFOHjwIA4cOIC9e/eir6+v3t0UBKE0IrIaBBFZwrLH8zx87GMfw0MPPYTt27dj48aNizrez3/+c1x88cVFRyA2A9lsFidPnsTo6GhedG3YsCEvuvbs2SOiSxAaExFZDYKILGFZMzY2hte97nV45plnsGfPnqqEx1pFZNlw0XX69GkcP34cGzduDIiu3t7eendTEAQRWQ2DiCxh2fL1r38dd955J9atW4etW7dWTRQ999xzWL9+PaLRaFWO16hkMpmA03X8+HFccskl+UT63bt3o6enp97dFITliIisBkFElrDsSKfTeNe7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yAZBRJZQUyYnJ/H6178e3/rWt7B3716sWLGi3l2qOfPz8zh69CguvfTSendFEEKZmprKhxdHRkbgeV5edO3fvx+XXHKJiK7mRT64BkFEllAzvvvd7+KOO+7AihUrcM011yybyXJTqRSef/55XH755fXuiiCUzdTUVN7pOn78OADg+uuvzztdGzduFNHVPMgH1SCIyBKqTi6Xw4c+9CF8+MMfbpnaV5WQTqfxs5/9DJs2bap3VwRhQXieF3C6jh8/jkgkEhBdGzZsENHVuMgH0yCIyBKqysjICO68804cPXoUe/bsQU9PT727tORkMhk8++yz2Lx5c727IghVgUQXd7qi0Siuv/563Hzzzdi3bx8uvvhiEV2Ng3wQDYKILKFqfPnLX8Y999yDiy++uOVqX1VCNpvFM888gy1bttS7K4JQE2zRdezYMbS3twdE10UXXSSiq37IG98giMgSFs38/Dx+//d/H4899hh2796Nc845p95dqiu5XA5PPfUUtm7dWu+uCMKS4HkeJicnA05XR0dHQHRdeOGFIrqWDnmjGwQRWcKi+NnPfoZXvepVyGazLV37qhI8z8P3v/99bN++vd5dEYS64HkeXn75ZYyMjOSdrs7OTuzbtw8HDx7E/v37sX79+np3s5URkdUgiMgSFoTnefjUpz6Ft7/97bj66qtx6aWXyr9UxpNPPolrrrmm3t0QhIaARNfx48cxPj6eF1379+/Piy6Z67OqyMm4QRCRJVTMyy+/jN/+7d/Gt7/9bezZs2dZ1L6qFBFZghCOLbqGh4fR3d2N/fv358OL559/fr272cyIyGoQRGQJFfGd73wHd9xxBwYHB7F9+/ZlU/uqUkRkCUL5eJ6HiYmJfHhxeHgYvb29AdG1bt26enezmRCR1SCIyBLKIpvN4gMf+AD+/M//HNddd53kU5RARJYgLBwSXdzp6uvrww033ICDBw9i3759WLt2bb272ciIyGoQRGQJJTl27Bhe/epX49ixY9i9e/eyrH1VKSKyBKF6eJ6HM2fOBHK6+vv78zld+/btw3nnnVfvbjYSIrIaBBFZQlG++MUv4r777sOGDRtw1VVXLdvaV5UiIksQaoctuoaHh7FixYqA6Dr33HPr3c16IiKrQRCRJThJJpN429vehn/4h3/Anj17sGbNmnp3qakQkSUIS4fneRgfH8fIyEhAdB04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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAH3CAYAAACIBkpEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzsvXmcXFWd//05y723tu5O0iSyiqgoKIQAYQkkMQuoM/5cZnRIZFGWCCIIwg+EAXRAUB8UUBRQXIAQZtRxdJzHZXxevnz8zeMojpNOUAREGUUBQdnSa1Xd5Zznj3PPqXurqjtbV6q6+/t+vfpVXffWrTq1f+rz/ZzvYVprEARBEARBENML7/YACIIgCIIgZiMksgiCIAiCIDoAiSyCIAiCIIgOQCKLIAiCIAiiA5DIIgiCIAiC6AAksgiCIAiCIDqA3M5+6u9AEARBEL0N6/YAiPaQk0UQBEEQBNEBSGQRBEEQBEF0ABJZBEEQBEEQHYBEFkEQBEEQRAcgkUUQBEEQBNEBSGQRBEEQBEF0ABJZBEEQBEEQHYBEFkEQBEEQRAcgkUUQBEEQBNEBSGQRBEEQBEF0ABJZBEEQBEEQHYBEFkEQBEEQRAcgkUUQBEEQBNEBSGQRBEEQBEF0ABJZBEEQBEEQHYBEFkEQBEEQRAcgkUUQBEEQBNEBSGQRBEEQBEF0ABJZBEEQBEEQHYBEFkEQBEEQRAcgkUUQBEEQBNEBSGQRBEEQBEF0ABJZBEEQBEEQHYBEFkEQBEEQRAcgkUUQBEEQBNEBSGQRBEEQBEF0ABJZBEEQBEEQHYBEFkEQBEEQRAcgkUUQBEEQBNEBSGQRBEEQBEF0ABJZBLGb3HvvvTjuuOOwdu1afOxjH8P999+PKIq6PSyCIAiiyzCt9VT7p9xJEHOZkZERnH/++fjZz36GFStWYPHixRgaGsLWrVvxxBNP4Pjjj8eaNWuwevVqHH300fA8r9tDJghidsK6PQCiPSSyCGIX+O///m+sW7cORx55JC655BJs3LgR733ve93+4eFhbN26FVu2bMGWLVvw1FNPtYguKWUX7wFBELMIElk9Cn3KE8ROoJTCTTfdhE984hO4/PLLcdJJJwEAmn+sDAwMYNWqVVi1ahUAYNu2bU50bdy4EU899RSWLVvmRNdRRx1FoosgCGKWQZ/qBLGDPPPMMzj99NPx/PPP45577sE+++yzw8fOmzcPq1evxurVqwEY0WVdrrvvvht/+tOfcMIJJ2DNmjVYs2YNlixZQqKLIAhihkPlQoLYAf793/8dZ555Jt761rfinHPOaRFAd9xxB973vvft8vW/+OKLTnRt3boVzzzzDE444QSsXbsWq1evxpIlSyCE2N27QRDE7ITKhT0K/VQmiCmo1+u48sor8dWvfhUf+chHsHTp0raX286Ple0yf/58rF27FmvXrgUAvPDCC9iyZQs2b96MO++8E88++2xOdB1xxBEkugiCIHocElkEMQm/+c1vsG7dOsyfPx/33Xcf5s2bt8due8GCBTjppJNc5uv555/H1q1b8fOf/xyf+9zn8Nxzz+HEE090omvx4sUkugiCIHoMElkE0YTWGvfccw8uu+wyvOc978E73vEOMDa1G6+U6uiYBgcHW0TXli1b8LOf/Qx33HEHnn/+eSxfvtwF6RcvXgzOqQ0eQRBENyGRRRAZRkZGcO6552JoaAh33HEHXvnKV3Z7SG0ZHBzEySefjJNPPhkA8Nxzz2FoaAg//elPcdttt+HFF1/E8uXLsXbtWqxatQqHH344iS6CIIg9DIksgkj5r//6L6xfvx5Lly7FPffcg0KhsMPH7m4ma3fZa6+98IY3vAFveMMbABjRtXnzZvz4xz/Grbfeim3btmHFihVOdB122GEkugiCIDoMzS4k5jxKKdx44424+eabccUVV2DNmjU7fR2f+cxncNFFF3VgdNPDX/7yFzd7ccuWLRgZGXGia/Xq1XjNa15DoosgZi40u7BHISeLmNM8/fTTOO200zA8PIyNGzdi77337vaQOsKiRYvwxje+EW984xsBAH/+85+xZcsW/OhHP8LNN9+MsbGxFtG1vRwaQRAEMTXkZBFzlu9+97s4++yz8Td/8zc466yzdqv556233oqLL754Gke3Z3nmmWdcj66hoSFMTExgxYoVOOmkk7Bq1SoceuihJLoIonehN2ePQiKLmHPU63Vcfvnl+MY3voHrrrsORx555G5f50wXWc0888wzGBoacuXFarWK173udS7Tdcghh5DoIojegd6MPQqJLGJO8etf/xrr1q3DwoULcdVVV2FgYGBarvfTn/40PvCBD0zLdfUiTz/9dE501ev1nOh69atfTaKLILoHvfl6FBJZxJxAa4277roLH/zgB3Heeefhb//2b6dVFHzqU5/CJZdcMm3X1+v86U9/wtDQELZu3YrNmzcjjuOc6HrVq15Foosg9hz0ZutRKPhOzHq2bduGc889Fw888AA+97nP4RWveMW038ZcExT77rsv9t13X7z5zW8GADz11FMYGhrCd7/7XVx33XVQSuVE18EHHzznHiOCIAgSWcSs5v7778f69etx/PHH4+67796p3lc7Q7f7ZHWb/fbbD/vttx/e8pa3QGvtRNe3v/1tXHvttdBaO9G1evVqvOIVryDRRRDErIfKhcSsJEkSfPzjH8ett96KK6+8EqtWrero7c32TNbuYEXX5s2b8cADD2Dz5s1gjOVE18tf/nISXQSx69Cbp0chJ4uYdTz11FM47bTTMDExgY0bN+IlL3lJx29zrjtZU8EYw/7774/9998fb3vb26C1xpNPPomhoSF861vfwjXXXAMhBFatWuXKiwcddBCJLoIgZjzkZBGzim9/+9s455xz8Pa3vx1nnXUWhBB75HbnWvB9OtFa44knnnCzF4eGhuB5Xk50vexlLyPRRRCTQ2+OHoVEFjErqNVquOyyy/Ctb30L1113HZYsWbJHb59E1vShtcYf//hHbN682TVHDYIAq1evxpo1a5zoIgjCQSKrR6FyITHjeeSRR3DKKadgn332waZNm9Df39/tIRG7AWMMBx54IA488EC8/e1vh9Yaf/jDH7B582Z87Wtfw+WXX45SqYRVq1Y50XXggQd2e9gEQRAtkJNFzFi01vjiF7+Iv//7v8f73vc+vPWtb+1aSYmcrD2H1hqPP/6469M1NDSEcrnsRNfq1atxwAEHdHuYBLEnISerRyGRRcxIXnzxRWzYsAEPPfQQbrjhBhx00EFdHQ+JrO6htcbvf//7nOjq6+vLia7999+/28MkiE5CIqtHIZFFzDh+8pOf4J3vfCdOPPFEvP/970cQBN0eEomsHkJrjd/97nc50TUwMJAL0u+3337dHiZBTCcksnoUElnEjCFJEnz0ox/FZz/7WVx11VVYuXJlt4fkuOWWW3DppZd2exhEG5RSLaJr/vz5OdG17777dnuYBLE7kMjqUUhkETOCJ598Eqeeeirq9TquvfZaLFq0qNtDykFO1szBiq7s7MXBwUE3e/F1r3sdiS5ipkEiq0chkUX0PN/61rfwnve8B+vWrcO7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G4bKykp8/vnn2Gcf2zesCcq+eRepLGQ1UTHG8MILL2D69Ol45513AADHHnsshg4dit69e1vgsrJqAPJ9H8OHD8e2bduwbt06NG/evOabrBqj7Bt2kcpClhU455g/fz6mTJmCpUuXgjGGbt26YdCgQejbt69tYGhlVYRijGHkyJH4/vvvsW7dOrRsGb8gwqpJyEJWkcpCllVInHMsWrQI99xzDxYtWoRMJoOuXbuivLwc/fr1sw0NrayKQIwxXHLJJfj222/x+eefY7/99ks6JKtkZSGrSGUhy6qg3n77bUyaNAkLFy5EZWUljjjiCFxwwQU499xzbYNDK6sExDnHZZddhg0bNmDdunVo3bp10iFZJS8LWUUqC1lWtdbKlSsxceJEzJ8/Hzt27EDnzp1x/vnno3///na5uJVVPYhzjt/85jdYv3491q1bZ7fVslKykFWkspBltVv65JNPMHHiRLzyyivYunUrOnbsiHPOOQfl5eVo1iy+a7iVldXui3OOq666CmvXrsVnn32Gtm3je6BZNUlZyCpSWciy2mOtX78eEydOxD//+U9899136NChA84++2wMGjQILVq0SDo8K6sGL845xowZg1WrVmHt2rU4+OCDkw7JqrhkIatIZSHLaq9qw4YNuPvuu/HMM89g06ZNOOSQQ9CvXz8MGzYMrVq1Sjo8K6sGqbFjx2LFihX49NNPceihhyYdjlXxyUJWkcpCllWdadOmTZg8eTLmzp2LjRs3om3btjjttNMwYsQIW0tiZVVL3XDDDXj33XfxySef4LDDDks6HKvilIWsIpWFLKt60ZYtWzBlyhQ8+eST+PLLL3HAAQfg1FNPxYgRI9CuXfw+elZWTV3jx4/H0qVLsXr1arvRu1UhWcgqUlnIsqp3bdu2DTNmzMDjjz+ul6D36dMHo0aNQvv27ZMOz8qqKHTrrbdi0aJF+Oijj3D44YcnHY5VcctCVpHKQpZVoqqoqMCsWbPwyCOPYO3atWjZsiV69+6NUaNGoVOnTkmHZ2WViP74xz9iwYIF+PDDD3HkkUcmHY5V8ctCVpHKQpZV0ai6uhoPP/wwHnzwQaxatQrNmzdHz549MXLkSHTp0iXp8Kys6kW333475s2bh/fffx9HH3100uFYNQxZyCpSWciyKkpls1nMmTMH999/P1auXImSkhKccMIJGD58OI455pik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\n", "text/plain": [ - "" + "
        " ] }, + "execution_count": 3, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ @@ -150,7 +151,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.5 \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) + 0.5 \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) + 0.375 e^{2.0 i \\phi_{0}} e^{2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{0} \\right )} \\sin{\\left (2 \\theta_{1} \\right )} + 0.375 e^{- 2.0 i \\phi_{0}} e^{- 2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{0} \\right )} \\sin{\\left (2 \\theta_{1} \\right )}\n" + "0.5 \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) + 0.5 \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) + 0.375 e^{2.0 i {\\phi}_{0}} e^{2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{0} \\right )} \\sin{\\left (2 {\\theta}_{1} \\right )} + 0.375 e^{- 2.0 i {\\phi}_{0}} e^{- 2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{0} \\right )} \\sin{\\left (2 {\\theta}_{1} \\right )}\n" ] } ], @@ -201,32 +202,19 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 5, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "Q_program = QuantumProgram()\n", - "\n", "number_of_qubits = 2\n", - "backend = 'local_qasm_simulator'\n", + "backend = Aer.get_backend('qasm_simulator')\n", "shots = 1024\n", "bell_qubits = [0, 1]\n", - "qr = Q_program.create_quantum_register('qr',2)\n", - "cr = Q_program.create_classical_register('cr',2)\n", - "bell = Q_program.create_circuit('bell', [qr], [cr])\n", + "qr = QuantumRegister(2, name='qr')\n", + "cr = ClassicalRegister(2, name='cr')\n", + "bell = QuantumCircuit(qr, cr, name='Bell')\n", "bell.h(qr[0])\n", - "bell.cx(qr[0],qr[1])" + "bell.cx(qr[0],qr[1]);" ] }, { @@ -243,22 +231,23 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAH+CAYAAACvCRuMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzsvXmUXFd1//u91VXd1aO6pbYsWbIl25JHybIkW7Y12JLlMbbDSsuAbXBwVkDmYfgRQpJf4BmDg58hAZ4XgYSfKoGQR8jPLwwhEGCBEwjxCoGFjW1sMPBsI1sttYZWq9Vd3V1d03l/nNp19j11bg3dVV1D789aterO99R077e+e599PKUUBEEQBEEQhOoSqncDBEEQBEEQWhERWYIgCIIgCDVARJYgCIIgCEINEJElCIIgCIJQA0RkCYIgCIIg1AARWYIgCIIgCDVARJYgCIIgCEINEJElCIIgCIJQA0RkCYIgCIIg1IBwhdtLeXhBEARBaGy8ejdA0IiTJQiCIAiCUANEZAmCIAiCINQAEVmCIAiCIAg1QESWIAiCIAhCDRCRJQiCIAiCUANEZAmCIAiCINQAEVmCIAiCIAg1QESWIAiCIAhCDRCRJQiCIAiCUANEZAmCIAiCINQAEVmCIAiCIAg1QESWIAiCIAhCDRCRJQiCIAiCUANEZAmCIAiCINQAEVmCIAiCIAg1QESWIAiCIAhCDRCRJQiCIAiCUANEZAmCIAiCINQAEVmCIAiCIAg1QESWIAiCIAhCDRCRJQiCIAiCUANEZAmCIAiCINQAEVmCIAiCIAg1QESWIAiCIAhCDRCRJQiCIAiCUANEZAmCIAiCINQAEVmCIAiCIAg1QESWIAiCIAhCDRCRJQiCIAiCUANEZAmCIAiCINQAEVmCUGWee+45fPGLX8SRI0fq3RRBEAShjoTr3QBBaBXS6TQefvhhPPLIIzj33HNx4sQJLF26FHv37sVNN92E6667DitXrqx3MwVBEIQFwlNKVbJ9RRsLwmLhtddew5133onR0VFEo1Hs2rULSimMjY1hZGQEY2NjOHToEAYHB32ia8WKFfVuuiAIrYdX7wYIGhFZgjBPvvKVr+Ctb30rLrroImzcuBHPPPMMtmzZUrCdUgonT570ia7ly5fjhhtuwI033ojrrrsOZ555Zh1egSAILYaIrAZBRJYgzJHp6Wm8613vwte//nXs3LkTy5cvBwA888wz2Lx5c8n9s9msz+kaHh4uEF10TEEQhAoQkdUgiMgShDnw/PPPY2hoCJFIBFdddRXa29vz65599llcfvnlFR+Ti66TJ09ieHgYK1euxN69e/Oi64wzzqjmyxAEoTURkdUgiMgShApQSuHTn/40HnzwQWzZsgXr16+H5/mvZ8899xw2bdo073Nls1lfeHF4eBhnnXWWT3QNDg7O+zyCILQcIrIaBBFZglAmJ0+exL333ovnnnsOO3fuRH9/v3O7n/3sZ7jsssuqfv5sNovR0VGMjIzg1KlTOHToEFavXo0bbrgBN9xwA6677josW7as6ucVBKHpEJHVIIjIEoQy+MEPfoA3vOENWLVqFbZs2YK2trbAbZ9//nls3Lix5m3iooucrrPPPtsnupYuXVrzdgiC0HCIyGoQRGQJQhHS6TQeeughfOYzn8E111yDs88+u+Q+L7zwAjZs2LAArfPjEl3nnHNOPpH+2muvxcDAwIK3SxCEBUdEVoMgIksQAnj11Vexb98+nDp1Ctu3b0dXV1dZ+/385z/HJZdcUpCrtdBks1mcOHECR48excmTJ3H48GGsWbMGN954I2644Qbs2rVLRJcgtCYishoEEVmC4OBLX/oS9u/fj4svvhgbNmyoSDD94he/wMUXX1x3kWVDoos7XWvXrsVNN92UF11BeWaCIDQVjXXxWcSIyBIExtTUFB544AF885vf9NW+qoRf/vKXuOCCCxAKNfbQoJlMJi+6Tp06heHhYZx33nk+p2vJkiX1bqYgCJUjIqtBEJElCDmee+45DA0NIRqNYtu2bb7aV5XQLCLLhouusbExHD58GOeffz5uuukm7N27F7t27UJfX1+9mykIQmlEZDUIIrKERY9SCn/5l3+Jhx56CFu3bsX69evndbxf//rXOP/884v2QGwGMpkMjh8/jqNHj+ZF17p16/Kia+fOnSK6BKExEZHVIIjIEhY1o6OjePOb34wXXngBO3furEp4rFVElg0XXSdPnsSRI0ewfv16n+jq7e2tdzMFQRCR1TCIyBIWLd/73vdw11134eyzz8bmzZurJopeeuklrF27FuFwuCrHa1TS6bTP6Tpy5AguuOCCfCL9jh070NPTU+9mCsJiRERWgyAiS1h0pFIpPPjgg4jFYti+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gd///d/Hk08+iV27dmHp0qX1blLNmZ2dxcGDB3HhhRfWuymCEMjk5GQ+vDgyMgKlVF507dmzBxdccIGIruZFPrgGQUSWUDN+/OMf484778TSpUtxxRVXLJrBcpPJJF5++WVcfPHF9W6KIJTN5ORk3uk6cuQIAOC6667LO13r168X0dU8yAfVIIjIEqpONpvFRz/6Ufz5n/95y9S+qoRUKoVf/epX2LBhQ72bIghzQinlc7qOHDmCUCjkE13r1q0T0dW4yAfTIIjIEqrKyMgI7rrrLhw8eBA7d+5ET09PvZu04KTTabz44ovYuHFjvZsiCFWBRBd3usLhMK677jrcfPPN2L17N84//3wRXY2DfBANgogsoWp861vfwr333ovzzz+/5WpfVUImk8ELL7yATZs21bspglATbNF1+PBhtLe3+0TXeeedJ6Krfsgb3yCIyBLmzezsLP7wD/8Qjz/+OHbs2IGVK1fWu0l1JZvN4rnnnsPmzZvr3RRBWBCUUpiYmPA5XR0dHT7Rde6554roWjjkjW4QRGQJ8+JXv/oVfud3fgeZTKala19VglIKP/3pT7F169Z6N0UQ6oJSCqdPn8bIyEje6ers7MTu3btx0003Yc+ePVi7dm29m9nKiMhqEERkCXNCKYXPfvazeO9734vLL78cF154ofxLZTz11FO44oor6t0MQWgISHQdOXIEY2NjedG1Z8+evOiSsT6rilyMGwQRWULFnD59Gr/3e7+H//7v/8bOnTsXRe2rShGRJQjB2KJreHgY3d3d2LNnTz68eM4559S7mc2MiKwGQUSWUBE/+tGPcOedd2JwcBBbt25dNLWvKkVEliCUj1IK4+Pj+fDi8PAwent7faLr7LPPrnczmwkRWQ2CiCyhLDKZDB599FF8/OMfx9VXXy35FCUQkSUIc4dEF3e6+vr6cP311+Omm27C7t27sXr16no3s5ERkdUgiMgSSnL48GG84Q1vwOHDh7Fjx45FWfuqUkRkCUL1UErh1KlTvpyu/v7+fE7X7t27sWrVqno3s5EQkdUgiMgSivKNb3wD9913H9atW4fLLrts0da+qhQRWYJQO2zRNTw8jKVLl/pE11lnnVXvZtYTEVkNgogswUkikcB73vMe/NM//RN27tyJFStW1LtJTYWILEFYOJRSGBsbw8jIiE907d27FzfeeCN279692Or3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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAH3CAYAAACIBkpEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzsvXmcXFWZ//85y12quro7C4msIigOKIQAYUlIYhZQZvy5zOgkCKgsMQiiCIIwgA4o6A8FFAUEHYEYZtRxcJyfyzgvXzN+5+uMOE46QREQxYUdlSWdXqrqLuf8/jj3nLq3qjoL6UpVdz/v16teXXVvLaeqq+q+63me8xymtQZBEARBEAQxufBuD4AgCIIgCGI6QpJFEARBEATRAUiyCIIgCIIgOgBJFkEQBEEQRAcgySIIgiAIgugAJFkEQRAEQRAdQO5gP/V3IAiCIIjehnV7AER7KJJFEARBEATRAUiyCIIgCIIgOgBJFkEQBEEQRAcgySIIgiAIgugAJFkEQRAEQRAdgCSLIAiCIAiiA5BkEQRBEARBdACSLIIgCIIgiA5AkkUQBEEQBNEBSLIIgiAIgiA6AEkWQRAEQRBEByDJIgiCIAiC6AAkWQRBEARBEB2AJIsgCIIgCKIDkGQRBEEQBEF0AJIsgiAIgiCIDkCSRRAEQRAE0QFIsgiCIAiCIDoASRZBEARBEEQHIMkiCIIgCILoACRZBEEQBEEQHYAkiyAIgiAIogOQZBEEQRAEQXQAkiyCIAiCIIgOQJJFEARBEATRAUiyCIIgCIIgOgBJFkEQBEEQRAcgySIIgiAIgugAJFkEQRAEQRAdgCSLIAiCIAiiA5BkEcRu8pWvfAXHH388Vq9ejU984hO47777EMdxt4dFEARBdBmmtd7e/u3uJIiZzLZt23DeeefhJz/5CZYtW4YFCxZgaGgIW7ZswRNPPIETTjgBq1atwsqVK3HMMcfA87xuD5kgiOkJ6/YAiPaQZBHES+B///d/sXbtWhx11FG46KKLsGHDBrz3ve91+4eHh7FlyxZs3rwZmzdvxlNPPdUiXVLKLj4DgiCmESRZPQp9yxPELqCUwg033IBPfepTuPTSS3HSSScBAJp/rAwODmLFihVYsWIFAGDr1q1OujZs2ICnnnoKixcvdtJ19NFHk3QRBEFMM+hbnSB2kmeffRZnnHEGnn/+edx9993YZ599dvq2s2bNwsqVK7Fy5UoARrpslOuuu+7C008/jSVLlmDVqlVYtWoVFi5cSNJFEAQxxaF0IUHsBP/6r/+KM888E295y1twzjnntAjQbbfdhvPPP/8l3/+LL77opGvLli149tlnsWTJEqxevRorV67EwoULIYTY3adBEMT0hNKFPQr9VCaI7VCv13H55Zfja1/7Gj72sY9h0aJFba+3gx8rO2T27NlYvXo1Vq9eDQB44YUXsHnzZmzatAl33HEH/vSnPxWk68gjjyTpIgiC6HFIsghiAn71q19h7dq1mD17Nu655x7MmjVrjz32nDlzcNJJJ7mar+effx5btmzBT3/6U3zhC1/Ac889hxNPPNFJ14IFC0i6CIIgegySLIJoQmuNu+++G5dccgne85734O1vfzsY2340XinV0THNnTu3Rbo2b96Mn/zkJ7jtttvw/PPPY+nSpa6QfsGCBeCc2uARBEF0E5Isgsixbds2rF+/HkNDQ7jtttvwqle9qttDasvcuXNx8skn4+STTwYAPPfccxgaGsKPf/xj3HLLLXjxxRexdOlSrF69GitWrMARRxxB0kUQBLGHIckiiIz/+Z//wamnnopFixbh7rvvRhiGO33b3a3J2l322msvvOENb8Ab3vAGAEa6Nm3ahB/96Ee4+eabsXXrVixbtsxJ1+GHH07SRRAE0WFodiEx41FK4frrr8eNN96Iyy67DKtWrdrl+/jc5z6HD3zgAx0Y3eTwxz/+0c1e3Lx5M7Zt2+aka+XKlXjNa15D0kUQUxeaXdijUCSLmNE888wzOP300zE8PIwNGzZg77337vaQOsL8+fNxyimn4JRTTgEA/OEPf8DmzZvxwx/+EDfeeCNGR0dbpGtHdWgEQRDE9qFIFjFj+e53v4uzzz4bf/mXf4mzzjprt5p/3nzzzbjwwgsncXR7lmeffdb16BoaGsL4+DiWLVuGk046CStWrMBhhx1G0kUQvQt9OHsUkixixlGv13HppZfi3nvvxTXXXIOjjjpqt+9zqktWM88++yyGhoZcerFareJ1r3udq+k69NBDSboIonegD2OPQpJFzCh++ctfYu3atZg3bx6uuOIKDA4OTsr9fvazn8UHP/jBSbmvXuSZZ54pSFe9Xi9I15/92Z+RdBFE96APX49CkkXMCLTWuPPOO/HhD38Y5557Lv7qr/5qUqXgM5/5DC666KJJu79e5+mnn8bQ0BC2bNmCTZs2IUmSgnS9+tWvJukiiD0Hfdh6FCp8J6Y9W7duxfr163H//ffjC1/4Al75yldO+mPMNKHYd999se++++JNb3oTAOCpp57C0NAQvvvd7+Kaa66BUqogXYcccsiMe40IgiBIsohpzX333YdTTz0VJ5xwAu66665d6n21K3S7T1a32W+//bDffvvhzW9+M7TWTrq+/e1v4+qrr4bW2knXypUr8cpXvpKkiyCIaQ+lC4lpSZqm+OQnP4mbb74Zl19+OVasWNHRx5vuNVm7g5WuTZs24f7778emTZvAGCtI18EHH0zSRRAvHfrw9CgUySKmHU899RROP/10jI+PY8OGDXjZy17W8cec6ZGs7cEYw/7774/9998fb33rW6G1xpNPPomhoSF861vfwlVXXQUhBFasWOHSiwcddBBJF0EQUx6KZBHTim9/+9s455xz8La3vQ1nnXUWhBB75HFnWuH7ZKK1xhNPPOFmLw4NDcHzvIJ0veIVryDpIoiJoQ9Hj0KSRUwLarUaLrnkEnzrW9/CNddcg4ULF+7RxyfJmjy01nj88cexadMm1xw1CAKsXLkSq1atctJFEISDJKtHoXQhMeV5+OGHsWbNGuyzzz7YuHEjBgYGuj0kYjdgjOHAAw/EgQceiLe97W3QWuOxxx7Dpk2b8PWvfx2XXnopyuUyVqxY4aTrwAMP7PawCYIgWqBIFjFl0VrjS1/6Ev7mb/4G559/Pt7ylrd0LaVEkaw9h9Yav//9712frqGhIfT19TnpWrlyJQ444IBuD5Mg9iQUyepRSLKIKcmLL76IdevW4cEHH8S1116Lgw46qKvjIcnqHlpr/O53vytIV39/f0G69t9//24PkyA6CUlWj0KSRUw5/vu//xvveMc7cOKJJ+L9738/giDo9pBIsnoIrTV++9vfFqRrcHCwUEi/3377dXuYBDGZkGT1KCRZxJQhTVNcd911+PznP48rrrgCy5cv7/aQHDfddBMuvvjibg+DaINSqkW6Zs+eXZCufffdt9vDJIjdgSSrRyHJIqYETz75JE477TTU63VcffXVmD9/freHVIAiWVMHK1352Ytz5851sxdf97rXkXQRUw2SrB6FJIvoeb71rW/hPe95D9auXYt3vetde6z31a5AkjV1UUrhN7/5TUG65s2bV5CuffbZp9vDJIjtQZLVo5BkET1LtVrFxRdfjO985zv42Mc+hgULFnR7SBNCkjV9UErh0UcfdcsADQ0NYf78+QXp2nvvvbs9TILIQ5LVo5BkET3Jgw8+iDVr1uCAAw7A5Zdfjv7+/m4PabuQZE1f0jTFr3/9awwNDTnp2nvvvQvStSeWbiKI7UCS1aOQZBE9hdYad9xxB6688kq8733vw5vf/OYpsZwKLRA9c7DSZSNdmzdvxj777FPoSD9v3rxuD5OYWfT+l+QMhSSL6BleeOEFnHPOOXjkkUfw8Y9/fEotnUKSNXNJ0xS/+tWv3OzFLVu2YN9998XKlSuxevVqLF++nKSL6DQkWT0KSRbRE/zoRz/CaaedhuXLl+OCCy6A7/vdHtIuQZJFWJIkaZGu/fffvyBde+21V7eHSUwvSLJ6FJIsoqskSYKPf/zj+MIXvoArr7wSS5cu7faQXhI333wzLrzwwm4Pg+hBkiTBI4884qTr/vvvxwEHHIBVq1Zh1apVWL58OebOndvtYRJTG5KsHoUki+gajz/+OE477TSkaYqrr756Sv+6J8kidpYkSfDLX/7S1XTdf//9OPDAA7F69WqsXLkSy5cvx5w5c7o9TGJqQZLVo8huD4CYmdx7771473vfi3e84x145zvfCc55t4dEEHsEKSUOP/xwHH744QCK0nXjjTfine98Jw466CBXSL98+XLMnj27y6MmCOKlQJJF7FHGx8fxwQ9+EN///vdxww03uAPNVGcqzIAkepN20vXQQw9haGgIn/70p3HGGWfg4IMPLkjXrFmzujxqgiB2BpIsYo/xi1/8AmvWrMErXvEKbNy4EZVKpdtDmjR2kHYniJ1GSokFCxa45rtxHDvpuv7663HaaafhVa96lZOuZcuWkXQRRI9CkkV0HK01brvtNnz0ox/FBz7wAbzxjW+cdpEfSncSncLzPBx55JE48sgjARjpevDBBzE0NIRPfOITeOCBB3DIIYcUpGtwcLDLoyYIAiDJIjrM888/j7POOguPPvoovvSlL+HAAw/s9pAIYkrjeR4WLlyIhQsXAgCiKMJDDz2ETZs24brrrsMDDzyAV7/61a5lxNKlSzEwMNDlURPEzIQki+gY//mf/4nTTz8dK1euxJe//OUp1/uKIKYCvu+3SNeDDz6ITZs24WMf+xgeeOABHHrooW724tKlS3t+mSqCmC6QZBGTTpIkuPrqq/HFL34RV111FU488cRuD6njTLf0JzF18X0fRx11FI466igAQL1ed+nFq6++Gr/4xS9w2GGHOek68cQTSboIokOQZBGTymOPPYZTTz0VjDFs3LhxSve+2hVIsoheJQgCHH300Tj66KMBGOn6xS9+gaGhIXz0ox/Fgw8+iNe+9rVYtWqVk67pNCmFILoJSRYxaXzjG9/AeeedhzPOOAOnn346FYMTRA8SBAGOOeYYHHPMMQCAWq3mpOuqq67CQw89hMMPP7wgXX19fV0eNUFMTUiyiN1mbGwMF154IX7wgx/gpptuwmtf+9puD2mPQ5EsYqoShiEWLVqERYsWATDS9cADD2BoaAhXXnklHnroIRxxxBFOupYsWULSRRA7CUkWsVv87Gc/w5o1a3DIIYdg48aNM/bLl/pkEdOFMAxx7LHH4thjjwVgpOvnP/85hoaGcPnll+OXv/wlFixY4NZeXLx4McrlcpdHTRC9CUkW8ZLQWuOWW27B1VdfjQsvvBBvfOMbuz2krkKpUWK6EoYhjjvuOBx33HEAgGq1ip///OfYvHkzLr30UjzyyCM48sgjC9JVKpW6PGqC6A1Isohd5rnnnsOZZ56J3//+9/i7v/s7vPzlL+/2kLoOpQuJmUKpVMLxxx+P448/HoCRrp/97GcYGhrCJZdcgkceeQQLFy500nXCCSeQdBEzFpIsYpf44Q9/iNNPPx0nnXQSrrrqKnie1+0h9QQkWcRMpVQq4YQTTsAJJ5wAwKxP+vOf/xybNm3CxRdfjF/96lc46qijXMuIE044AWEYdnnUBLFnIMkidoo4jvHRj34Ud955Jz7ykY9g8eLF3R5STyGEgNaaZIuY8ZTL5YJ0jY2N4Wc/+xk2b96MD37wg/j1r3+NY445xhXSH3/88SRdxLSFJIvYIb/73e9w6qmnwvM8bNy4EXPnzu32kHoOxhhJFkG0oa+vD0uWLMGSJUsAGOm6//77sXnzZnzgAx/Ao48+ikWLFhWkKwiCLo+aICYHkixiu3zta1/DBRdcgHe96114xzveQQXeE2AjWQRBbJ++vj6ceOKJbiWI0dFRJ1333nsvfvvb3xak67jjjiPpIqYsJFlEW8bGxnDBBRfghz/8IT772c/isMMO6/aQehrOOUkWQbwEKpUKli5diqVLlwJoSNfQ0BC+8Y1v4He/+x2OPfZYV0h/7LHH0jqoxJSBJItoYcuWLVi7di0OPfRQfOUrX5mxva92BZIsgpgcmqVrZGTERbq+/vWv4/e//z2OO+44J12LFi0i6SJ6FpIswqG1xs0334yPf/zjuOiii/Dnf/7n3R7SlIEkiyA6Q39/P5YtW4Zly5YBMNK1ZcsWDA0N4atf/Soee+wxHH/88W724qJFi2jWM9EzkGQRAIA//elPePe7340nn3wSd955J/bff/9uD2lKwTmHUqrbwyCIaU9/fz+WL1+O5cuXAwC2bdvmpOuee+7BE088UZCuY445hqSL6BpsB7++6af5DODf//3fccYZZ+CUU07BueeeS19IL4F//Md/xJve9CZqukgQXWZ4eBhbtmzB5s2bsXnzZjz55JM44YQTCtIl5bSLL9C05h6FJGsGE8cxrrrqKmzYsAEf+chHXF8bYtf5p3/6J/zFX/wFreFGED3G1q1bnXRt2bIFTz31FBYvXuxmLx599NHTQbpIsnoUkqwZym9/+1usXbsWpVIJH/nIRzBnzpxuD2lK881vfhOvf/3rUalUuj0UgiC2w9atW12Ua8uWLXj88cdx0UUX4brrruv20HYHkqweZcrrO7Hr/MM//APe//7346yzzsKpp55KDTQnASp8J4ipwaxZs9zMRAB43/veh4cffrjLoyKmKyRZM4jR0VG8733vw49+9CN87nOfw6GHHtrtIU0bqBkpQUxN6vU6RaCJjkHtu2cImzdvxsKFC7Ft2zZs2LCBBGuSYYzR7EKCmIKQZBGdhCRrmqOUwk033YTXv/71OPvss3HVVVdRcXYHoEgWQUxN6vU6BgcHuz0MYppC6cJpzB//+Ee8613vwrPPPos777wT++23X7eHNG2hSBZBTE2iKMLAwEC3h0FMUyiSNU35wQ9+gCOPPBL77bcf7rjjDhKsDkORLIKYmkRRRJEsomNQJGuaEUURrrjiCvz93/89/vZv/xbHHntst4c0I6CO7wQxNYnjGLNmzer2MIhpCknWNOLRRx/F2rVr0d/fj3vuuYe+OPYgJFkEMTWJ45j6BBIdg9KF04SNGze69bpuuOEGEqw9DEkWQUxNkiTB7Nmzuz0MYppCkawpzsjICM477zzcd999uOWWW/DqV7+620OakQghSLIIYgqSpinmzp3b7WEQ0xSKZE1hNm3ahIULF2J8fBwbNmwgweoijDEqfCeIKYhSiiL/RMegSNYURCmFG2+8Eddffz0uueQSnHzyyd0e0oxHCIE0Tbs9DIIgdhGlFPUOJDoGSdYU49lnn8U73/lOPPfcc7jrrruw7777dntIBCiS1QkWr7sVjAsAgFYpuPTBuIBKInDpQyURGBfQKgXjwu3Lb7OXLT/+4nu79XSIHkQpBa01wjDs9lCIaQpJ1hTi+9//Ps4880y86U1vwrXXXgsp6d/XK1Aka/fIC5UVKOGXwD0fab0K4ZfAhICKI8hSBZwLpFyACWHOxxGYMLe3kmXvy17WKsWS9bcjfXoIYt9jkD49BGSLo//Pt7/YnSdOdJV6vQ7GGDinyhmiM9BRegoQRREuv/xyfPWrX8U111yDRYsWdXtIRBM0u3DXWbzuVidBXPrg0ofwfCT1Kvy+wWy7B57tZ5xDZddnnMMrD7hIlQz7oJIYzP7NhM3uT5PIyZh4xVIT6dr/OGiVIn1mM45/03qIfY52Y6OI18xgfHycBIvoKCRZPc6vf/1rrF27FoODg9T7qochydo5lqy/HVqlEH4JXt8g0nrVSFJQykTLa8iV9MG9nIRl59N6FdzzAZioFRPCpQvTehWyVGmcD/uyqFgIxgVEEgEAVBIDANIkgjx4OXSaQiWRi4AtWX+7GzMJ1/RldHQUQogdX5EgXiIkWT2K1hpf+cpXcPHFF2PdunX467/+a7AstUH0HiRZE2MjVvkUoPRLYJxDZGJl04FpvQq/f7YRoiy6FXORXV+47U6qoqo7z7hJHeYvA4BXqiDN5EqWKi79CKBFulQSIY0jdx4g4ZrODA8Pk2QRHYUkqwfZtm0bzj33XGzatAm33norDjnkkG4PidgBnHOqyWrCypXwS9Aqhdc3CCF9F1XSKoVXNtIlpI8kqiLon9MQpkzM/LJJHYqghKQ66kQtL1P5aJa9LEsVqEyYPC6Q1EZN1MwvIYmq4JmEJVEVIiiZCJn0XOpRq9TJmYojqCTCie/9kot2kXBNfYaHh+F5XreHQUxjSLJ6jJ/+9KdYu3YtFi1ahLvvvptmvUwROOeI47jbw+gJrFzJsAKtUpcKtHKlkshJkvTNvjSqIqgYweKeiWCl9Sq8rDZLSAnGWS6axcEYQyJ9cM7MPsYQu4iW2ZZEjbSiLFWQVEedgKX1KgBA+CWkURUyi27lpUv4IbRKoaRvpCuOCkX0AMnWVGZkZIQki+goJFk9glIKn/rUp3DDDTfgwx/+MFavXt3tIRG7AKULW+WKCVNrJfwQIhOttN6IVsmwAsCk5bzyYJZGDAAAaZJAlipOpoTkSOIUXuCbbZxBCN4QLM7AGQPnJqVutwHIZo9l1+H9brx+uQ9xrQYABemSYQVJbdRJV5xFz7RKwSNz/SSqQqdGtmx0i2Rr6jEyMoIgCLo9DGIaQ5LVAzzzzDM444wzsHXrVmzYsAF77713t4dE7CIzXbKWrL/diQgTAl6pAuGHLipl65vCwXmuiN1utzIlBAeXHEmUwgtCJ1JCctSrMYLQM9skB+NAEin4JS8TKCNTTriybZzlZKvpr6F9pNimJgET6Ypro2676dnlZREthTi73tLz74RKIpKtKcTo6ChJFtFRSLK6zPe+9z2cddZZeOtb34qzzz6bel9NUWZqTZaNXgEmJWflyoiTqbMS0hS621qqvHR5YejkSgiONFUISp4TKSE4klihVPFdlIpLjrieIChJJ1VCGBEL+zwX1arXYvgl6W5naUS7ssvZhJIg9FCvtU/55qXL1mQBplaLSw9pVEOazU5cev6d0CrFf9/+nkl6lYlOMTo6SiUZREehI3qXqNfr+PCHP4xvfOMbuPbaa3H00Ufv+EZEzzITm5EuWX+7q5EK+ucUIldWRMKBeW6b9D2kiYKQHH5QhvQEuDSmk8Tm+kFJOumK6wkAwM+2AYCQHFE9QVj2nVwxDsT1FGFfQ8TyM3GtiOXFbFfRqtHNX2f/53ytlivKz4QzGhummq0pwNjYGEqlUreHQUxjSLK6wCOPPII1a9Zg3rx5uOeeezA4ONjtIRG7CWNsRqULT3zvl4w4BSXIsM+lALVKXesFLn2IoAQhJdIkE6ZAOrmSnolSCckQlAInUjyrvwrLpv6KCyNFKjWiE5ZNipALjrjekDMA4FmdVr2auCgWyy4HJVPgbAWsXjMpSEu9FsMLi9P5VWGpJLO+nVLaSZUtgrdSqbLC+FB6iMa2QSURyVYPMz4+TusWEh2FJGsPorXGXXfdhUsvvRTr16/H2972Nup9NU2YKZEs15YhKLl2DJZmucpHtEr9JlogPeHkCjByJD0zWxAAkiiTptCD9E0KMaonpmZLmvShlByCM1RrCcI+I0mCM7cNAMI+DyKLWNVtBCv7rFkJMzVeO/e8tbJ/dRbVktnlTLKy/30qo5x4KdcGQsURFcj3INVqFX19fd0eBjGNIcnaQwwPD2P9+vXYsmULbrvtNrzqVa/q9pCISWQmRLIWr7sVwi9BBiWorPg7L1z2vO1xJT0B6Zu/zVi5svu01pCeiW7xrNjdphDLfSYF50sOX3KMZiJVCiV8yRFk0rV1PMZgxVxXcAaZbSuXPCdhADAyHrvIl00d1qumfqsd+WiWytKGNn2YpuZ/nibKRbdUErmaM8YFopEXoaWPNImQVEdx4nu/RPVaPUK1WsVee+3V7WEQ0xiSrD3AT37yE5x66qk47rjjcNddd1Gh5TRkukeyrGC5GqzygOvcbtcftNEr6XtOoKTPkSYaQrKCVElPOIky+8xXUeALF43q7/PhZxGuQHKMZNvnVqx0CfiSY3jcCM2ssgdfCidUw+ORu67ZxrF1PEJ/uRHlAoDh8dilEi156dIqSyUGmRDm6rOk0lBaQ3oa9appBaGSCDpNXSsIr2/ANEWtAchaRVAKsTeo1+uoVCrdHgaxmzDGlgO4BMAxAPYFcJbW+u4d3OYIALcAOA7ACwDuAPBxrQs1ArsNSVYHSdMU119/PT7zmc/gsssuw8qVK7s9JKJDTOfZha7/VZv6q3x6UPqBEykb4QFao1aWsM/IWMk328cziRqs+Chn23wpMJLN+Js/EDrp8gXHcNVsn1MJ3DbBmds+WPaNXDGG4aoRsbmVxnR9wRmeH61jsOxB5qTr+dGoRbos9vu3NhYhKEkopaG1Rpo00ohp6kErjWhsBDKsNJYUCkpQcYR4fBuSetU1NGVcUGSrS9RqNfT39+/4ikSvUwHwCwBfyU7bhTE2AOAHAP4vgGMBHArgLgBjAG6czIGRZHWIp59+GqeffjpGR0dx9913U++rac507ZOVTxHKsFG7IrLlcvLRq3yEJyh5WfpPQPoCaWJeG+kbSbJyVc1qsHzJ4WdyVfLN11KU3Wb+QAhf5CJa2azD+f1GmARn8CXH1vFMrkqeSyECMGnEkl9IGVoRy0sXgEL0K8mez3AuvaiURlRL4Jc8V5+ltIZWjW1SadM+oq8faZKYuqx6Fch6bRlR9aCS2PXYohRid6jX6xgYGOj2MIjdRGv9PQDfAwDG2N07cZPTYWayvFtrXQXwC8bYoQAuZozdNJnRLJKsDvCd73wHZ599Nt7+9rfjzDPPpAVI27DsHR9G32GnuIN1IxriwQvMlH0vEAhKHsI+Dzcu7+2QPuccSTaDbrqweN2trnu77YXVWH+w5OqvbHrQCySkl0mUL6CShnTaqBWAglzNrfhOqkq+wGiuT5WVJbvPSpSVKz8TqeFsu0kXNuRqNJdezAuX5Axz+xppRAB4fsxEugbLvnv850fr2TYT1UqVxvBoBD/M0ojaSFZtzKQWrXSlqcrES7uonn39eBJBZPVZdl3FpF51sxApfbhnieOYZnfPTBYD+FEmWJZ/A/BxAK8A8LvJeiCSrEmkVqvh0ksvxTe/+U29lYwkAAAgAElEQVR88pOfxMKFC7s9pJ5i5Yf+MSuK9hAe/Dq3Pd/c0VzWYJ45+KWpQlxPccmPxlAKJeZWfHzwsN6bkTnd0oWL193qFlr2+wYgS5UsYlVyfaHy6UHpN35ISF/ADyQQwEWzLDY1OLfioxI25MUyr9/UK5qIlsDweOxuM38gcOlCK1CAkSBbFG+FK78dgNtuo1QACoJmpcvy/FhUiHKlSpvUYsV3402VxthYlAmWkS6ltEslamUiX6b2LIEuVVqiWl55wDQz9Xyk2QxEABTV2kNEUYRZs2Z1exhTGj6wv0ZS69j96+rzD8JUNFq+qLX+4m7e7d4Anmza9ofcPpKsXuPhhx/G2rVr8bKXvQz33HMPhaAzll2wAQDAhADPiqYBuL/N55vhjLk+SYBJId3xGx/7DIZ4815jHRr1rjPd0oU2suiFxentNoKVj17ZiJUXNOquuDCF7iqrzSqH0tVZVULPRaxK2fWtVAFwBe5AQ5TsPhsBmzcQwONGoDzBsNXVYXnwOId9y4xlxfVz8nLFGF5wkatGCwgAeGE0q93KSVeqtJOuhmApPD8aoa/PSFeaRbFq4zHCPh8qaUSzVKKyKJ8p9rfrM/IkQsKr5rMhfWB8m2lwSlGtPUYcxyRZu0tah3fYX3bs7qPNf1fTWi/q2AN0GJKs3URrjS9/+cu47LLLcN555+Gtb30r9b4CcMKbz4XYd5GbjQa0l6ntChZn2YGqsc0eDKtRiv8YHcSqyvDkDvwlIoSYNulCW4ydb8vglwdNq4YskpXHL0nTZDSrvbKz8ACgr89Hf9j6NZOPWFVCWYhMzR8InFSFUmBbLoU4EHoIs+iUxxlGMumaVfIgGIOXvT/GM7nqDySE7Y/FGIbr5r72aqrFso+RlzGgVboSpZ2gza00BCtRGltHI3iBMGLlcahUu1mKOnsfS0+gNh6hNGsOomrV9RKrj76QRbXMUkR2BiKJVmeJ4xizZ8/u9jCmPNv7Hu9RngXwsqZtL8vtmzRIsnaDrVu3Yt26dXjggQdw++234+CDD+72kLrO8W9aDwAQ++zaMkFM5GUs6/CtNGyvSJHV2ljJEpwhShQ2JXuh7Am8Rv+h3d3uMaZLnyxbhyWDkjnoe37LdbzAd1LlBY2idgCuOWgQSFRC6SJPtu6qEkgnXYU04UCQXU+07JufCZEVqDi3b3Y2C9DjDNvqDVEbCD0XzeKssW8wMNvt8jvDmdzNbppN+GIuMmYxKcMIg6VGmjPVGi9ktVuzKj6iRDnxGh8zsxRVFs1SWiPKmqCmqYJfKiGRPuKxYQSVOUijKuIsnR4BSOtVSh92mCRJMGfOnG4PY4rDpqJk3QfgesZYqLW2qciTATwN4PeT+UA72e+YaObHP/4xFixYACkl7rrrLhIsGMGyctX8oeNOoLb/lstHAXm20C+QNXvMCVaqNHzJobSGJxgeD/adtOfxUpgOkSwrWF6pMclA+iUElTmQpQq8sNy2tUHY52eF7aZDexA0frvNHwhR8iVKvnAF65ZKKLH3rBCVUKKSu00oOPo8gTklH2VPuJSiu50vMLvkGWHL1YINBBIDoYfZJa+w3e4bDGWLTA2GZnslu627fuiZ+yr7mJ0rhp9b8TF/ICjUds2pBJhbCTCr7GNWTsr8QCIse2YZIGlnVXJ4oXCLYAvJzWSCoASvPIigfw649OGXB+D3DbrPkZUtYnJJ0xRz587t9jCmNoy5jEUnTjs3BFZhjC1kjC2E8ZqXZ5dfnu3/JGPs33M3+QcA4wDuZowdzhj7KwCXA5jUmYUARbJ2mTRN8YlPfAKf//zncdlll2HFihXdHlLXsdErS7sollIpBBfQSrmC6nZ1Wdt7f0eJctP6bSSLhwxKaYQBx3D4cgwOPz4ZT2mXYYxN+cJ3xgWE52ed3PtM7VVYgQiKKcKg5MELTHG7F0jXE0t6AuUsStUfSlRCD1GiXHQKMKlAwAhWMzYlV86kKk5bI1ZB1sqhnuvD1e8LeIIX0ocAMJhJk22BNZrty0e5AGC4KQIGmC7vw7kU5uyyD6VN5Kq5iD5VGlGi3AxFm0asZ1Gt4dEIfiAgBM96ainUxk2Ui3EG6WmknkBcN53ig/45SKKqmySSRjUkWVSLIlqTi1KK6md3EwaTiegyiwD8MHf5muy0AcCZAPYB8Eq7U2s9zBg7GcCtADYBeBGmP9ZNkz0wkqxd4Mknn8Rpp52GWq2GDRs2YP78+d0eUtdZsv52iH2ObqnTaSYfyWJcmLXepJlZyLiAiiNXEKyVNvVYSrsIgHBT+aVLJQnOECsFQCBWGhXOgfmvBP74mw4924kRQkzpdOGS9bcXWmnoNIX0S26/F4bwAlN7lU8PAmbB5lImTWVfYDwnOnMycWpXl+WK3rO/aU6wA8ERCLj6q3yKEDDRLFv4Pho1ZMgIV6MGy4qVYAyDgXSRUcEbqcLBLIpm91npGsyNWSmN4Xpi7qfsFWYY5uu2kky4Uq3xx20mCzGYpRGjRCFNFKJagrDsI00VGAfSRANIoFIJ9A0irWeCxQWisWGoJDafGZWSaE0yWmtaIHp3Ycx9v3cLrfX/gfG9ifaf2WbbAwCWd25UBpKsneRf/uVfsG7dOqxZswbvfve7qfcV4JYG2ZFgNWPFCmhEsJgQSJMEXuC7mixbN8M4kMRpVuOToBKEjdQhY0i1OUDa1GFwwCEYfeLXk/Icd5ap3CfLLfqcRbEAIOifY5qQZm0H8gQlE8GyfcysdFmRmj8QuvRfXrps9Mrt84QrULf9sKxwBYK7fYCRqkbBO8dITqz2ytJ5VpLquYji7NDOHjSXR+r5SFfj6y8ftRoMZGG9Qidd2bhTbSJdW2vFui0b0frjtjoEY5g/EGZylZpIVyZjZn1GBpHybGamAmB6wyWxQOp7qI+YmYY2ZUgRrcknSRJorREEwY6vTGyXKViTtccgydoB1WoVH/rQh/Dtb38b119/PY488shuD6knmEiw8gK1PZgQ7rb52/Bc0TsAcxDKan0AuL5HqWqfVlRaQ7A9X2o4lQvfufThZX2wRFBq2W8L3b2w2LLBMlhpLOBsU4R5XIowkBjNhMXK1NxyMUWYl5s5NkWY/c/z+/p96bYLxpqErDGjkDGgGjfGM9gUUbNRsMGwEeUCjHTZxxsMJHKZS7xYjcEZw6zQQ6q1S2u+mK2hOH8gcMJVTxT+NJLClxxzK41IVzVKUa+adg9JlCJNTZQrTRUEOIL+AcQ1H0nWEd6isj5bJFq7T71eB+ecZoPvLmxKFr7vMUiytsNDDz2ENWvWYL/99sPGjRtpjauM7RXhutqqNrK1ow9ifr+QrDHLMDuI2YO3TStZ4QLgamwEZ9Aa2PeVh+Lp3/xyZ57OpDBVJctGsQBA+CGkX3K9sLywbHpdNQlt2OfDCwTKE6zvZwvc83VXdkaenSnYXMwONFKD5axrfL4my2w3t/E4hxRAPclJV9Y2wspVlLttyeMuksXBUM3eR4yZFg+WsagY5cpL3QvVpLAPMKL/Yi2GJxjiVLvnGKWmFutP2+oIJMe8/iyilaosolVvzKJMFKRnFtEe21ZzkUGeKgDFheRtHWPCBUW0JoHx8XESrEmAYccTmmYyJFlt0Frji1/8Iq644gqcf/75eMtb3kIfRhi52pEoWblqdz2zz3wYddpYqsX+BUyHd+kJpImG9Ew7By8QTrgEb0S0okRhIDtI1hKFii8RJRp9nqnhedWhr8Gjv3xo95/4NMZGsbzyQNsoFlAsdPdL0kkv0EgRVkLPSUYeK1qBbP0SttKUl6vxXNSp4kv40vzfPc5QS5SrwzL3yZxUJU0iGEibTjaXo9z+UvZ4jMEJF2CiYwCgYK47Ui+mEAG44ndb61XxG9vjVBfqw+YNBK4W64/b6m79xbmVAFGSmo7zWQoRMPKaxClUolCvJlCCA2FoemdVRwufK4po7T4jIyOQkg6Buw9FsrYHvcOaePHFF3HOOefg4Ycfxh133IGDDjqo20PqCZZdsME1TrRsrxarOZKlVAopfWilClIFACqJXD8mmxbMk0RGvPJ1WECjMWnZ4/BcOpEhVUAgWMuBt9NM8szfjrN43a3w+orrttnZhF4Yuo7uujmSVfbcLEIruxYrXfn+UpZyU6F7KDlqTanFvcq271WWIkTjsUPJIXlOunIzDANRfE9ETVGwUDTEKh8BKzXJXzE61vh61LpYt1XxBezLko9oVfxGBCxOFZ5LGilEK1zjUYoXktR0wM8VxSdZyjOBqXtjnCGJUwihoBIfEo3WGlql4BTR2i2Gh4eptnYyoHThdqEYX47/+q//woIFCxCGIb785S+TYGUsv/AeN0V3Z4vcJ4pkbe+6dr9qkhXpN96m1SxSYJtccs5Qzw7USuvGrK/sPl77mtfs1Hgng6kmWVz62WLPYbZUzkSRLOl6YdmaOQCuJ9S8/hDz+4OWaFWfLxFKgXllH6Hgrv0C0BCtOSWJssexV9lz2/KEgme3bY0km33MnJoeuyS5OXkcfV5DsMw+lp14i2QFue3N+2xPrTklD4NBUSIrvkTFly21XYMlD/P6AwyWPSeeZV9gTl+ASuhhVrnYEV963DR69QSCkvnLJTfSW6pAhhX45UH4/XNMejeLPlIfrV1n27Zt8Lz2KW9i1+h2n6xehiJZML2vrr32Wtxyyy248sorsWzZsm4PqWdYcdFXwbmAeokzCBsF7fZDwwtRrnzxu23h0IyNZAFwiwoDJmpRz9KEVsxELtLBAOg9mOadSpKVj2I1arLMbELpe65dQ0s9VpYSNAsyC0RJ8X1R8oVLG7aPVNlC9/a/72xKzc+kKv+SVrLbyGyfjTrZ/3klq3PiDKglGvmgaEkyl/LnTcXwzTKVTyHafXYcY7kC+8ZsQ7Pzuax/1mAoEacKsTK3td3jfckxbyBANTKF8ONRilEkACTmVoB6VhAf2dqwyAiusKlPoQBUkFRHIaQPWaq4z1FcHaWI1i4yMjIC329d0YDYRRjrhT5ZPcuMl6wnnngCp512GuI4xsaNGzFv3rxuD6lnWHXpveDSh8pSHrvaqsHehmWSxnI1WfZDWajHShJwwcEBd2ABWiNZpVzqMB818FzKyNRkBYKBaY0jXnUgHnj0sV0e+3SmUQ/nuShWu1+NYZ+XNR1t7MsXtNs1CH3JMVhunVlo03/tolR2e16solQ7wbLL6NgUYbPEWlGzvpbzJoSSuXosxhrRTkvJ44WmOtXtpBAL0uUVpavQEiKQWd824MWqgseZ6d+W1W3FSqEulJMsSyTMagb1XEE8YKJaSfak0kQjAeBDQquSK4K3FV1Uo7XrkGRNDqbwnSRrImZ0uvCf//mfcfTRR2PhwoX43Oc+R4LVRPOMkebo00u/39YoFgCIrAjV1mXZWqAkyh3k/Pa/C6xscZgDm8hHsNSe6V81lSJZdgHoPCIowQt8BKGX1QQVb1MueRCcIZAc8wdCJwr5dNdefT48zjC75LWkDyu+RCA4ZoceAiEwK2xN1fiCudOE+7g5NRNKhnDCNCAvpAmbaexrvd9S7rbN9PnCnYBGLZlNH5pT8QBk04eVUGJW2YMvOUqewNxK4BbMLuVeUyE4gpJEUJLwSx6k74Fni3f75cFsyaM+txwSpQ53jtHRUeqRNRn0wLI6vcyMjGTV63VceOGF+O53v4tPf/rTOOKII7o9pJ7jpL/5/7Iu0w3B2RW5yn9AmBCFjsBapW52YbvZiEmcmg7vIlsYus3BbSJipRDIpg8m4zhynwp+9sxo+xtNElNFspasvx2yVDFRLL8EL6xAtKnHCkKTNgTaT0iYlaUFbYqwGre+PwIpXMSpXfrQF7ytUJl9rPC3uTdaKIuRrtYZhlnUVKWo69aaLUtzL61mmaomGowxaK3bpA9V1hBXuzYSqTJ/n8v6ZnmCo+IDsTJ/64nCC1Wzz5ccs8oeqpGZbVgJJP40Yter9VGPUiS5iBaQwgtM41IhJaKxEagkgsr9/yh1uHOMjY0hDMMdX5HYAd3v+N7LzEjJklKiVCrhnnvuQaVS2fENZhhvuPoHJsWXRI1o0y6sy5eXsfyUc5Ffq1A0Or7b1JVSGlw0DujSE0iiFNLjLqo1URNSSz59aFOKSCJo0fm0wFSRrHwUK9+2wSzlYvqT5VuWBKXGTMJZZb+wmHOekiec4NpUWTOh5C1F6pZ8BMvnDPXcDEHJWWFmIVBchgcAPGT9r1ITuVSyEaUImALTmagohVQUIxilphqxvHSFTroYlC6mD+0+pc3f0aZeWzZNGSuOkXriXpM+T6DPM8tBVeMU1Sh13fEroQeRTfCo5+4vL7o2uptm/z/GBWJhfhSJoESpw51gbGyMltSZDBilC7fHjJQsIQTWrVuHWq224yvPME752H+0bNvVovfmD5xO00JhZD5dqJKo0Boi3/E9qicI+xpyZNNTZV842crPRMwLFmcmshEiBaQPpDEWzmG4/4XOidBUkKzF6251USv716Sbyq5lg10uBzBLGjFeXK/PYuuwgKJU2ciVXdKmnVQ1R6kCyVraLgSCuTo7yc1+K1hcp+AAmEqQuRU0L36d8WjcPAetoLxipE6k9UJVvfKKEY28dOV7d3FmomBW8LRmLTVbtrOEr22BfrbsUCCzXl8MFV/g+SzSVfKEK4gXnDV+HABAxTfd4bOIVm0szo3STEywn6c0iSDDPjOu1Hy2SLQmhiRrcmDUJ2u7zEjJAsxac0SRN37ivyCkjySqFrZzLqCAne6R1Q7elBLUadPsQ+k3BEtrcAAyV8uiXCRLYaSeoD+Q241q2cJ3JTyI6jCglTEG7F492faYCg1rGRfgnmnbAKDQtoFlUSzept4JME00gdbeWJbZbhmc1i9cW/wduBQf0HwXtt4KgOui3ryfJ3VzQaXQuUgVS2OwNHb1d7pJqnhcNe8BANCqzf7iD668dNkUoRX6fJG83W/fi2PZrEYrWn25haxfzNY69ARHnCoXEawnyqVa84XvVraqUYog2x72AUmsIASHVrFbOF0lPoLKHMR8OHuKKWKV7nb95HSmWq1SJmMyYKyl9yHRgCSLAGAEi3GBNIna7t+VdOH20Eq11GE1UorapAzRmF2olUaamDSiPZCVPOEORu1mrXHWiJAwrU0kK6mbqMfEC7Xv/nObApGs5lThRL9AGWfwA+FaNjRj1yP0JUe/b1oW5OnP/j+VCSYqAEa0JqrHAoxoednudq8sS+pgafZ+bYpisdpI47xW0H4xYsHy0qUUdFA82OalK5XFKJdJEZrUYap0Ia1pm56mXANgGCt0sBcuEldLGOq516zPl+jzJWpZJ/jxKC0sPTSeSxva+izpcQAekiiF1iESLpBG1YJER2PDFM2agFqthr333rvbw5gGUCRre8xYyaJOv0VkWHGtGoDdn0GYh4l8C4ds1kiuJiuNqmBCmDXzZGMxaJWYX+zS5+4Xe352Yao0RqIEgeQuymDrdqJUF2agsTSC5hJH8mfxMzVzZ5E2L2Vk1yg0aUIzg625w7ttOio4w9xc+nZOpXHeEzxLg7X/Smmup2rGy0Ww2o47kx4rVc2pQZalBmFrCEWW7sxEikXjbh+0gg76irevFydF5KVLpCZ6Zr8xIt543oIzBAB0rjg/H+kKBYdg2VqbTenD2aGHeqrAGUPJE66fVskXmD8QYLQ28azYxOOI6hxcplndYvZDJeudZQ96nkqpEH4CarUaRbImAwbqk7UdZqxkUSSrwVs/+0DbxZy3J1o7s9+Sr8lyfbKy26skggzNF53I1e5oBTe70JIqjdFajJLXqMnKR7KU1ohShVCKRoREK3NQFT54fQyac1fDM9n0eiTLNiAVfggmBLyw0vYXqK2DY831QTl8yYttMpqwsuS3mRlq5dfO/vOzJZBcfyzb3ypLDbKkBt0UTbJSxdKsRqnpefA4S3lnktU88YHVxxrn29RssfooYNfZ9ItC5ussJZmJ3rgy8VH73y9JhlixbJ8q1KvZ9GHFB+ppivq4crMuy55A2ROoZ9Gs0Vpilt5pQ5KbyemXJJJYgXEGrUzETiURVFAynzHqodWWer2OgYGBbg9jykM1WduHJGuG81e3PgLu+Ujr5qDUrv5qsmFcQMVRIV1lIytpYg4WQnLw7CCcZhEtAPBz9T42ZRgI7mTLFxxKm0iW6RBuDm5MK2gujeztmbZZPUe+bmJHtVj55qO+5BgsZZEvzgrNSG3Xc1tf1K6WyqbQgu204pCcFeQqX29lttXA8pHWpiZezNVqJfbJFvfHjSJ4AFBeMX3opAxoFa4oEzLWXrpskXyqNCBYoVDeLVStgOb0IdDoUm8jefmmqXvPCjFaS5zojtbinHT54CJBEnMknkBtzLw2SZTCC8tQcZSbYKJcITzRgCRrkqC1C7fLjDUNkiwjWHYpm+bIk+WlfHh0m4Jb3lR/lacxO0rltqFlm51dGEjuBCtOtSsaTlVj6r3tHl54nMSknA5/8ee7/JymC9IvFdo2NMOyAzpjDP197YtZ7Qy4iVJ/e5V912y0XbRLCgYpGDze6NbeMo6knolVmxnAaQyW1MHrI+33A+62rGkSh4XH4+D1UfB6a+80HlfNqT4Gnot4ufuOq4VTM4HkqPg81/qhQSg4BgKBksdR8WVh5mW/b3qKlT2BOU2NWvtDiXn9ISqh1za6ZfvJBSUPXHCIoAQufUi/BBn2QWY/aKhRaYMoijA4OLjjKxI7hJqRTgxFsmYwXhi6+hsrRkqlhWjPpNZmcQGVmPSOjaq4ovckgvBL4Jy11GQJySGzg1GUpBipm8H5kiOUVrYUAmF6MNmsnUk/aftEspTRWEtqabLo9XRh8wwg07ohzNVitd5m/oBJ0wnOMCvXxsHOJOS5WquK31hWJo9t7zRRetFNUrDRqCZsBMvub41i1bJJDQCSGNpvjkQ1ityZStrsHy9cbimSt6JmI1lN9Vy2Xsz+kEhzX6t9npl5GLNG+jBPxZfgLM3ShArjcYpActQTZSKAoUQllBitJRjJarTs+p0jkpv2DvXm0KwHrbVLyadJBOGHSJOI0oY54jjGrFmzuj2MacFEM5IJimTNWE7/ypMNmYmzgxgXbTv37mqfrGZsPVY+XZHfZrfnP6ipXfw3v8Zbvh+RndIuOaRodBS3aI3CrC+3PY7BvM5MN+7lFg6L190K4fng0hygbR1cHr8kEYQeGJu4jYPgDL7k4BO0evA4N7MCBUObJvEIpYmAVTzuiuGbYWlkThOkt1yUKq6bU9OySSyq5k5tIlF2X1JvK3YsGi+cdnV/wLNTrojfRuzyywa1WyTb1mXZmYVh7kWcPxBgbp+fza4t/j4WgjdOkkN6AtI361Lml96xok0RLSNZs2fP7vYwpjyMMVdy0InTVGfGRrJm8uzCd/390xCCI7ENQD0fSXUUKolcC4d8YTvnAulutnBQKm1JGeaFzqUMUwWeKkguXE0WACSJMmu8+dItKJzvKZRfJ6/Q+9JGPXLRDx13pjalFyNZ/8/H/g1JdRQD8/Y2rQqScehkDNWx5wDOoZUCYxyM8+zLkrvgH89klAvzNcGlBOeA5wtcedEaACaCNdhmDUJLXyYS7db9A4ASS4E0bUSpRPG+WBI1RCiNgDad+12kKY1b+l+Z/WNueSitUrCgTTuHHK09tIxI6Qlqsmy9F7hsuW0gGFJu67I0aklx+R8jXLKw3uZ4lv6eW/ZdKjzs8/HcWON9WwkkMBBitBZjRHKMIELx69wD4wxpUnKrN6g4gg+gPvIi9c8CSdZk0ss/MLvNjJWsmRzJ4rKxTI1Suu36gZ34EjaP0ZhdmCYRpN8ofs//arF9spIoBWMMosRdTRZgUoXD4zH6fYkkVRiNUoSSI9UcgFmCxc0wzKeXpunB5aQP/QO0Tk06Vinotp2ldOGP+18wnr0HuBMuMA7UTL2S8PzGbYREXUj8zUe+BC4kmJDggkFKE0HxQ4F/uu49CCRrWfYGaLRyEJy1bSZr+1s5sWqSLqQRWJzNOkyj1lmHmTDpLC3NZKsA6nqjnQMr9beOISddbaUt28+4bC2Sj6uu6N4THmJW/IoNJUOsAJG9DUdzr0GYi2yVPYEXspYOZU9gPE7djwqbPhzNpQmlJyA9ASEZxkc14HppCSTwTXuUbJksr1Sh/lkA0jTFnDlzuj2MaQGlCyeGJGuGcc69f4CQDPVqYxkbNUExuq2f2t10YfOyOoBJUfJc2o5xgSSKEZQCtzxOEqXws1lrMp82TBWGx2PsPSs0y5T4AkEurZJqM0srlKLRrNI+ThCCeT5e88T/xUMHLN+t59UtTv7w15FUR82sMZ0WojRAJk06BbQRKbO/cTBnVjo5N7LBBQDtttu/NoKl4jrgol3FfUayJGIhwRhDdVTilPfdAs4B4XF4Pse/f+b8tlIlOANsK4KJolT1kZZthf1JzQmVrlfBS8Uok6pm6cLsNWJBUcp0tXH/Ok3B+4qzzVhcdZLOGC8sxAyYInlXI8ZFSz2XpxOITBQ5g5uMIQVDkjbaVthAQC23ak5zo92xTLSqWWPSUpZWLPkJRmsxnh8173XbM4txk0bUWkMFJYioCpRMPzy7vuFMJk1TzJ07t9vDmPowTIu0XqcgyZpBnHPvH0yaMPuVq5RGmiSF2YBC+oiz1KE5QLcKlk0/TAY2gpbWq5ClRp2QDT/zbNYUYFKC1SiBL/0JU4X54up2kRJdr5nZk1Ns1srrzr/DdcvXrkJdO8FC21SlbllFiDEObRuFpZlYWUmz7S6sXGU9qKxQmdtnSx8JaW4b101Ei3F3Oy4kwBmkF6IuOBav+yw8X0B6DF4g8T+fe1/7J5lGru8VS4uLetvold03Eao6BtgoVpNwAYDOpMulwpulbGxb43GEAAubityjVqliWpltKjV1WgC09AGVtETCfMHcmgP2XRs1RbNCj6MWK9c7y6YP55V9d96+t0dyDUt9yZEmHGGZI65zxCUlSCcAACAASURBVFmky0hXCBVXwKIqVKkClcRQ8cxe21ApRc1IJwEGkqztQZI1gwhCD0prqHoKIThinbSkCdvVZDWzo1Ric9oxX1Bv7zf/uPaXtdlvih3jeoqwr5HqEZxh63iMWWXP1WQBjWJ3TzC3RpzHTYsAwDSMZEmWgkojF8/pRF3WZNdkLTv3VidWwMSvu031aaVcCtA80TaSiUa0y1xuCJvdrlX22jC7tFHaiHLZFKONDDFWkDHGuBMwncRg2fmkbnqUeX6CI868CZ4v4IcCm29494TP3xS/xy3b3HOJzKw+Xc/aODR9pnV1rBHlUil42Cpdaiy3/E7YuliwrjVmo7LmyQKZVAEAMsEs1GupBCyuQsRVaOGb9GHTXCO3UDZnGGtazHFOycN4nEJpjVBy1xG+LxfhSpVpwDun0ugrVs3EKyz7iEUCxhmSOHWfMZlEUKFJHc7kbvBKKVogelJgLvtAtEKSNUM4/7svuPOcMyTZFzrnrNAAPb+eoGu3MEkNSvPylV9WJz8uS35WIRcc1VqCwYrvmpH6slGjVU9MTVa/L5FqjVqqEEiR1f9koqESaBmadNH2M1BdZel7Pg+t82JVlCBH80WXMmxzfd1yBhoqV+SeCRbnJkqWbbNCpVPlojdM8ywNadNc3GxjHKmKzOU0BhcSKjXpRS4kFGemhik2dVxRPUW9yvBn534JQSjgBQKbr1s7YZTKLaeTiRXzw5brOOnK/jZLlao1olxAq1TpWnGmIOsr1mvpXM8txnn7eq38AtbNrSLSGJ7wILL38GhU/Dz53CyQbSJbJpqVJ5AcdsJsqoFRJK4x7NZq7D4TkeRQqco/VXiBSee6VilR1bR1iKMZ2aQ0SbI2MD4tbLzbULpwu8xYyZppswvt0htRNkMpTRUYY0hyfatsOwUmsvUEJ0gX7grNzeRUErs2Ajxbt1D4xYWK01RBSO66kEe1BGG5EdXKpwdtTRYAxEohgO2+nXvQnFC7qEcHeKkzbJauvwUqiVtqpyYUrMY12pxtU0xeiG7lbtL0eA3bznqnpapRv2XzjoqbWYnZRcY4kNpp3Ea2dAqoNDHCxRi0kADn4FyaKFd2PhUC0pNIoxTS5zjsAxsR9knsPTvEv12wwtx/U9rQDXVka+N5RLW20pXmrtNciwUYqco33m1NHWY2nr1+vL84E80UuWc/FlLZUq/FomqjcF8rV6TPdQrFBCq+QJR9DgEgzkmXiXCZx7Upw/E4RdnjrqP8XpUA22pGrkqewGgtRn8mXbbFKuMMXHLUstK0JM6iWVEJOk3hKYX6yAszLppVrVZn3A/tTkKSNTEzVrJm0gfsg//RqDPhWSrOCkxzWtDKVj6tp1VaOBjtDLvSqTc/uzCJU/OrO/fv4bl+Q/kZhtUohRc2UoSAqcmydVmJ0vB0bB+kkS5MIleHNJnsarpwydmfcfVV25fZ/Mp4E2x3Z1uv2yJTyBW/567f7noaVrRsXwcYg9UwsgUjCRpZlCu7b6Y4NGdZ+lGBC4mUKyCJTGSLMXDpQ6cmjZim0v3/HxuPccTV30NYktj0odeZ/1suNdhWmKJa4zpx1KbA3RbAZ+nSNl3vXZE8WoULAHS+Xqu/tYklj6qNFhRCts58TGquKaoQHlJurutxMxmwkQY312lesWCvso+RKEWqzQ8Nmz4EkMlViNF6gihRaO5jLySDShj8QCLhZaT1KtIkAp+hRfDj4+Mz6hjQSRij2YXbgyRrBhCUPMT1xLVtAMysI5W0ika7nli7O7vQ3U8SgUu/0RMra+EANGYXSt8r5PeTKIVfkpCSuwjWSN2s5zan4sMTzDUj9XL/U3u8Ul4IWWscHCE9sKAE5nl45dC9+M0xb5uU5wbsfCRr8Vk35qJU7tZNl3Vj0wTy1LhdTrQAQE903dy9N0XJXLSrnaTp3KzF3O2YXS0AyGYq2pmNChqpSyNqO9sRpm5LqdRsV6qRRhQSXHpQqYm4xlGKqJrgNdf8AGHZw9AHjmuMp14rpAbbpg7rjVmH7farZulqTi3mhMsUwJfb7ndp73Lr8ix5qdKyNRonVAw/k7JYqZaloEwPLYF6ol3Be55QcsS+QMkX+NO2YlPVuRUfI5KDiwRxvfhdl8QpZDbLUMXmMzjTiuC3bds247IZnYTNnMPpLkOSNc257L7iL1SlNITkiJqW4jDpQYEkqpqDijI1WS+1XsNGwSZion1WVBhjroVD/lfSaC3GYLmxWLHFyxXD59fUYyo1M8DiKnRu0WAdx2DtWpJ3kMVn3dQ4qNtxTHjt9lEq1vK+bU4ZNuSsGB1rJ17F1GRBtApROXNbG3UzkS1WvKwUNBQ0a4zRphsZ40b88nVbWf0XYwxcKOg0gUpj8MTUbCnlIU000sQI1+H/738jKAlseu/ClleqEeXK3utN7y093pBsrRT4RAXu9tm2KZDXtfGGTALglWIky9ZrMWk+V1oU67lYtvSOk66m/l+2RZbW5sdC80LSs7Mi+FRrlD2O58aNQPb7EiNRgpIvECUKgfThC44/jRTT4pwx81pLDi9ri5JmtVk8idwi8TNFtLZt2wYpZ+zhb9KhZqQTM2PfZTNBsi67r+oaF6os6sA5K6S1hORIqibClNRGG+lBKwNc7JEGnoWi+Jwk5bu+j9QSzMpqs/Jpw7xU5dfJE7bwXSXmBJi17epVsCCEThs1O51k8btvyF0qfhkxNKJBRfFso19tZww2y1jj8oT3p+0wdOt+t6lZynJpRa0AnSuMz4rlTSG9gk5V46ct0y6qZYVLcwC2CS5rzIrkSkClCbiQJsolPaQJg5AcKtWI6gmO+OwQZg/4+D9rDmh9fewzsdKVxO2jWLXxwnu6+TpOuGwau13qMCuS15y3TS26lhMTSJUtkG90xyiKoceZe/W1aE0dhpJDZZ/jOOUYBTBY9jCcyZctgvcrPkZl/gdVAtP2jEEEJcioVIhmzZRO8MPDw/C8iVcqIHae7S3DRZBkTWvmVnwkykQDOGdmyRrJzV9mZhUmUZwrdDdCZeuvbOH77i6rw4SAUimE9N2BOd+MlHGBpDoKWaq4D2sSK/hBtvyO4C5q5Uvhald8yV2KsJYoeDw1a+YxBlsnn1/Xjqmkoy0cmll8ZiZX7b5/tJUg7a5ix9YarYIJcbTcT3Mlu7lOu9qqHddvZecnDLE1R8xYIeWZnyTRmKWoXaNTKADcCBnTvBDxQppAKwYFMysRSkElMYQfQjEGlfpQKc8aayZ4Lklx9F2/wWCfh/94y7zW1yo/6qhmavAsbdJ2Vsqg0rZRrELqkPMW6VLVMTCZ1UcFYVuxc7MOtYb2gpb97eqxGjMNTepQabMA+nicYjRKCz209urzsa1uIlr1RGGwZJ6n7aMlJEOacoiUI8gW945rcJ3gVRLNqE7wIyMjNLNwEqHC94mZsZIFGNFSHSiA7gU+9UCjaaGQHFEtMb2x6olbfNmSr5PaE79ki1GrLFogJohkZedtCwdLoQA+Tl260MpYPVEQjMO3dyV8ANnBss2BdjKwIXMjVwwtUatmedJNrwWKotVIueq20pNP8WmVmgrUJnkrPFj+UltpbidiE+xrust8L628fLn3E2+kDzWy6ypugmrCFL3bei6Vmv5aaVQDF8L0CkvNbMQ04Uh9jiQyacTjvv4Mfrp2n4YoAa4Wq13DWZdSnKgDfK4vFjBB6rA6Bp1JFe9rXZZHRzUwmT3vuApdGnCzJF2LirgO7QVme9B6H7Z/ln0lW4vgPYzUU8SpQiWQhSV2ZpU9bB2PUfJl2yJ4wHzGvDA0jYCjKlLpQyXxdvvjTSdGR0cRBK2yS7w0SLImhiRrmkrWYNlHlCiM1GoQnIELBqVMo0/pcUSJylolSERjI+7LdldmBe4urgA+anR7N41Ik2yGYatsAcVarPE4RX/WwsHLzUIs1AikuXRJm7XsJpPFZ94IayHNr2WzZOUXYwbshD2e29+Y4QmNQqSoeD9N/7NCPVVjbUp38NQoylnx3tAS3dpJijVb2QNp7Yrc7V0yzrJeYJkkpjG0Nm0dtIqybTZtKMF4Ap1KcM+HVgJaC6RCIU04kjjFUfc8icE+Dz98Y7H43AmVLYBvNysxH6Vq2+ahWbqaemu5KFhR2nQSu3UTXerQ9jJrbkmRxhD/P3tvGyNLt50HPWt/VHXPzDlzPq6vb2znktjG37GMTBSubeIQ4TgQOVwpSHYMWFgQMJGIDAhEUCRAyi8H7ASBZWxAyOYHITZxYoJlo/ARco0SxzGK7QQniuIPHHzt+973nPfMme6u2nsvfqy99t5VXT3n451zz8y8vaSZrq6qrq+urnrqWc96VhzBroczZtJAGpB+j4mBs05E8HMbf28I3prSZuc3n1URvOoXnzkDMuNeWicMI9zqDDGzWR8UbdazZ8+OIOu6gnA0I70iPtAgy1pbTOnuUvyXf7/eFDpn8OTZTtisTd3XxAxrDXbDDsZ3GJ8/LelCFb63N2eyL/+EOxe9z3sXapXhPMwBUDXuIvq1gzVUANbFVioMH550cNZA8ZUBFV2WIbmhkawUyM7kuo/XGQKuJJaYOoAnRq+1IXMdBqSSc/qZ6nElw3PNFdfPt9hIP9REYSsbFqtdV/mUfs8zjddVOq2W3ppotAQdKoKUXosRVfyeknxRCUUUb7I+KQEwzAAbJAYYDOs6hBRhnQczwEzgFBCHiN/5IwGf+3CF//FjAPmFtOBuOzF5NXMt1sxDbVGLpaBKgZufCeAb0HYwddi61s9Shw4JMAbOSKWhZ2CcgS5Nka8cY+U6fOpSlqfpwy5X4vauw5PN1DEfEJBLRm6MvhdQ5bo1Uhjgcrudu85mPX/+HOv1vo3HMV49CDTRzh5jGh9okHVXdVmPTzs820rTWGtIwNRG2msgovQuDGMseii98au7O6BgYJnpe920whJT1o5TnywZT7XasAFd016FdTlLFg5A1WVxdwo8u36xu7JXCoJK65kCqqbsVDuOyKJN75k56NEMXQG5+yyVsV1OF2L6WcwArzJcZu6jNf0elTlTjdbi93yQ4Fr23SJtRi07mdsFJflekwGyHxcbIGlPRQTEVCsQiR04BumRyAkpOiQnxy4lQkqMXxkTfvdPOvyV34cChFoD3DZSk2Jcmj5v17PkrVV6IboRZn06YbCAnDpsj8xcAD9OrRfY7bMr3lD56nbgiRYLAHpnCxDT8XMRvDWEe6cdLu30oXLYBbj1megms6WDGTZ33jfrCLKuMY4+WVfGEWTdsfjhX5cLxxATOmfxbCvgyjoqbTZ02FiDlGJJEcz7Ci7dfF8VWB20arBN38Ku9i2sn5PX3XacuL1bQ3jn+YDHp920wrBBVZOfO6di4TARvr8PIb/Gx/7l75b0l1VQaCeMUnmP+j6vvb4/aGCa56H2M9x8B9MKwsPpP/34YeH8nrP/TEDfbveE5QJw0JOLMN23dpaSOiTxblOvUwNQAtiIqF4qEsX6QXTzLOV4MSAyw9gEwGOEAxEjjlKFmFLC7/pLEV/5effwA18uYEFbRHFMMH7/shd3U7BjF1JJvNsA6ot1hUBeU4Z2If2oDbCBhbQhRCDvcrsezk8Qu0aPlTvyoGczMSQ96xwuhgBvqIjg9fdxtpLfz5MMuoioWDp0aucwoLTb8avTO++bdXl5idPT/e/wGK8XRwuHw3EEWXcs1p3FxTaUNhudM7i43E8ZAGLfMO6mDaFjfpqVFjvik3VdZqTAflsdjUkPw+YH2w67A7qsls1qGaxi4QBAS+mBRhj9PuJj3/7dBShq6rNlp/T9RFc1ASzI87bnYGPuWUbVd3UZDSjS6ZlxMq6bAa25NcP08xOrDl0eKQNWtVXKaNb5lgDdDGxR9dvicvy5CuQ55XRpnpYrEClR3jZIKhEQYJUijG6HtQB3WSgv+i0wMDAjBEKKjJ/9paf4hnc8fuJr8ppzr6U0hjLMKcGu9sFO3O2KjxoZs2/z0FQkAgAtpL8L6MqA3tybAreSNtRG3G4flHlLiCzn/uW4zypLY3T5vF9gEz58r8eTy1Gqcl3E5Wy6dn7wq5OaNhyrNuuuxmazwcOHD1884zFeGIT6UHyM/TiCrDsU/+vFOdYdMISEXXZzH7J9A3O9AMcgeqztboB1rtwsl4xHr9Mn6yCrpWxMA6jmZqRVizXi0ancrKyp/iymEV9aQyi2mpwqwGoaLyOlcqN9lSjsVWb7KsCqIKruT00b7jNaXIDKvBrQGAtWrRW1uivbgCKzB3TmTJmmEmV4X3u4lEos7u6zatM9poymaVAZv8Rq7eu4BFwZEAjMTVUiRyCJ9krGJWHKjIM2tE6chDmMjAjApJTBrhyj5DxsIoBHpOTwTkr4p/6Kx1/+JwakMSwDqu30vF9iugqoMvZgW5/JXi/Mg2zjsJQ2BBrQpd+JmW6rM4QzY7GLCdGgCOTv9RbPdvK9PFx7XAyiy/qs+/2eE/yDsw5PM7PdMsdhjNJeZ9jA+A7W3W0B/Ha7xdnZ2dvejLsRx3ThlXEEWXcsYmLExCVdaM0UIIUxwjrC9rlYOoRsPDpnNAQY1PHVO+vVUoYqcjcHAJYGGYtxN8D33Wz8AfaqFclPwFnz2XY5/OqAah7CXrkCmhRkFRF7C7AyCGrft/MBckwFpLVsVWWZitZqxoCVeXgOhjT9l4FVW1U5MbvkKbjjF4MrHdemOIWd4sl8yx5ddb1liNOE0SqTmvOVcjqROWRNFyTFiCDnEyXEtINFh8SceyEGJHIIIyOlEZwsnjHj6z/h8KUfeYDv/ein8rGR88F0+5fANObjNmIRlPFuW4FQisJyhWFiDcK7bWW5jN2raqU41sblZBZBlysMFWOBxIIzhD6zqaNjXCxYv6kIfjMSHpx0eHI5A5RGwJbvXfHNCsMGxvnSx/Quxna7xb17+9YZx3i9OFo4HI67hzJeIe5S76qfjR/Cw7WHNYSYGJ01GEKENdMnVuctwpBgcyokNtWVS55VbzLCcHU6Ym7boJqSSTudBgRcDAGbUW0Emh89JySfS+9TWqz4elF87Nu/B2ScAMZ8A1J/MdutRM+SxxnnCwCTedv3XQFjtl8tTjOuKynHdrqui4yFsTqvBxlTtqkCwAr66l8dL8sxRXi/P890GUAG3mTQAkf9U0iry1yO9jvJgGxSWNEK9pPYPGQmUt5HGRcDUgoCABIjhgFx3CEMl4jjDnEcEMaEFBnjLmK3jbi4GPFzv/YM3/r/TG0e0hAmf/OI22HytxTanLptUr0XYdybrqJ3CltQHGG2z0BhgNk83fu4N5IKt0a6Gazc/k3tQycdvDXwhvBoNQVtD/K1wWVWeOmm6FcncOsz+NUZjOvgstD/a7/jB5b36RbHbrc7gqxrC9H3vam/2x5HJusORWRJD647W5ooDzltGAbVoIg5aRgiYqw6m7fhjzUfruNqGpCaG0Jr4TCxcxgETJ73DoYIu8AwSDj1rvoXtWlD4JVSoF/zr/xnDQg6BF5mVYPG5ko4u5fym2i1FtKBBbyQOOUb5yeMlrSiaTVTDVOW2SFhEOuNNrUGtNyI6glQUf1yZCNUuiqd2LTYyVWOJWG7V53YOMvrKosQvvppyT4y1FOLAHBkMGl7HgIjIaYkeiwLUDKI2X7AuA4BHpwMmFkYsZTwK5zw8b91ih/5kicwCw8TLdBaYrlUIK8pRVpozTIBUkvTL59W4Xwwi95tlL2zkl8vemdJ2yjGWW+yd9Z+eGMOpg37toI3/97GbGhquzVsL5YOd9WcdBgG3L9//21vxp0IOqYLr4wjyLoj0TuLXWauNkNs2nTUYO1faKkALOscwhAxZyyuite98Lb+WHOgFXcb2H5dfqy7TUC/rqenfYkf8UFDvLb9y+oEyILk9BIVhl/7R/6LylB5X4EV2SYFaAsAq8GwnWg+JNXKuYqSJ58pqTdNESqgymDJaGsjV1OHNc0oWqvWS0vJohZgcQFqCW2VIZlD+69i+ZnD+2z6nuM8qg5tmkpUIDnLee1JuObpRMpAS/sbUpkmBvcEsmoHEcE2iZ6NCCkGGefEwDQlLrrETwbGN/38ffzYV7xXtskugCEFXCqAX9RqjbWIgoC9bgI8jkhGQJfBIa3WCGjz8uT2nOrVO8s3Ng7zUCNebwgP175UHd5febyXC2A6K6Drw/d7/MYMdAFAt/YgQ0UAH3ebOyuAH4YB5+fnL57xGC8Vx3Th4TiCrDsQf899BB7A5VjByGaMsHn/whjhOoNxJw2Xh+c57ZY1WZPKPmMRl8bF+MafaKfAayqCv7gccXbiyz4B8jR/MQScde6gLuuwRcKL4+v+9e+D7dd7jFUFWmYCripQnYILU/Q2GeSWGzEXXVUrTG91Ty2TRcYIwOpkeTKu6q/Imdn4vIyQ12On7JPtVtnaYMpkFUaMRIQOAJSHqIyp2KvVajFq8+g5g7UnnmddSgvquADMUpGo2CwRWj8tgMTN3xiACJQSmAhx3MGwAi6DRAREk33SIzgxnhrgm37+Pv7il4lvWhynFaeLoGsMoFTPvyXQhTBUrdUsLZ2GbdVn6Lm+XmjxlGJtaN5Ebwm7yKWa1pYTnYuFg4azBt7uC7nO1x2ebgZ0zmAYqGiy2lABPBl7ZwXwwzAcqwuvKYhe7iH4gxpHkHVHYhcSng+hpAfbdJrzFpuLAa6zuHy2k2q9ArByWs4upwzfRrrgZdrpHLJwaAHWNiS8jhPOx779e4RV8x1st14EWBX4THVKJaU3Sf1lAJLiFIhNbBWqDUQKQ3GCt816OEaQa4TzzY2YmxpqESs3YvpJWnAqricTWwKssGGc5ydkUGRsgUOUmTY2EECg686VgtOUYmtMWrdH5zmcpgTmVJeK5ZmT+Gmpb1aSasSYBhi2ICOmpQkAjzuxeHAe7Hx2iGcwS+P0P/Dz9/GXvuK9vTW3oIuige2WQVepYr2i8XTROC6lBfU7zALzuY2D+mpZn8dHxtqboj0EKtjyxsBbg3FWNavXgsdnXdE1anSregsYdqFoYNQzSzWBdy1lGELAgwcPXjzjMV4qjiDrcBxB1i2P3zj9PJwDeDdJSiAmFhPCJhsQxgjnDS4vBlhnSpqMDCFsxAsr7jbSKLapJpKL6/uryjuUetT04FWpySUKugWPTzcjztdy47I0c3lXtHVFVeGSJudj3/49cOt7RWDeslhTYbnaNwhYMr4rWilA03WHgdi8FU5hqlKEVTPKFEDGIqljPbVMEBdGLI1D2a6JFot5+po/Wy0SAGIWoGRbFsxMNGu6XZoe5LxMIgMmFjusDMSAFhpxTtXWlJ/qsQimILu9GzhXjZasqtFptUCLxLQUptpCcCIQJaQQQZxAxsGAwZGE0SIHIiBSwgDgCTO+6Rfu4y/8o5+u58WSFmvIDaGtXZzObRWesRPX9xJhBOs5MA6LrX9a0MULwE0fKJwlnFnCxTA9v897h6e7AG8SHq483t3KdrcO8NaIA/z5WYdnDejS9Py4q78L263h+i3GzVKb6dsbIQQ8evTobW/GnQgCHUHWFXEEWXcgIkt/M28MnobcSocIF9uaFtzuxsJeqSZL2+po6HAar6dse97DUNaxfMzbikZtEK0xbMPkiRuYWThc0w/8Y9/+pycAS1ks4zxMsWsIBwXvbVUdZ2BBZiUMlJmbkWqq0BSD1qKdKvN7pBRgTJdZrAqkAAEdc4G7cX5CDqkOroArBVCMImxuo4KhvI36QqitfQgTZmz+yuBJCx0FWjBGAB8ntFDsIFOSYv5MXjpnIFp6IRIozybO8ADIIIYBxjgAQQ4zEWLalWpFTg4pZr0XAe++N+Cf+TsP8ONfKqnDVotFC9rGeRXiolYrjDWdOvrlXorjUMHYQjsdCkPRalGKFaA1MX+42J9Oxfm97ZDQ2jmoA7yG7zuEDeC6NYaxniN3KWUYQsDjx4/f9mbcjTimC6+MDzTIuisWDpZE8PospSJ8B6SdxuUQ0XcWwy4gBpQ+hkBle15F9P4mIg4buPVZXv/yj7UFUq3z+3V2f+/uPQIZ04CrDmbCYIn1QZsGVE2W+lYp4Ekpwqi9gfP5WHNhlchIrz2AizdYSlJRZzqLlK01bP5spDABZFObhCqeJ6oCeVmPdss2IBbxeQUOPGHQ2lD9lzJPLZCqzNa0wnEvFBxp2xzOhqVk9hnGAsYmW1HHFfPVymoBKICLDck4Fk1YQoCBAyghjlsY48BE5S+RRQwps3Cyj9/0iw/xY1/87nQX5oa1SxWJ2VerpA6XzEr1wcWYxdRiAaUlBbwAulLVWZrIRaqmWi1T0oaER2uPT2fx+73O4VkGhtYQHp12eLoZF2+Mugy3PhOA7rs7mTKMMR41WdcUhCPIuio+0CDrtjNZu8e/DecAPr0JhckCgLOVw+UQcbEdcdJZ/MYT0YZYZyaarJjd4NuG0IAwFm+josgcYKeWvFI+fTHg0dnCzQq1E8vVK5veLL/+j/1gBlcCqoytAKr6V/mS+qsVgj6Dn+xppdV9EB2WKWJ0cS9vAY6Z7Zs1Bilx7itXS+xTiHDeIcYE41z5TApxZtMwFHZM3xvXCYM1cZdHETbXyr26nWX/3Bx8NWCuOX4TN/piD2GqCD4Pa4qQlaGaWzs0rBX46hs6cwISTdoSiYeWpBEpAUxRaF4yYJL2O+ULYiBFKinLYcd4khj/3N99iB/9wndki5ZYLE21xzxtIStYAVU+vtvnk16HHAZQyMULs4bSzYry674AXsOgubk1/Q01rKktd1S39fiswzsXrSSAsDr1aA4jhsbKIeTzxPXrO5UyZOZj78JrCqLpg+8xpnG7Ucb7jNsOsgARdyuTZTNte7EN2IwR687h2Tag62zxxrJNykCHD/lkTVKJr8D6LS0rjtPU1Mt4c5GhGQi5+odsiGDyXfPQrLyt3dv0JtoCLL8+k7+Tc9huBbc6qynDYuUgr7ZbwTgr6RbnYaxUajlv5MLT2dzuB/C9g+ssrCVYTA4KrQAAIABJREFUS3DewnqD4lNkZV+dtyAj343zAtSsl+MknzXFSNY4I2DQ1ipGNT8FAHIeZD2M9c0+1LRkMTq1wowR2TLvvh6tzlsMUK2XCsv8qrqzsozWuHRiYqptY6wAq6Xf4bwZWtIUY/km5b8almYfLDEt5ZwWTNnKIZRXjhFx2CKOW3AKCEPCOESM24gwRrz7bIdv/gcfkmXHNPlbPJ9eNF23KYwHe2ZyGEEplL+lKNMXpwqIut9beEsH2V3VM6ohKSBarcl6iNCvPfq1MGkum+y2KcPbHszSRPzk5ORtb8qdCGWy3tTfbY/bjzLeR9xmkNV9zhfirHNYOYMxMVy+8WqqcO0tNkPAusttN3axsCoKBoDD6bm5uebrxCGQ9n5Ski/TWudFwdvn5cb+9X/sB2H7Nfz6FN3p+cR0VF3c/cn9xtHdZZbLwzoBPb53ApqsACNjDawz8tpZ2C4DMUuw3sJ6KwZ+GVQJsMoAiyCf8wKcnFfnd5OB2QxwOcnFyTZZAV6uBYVTgCXL8sVVXgCRaUCXaUBVdX0Ho3iDCaBq2y8tucObZlrt3Tidf2qmKgNAobNm5x7zlPniJuXIHHOqMBWRvjBrKbOICZxYnOJjQIoRnG1JUmSkxBh2EcMu4tefbvEtv/Sh/fMmpgKaFs8rnRZG+VuK7HJ/FeiiFMq+0EJXhMlN7cB5b4iKZ5aywlokovH4rJ8ArnloCr+s9y1ICd5EjOMoDzTuA53Iub6gNwewXgVkEdEfJaJ/QERbIvoZIvonr5j39xARL/x9ybUckyY+0GfZbQZZGpdjQm8Nnm4DtjHhbOWwGSIudiEzWSNCSHDeYNjFkiYElgGWMbbaEr2PvmVXsWBx2GRjzv0YdwFdczPYbUf0q/10yusCLPmAbM9v/aEt3PosP63XtjTTVjYGruskjWeogCBmEU1bazLpQgJ4WG7Y3WrqjcWJYUoFX06elfcJzkslpzXiZh5DhPUWKaS6DoakDG31nJJU4rQxdBhiWTYgWi+AkcI4TXe66hw/sVgoGi2uFZOGJ/NJerDVZlXbionyXrdMKxObfn77Ta91uLFuaGwgkFvtTFKEZXtq5WHx60oolGbeBXAcSwFDitn1i3ogCvsYRtFpffLpDv/CLz3Gf/fR31xMG2q1YTmlDnlmaTi/l6IuGyY7MmHvzHgpraAK2HoO9svMiyUCkaZpF2epacMrNI9tp4Wy7Mb9Pew2d0KXtdls7kS7lpsSAvrf7r2UiL4ZwJ8B8EcB/NX8+uNE9GXM/CtXfPTLAXy6ef+b171tR5B1i+NyjOitwbvjCG+1olDYq3VnsRli8c0CBBCkID3dYkwYd0HEvy8QvZOxr9SG5lXiZZ+OW0D4ZDPi8anoseyrXivzd/7Zf/ofCoO1OtvrD9gCLpdZKCIGGUmnuM6KRQCRMEeqw7IGtt0glrI82XZGyroZ4wkmyXwiRLdIWZBuDCGG1AAnwQkMVMClMpzYgilZVxh1XAV31gIxsDBRVt3XFeBVfRkAcMzvrQHTHFTVlj8VTLWO9bP2OvrdkSnO7DByXET7JX5Zasmg8+634snLWTA4FbEZyraVY8FqnmoFnBGDVcsWg9g65GKERASwR8x+YtKCKuDXnmzxb519Dv70h359uh1LWq0xlPFs9qtq84qLXmuxfyYnoO1CsCDV8nGH5FegBQ2WxoO1w/MhwhAhLZjxWkN4fNrhyQHxexvtA5L1d6Nh9PPnz2/9tf+mxQ1I6/3bAP5bZtZ89r9JRL8fwL8B4I9f8bnfYOZPvckN+0CDrNtaXXj+0S8CMzAYxuU4lqdUQETvv56F7kOQC3bfSVuR7fMdwtje/ORzYXMhF9MsB3kbaYF9KwF5NURl+LXElVqFRqYMP/4Pfxb+9Lw0wjXew+VhTkHGkaT6DEmqLgVhkKzLIIezZgrSF0/ShNoGhkT0rkCJGZwA66gwUnLvFyF7jLEwWMJqZZYqMRyZAjATzTmi6oPFIKSYBORlJ3UGAMuIo2jxlKyatqoxBVgByOzWFMzU9kGZuYqhgKFi7dB4hMl4zsAqNqCJ6+eg1ZD5fam+mAnpywK5pCwVmM2+aAFxpNusgErAMKHx2EpiVAoywm6RQUwJzB4pWlBvEQNj2Ab8rV97BswyhxwT6AU3aU6xAKYlPaPum7bloYy5KGyLIWnRZ8Xsk9aALjUkLQCfgLSAu0y2Z7jK5sQawulph7ZPKFAF8KXFjpNtve1WDu+9994xVXiN8bYd34moA/DVAP6T2aSfBPA1L/j43yCiHsDfBvAnmfl/u+7t+0Cfabf5aSaBkZixcpIqvMzg6WIrF8aYr7gnncWzbcC4i5MLqKbYjKFSTfg2wNW4vYBfVe3H0ja+TkxuOBPtj0V/71ERtPvT+4XFss4hJQNrlcHK7B8zrDc5bSc3c9870Wxbm9OvLIJ0C6hGSoKRkuyXtWLboOyQs5IidOpPlurnUkhwvqIqZa0UW9SUoPA1MSR5n4GeVvnFyGW+0jyaRJ9UmBeihtlqGCoyIFt7KQooYsBYWauxgDJhDaslYKyCrkPViHp8BOztWwTM05hlPDWMVV2q/C9AStJ+MPl4GEgFnvYIpJRd4RmINFnMSECK0pZntwn4xp87xU/8jud72zEPjmmR5eIYxSUfyHnLK9KGwF7qcDIeECuOhd+GoVpFONdqadsdawifdb/Hpy+Gg3ouQM7XrnfY3H7iai+ePn16BFnXGJ8BM9IPEdHfaN5/PzN/fzsdcuX95OxznwTwTx9Y5v8HYbl+GkAH4F8C8JeJ6OuZ+f+8ns2W+ECfaZIGIvD76G/3tiJEoHcGzy4DTrzFLibsQsK6s4iJ8WQzYt05XGxHbLahMkPOgHIllDFUru03QdR6XU1GF5/ox0uADD78x/8a3PosC9rPxYfKiGhcQFAjWs8FApQ1U1oFqIBEmSuZvxHk6zALW6Ui9ZQSDDGQwVrKN2WxaZD5iER3ZX2jqQoRzlVQMk0nMsIYmzQlFZYshWxnYGU8kwAhIoNENZ0oqcGcviRCyqwfYQa6wA24an2ystFoyqCo0ViVAzF7bVmqKVOWMNV+zRiyyW9VaSue4K3iBs9Jeg02zvDQaRlgGQiTJW2Lgux/EGuI3SaiXwPPNwEf/8X7+NEvru13WtuLNjimxTTfJFJsLBoOgK6sxToUxAxrCCeGsAnL8z1aezzdhStT6tpup7V1mEzv1gibi6LLMu72pwzfe+89+IXelMd4vSACuqsccd9/fIqZ//HrXCAz/yKAX2xG/V9E9NsA/LsAjiDrOsMYgxj39R83NT7y+VL8EFLE5S6JDitG7JoL7bNtwNpbXOwCdiGJfUNOGcW4L3pfcn1/v6Brye39MxFJ7cnR3HdJ9EWP/tUfRn/vUQOwcrWgE0DFieE6W6r8rJMiAd87qDVDzLoo4+jgsK5chewm65HEB4uKAaZ1tgybbN0QgzJbPBHAAwK2GAKUSwPpwHDOIqkLet7rlJCZL/HnSolBVtJu0gqHsw6Msgl71osp6CuaMVP+UmjF6Rl0pViNUXP6ENYU5gt5XTKdq/aqCPDVbHSuq6optcXUYZ3rwPi8r5xA2QBVqgxDNRSNGZATZY2WKSlzUAdYRhjl+3pyOeLbfvkhfujznzbbN7NuuOK+XUDj0sRcDSn7ehWDlSZ73IYu90XPKco4FAuH3DB6sqzZQtz6DGGhyvG2xrNnz9B1yx57x3i9eMuarE8BiAA+ezb+swH8+v7sB+OvAfiW69oojSPIumUgCwBCYjhD8JaAUQTwa29xOUbExCVFqJosANOehcXpfarBiAsX0nSoFP19RAu+zDUBscS8J/JdO1NSQQ+/9b/B6vxDxYrB9euJ1YLzorsSHRbBOAFdvneZ0ZJlqk1DjDHbNkiLotVpN2FZUmY6lMES7RPDd7XCUEEV5arFtpJQK0BFA0YIYxAWkqisJ4yxAC6DehzDGIqXljZEJqOCLEIiRpyl5pSJK2DLyHYDooMCAdYL2GGSFOpEdyWfhrrSl+U6n0GaMFxERkCYtudBA0CMNtJOZZ2l2TTlKsMDovg5xmp1W1VUn20fYtaRJe1/KBot40w1LCUC4IAhwhhp7fSrn94Cn7+/6nlcCahe4rMFTL0gbWiWpuUocoAXsFhXhVYb6tE2rrsT4veLiwv0/b6j/jFeL962GSkzD0T0MwC+AcCfayZ9A4AfeYVFfRUkjXitcQRZt0yXtXaETQC2MWEbErwlnHUO71xOL3xDfsLuncGQmSzTGBUeYrLedLwMwLquVjmJuUCP1fmH4E/OsybrYWGdFDSllOBXDsZKtaDLxQJE1X2eCAKwMhgSi4WYgVg+j5jB6ltFVIY5MbKJO1Likt4r7XaAIpif2zZI2GZYU4ZVIA/mUtRgrDicS5CAJc5O72UeTdNxnaceOJknpw6ZVTMVSnpQG2AroGpZqFqB2Fo2GMD5mk5sKlbJOSCoVm2aPhSF+hRcHRLFz5FWtXsgqTA0jTZNhHIFdIGFBTVWekemzCSmaDHsFOgF/L6fXeEn/7HtgTNuFq/SXP3KtCHX4QVgZQCceoNNqLq4yfRGp/Vg5fFku//gZI1IJw4J5P3qLIvfhQG6zeL3i4sLrFYL1Z3HeK24IQ2ivxvADxHRXwfwCQDfAeBzAHwfABDRDwIAM39bfv+dAH4JwC9ANFn/IoCPA/hD171hR5B1i0DWb/+iLwUARGZYIpx2Fp+8GCZM1rqzeHopF9HO2WLh0PpjvW5D5VLm/4p2DmmUHmifyWh1dr/lD38/+vMPlSdxZaBsJwaimia01pQKQqkYNA3rhzKvcSRtbnIq0bkKsJS/KEV+AGJKBYTFlLDK4GjIIFmHOy/DYwOuKIuwnbFglkrBecrQWCAMIXtt5Q9mkT2YYYxFGCO0IbK1FTyxyppaUXypyGQQJaTiyTWzcYgRxjoBJE0/Q+t7AV80Y7t0WPsiWnF7n1pDpFl14VJyrPXsWkodNmNUO9Wc8ikGGGv1m5osh9VuIkYkGqEVjTEyaEzYjhEf/4UT/IWvfEmgtbA9wOG04UssoDBdiyzXS8ahm+K8Efu4O9zW57bG8+fPsV4v+/Qd4/XibYMsZv6zRPQYwJ8A8FsA/DyAf5aZfznP8tHZRzoAfwrA5wHYQMDWH2Dm//m6t+0DD7Jum41DSCLWDYkxBMaJN9gGi3cuB/TO4NPPhdFa+wqwdkPEsAsYNgFhFFdrM0sVtlqsqS7r+tOFh2LcbuGbJ8xDRqTzaNOEzM2DP4CPfPxPoT//LEkPug796VrYq87kBs2A8ybrsiRtKMJzW1ItrR5LQJiwXH1v0RWAVf6hswYh30xjSlhno8qYEgzV4XVnYYkwBAHHhgRs9d4BYAwNMyXsFRcn+OLekFIRwqfEgOXCThnLCLkDgLVGAJSyTSlJQ2oVwFP1qUrNuASCBeXKR9N4TY3lPLHGSgqpAVTKeLXpw7a/YdtUm8hKE+nmc3u+Vzo0NyvV4bkkqxlRWbFU8mcCwhM4CqMq9g+54pCFqSupw6CpN6k2fEIHtFOvEvn8KOzc+1hUNdZc8MQiKgL4uW+WCt6vMpL0vcOY8aRaUdz2ZtFHkHW98bYtHDSY+XsBfO+Bab9n9v67AHzXZ2CzjiDrNjFZa29wOSbEIBdKa4DLbU0Lqo1D5wx2IWEIEZf5JmuMGGdiFIClHjit8zEZ+8YFrnHYwnarV+qFeOXymvtKq0HuM/jpzz8L3el56TPYhrbCsY6KLqv1vALk+HSdKa75nTMYQsJJL0AI0MoaATadNWAwPIT9gDWwRiw1rLEIMcEacUiOUdI7nTMwGWx1zsCStEfqnEXjK4oNh7IevVfGlKouS+0bbJM6dFqxR6BUgSUTRPyewdWcvQKACILJnbeIEmIDBQwcUggFbNT0oYD85fRhNSytjFVeb4gALbm/A1mcJWyb2U8rygKuOEmQGS0ykgrVSsqUIJlDYfuk4jADnmRgrFweUxhhXY8QJF03jgnf+NMeP/E7w6JlwxuLK6oNgUZKBuRzbn8eQ4dTO2cnHheXjZ4uz+dXJyVVqMa9txlkXV5eHptDX2NIrcvbB1k3NY4g65aArC/78i8HUO0JWo8bfTodI2PdCYPVOr27rMkCcpppVOHs7f5hqBcYMAVbKd9xv+AP/+fwp+dwq5NG4G5hHTU9BilX/ymrZWE7NR81+XhG9N5mgBVxvvblnt61KIgZPoO7GBOsI3Ra0WmBkBJW2Z9nCFF6HxrCLn836050V8ps6XKHMYHBWHUiDNf+lEBtHi2NkQFYII6hOMGLr1Vmn1KCSZnpMtllXp0EGvaqAC5wSScmznqdbD0BIljvwYmR4lhSV1Ukv0KKA7QZNccIRqzidsTSrFrmcY19Q3WdJ8qVdxNNVqP1yuak+0yW5lvbr0fb7iSRN2VrByIS4bu62oMKowUAxvrs1s8gADtmPCPgn/+5Ff78Vy/4eOk1JbNntH4zN/QX/XpfBv+11Ybt72kprqtI5W3HZrPBhz/84be9GXcnbgiTdVPjCLJuCcgCBFR48ZvEMGurkZoLZAuwlHkBGgG3EYA17EJOG1598bwJHlovGynror7gD/5HOP+8L5ZKQm9hc4NlabRcU4Mm2zT0awciwnrlsAsR3tviObYuACvhfN1ltygADKw7BVWZ1XKZZbLiIm6zFURIjM5YWKqpQtOkChU0b4YgYCovfwixgKtpcFkvgwFrsRsEkBhrYCzn9KGwW8VCIu5XFs6D1MCzCWNp4rKeikU7A8lkK4oINKwVJWnjk+IglZZGtFrMUQTmGUglVOZricmaC+HVNqKtPDyYRpwJ4tVDC5zAaPYpJTARiCxSkrY7AMCRincW4JBIgFoMCe9cDCD7Aq3hC64vN+m3ZSfygcM3Teu7xUrk2xLb7RZnZ2cvnvEYLxU3RPh+Y+MIsm4JyDLjFvArbAJjTIzeEXIbNJxkTyygAqzOGXTO4nKIUjlkVFfSpHzai+qB9N1Nugm8bKyswelnfRS2W6M/XRVRu2qxNDXovIjJ3drDWiqg6sQ7rDuLXYjoGjbrvGlcrYeuUwG6leEQqxbLGlP0WR7CPm6GgM5VvVdLhLXaLGWruqY34naIhdFSvzNvBZgBwlgq9RRTKv5UidIkdVRToY0Tfk4RJhXAI8LCZGNTll6NGXwZSzBWmlcnliIATgmxaLAEVFEnoEoMQXOi08Si0yr9ELPYPEXVbrX+WRlAlWrEpiUQWYC4AWhzVolQjUrnQKu1dzDFoFTWr30c1ZxUl8cI+ZK5yzqlb/yrFj/xdXbSIPqqdNqc5XqtKML31/s48OrMg+3XtxpYtbHb7Y4g65rjCLIOxxFk3QKQ9RVf9AUA5F4emWGoujyfeINPXojo/WkGWqrJAkSbpDfsqf5qCrZum8KiTW20LF5MwFd/25/B+uFHYLuumIsqwFLrhdLaxls4W1Ml68xgDdk9XwsIzk86DGOcgJ4CsECF6VKgBoi2aghJAK+V7+Fs5Up60BqCzezWrjBWzU5m9opRGS0FV5oL2gxiPBuTAD3pwcfwGTQ/z0aTxRDVias9kCvdSuWgLJaK9UO1gWDmkn5MSIXlIkMw+U6fIJovGV97NhIZkF8JgEoR5Drpfdg0kp6Drcpw7QOotlH1nPXabyB9uPKwVh1m7yxQSR+KnYOkx1IYhHUjQoKIniIBICAGwpPNCGD/QYSMbYTiy+2BXsRyvU6snTnoAH+V8/uDkw5PLocXVh7bfo2wfX4rH740drsd7t+//7Y3487ETRG+39Q4gqxbALIAAEQwHKFb21nCEIHLMWE1E723LIiaOVtrkNviTsDWpGF06/zeNIx+0/F+LthttVRixmlncPL4c9Gf3SvAoOudgKnOSM8/QzDeoessOpt1ViediIVz2m/d1W06P/EZaFUmSy0iOl9Teae9ywwWZVAVcLpyBRidrWSZhqjc8NQwdu2rkF4ZLW70V6VtRXZo345SpScWEATPArAUXG2GIOlldYuPqbi4U0zZ7d1UUJUZsKkeq1ZOxgzDDaiyZZlVEjCFUplpUAXjqruilNmqLIzXnojG9+A4oq1EXAJdjFg1Tk37HUAB0xJ7tJA+nEf2nlLAKT8NrlWG+XjGMOYUogBH68QwNo4Rv/d/H/B//P6r04YvW41Iq5dgWK6wblCAdZXe8qqehcDhhzENaaR+2x7LagzDgPPz87e9GXcmjsL3q+MDD7Jug4UD7S4Av0JyPYAIajRZvTUYY8LFEOENYQMUJmYzSoVa5yJ2Q4S0pFNdFi1fQLVZ8cL463bGD8MGrnv1UuoHOW03YbOYcdY5fP13/Fc4efy5BVTVHn8S3dqXKkH9/PlJV0XtJ74cP0vAKg+fr32ZR3HdujPlvt1ZwuUg4EiB2v0MyoYR8Fa9sVSDVdmrVo9lCFi129xYQyiw2wyxeG3FqOlBYc8EXEm7JWup9D6OVI9XJECpSxW2636kArpM1V1ZAnNmsjgVJpCVxQq6ffmhxQApxglbVcBW1mxNOgkomArjIsMFoGi4YA04ynzMALKzO3Nr/5DKOFk+9jVt7X6LCj5/NgDGFd2WSL3M3oNAilJtOWyB9zALnfdlHh4aU9Y3EdX5/QrQ9Zo3yK/5174PP/X93/Fan32bcWSyrjmOTNaV8YEHWbeFyWIS8bQ1BERGZwmbfJ+KLGnBMaaS3nqyGbEZIp5cDnh2Oe6lB29jhIXqp8hcKgsTM1bnnwXXOTEJzSBL/qSFjs8i9piEmVLNlQrcz1ZOgFBOG+6yFku1bjqsVYRgLmzYmRo5Wi6ZoBgZ687BklQXqsh9MwSsO1eWUfVYFXCBpVpUhfabnA5eN2lDzpTY820AM2PlLWIiRKvCeCoM1xASxqW6/pcI26RG5VjT1KjVZI1WUpBDsM5JE2xTj5XNqUPVZinwKl5aWcSuoEorEiegqzBseZhTI37PrJH6b3Hc02RpqLWFAi1OBlNRvG20WpxF8MrGeQAGoAQbCL/rf3qKv/4HHx5IC+a0YbdaBlTGlnmYTDUbvWFhu3WxeLnNNg7jOOLhw4dvezPuTBDohezoBzmOIOuGg6zf8Y9Iz0vilE9kzqlCuWGsnMHTnczbO4tPPd3g6eU4OenJEHabsQwvxeuk7N7GhbayT1OT0hNv8fF//8/h9NGH4LxFt7KwM4DVq3YJokFpTUNb89Z1wyQ9WHcCtE58Sd2drRx2IaHLqTowcJoBloAfgs/VhbAopqIKqoYx4rSXYRWtt+zVkB38axWjpA3XnStsVrRUPhujgqvcgsXW/RwI2Az1pu1z2yA97UMQsGG9jkBZJ83SUqnphVnE7zEBrKlMEcXHKH0YSTAIrPNI2cIBEMG99SukMNRxrVBetVUZbKU4lleZdwa6GhF5C7ZKLDFZuptpQQQPAEl4PIP62yjsW1mWB0CIQbyzdD+u1Fq9BMvFZMCvwfC2oWn0eT/P143brMGaRwjhCLKuOW67HdCbjCPIuuEgy4wbeXpe3cOYJEEzRMYQGStn8MnngrC8Iby7GXNVoeyTCKtzusBQ7cH2kqXa1xUTrdc1XqzPTzzOe4+zrJ9a339U9FeAarHMRBj/oEkHyvsOnSPsRmG2hMlKE5HwgxOPXU4Zrr3BZmwqDfNNzJnMGJkKcFbOYoiSEtTDHFP1u1pkr4CJZcMchMWUyjgFg9EyQhS2KqrT/BCL3qucD5oytBZDA6ZiC6aKXX4jfC+dnE0BfpoiBCqxRKmmpoyv6WU1QrW+R4rjhHFSWwfRa40V8CCCnAeHAca6Aoa0CnEPaDWtfdqWO0QHROcHg6XtjgKrKBasBoDJHmecIlIUEbx1HjEmDFvga37sXfzUNzU375dJGzaGrbL22db4Bmxl1m4pDondj7EfR5B1vUG4uqjigx5HkHXDQRYAwHrQuEG37rFJwmR5QwVojZGxA4omC8ii96aKTRUw5pYCrNa3SdOGMXF5Uv/2//gv4vTRI0kTegPXCNf7lcO93qNz1abhrHcFUAEVSAEVvFijDJeAKmWy7vUOY2J4I0yWsku9E5DjDNWWPJTF7gDGmEX3BOwCF+BkIEL2ddPKpwIuV4CPAKy6fSH3JvRWmC0AuMgdAHxTBRkz+BkIMHGq7zIEjA1DNbCp0zNTZVHTfcY6hDFWbV/KfTFjKtYQxWGASJpox9QAsQq2yHRFCK+hjaiNdcJc6e+zqR4s09rI2qal5tH7VYfTKN5Zeb+J8nea6viUAhAYxgLkKouaIiNSAgG4uAwwp6L14XHYWw81/TsFQC60rDogaufuZG96Td4e41UihIDHjx+/7c24O0G3V4LymYgjyLoFIIvCDqk/K+Bil1mE2KQCxgaEtCJEN9Niadqw/VGM29drdvumQoFTv/JIzOWmPXF4T9N978/O4XsH39ti29D14ndVrRjkRnt+0qHLtg1nK1emPT7rsPYWu5Ambtn3Vh5jTLi/ckXTpOxZzC1enCGMkWuaEAJ6vaEC5Prc1meMEevMLuny+pyuMwC2MzsHBUTPd6lUHcYo4IrB2A4VQKy9FV8uSwV4DflebggYssX78AqVo5oJUGBlLcHarAvjKQOTQqx2D2r1QMgMVIJx4jSPVA+wOsJXpiunD1PDXFlfxO2cGa/Kaml14L6BadmHBfDVBucqQx2uKUQGNT0PU4pAAAxYWvAQAbBwudrwa//sr+AT3/xRkO8KGJsDKlqdlPEvbC9V0Gl2qs/M1pB7YF6OL2aw1Nol8mHG4Z2L3ZXLmIPU26zJSinhwYMHb3sz7kwIk3UEWYfiAw+ybnJ14Vd9yAHDJdLqPmAsPNV2zQnLAKs0LMZhB+fr1GUthaZx3m8c0pNM2+kw/p3v+nGcPX4M39fTeb32jWeVxNlK0oGtrksB0KOzvrFTUKuFus6zTsDXaZcd4TM4dxlIbUPEiVb8ZebIGWAMYrGhyxpiQu8KNwRDNUM35vRaX85SKX8SAAAgAElEQVRJmbAdI2JKwnzlmYOt4Er8s6rAXSsOdd+G/Pk2lEUbAyZ6pTLYWmOE/ZupsVLdVxtLI78SyErrHWlancBqHdFciK33iOMwTQ9mYKUteYzzooMq21TXrzf5qtVqZipWD68IBOZAC1RBTq6mbHsVSnpTtGkxCNh+73K5oTo5DyjoWtou/b1cdbMiU201XjMiTx/OXjduK8ACBGQdexdebxw1WYfjAw+ybjyTZQwoBVDYYTAdvCV0lrCNKOwJkFkTa7CNYn7ZO4OLnYCuJbB11bX6TTeJfj+xxGat7j+AXzl0mcmyDdBUpureyhUm8Kx3uJfb55xltismxv3MWHlb033tYTrrLIYoVhGAgChN2FRmiyVdCGBMqTSqHqOklPosPN+FBEPCbjFPUYRYNTF2kTNwIrjG4HOXQY96ZMWUpHVPvu9JClDAT0gJq85ibNgsABiL6ShXgX0zXRmPDbiyVbqdDdCw2e292ExoqrDBdJIyjGVcqUokA8rslel6cPbValOIIpLvC2Ml+i2fvbXqPFXTlSsK9xzVq1P8NJTV2me3dIe0gTSApqchg6yAJrVzQG6383X/wy/jE9/6hZO04jyo1WstVhxm/deBH+oL2gy+UryoZ6HGuL24vpW+pWBmMDNOTk7e9qbcmThqsq6OI8i66SArRnDnwLaDJ+B5qKBKL47eEJTsb2nbzpqi0aLXeNKQG8Hyk/nLRgoDjHtBf7eXWU7i6vPUDI+R4XsBWADge4dVThGerRxOOlda3dxbZR3WWEXvZVovqcCz/OqtmbBNAABmPFxnIGbUnyo7xxsSUJV9ywBg3aQHe1eXJ2yWKalBXXZvTSEydmNEbw2iaoUyANiNEc5IejKWbch6rMaewRBh5avAvZifjtP3uedziaEM67E2gFV/MDOZpniFE2CsLX0TZVwGjG07H2fAMcFp0+wcyma18Md4AV3kBDy11YXyoeyt1aQLixcXzF4l4lSf1bSlmbM6TWqwTRumFKeVhjHCaE9DZgAdrBeQ9d7lKHYNuqlZi7WXNtTG0cYWUHWo3Q7P0oZ703n6eiie7l78e+YrFsIx3moWa7fbCft406/7tymIjpqsK+IIsm7wj43GDbg/BVsPCluw6wHUJ8/NKCzHNt9IfXOi2wPDbZiJzcPbS5suXbTb+0h70W/TXjEx/tMf+hmcnPVF8K7R7vO9lce6q+ajbcqwtWtQgHXeO2yjpPl6a7ANSXpFzppyC9ipFX0KqnTVzhB2YZoeHGaAq7VpkOm1HZKyYhMg5kzpQ6j7cJktGtadrVWGVp2/dV6avH++TZNG4leFtOkxZRs1/WdntFdsRPDWW3BMSMqcFrCo1YYE13nEUAXtrl8jDjvwgd/kPqs1gKybsFp1o5EByayvYWPuukRcAQASg00qbXa0/Y7s+7S/YRtxTCAYhJHx8R/+u/jRb/kKYC7sb9OGh8Tv5gVpQTIFxKrNxN62pKsBVUyMJwdSm23MG4XX8bcTaG232xt9zb+NQTimC6+KI8i6oT+4r+qfADgFG1eE70AVsjtDYj0QJW3krfQrvNiFGcCq+6c3unE3VT2/KYuFNxkKMLrewa8c+rVYNwiD5XGSmSz1vxLne1PE694anDiDMTGa7CLOG6DVitzHlHDWWWxDwomXik5NBcaEhtlieGOr/9Zc4K7sVgZOvauu8UMQ9krTV5eDarR0PcqayfvLQbRWFZDZcn6M+SvurMHFdl/l7q0p4LUyVNijRASsUTZgtWW7jaWSRlSBu1YXtnjGObFycJ2YlfIkdV0lSFzGGVgjHlrkxd5BW+8osJrTNdN0oQFzqnousgDPRNuaUlwKzRpyrTQU8Rk3bXbEGZ4j5bQdC7NGXlrtBMKvvps5ZNcVULW4OufB3elBvFeqK68AXQlX+2Hpb+VFnllPL/YrIheXFwaQsfjE9/2Rl5r/JsXFxcWNvebf1iBMH/CPMY0jyLrBPzjePgf1p+DutDBZQ2Q4S3i2yzdtKzd+AKV/4dPLEc+2FWxZU+nc+RPHUhrRr85ujC6r66enaExchLvf873/Cz782z86EbzPwxrCo7Nu4o114m0pFrjfO4wpTbVXmjrsKtBSoftZdoE/zRosqSCsbJYCLwoo4G1s0oNAZbP0zrptARcAMLDTeVCZvJhQ9FgxLbNaY+BJIYRoskxJE1ZgxXssmgzP9FeZ6Svv2QigHwOMM0ihtW6YslYFF2h3GwO4ziKOsfQ5tF7Al3UOcbyi5LHZRgVQJYWYdU0FWC1AltJmR0XxGYwdWJmsr60wVCuHGGEYTfNnAseIRAOsz+2eQsLlZWa8+iZtmNPm1C8bjbLv65sDWq1UHPeXAVNi4HkG54mnqeB5LGmxhgzI5wxW3Mn1QPVyt5XJevr0KZz7wN/2rjfo2FbnqvjAn21EVH1xblroRTnswHnYG0BbCKoD/MUQC8AC6gn/dDPORO910a+j0Xrb0d4UhpDw6PM+F93ao187dF4YLNVdqXVDbFJ8D098rSxsmCoZ5r1qwjFyAVMazIzeCWPU28peCYuUBe0QJ/4wA17jzMpBROxpT4sFAI4IzlIGQoTLLK7SRtGJMvDKn7tsbnreEIymLlUMn6cZEsZs1XhytXuowKuwW1rNWOi+RqsFEfdbI1ok7Wlo0jLoKmzVnL7S8YZgTYcURkkL5tc4boXxSRHG9EjjLs8v1YgAkFD3v7bmcZmxcuAQSlPq6YpngvfZNqmHFjODUHsYCrCi7J2VwdU4AOwBIsRI+N3/9d/EJ77z98r2DQs2KTn9D2vrjxqoBqQTrdYy6IoNa7j0i04sgOxiWAZFT7Oly8uK3297vPfee0eQdc1xTBdeHcezDcJmXXfz4+sIMkaEpqse7FbgDKqGyLAGUIuclqp9KQuHa/xBXLdfTvsErcPdymGqy8rj1x5dbmdzftIVgNXeMB6ceJw2gOpe5woTJqnDrNPKKcGW0dI0bG8NxiRi9zGmrJNKk/kABWDCWCnwIqhAX9isOZjS1jytFkv2UeYrLJcKyssxkBm0ZY5ONwUE5RQeMcZccQrgpXVY81Bwp4J13ecYp6CPAThvEcaYWaoIn3stGusQR22t01hANZu0dGq2TaNlnqrNmrNa5HwxLq1tcDBtdVOMS1/gBp8bR7dMljSQtpPfUIqj+GaxbL/1HcKY8O7zmn6z96ov06IWy1ZAxcaBUigGpAq6RtsDzNgEnlRz7aIy2fm7f0Hq8NMvSAuql56mgcft5fSw3MBr5cvGe++9h657/4U4x5jGsbrwcBxBFpCNFW/WhSM9fyZl450wWRQHwK/gjDTjDBCgpQyWb1KCc9uG20Lluq6mS9pWOEsA64d/7G/jw7/1Abq1w2k/1bycrcSi4az3BYyo7YIM25JuOW8MRgHRKq2dwS4mdE2loMZp9ssSpkvE8WV7Sawf1AYCkE54Wk2o+zImnrwXcfyUOZLUYKp6rMaRfNdsU+cMxpBKWx/dZmcIm1n6bQgRnataqqWSNGY7m1ZF7fOIKcE71WEts1ca1UerSRk6W1OGWbcVxwjrPVKImcXawVhxht+rMKxbvTBO1yf6K00XljRhqeJ7AYOzZ1Ja94tjlJTczNcsBoa1hBAY1K/Au30Wi5wHm8OXXzauTFfQ1UZklA4FMU1cNeo8iXHxAtfZuX+axm4TMO5C0W9yiiVleJvj2bNnR5B1zUGgI5N1RRxBFm6uLoucn+hGTBxxmXLLFyJcBGUVDNC00GnjyeXLiVlfabvesNuzMlicuICtPntbnZ90OOsdTs9X8H1NdD0+64rgPSQugv+TzuFeJxqs3hLWXsDRpKowa6/u967cuO73DtsCphhn3hZwo0Jz39zZfJM67IoAPDNu+b0Cti6341F91XqivSJcjqH5HNUqw5JKBFwGU8aYklG6HKY3TGWf9IzQ15o6rPqscuwLyJvrwbLvlq0AzVuDbQPknKUCsmrKUEGompaqXkvLHnXFmEzPG1hYrDaUCTLWT8CXsS6L3cXmQNrvhHq+LuCp5XN5lkLE1M5BmlLbhnVjsXggQgoBxqkAPuGr/+SP4Wf+xDcVSwf2ayBOf5MFTNnDAnk2bhHoasRUDYoT895NLzLjSZMabK8TWmXIzJOHm8X1DNu9Vki3KZ49e4a+71884zFePo6arCvjCLJw80DWV4ZfBQCkzXOQX4t1QyOo8gbQrI+3UmEo4w30rtW203GH0oa35IfRphCVyepzg+b7a0kTtvHgxOM0gyMFOPd7N2OveHJctOrwfpNaXDmT7Qt0GbJMS3KUDaGANwDZtJJAQK5azIAiv2/TuiFxA4KyfUP2QCupwby9qrdq2TF5zVWGM+1XMRzN+KeK3TPwmS0/2Hr31nnibB59r9YQsWkGDQjAaqNlruT16ulAPh8V75jpDAVsxSxiXxjfvucFRFKaSqsIfslzah9fTb2z1NIBaufASLAwTZo+hQCCRRwTnm32mTe2XRG505KFg210WAtRvpMr8NC7eb3z807jnZwyVM+5D8pN8uLiAqvV6sUzHuOlQzRZb3srbm4cQRZuHshKm+cga2HOcxPTJkXisgnpNqaJ8Wj75HpV78KbGoeYsaXG0ENI8L0tQOv8pMODE2mZo02crSGceIvemfJ03rJX57mqcO1EiwWgMFMqdleItFQUYY2Mn3qTyWtKU51cyjc6XUpQgNcsNjSgzGZAvZvpsVTkHmiqrdLpyi/MmSvCNMX4fsPbKuqPM62WnoZTXVaC7xzCGCQlGCKsacdHuM7J+Kzjcs4ihFoxqOakrltLCtF12SdL3N+LeWnpdejye/HR2msqzXWgarMop0kX0As36UJmpBiaNCFy+x+G+nBZt0aMCXE0wmK5ZfYkre7VVSykBYFaURhTWgRDCYxNFmg+3YYCxjXefQlx+7PnV7NTWm0cw3BrKwsB4PLy8giy3kAcexcejiPIws0DWQAA58EbsXAAAMRBvLKiPHWqLssbA5Ob/lqanuxzXdaLrAeXPLJst0Jcqoz6DEbr9j6EiJ/+m/8vHn3kHh6d9TiZVf89Outw4qvmyhuDvhMj0S47pc/jXictd7ypTXQjC2MloFae1CJX1opZNFiWlC0AANpjswjyfREYYwKIBYDp5xWsGAgIZmaE7NHUWYPEAr5CruJTcNW5aq6q+En37HJBZ9O3DvbFuiEzMg34LFosr+zXDEzNxD+rLGr3a4/tGOFdh23WAcWZyL60dHoJVmvpfbORV7zbH08NC6yAqgArah3Wyyf2l5q/LxnMw1xF4PPfTgwR1jmEed9H9cyyU12QGg2n1f06bkmLlbgwWHKO7h+kMfJBlktF75EZT2dSgt0mYGiYN03Xh42004mNrctPff93LK/ghsfz58+PfQuvOYTJOoKsQ3ED0cVnPm4ayOLtc/BuWzx2qNFwWEJ5am3Paz+7+d0W+j8tur3zRJelUQDGyuFkfVi/AghTdd6kEXXYW4OTDCruN/5aCr7WWci9cvtg1RIVlsA1gK1lrZylkjrzeZ52PjcDepYEMLefc818+/MLYHJE+bUyWRp9rojsrdhMdM6gc6ZZnoEzBl3ug+nbP2fkz87/ZPq9tYd3BvfXXZk2D90nY6d/GkTTv0PjnZMqPtd1IDIwOcVm/apUGAKAdT3AKL0ETXltWtU04yuAqudWAWJLPxuq87asZjl3G0CTmt+qgswv/w/++6kH1uRgeflzy6BrMB0iM57n3/wuo6dNXvbzMSEm7HUjAID3tqM8oHBuDH2AyYr59zb5rW1GDLtQAFbZv/H26rEAYbKOfQuvOUhY/Df1d9vjyGRBqgtvWlA2NgQZsBOwZeKISPKVtRmBl0kbttGmDV8lhWh9J15A7yMk1eDBMcJmU8Y2/eAaVmVSYdj0LewywJIUYfXGur/yxY1do60eVMsGAUoCNHo790xS7RPjtDOSxqN9Niuk7KtFBJNZKmW5NB1I2b0opDQBSmNMIhLn6m6k2+wKUybzDk2vSgDQBj3JcBHpA8JO9U4qGesyZsaiWTckzcOvrjprQ1izerWrIvi87QWE5v3To1kaQedtzPPpVltvEUPKqcIAa7S60O6xYCX2WLCsa1PNVASgZqLIwyU4z5u1WSp63zMonZ0TpdKyVhpOqg6zNouJqnUEUXaAN9hkY1L2PTgzWGw9aF4p6bqiw0pkYWau9C1QWqooFAaL8XTB4f/dy6rBetKwVe8s2DnsNvufj7sNUhhvdaoQADabDR4+fPi2N+NOxZHJujqOIAs3j8kCMCn7pjiA+0pxW0PF1bu90B4CTC/Dar1qOx3VxLzKcl50gV6qbErMRZvcit7PT6ZP/u0+nvUWZ50ryztvvLPu91J9eNqJW7qyUzG314kJBRwthc2+Sc5QEXuq5krDN2ALqCyZasp03iFWdsQ1KcTWNkI/q2L3XXOMemcKCCNMKwkvdgGdM4u+WEOI6CxVkXuz7cVaQm/m+f26c9jM7AAU3JfKypk4vp2diER/FSL8yhd39xjq9PZVYqqPWvJ3M75HGre1wtB3SOMuj98VU1PkZtJacbgf3Ly06cJ5CpGnvlkzW4d5aJsdditQmKbd2fpiMrwUiWwxsF1cdnqBJ1aeNKa0KG7X38R2QZzfxri9uHL6bYrdboezs7O3vRl3LOioyboijiALNwtkfdmvfUK8E09Fm0FxACM7QKeIQNqEmGANA7l34YTZekWPrJvar3DijxUTAIu/9/ffwUc+R47N47Me687i/MTj1NvSDkd/8OeN2ej5yhfw0qYGl1Io9ZgxVtbkSsDK1oxJbBTGxDCoGqzYCOFDrOyV6rN0GjOyBmzGWs1AWUoJxkxF7mWafigDG4UNxSZC2/ugVjGWKsPSC1Hf71s4KHDy1hebhlBAVBbaj1PQrIdNwf69tcd2CPDWY5eZs3m1Ydt6Z5o+zA8RziLFzHaNsZiQ2txMejEKu3Xgd81cWKuizVJH9eKf1S4PDeaq2ixhs6bid2MdmEwRwhtbRdapF5E7+xVonAOubvI6DwXo48L5qm10lMFqLRzaJtG/8Z4cryXAtduEYkIK1Ace1WHFYVNE77dVjwUIyLp3796LZzzGS8eRybo6jiALNwtktSG6rKwfSKGIZVtAZWapQp02v4i+SY3Wdftm+d5Nnd+LVxOXisLHZ/lYGJr0ZjzvfakWBKqTOwCceAPmabmxHpfe0kTY3rJZwlpxEZircL1tCg1M07aVzUrlM0AFQTanGmX/lkFXBE2qDuNkOC9/JtCe20KobxWwb91QRfx1HmW1WnZLdVdq9TAog1Xc6aega+VrL0dNJaomq/X8bUFVNSKVqsOu9xgbKmyu38p7NB8xiVJ5qG7we2amLyegX5x3wmZxdpDff1hRJutLvuN78Hd+4N+rn/erCqxcD4pj0WFJW9KaDh7iFBSpLku7DtQUeI13t1dXFL5zscPTy6mzOwCMu4jdZsS4GxB3mztjQqqx2+1w//79F894jJcPuhvaqTcVR5CFGwiy8sWa+pVceFN7s6mP1aZ5xH4ZLRYZWvTG6nqH4RU0Om8i2lYdnBh+ZcEJEwH82cphHD0en11tJvhw7dHnyjxvCSfeTaqtrCF0uZKwfvNcBOihVHAKO+Uye6WgxBAjJPnsmAS8KcMwT3k6U2/Ekdv3Mn0JdMUkLVr08woZFTjtFpitajgx1WP1Tj7zKhqsF0U1Xs1pT1LmqqksnLFBZpYO1NNVLRzaaRpFiz47Za3ziOMI61eI47amBp06xDdgagFjTM1Mx+oGX6wcljRZNV04aR69AK5SGEDMVXgPAVvssyGp7SbFLDLOY7wC5Ylty+EZxiidBC6GsOeL9enGE2vez1TZK06SBp03hq77NN4JsLXb7XB+fv62N+NOxZHJujqOIAs3C2SJbUO+GI8DKEVwLxoCtr5c/w+yWbPKtdsUnCJSdrTnhOKF5bzBau0nT+UPTjqcn3ic9Q5nncOJl6rBVqPS3thtPnArRzPAJam/yFQsHFaOSnpGm3D7rMFSNssZ2tNiUbZ9MCRmsS7bOgDAmPvNKZCYpwaVXVIAZaiKuRWutOuW9wnVAzPvK9dtb6MV3hdGq2jEKiBaYrJ02B9IE8o01WXl/QsKSKfzdZ3DOIaS/mtjniqUcQTXOYQhiCBeAZmZpgRpniKM+8uaLHfpN6+TJynD+bGUpt2ErMdqtHucAhJRuZ4IgCPEQAjj9ECw7QpzNY+aGlyc3PS1TLgYInpr8LQB0WNijJHx3nZZa/XOxS5vL0+0/Hvbsb0o/lgy/+0WvQPAOI5HkPUG4pbdaj6jcQRZuIHVha4DN0+NlEJRCNcbNe+lUN5Pk87ruoAuPdm/6rpUb9S21QkhAZ3F/ROP85PD9g3nvbBW3tLE2mDlTAFgqsVa5RQhUI+dvorVgTAEtgFC1giDGJkn+qi5+ahMa4TtlkDqsJ6QfbVQGCvFG74FXUQT1kq3o2IRGZobjcq6p6nA9lhUF3cFa6b5bPbFWgRZy2nCB6cdns9u6Lo6BWZ+bXCZ9UG1+nD6WrYhAzDvq8/UoXk1lM0S4fuQK2GrAF7NSCetd1KqqcRZj8NJCKKajBKvLd2YqRj+ULBbSVVhmGrJQuZTl2wYgKrDalPHz5pU6i6mvR6bbcTEpXXOUmwvR4y7gN0mlAeT4o212yCFAWN+f5v1WICArAcPHrx4xmO8UhgcUdahOIIs3CwmK4URZrcBZbd3Eb5LZSE1j51t2vA2h+vWE9ClAKBNu+nwP/y1p/icLHq3hvBw7bPYXYS+eoO4lw1KrSE0dlcZXKFMs4aABHgrjJWmBiMru8XVL0sFzykiwsDr6DiCjBPRNIBIpoJdqUuAzeWR6txtSZY1LFQR6phxrzIxNfMw2qIzZbNi0ypIwdVc9P66acPYrF/B1tCAisJyLaSjiyCepvqsFHIKW1vztOyW/iQPVM9ZZ8X2wfdVAN+AHqDxvroyDvyGWjZrNkv55eUsIscIsjb/NnMfQ8j3ZH2HGHliScGuL8BqiIzOVmZzSMpoTr9/1WFdZJH7EiDTadoUegipFEAAwNPNUMZvtgHDNuwBw912xLgVUX5xeR+2d4LFAgRkPXr06G1vxp2KRulwjIU4gizcLJAFAOSzIHbYArnKEM1FrmWsng9x0RfnqgrDbu0nzs5tuNUZwmewZFsv3hOg1QKsTPvEmNCvXdFjtWzW+cpJqjBVfVpvRctkiJqUWja4o5oaXDvaK4OvrFYFssQJnG/aFgmIYxEuUwo5gSReZrLhCWw9LOo9urh3Fzf6nBptKtZ2zT7IQLUQaNOAzqAwWdBmzPRi0D1ltOTGPxHHZy1XjNMUojO2tPnROF25kjoc5sxVw2Apy6XgbAzTlKTvJR0I7KeulC1SAKapw+k8sxTh7DAUNsv1SKHRbBkDpLjfcmdhGRNNVjubMlgMcAwA7ITJTWEsDaPZ9QgMOExZpyFyAVfzuMw5w6WqQgVTzxR4pZT7lwKfzm1yfvO9XfHFmoMuANheDhh3+wAqNgArjre7lU4bIYSjT9YbiDdYV3Xr42ahi7cUNw1k8TiAxwFmnb2xOIE7sXFo9Vf6tAscBlWvWlXYXkzVLPRNxVUX7jZVmPJTe1cqC/u9/TIkgveqw6ru7apNE3BF5alrCqZE2G4NwaUBhhgm7mA4lfQO7S6Efsnl9xSHYihJcSx/GhTHMi+WPMVSkD9tXZPTQc4ICPQGcM337YwYn1bnduS/6bGQFjwCKE3WiHWGSluhufP7ksP8/ZXfm65soTem/M1DWjsB91a+zF9Yw9n3terdftVgxjFEVPRY+n1Ojp0+PpcJLA7wjOIMXx3e0ZiItsuYbr+ANW7c35euC6Vus4BUANmQtG5/u544DgABX/qHvhOApAeHyIW9akPHj4n3gNXzIWIbEj51OWIXU6kubOPTmwFDTAerCn/jvR2ePx+QZunFYRcw7gLG7RZhczF76JHh254qBIAYIx4/fvy2N+NuBdWf4pv4u+1xZLJws0BW3A4wK7Ft4HEEddq6I2Ufn9wypDn5rsue4W0/rRY3+JbJavRZj89WeHTWlf1VkX+7+w9WruicCFUbtHaExAJaQvYREjaLC9gycUSyM72X3jznjXtTlMbdxlUglf2WKGZnbGW64iiZpRSF+Sg7zGCtJOVUxPmJtX+izOaIQJnRiqrDmrFK0nB6mioEANb0YWarWkDmDS0yJJNlojJO8/fAPnM1zsTsvmkXpAD4bOWLPqv6ZU3PYecsYpzqsWoasM4TQiwGpHvskzEHBPAVYL18wn1fAF81d/uGpCkFmEiAq58LIWEXq00IIOnB0KQK2+9HH6KWwJTGNiTsQsLlGPdsHN5pqgqfXA6TZQ+7WNjslParCsOwQdxtMG4uFk2Hb2uklI7C92sOAh01WVfEEWTh5oCsL/y//zyAnC7UVJJfT5rEElVQQfSZqyA85PB+HWG7yphxYsDWknIgO6o3fQbP/3/23j1YtqwuE/zWWnvvzDzn3EdV8SooG0uKCsABy9HBQYoQw66gLGUmuqwSqOhpcXACRRgJNUZ5OBjGTDg+msfIEFoKtA7TRLejYuhMS1OFYBVQjDADLfjAAcFmgHrfe16Zufde6zd/rNdv7Vw7T55b99yT99T+Kk6dzP3Knedm5v7y+32/7+e8WBulwqnKpbszsjRiRizuw/K3+TIglXOlJ0S6AUxrh/Q6dSos163t9ERsSoj3tRvVogBdQzhfDxHZGXX+ebrn5olXPIH4PAUYKXIkSSP16iCcWbQv8cMtuT4DsEQrZ3IHgL5/7VGpMHdkKhrc7X5nNivsufJ196LP32bd6QQh0mHMyoEZzs+7DZN9uUIlZZxXWFS2RFjYuAZZVsFH58NDbYZWAdItG7nj4xy6oOSxugTLf1HxJUyjWyhVQrcEuGbC3SbmX1Wdv1FrCLPWdxeaRC2ch1wsg51ao5Qi+LDsckLdmsfV4e8AACAASURBVJB/BQDnMyN0uN+xnmurYM1bNLN96Pk0lApNG/c9CSoWYEnWMLvw4mPIyerHQLKwPiTLg9h8QOv3cRdnVp7o41YXQrpy42zsw+WVrYsRPtrdX42iAZ6fT1EqVKP8LDsbl2Cf7+mRJVpCWNLkPVkAsFFyw3v6u9Jzqyb5USttbT01uradYPV+WA5VWt+NI14USoMiqlcAIFQkW/65qsoqX54BOTJF7dxqIj7p27ShC1E4RaphNDBYaty61sSE+5zLzl/Dg6LFCUIITI3H13LRjN9VsgCgWfL6839b/2/jz29zVGLPKVj+vHhelg8fzZYG4b1b/m+crvOkSo0mLjPLdhfGY1zIe5xsyZA6r70OqQtb93TWkm6AsoRuDGpNyfOrNQWvXY50+cT2nbnGuJDYZ0qhLSka7Myj0d3DdxPWrca5/SZ4sWzQaHyfdQdDA1HFMm0NXU+PXeG+WDDGgIgwmRytDeLxiEHH6sdAsrA+EQ6mzpSkwu30g37KQnTOjAqcn7fIBcKdmVR4ZC9ebLofqOWoSMZpxO0WDem59RcD5AhJOd6AMQSpgHKswrBo3dplV25WuGqzSpLtAXt9VVJgIiUM0ouYzzFS0l6QKwkYEpCmSVUjp1oBCH/3QJx8SU831uDuIzXcKJboChJhOwDBKG+X1U7NcmSqa7TWzcJx4IaB8w5J44kOi4Pw8P4t8m34rCMwzCLkmWpikTxxJWuBZInFdf53jtwHdWujws60yW63MSpCgGnvF4eyCLMOF4NJXVJ8UUJ75aXTyJAlWFw8DOGlqxQPPcPqMcAnB4+ql2kbYGSlrNBJmCFVu7X9B91vLKnimLXRhzVvTZgz6TGtNXYzTTAA8Mi2z8ayTQ2erDbzFvW8ha6naKc2F4u0tuGjzvD+id/5yQP/KpcDZrNZ8PoNuHgQGMJIl2EgWVgvJUsoCbRNNEqTSQiWVzkmpcSU+XIOa8vqU68uNThZM4ZQlApFpYJ4YFoDpeSCUXerKmypcFSE7kAhgIlLegdiWVCAdxgSpAhXPrufJ1WmDSVC8CHCRtttk9KhsGoVv8+fj6qiCd77yoQMZCtcjmX6FjTsO6EvE/utjSySLkcgJUj+n1Q5lcvfz/1TL8tVWgVdknV6UmLfXbhzoaVlx5fV/VDODTfnXYcL65jydRDisOgKuqntuJ22SZPhgbA8zjX0im3nD9i9S4YROe8h1DGp3yW/69ZgtzYYFSIQrX1WOuxi1pqwfq5N6Az1JcKH92MkA+8a9N2E5/frJB+rmWvMXacnEaGZ6YXPAa9gmba+pF3GlwLT6XStPutPEgaO1Y+BZGF9SJZuGiiUMfGdeSIEmRgFwEwop0YKe/XqF8zxZonZXjwuV7aKyVYIITwqyIL5kjJqWDIU2hEsrQ3GmyOc3bAq0JlxYUuFruPtVKUSIjEpZLjvDe8+B8uTFOG6BEkWEG1tiUs7t0TKlQiJnEqlW1tSbGaWSMkijEUJ6lWHEBEPnBRRCQvbeHXMK4aeKCZ/C3fPG+gd8xRkounfK1raBFP/wt9cRD+U8uSVPRBXUzRbEZUs6e7H11km9D02EITf+U/eUgmrbrkLvn8uXmEos3ML/boCzbwNHU25bXzJsBhNWMmQ/10O+QXDD49O9u3WDG1olh8PxcuGpBuAve7nbewc7HLL/UaHkuCGU3L9fT+PcN5qjAq7zueePbg9ZyXClHT54dxaG5ChpMnAzyjU9RRt7QmWVbEAnBgVCwB2d3fXpmpx0rAeV9D1xECyHKSUMFmj66WFCCNP2Ln0BDJOChFCCldFMnj5kF6sCwUZF9a4wnaABBkb3iiVcgSrRD21F8srHNHqYlJYD1aw6IhYKvTXlELXgFIQ8z1Gcpya5UmsU7OsauUIELyhvU27CXUD4Yf86gZQZSBNMNqa4ZtZLBEShcfFEsM7YEuaHl0CBwAifKylH2+FECEvi9jF1HcXapH+Tbq3C8lVMp/+bu+fGheYOhXFEzCBPJGSQuDUJHYResLVNcPnwFu3Uz+WI15hnUi2UUUB3UZyRoT0vUPhf+G3Nbx7AzxTxnrec52DdRYt30e3BjNtMPZKn1MTfQlwv9GBWAHAQ4402fE5LTZKFUjVIy5Y1JcIPany6x/YniWlw/k03q6nbYhsSM5vPoWuZ2jn0xOnYgHA+fPnURTDJe9ig3/BGbCI4RXnsC4kC3DRDf4OIzxczepDN1gzLM8YXJehqCbJ3LKjBmkNFJH4+e7CclRAt4RTp1JyFTKY2Ht7UgiQiz/gXiFFDcJLXUcSFAa3eVJlIqniZCuJb3DZVr7MJ3RtCbFUlnT5YwgVoxu4H8voUPIFEUiVttst/CG8oqVCvIOHJ1taxr9FCKTnhCpEOcR9tciXDQ8L2SE/vFwZojUyH7ieu21NSuwyD6DN8bLbT8YlZnOm3q7onykqFQ3xAPwM5+TxixhISrqBKEeJMd7vJ1QJuGHRfHg02yQPgp1p6IJJu1vrtoYsrOF62xnP5zolVUAkVp5wcaP7fqMx0wa7sxaTSiVdhA/s2OeyzOhu/VcaUgo08xZt3aCd7gYVS3fe7ydJxQIGknWUGMJI+zG84hzWoWRo6jaUZi5of15qM4SzG+XSmWXVpEA9PdjX4tvfLyZiJ6GGTEz2RYhxKEoVPFlAGq7ZxYIhWticqVBZdeQIcB6aZmZJTL1vidTcfXM3zhXVzi2RamaAUsB8P3hrrB+rTU3xPLoBSPxYIQuL+bGok6EVjPCJGd/7enxHnRupxEhfSKFnPq3uv6jvOpMidicaVhbkZnhOWj2BapYQnUml0LDjA6laVWR6u/1L3G9/Kpeb5U35lcr6soRI1y14zt0N78dKVvUiyWboPKDrMswdhBMstj9pDaj0I3bWmISEPjL1pGrxC95+ozFl5UNudP/GOaum7jC1apfNjzzv4hq8t9GrVv637SrUMa6hsWXCk6piAcDOzg6qKq+ED3hsGISsfgwky2EdSFaA0WlnIW8hJ4NcBZyrFDztmStb40mJWc84nUsJ71fx6hXASZe7OBYykC2tDc5sVLjSj9QZFTg1KrBVFRgXIrnubZTRjzV2ylYwi5OxEQ3+PIwOqlVQp7x6BR+fAQjtttNtfCyjncrF/62ELQP6++E4rDToiZKuo5/LKVrWbO+lKR/E6f5WBwzd9rBzHN3De48SN8ebxXKhSm4verK4WhWWse26r6hJVWC6xJTejXZI1rmX9mhcBJM24EhXpnTYVbrCGJ7RBO18GkfuIHYZEvt/96a93290F0KkZd4M67KzCwlCKpi2BQgonCcrdAfqWCLcquK/7X6jQx5Wt8Pw4b062z3oS4T7rnTYzFtIJdG4DKw6ECwNMoS20WjrObQbQj/feSQMgfav3ZOmYgEDyToqCAyerGUYSJbDOhgiyZjEi0V9RIvBUKpgrfY4i9sXVRkGw/bBOG+VN/ceFjaqQS1kCXXjImQR5+cJKTDe7KSwIy1JbRTS2Y5d2cmZ3QHm7an3oxohpCU0KpYIgUiqbKkwBopycH+UMK0NsARsplZHvSLeueZmGXpCFhUtF2Lq4iHCmB7IlFi1dfRzuY80EhICOhyjC0+edI//alVwQrWsJMgRiZS9f5bFOCTHVvnjSVYqPLhkGF/PNtLBz0H0w9Rlsq0PKFVFZYNIywqmqdlMQxfN4QJK00fKGN8FHDFbfp66bcO8wZIpfL5EOG00Jp3yoe8g9CVCIKpX56dNUK/mnRy5mTumn0HJCZd2OVi6nob3omkbmPZkRTZ0sbOzg5GL0RhwcTF4svoxkCyHtVKygFTJugBcuVXhETZWIxzWe54YMUtuX6LgQVmk3yjJaKhqErKxLBEUUEqibYy9iBFwehxfstzPM1YC/DInhVWQRDtDnFtn4m8yENNtkJSOwNjSoJAK5O/P96wnR6rotWpboChixIY/tvezsOR3TqhC/IOPcwieriacdbBqQQBKOqUtDTi1T64zc88lmANp2XCZw7DP+J6a4O3vg7TP0FjAR8Ik6526pFIF68xGFcJJg2drXGKfGbK5Cb4aFUGV6Y7aKSqbl5WA0js2wmGeWbe4A78V0t+FDApjnxJGnsR3oJsahSsd+rwrr2ZxgvmoI6J7GSXwQZd1NW00dmcNqiIlXdNZmwx7tknuGvW8DZ41/v5u6ylMU6PZ305UrJOKvb09jMfj4z6Nk4ceC8cAi4FkOawdyXLIj/ZYDX1DYgFgNC4xnzVZFUxVkwUT7FFAjSZQRQVZVCzxPfqw/Lejbtq7ZBEW3fe2ryopPU/JlWkhGke4XHRDgjCjUKf3gUCgTFNDFBXQtjZPqShDzAbpFqIoAd1EpU9xf5VTwIRKjp92GEbiGRQtX+JiSms01y/+2/muw4Xnd0Tww6OBtGRQ9CheSohOqXJRwQr/tqE8WKIJni22MQFFWaBt8qXJohqhrWdxtuFSXGBXgKFwUnHETk85kQg7tUarbZfhRqmS0iBgCdSmG4rtS4PTWmNn1mKjUiHdHQAe3vVm9zSywStWbcfnxeMa6v3zLhOrgTE6jMw6qSoWYEnWMFLnaDBwrH4MJMthXUnWhaJLsA4ywR+E3Lfcxzpeh+/r/VlGG0ipgrdGa4PxyJMPyvp4/DxHP0on+Val82pWiG4wxs0eLEIpMZYE7faeUAEAtTVM00CUjmD5cpKQoJYRLE7AiKmH7jiio2gByCbF5xPivXOclZYynYjKLVPsWqszqhM3waeq1qInK6dadVHISKT422qBUEnBTPD95cLkeXniVRXBxN3drqiKRVXrAHiDvC8l9s4u5G+rFb4AWZJMAGghed5nYk1rja1Rgak75/u3ZyEqY8L8Wr6DcGfWhPKhJ2J7e3WYQ9g2OvxN/P1mNgsESztCZdoG9d758IXqJBMsANjf3x9G6hwBBAYlaxlOFrN4DFgnkrWUuPTMYOOk6jQbppyY4HnZMKNgpenrGqT1QlnvYiMhWh3zO5FNgNfaJOZtwEc4LB4vBrubRR+bfyz/3H1MAwDhyRJL2Ke2tqVDwBIo9wMA1DQw86j28XWAVb26ywC4NP+4XBjtkuPNQsMDGW3JlRtWDdOCjEm6C/3fKW6nw48/thIi/kj3IxB+JPvpW+5/vHLFf/y6U+NygXydGpcopUQpJfzc5jOb1ULC+6lxyR7XrtscF/AEBQILX5eF5G+H9PVM7j++lt+TpX1dS979l3lv+Y5S6+/q5kLwZYsvRjJtkigP2HLgg/t1okgBwIM7c+zOWjy4PQ8ECwAe2J7jgZ05po1eaCY4v1vb7K29JgkYBlwW1rRJRmZ5gtXsnUezZ0uEHiedYAE28X1zc/O4T+NEwsetHMXPIc7hNUKIfxBCzIQQnxZCvOiA7b/HbTcTQnxJCHEkU9AHJcthHUiW0QayZ9yJaKag0RaArp8qdhBqigSFE6o2CSCNBMtzkHJUoD7irkPSMd6ga3T3swsBe/7VxJYMR5MKWhsUC511hFOVwqgQGCtvjrZrKhG7L8V8z6pCzuRunzzi7EEgKEQ0n0KUJcx8ClFUMNM9u54pUgHejyWXqFfu+KIag2rbUBA8V0KEbaNqJWJ8g78wM1VNiDQ3S5g2juYRMo4G8iVWoax/aMWuxMPi1KgIviGuUHUDQruIY3XcggXekmafdY9bjko0vuuwE9dQjhZH7Xj1yOa+7XdKh9T53UWmHNuncHW2NUZnPlMI27OYYfXATiRU01pjy/kNg8fKea+2xmUwuD+wPcO81sGbRibGMtTTBvVco210ogxOH33IjslxHiwAYXSOaevHBcECLMl64hOfeNynceKwDkqWEOJlAN4B4DUA7nW//50Q4jlE9I+Z7a8F8H8CeA+Afw7gRgDvEkI8SER/cDHPbSBZDutAsg6L3KXh9LgM5lnA52VVOLdfh65C78cKx2EkTI0mobU7rrcXAlVUodRwwedstLtQ2U5F2+4eiZYqJExrIEsF3RqMN2Na+plxCSLCFZNMNx2xC7uJKpYfReNJlaj3w1gd8hEM/hCNI0htHUqEZm/HHrKpWcmw48dqaohqbBUqVj4EkKhd4F2AbSRSYeSKJ1TeCC8oIUnWCJ/JcnKDpJHrkDUakh2jGybKl9nbjDBl1hcHfLMMZUKeTu+XZUqC/G3H1S0ZyFr38WhBcCqrAm1PeVBVJXTNoyDYzvz2YwlqJZP+QTudhuQ6FQHrn6pbg2mtw6xHr/49sD0PJcNp3WLivFkPsPJhM29Dc0jbmECw2kaHPDkfNOrLg6atbZyEM7m3bvlJ7iTMYTabYWtr67hP40RiDaqFPw3gXxHRb7v7rxNC3AzgJwC8IbP9jwP4GhG9zt3/GyHEdwH4WQADyToKrEOEg4ee1VBn7G2a7kGMrMQt6n2gsrf7Uhu6gaS522k34fKy4aWAJV4qlCaNIcjCdhXW0wbVpMTXztWJwuEjG4TzYpGrKIGM/TtJFtfg8rE8BPNlhQBR99sTLcCVAN25+fuebFk/lgZKR7zqWfjbi6KMJIr5sELp0ZvZiQI5Cx2GYUaMJ16+u9D/O2X8Wh5ah9X8ms8/AH33YUKm+LaJKR0L2/LbMc4BvUj8WRkyd4ZFO/j1pzeqkArvl41GBebzVMFKeU36Ol7kgtET1fVG+ePZ0ToNZFGBdBs7O+0DLO6wgHyMA9/6/H6DeWtwyqlWkVTZcuDWuAxlQU6uOGb7TegYVIV0niuNaVMnGVj+desVrHa2h9aR/scbwQKA+XyOU6dOHfdpnECIAyNdjvTRhagAfAeAX++s+vcAvrtntxe49RwfBPAjQoiSiC5aaWcgWQ7romRRT7mwz4vFB+2cqhTOz/OdVuH4nYvRaFImvg2OnKoFXFwSFrOxLGHw6pVpDYpKhcys5LwpJEUB5HSf3HucjE1yFzIqWr7Uw/1aRjt1yq13ZUB+jsl9rkI1zHflE+HbTodh2+niLGNWTyglCgnBlkM3gQwYl4dlj8e28d6s3HPvLpMK+iJZMH3EU5ieyANMM2Z5j9PjGNmQCYJPkHs7dlUt3nUY4P7OqlDQbSZugUG50To8FT45BzfPUMgiyTxjD7a4JHQYomsES2BLhTFE9NTYkuoHtu3rYVrbsl9RKkuiXDRD65bLMDandcTKLecxGrs2ZFTPrWqlH4clQo75fI7Tp08f92mcPIh+e8BFwhOEEJ9i9+8kojv5egAKwP2d/e4H8E97jvkUAHdlti/c8b5+4aebYiBZDutCsgCEIdEA7NXGKx9CQjRTQI5dCKndZKNUMEQ4P2thDIULemsIZyYlzk8baEPW7zQuUM/aoGAZXio8RHTDqp2F3eBRDtJWJYqBiDVGm1uWYLmSoGkNUCo7BmTJ40wK54wmRO9V8mBM1XK/zdQOijbuW7/e24YoKuidc1aNUioqUh6+RCgkwrgbr4a5dUbrpLRobzBFixErAHHbZp74roJfi5Ev770yQkJQ6sMCgO6g6QCjASmzJUCVKEyLtyelxMzFASwjR1y14p4tmWGBqTqWOVjuH9srhRmZLnq2inSOYQaRVC17RVHyyz6GtDlYycHkYpdhVtCyB3pgZ47akT9Lruy/18O782xH4WyvCaVQrjrX03aBcAHA7PzDweAupMoOfX48EiwAqOt6IFlHAEEU57EeDR4iou88ygc4Sgwky2EdSJZUqamW5jNgw8nbTMmqlIRx43WIgKnL2tHsda4N4aqtCg/v1r2lQk6wzAFlw4PmF65CuozRUFK5ZHtLsJRTsIJHy0U4mNZAOiWLDEG3+Tdx+g2KokLFugSTZQBousNOqmPCZ2VFb34XRZlsFwJL4YhiadcH9UrIhfiGoGg1dfRgOfKk57NItKSJj9k5x/AcgUimuiR2ibol2EIeWpqUAHvKjMHLlVnWF+cQvVhsn8zbzD/+6UmF3VnNthWudJj6AMtxEc3vAd3XR+e+kPFLBHGJ6aAy4OJxE7KVrBaIdWu2f3g4CtlWvtT68G6NuSNL5ch6y3YajbY2VqFialbLlgOII3L29l3mVR3yrkJ50KW7Px5ysA5CXdc4e/bscZ/GyUTPRJJLhIdgv/E+ubP8yQC+0bPPN3q2b93xLhoGkuWwDiSLg+oZxIb91iXaGcj5sjjZ4oSpYQxL9/iyJuMC+640SIZQjRTm0zb5huyJgioqtEcYSCqLKrTR85KhMQQhRcjJsucioQqB87MGZ8ZFaM/3pEEK1+HfxLFAwp87J1p+tI73X2lL7II6xQmuK/kJpaB9p6FfF8qLXoHyw53dv41XtIgWFS1+HFZ2DLedipEQL/4tseiMBTE6XNSNLFiXIdvG32EDrA8Dm1nlb7NTyYSQ9pUNuuZ368VKyZMdAO6OmTPBd8gcV7TKUczNiiqU/V2MKjfrkPrNjDmCddCX84X1qx17WusQsNs2GpWLXOGqlSdXADDbr6FbSsztlnA1oRxo5yTaDsJ2uhuGPQsVv/w8ngkWALRtiyuuuOK4T+NEQhwjySKiWgjxaQA3Afh9tuom9JvYPwHgn3WW3QTgUxfTjwUMJCtgnUiWYQnWghvy2Tly1Soxu7PlNUtK92SLXNkQSNUr/23ZbrOYXfVY0C0ZSk8ejA7dhf4iUW1shguQciqW8UqWG62THBu5a136hg9GeL7OK1NaR3O7V7E6IalBtWqaqEIh9V6R0bEcyPxYfYqW+8PYdUIukjFOvHiWk8l47hb8V0ve1p7QSq5k5Q+1qpn11LjErh+Pw8uA/pidw8SSpb3VLUH63K0FsNf5QVERmZ2XHS4+tjO/Wx9W5m+d5VGrl0p29mq0tVOetUFRSsz2G7S1htYmkCvdmuC3AhAI13zaoJ5GdaqYbFmi5fKvyGg0sz2nBtcws0HB8miaZiBZRwJa+Mw9BrwVwP8qhPi/AHwMtnvwqQB+EwCEEL8HAET0L9z2vwngtUKItwP4LQAvBPBKAK+42Cc2kCyHdegu/Or3vRLX3P2v7B2pIsES0qaWjzath4jnYsHfJjTONL9RKugx4RFXKtTG4KqtCg9sR3NvOSqC4Z2TrRypsinYdVSc3EDdw0AoWxoMnXp+2LTRUOMtkNEoJlvQrUFRqmSGIRmCCNyGerrZKPqt7I7Rg+XhFawwOiclk7EU2KQdgs4MD8AuY+uI+a+65CnxczFTfHjMHLmSrHWuc1wqqqDMCd75pjpvY9N2iJc7H85m2N8lVwL0pxAeIlsu7Gc4kq0/NSqxV/vB153tJA72Z7nX+Oakwt60hhACOYdet0vSl98WtpMyECxZ+KT3EUzbb37PnpMAU0opw/g6HY9SYrbXOHJlX9+1I1J8mSdXpjWQLtJkf9pAt20gV/59NH30G6E06Ev6pqnRPE5S3A+Dtm1x5ZVXHvdpnDwQPeZZu4/9FOjfCCGuAvBmAFcD+ByAW4joK26Tf9LZ/h+EELcAeBtszMPXAPy3FzsjCxhIVsA6KVlCSuvHgvVliYn1ZYlmDhrZ25SUBOO+G6XE+bn7psyNskzVSsqDLF095GFlDPCPZYZiPIYO3i3hynVFNQn3TVujqEbhvHyUA2BVrRCqmnRt2Q7DeNswuw33Z7l9fCK6I1Pe9G7qme0q9MGobYdwMh+Z6eaIcUULFAgZkfVWGaKOYR4p6QrzCYuUhHTH8ri1iV8L6FG3WERDyHVICnvhlhLxY0D0EB4R1ueOwPOxFiFFNL8f5M/y4AGcadyESH7nOgzT+YaLRAcAimqMtp4hC1q4AaH6OgwZjM/LypPPb77pn2O2X6McFZjt1TCagmpbVBJzl9IOWJVLKWnnEO7vwTTWb6WqSVCubFkwLmumu8HcDgwEqwutNa666qrjPo0TieMsF3oQ0bsAvKtn3Yszyz4K4D894tMaSJbHupAsWRahXEjzaTC+8xl3qcE93j41KnDeXZg4qZpUBWpviDWEcqRQT9tw8S4qxfwsFjyF/WIiCSOVKi0XNjVQRc+RKkQYFk2G8MjuHE+/ws4es3N4nTOL1QxFvW9vGA0001TZQtxO720n52T3MZZAOSIYQkeZatf1Y2W/wXlC6kt+mfiGXkXLJ9DzMEvm7fL7kmIEILx0OwymJ/bjYiHnz8rNOUz34eQu+rPO79cL61dLkV5UtIqqcB6szOMXucT3/HFy6E98756T6DQZEubTFkVl1SzTmqBeaW3Q7LTQ2kC3BqqQ0K1JyJWPOJltPxiUK1WNYdoGzWwP7XR38F4dAGPMkJN1VFgDkrWuGEiWw7qQLA9RMrWCfYMW7RyjUmKO1Iu1USrs1unsP20Ip8YFHt6r0Rpivqx4aH4MMhqyrJJsrG5pUEoFfchSYe9zZKZc09Y2l6ttIZXPzCIoFdW2257a4IusKcw1bCEkbGebw2L6OxkDM921DC2EkLpcLM1VKw0znwW1K5udxdQrUZQLo4KSRHghoi8tlBS99BODTpOQWL89z97iJMqrW0XVb2gP/jPfcZi44eNNVirPa11cqVrOfA5SupLTW7I+N1onPSj3Zy09Jbf54eIaerdZGfnt59MWzdw2m/iSfTO3RIq0LZnPd7ZDp6Bua0ip0Mx2QxyDJ12z8w+F5HZgIFcHgYiG2YVHgrXwZK0tBpLlsC4kK8nIKqp48RQyXpClQqUMNEloMiCSaGqDRhs0jGCd2Shxfr9JyobVqMB8GueeVcyb1YfHqmh5/1W8b5LB02TiIGpVFFa5kSLpMHvri52i554bLegEZCVr7sXq5BWF5xEGRDsflrsNFy8RYLRNePdkTGtLSPw2rOwIT9Lc6yjxrKnCKmAEhGwt11lpuwNjyRbIlQPdPon6xYhbOA577ThiZWTJyBZ7bqLjVfOL2TFycQ69JMrd26pK7LIxNt0xPlujAvsdlYkPhe6SKymA0xtlSID3KEflglplM7L4MtbYUZVo2Xn1U6bVYhzScnXvwcK+sqgw3Z3bHDtXFp/tzUJ3oGlrFOMt1DuPoJlZVarwZUBHrvz7xBiN5wnBUQAAIABJREFU+vyDA7k6BNrWKvdVdbQD7x+XIAwkawkGkuWwLiTLg7S2o1pme5CnzkI0M1A5ScuGjDzxCIeGhZDOWdlwa1xgZ98qJl7BSjoMqxGa2T67P0EzjR4Pb4DnOCgfi/uvcmpLbn+lJLQ2oWWfhy36jCPiFzk/ksatF2BeLNiwSDPbc4sWPwwSI7wjUt0Oy0C2WLehj4MwXtHyhAtpiS8uc7slKhcLNeWlRJeXlcQ3VOnbtVvSFUm5sHPjIg6KzhIu/tCZuAd+3y/OqVWnk9LhQWeygjrF4H1cFO4vDnCGlMBhv1NkW1zZavfZUu/thAYSPa9C5IInVPPdR8K8wXLzDGbnH7TlQOe9kkWF2nUQAgO5OgxmsxmklJlZmAMeO2gxkHdAwECyHNaFZKkyVTESVYOVDRNfVidg9MyowPl5G3xZmpUK09gGiXquQwdfF+Yie7J8GKlgf2s/O9C0tS1NesM7ez7vfEkMEDw/bwBMrJJF0fvC3+RBEcrJ2CEjy1jVMJT52HZax47CXJxFp3zoOwzJkzQgLS+G+IZIuvyMQu7HSpQqRrK6fi27X6A68bwL0U+mjI4GeCBVvQQfIB2X56K2ll2iQjRDMLkf5M/K3wZSdatvn4CM0OQvpkVVQDfLR02FY5ejMLvQtHNnds/vu+jNWl5OlKpAs38ebT1FUU1CSCgZDTWaYL7zSCgFqmqM+fmHkkHOQqrHfWL7Y8F0Ol2bz/iTiHUwvq8rBpLFoJSC1heXWFwISBsbRsrNziqvYHmC1RhbKtwaFXh02oTlftuzG1WYiwbY3J26NQm5MsGz5coSrMNQSLmQ+L7qaJ3FfWynnu8ujM/bER6iQPx+59YnJftrY8cHbZYq2rGWBknawqIPFuXlQbu8S7Y6HYXe5O4uqKapbenTmIXwUrjz8cb+sM4tS0zyQsYuRL+v91/JtMuQOp2JxEb4iKJT/vCP0TX8d2+zc+dxELysmysN2hE7OlnWve2RkKgeeiYyy3MK10GqVjhXb6/qvCSo9x5BVWPoeoZ86S/D4FZG3FZdfQPqvfPBe2U9Vw3aeoqyrdHMmMndlQ/5a+jjd/74IR53QBfb29trEdNzYjGQrF4MJItBSnnsJOtLz78d133mjywZqWfhQg8AUCWErlFKBS0LVEpgr7UdXWdGlpA9yrwraYSDM5i7AMR6rhNVSyoJ44iPj3DomrmBx65u+W/l3k/U1lOU461km2WS/vPH23gAG4gXMBfh4LoNe/OxgDQ4NFke4xkWtzVA26Sm985rxA/11tpAlYU12DPCKMvSEks/azB0JhqQYGZ3rlo5EkTcO9VJhQeQnpfkBCmMb2ZnymdidnxfPYhDoOOynKqVKx2eHpfYdt2uuXLi1qjEHutq9cu7NIY/No928MesJgWaWeuSPRY7BvtokW3qyHUadrYLWVkXTrjqnUdBRqOdT1FObBp7MLezsTcAoOvpoFZdZJw/f34gWUcF8lWFATkMJIth3eRkrmQJ3UZaIYswALmUIpAp7svypcKNSqHWBnWroQ1hPCkxm9oWcgAgQ1bVmrcJqeK3L8SL5ffl5mzpbnulR5YxnFQWlZ1d2NagYgwA+N1XXJ09rvbDolm5kMj13tnaIYJPoPtv2mkkI6NtVIZTuciYBdXJkiaTzJYUUgZyZYwJrx1fmiKi0MRg/NgdISGUdATMK06OKXD/lmQfWP7DK5llyDPPeJmTlbbUASQqUdXYxYeR01XeDTnC1Zcgn19GC/v426cnkVDx5Ymq1fn35IOiQ34WLRKvxech+9cT+1kV3n8nFKQqMDv/YHjPdDPoPvab/80hDjzgQrCzs4OyXO2LxYALwKBk9WIgWQzrQrLUuLIXfB+W6GMBminMOE6Rb9jreu6Uk8bE5PdJpQLZ4gb4UBYkQjlWaGY6+JgOinAAXPTCIRU/oVTwZAEIZnh/4SGmogHA//Yvruk91vaswfaowGSrSsqF4ULLLrzCK0Idwgej7QBoV74UgAskTQdY8yur0ZFs1Xuz2AkqBYwxgXT55aRN9IfxZZxE+TJw28S4Bh86ys+X+7h42dZvw7YlxToK+8qFvWVE3mnIlLG4RZwluIKH+KDRPKuO7jnYi7WKymSXxfLgCjiIWPWeg48Usd/yB2XqeLGzszN0Fh4hBk9WPwaSxbAuJAvoKBR+maogmn1QMQrp59pwXxZhqyqwO28xKSPB8r+rQmJ/5lr7icJQXd9pqIoCba2zQaT+fKQLELXLVidaYRizO1aX9PBxOwdpKJqRRHRzGmyYgz0mAJrtRe8TG50Trodd43vIyHLp786zRSz11bjbfp1xsQGEqHDFlHaKqpf0+xNkWSSPS0KwcqBfpyOx4jMPcwZ3/m+mSqZ2HaxYUQ/h6iNZB6tTEcuS4HPbLeAQ6pHgqbQHHepgcWth79QIv7hTeCUSItMH8JHf/cVVHmDAEWJ7e3sgWUeGTIPRgICBZDGsE8mS1diqKv4bd+hQqyBMi5Eq0BjCqBCYaWCkFE5VhJ1aY1QoNHWLaa2DgrXBVC2jCZUb7eHfG0WpXEhivCirogot5kBKqh5LdpbIkB5+vH/zqqcv3f856lHsYQICYBzPIikgQlkoGpgJFNSs7rlHeuYIURJIaqDrZoFgUYdgWT+XW886zkL0ghRhmSdnolAh1V8UPActNcInx2Hr3cEWtvWDoUmyZb4MdhHT310/Z/gNdDxXfftlyn1+2alJhZ3pYup7OGZm2WRSYn/q/Vk9xnrefMmGoKd1xlyJcBnzWs2bJaSC6M6VHHAs2N3dxXg8Pu7TOLkYSFYv1odVrAHWhWT93bN+AIC9gIqKfTCwF3LLTOt+PMmsNZg7g/uUDcaduMGz2hC0N2mz8qHy3qFOd2EXuWWHIVtSRiULsBchWVTQrpNKSIU/+InrVjrWo9MG08YAPvMr2xgW1SRuzjTTvRC3QOx8wm7ux5cAvTEeQLjPb3vy5MuJumWNAmFZStTCvjxewJj8T2c99f0sm61HJs5tNNredz/C6PDDl3MzkhAIPzkI/iNE+CEiENmuVw7pfvJ+p7hQOm65NS7jMpGGnAoR9ylHfA5j93h9j2VfI7mh072ghRuZu4MZeF2wt7c3kKyjgm84OqqfyxzD1yyGdeo+ESP7gRCVLPdia2bO1KzQagpka85UmHmrcXpU4Px+g1EhUbcmmWUolYBuLanytz0J8L6odrabdBLKogwRDof1Y3lwT1ZYxuayHYawaWPJVTfeiyAg2AVTjDZB870F1SoeKJYLk+DUcM7cZK6DyT1WG2PXZhA/pIglxaBoMUWMSTl2ZmMLFMxT1fVkGZP+bZaFv+oGxF/HfSnvXKnp9WcxpSrzWJNShTiHLrzKlVWl+O3E8J5uK4VY+OdaGYdSopYvXk6k8ggNHYOStRbY29vDxsbGcZ/GiYTA4MlahvWQbtYE66JkBXQupoKMHbUDqxaMXBK6ksCW8/GMCoWtkS0lTlyrP1e1itKrSbZk6G/b3zYYMSkLaqtq9REg0fUGHYBlJcc//ukbVj7Olx/dgzGEaWvJDTkvFlUblqR0us78bSd69V4nk3NyG+q6CYoU4BSurG+NE7b4011mOv4uw5St7vHC4+SULXuA8BO3zStWfT/UJSRe9eNqF5D/6ShJliKmx/PKk1ev+pv1vFIl0iDTTqWU/9tkl/Gy8YqlvZUJ1iEgpRr8WGuC/f19TCaTgzcccGHoU+Evxs9ljjVjFceLdSJZf/20F4ZSIc1jJ5RoZiAVy3b8u3/pUhx5J+G8NTgzKVEVElXhvVC2xV1rA6OjibyoygUSxIc4JyNcWNbVhaBrfP+T/+75h9r/e05PsT232UX7jQGR16mW9PcDjrjai2+4BHdyXkI5MNd80CFEC/edWT7xcTlitUCuiBbJmI4fLiQkKxGyfxeX20VtE/dXRbacuCp8We8weTecbPWha2gXgpGubOiowJmN+PoOb8msUZ3RtV7WDJTuC8hqjYwpMYu8zbgGgbxjnvg5DKNb1g7T6RRbW1sHbzjgAsDsGEfxc5ljfVjFGmCdSFYCKSG0NQVTUUG0NkDRlwpbHYnVnPmBqkLi1LhIlCzdGpQjFbxZxhBkIVGUKlG0AGt878KaeZeTq1XLfsseZxU8Mq0tryCDaWtgSlsOIAAkJMjpJom4AbByoH++i4TEkiRHgjIqk9/GGBNKil2Plr9t2P5Gcw/VIhkLafg9SpnP8grnzFSsLJJvhcR+VvgG2eOLWEasukoXV61y3MOTOyLqlAsZeWL/djJRzdim/BycH4wvzz32ynPswoDtvte1Pc/wuLDNHbIcutnWBQPJOkIQ0s+KwZOVYDAMMKwbyRLjTUsIWAeZaGuY8RlIAiolUGuBSgH7DVBKiY1SYd6acMHiMQ6jQmIyLrC3Zwmbbm36e9vE8Tq8ZLioXJmFUNLDoG9I9J/+/Asu6HgP7c2xe3qCcVGgczlHIFBgXXsE+/iJ7yrukycqFI/IcrIWYhx4GVCy9f5KL5gny6luvrOQtFmITOcdmAA6snn+Yh+2ZZ4yUmxbuei90qpCSlgO/lDLEpbcdsh/i9saldidL4aMdrHo0cosp4UbPfc759adw5PdlXr/Hj69f9kjffT3fmnpOQy4dJjP5wPJOkIMnqx+rBerOGasG8n63Kln2RtFadvzdZ0oWQ0fi8M6DD2mtb0QVEq67ixg7pZJKVCNChhNIf1dSAFVTQIB8cb3vrLgYRWrmJMV9/vgL9600jFyeP7GHjSZYIA3RCA4U/pCVSeWCOVk0xKtpJoYyz2edvESH9dOTEfV6lek+hWw7nZcEfPruKrUr26ZzLYmuzz37VDpFUgzmaS7kCv5OVXroBIi34YTrANVrfSkkmXVuOysW7b5ktoiYbEs2NmcDrigCClDJ+2A9cBsNsPp06cP3nDABYAGJWsJBiWLYZ26Cz3kZDMqWUJCsLEzlRSoBQVlYe4u3lIKlEpga1wEojWtW+zXnjTZHXzJUBYSQhtAIyhVxAgW6X6T9ypIcrDYxedD/+MPrHyMPjy632CrUpgU0vmynColBFBOgGY/NWITJVIMdYiVICTBqQCyRGkpwjEp7h/iqmLyOzJhn8YYCO3zCXoUK34nFwyb+VsvHsQrWSPwWipltlkFGSdcFgeHknYVJorL3SI7v9C+TruqWno/dyaxRLywPPiuMofoP1QWxXjoZFsnzOfzgWQdJU4AGToqDCSLYd2UrARkIEwLw0Ila56VJYGNUmK/EaGaFAhWo7E1LrEza1EUEprlNkklYAyB3A9gFSffUag7cwz9EOU0of2gU9cLatjdv/LPLvAPkeLq9iFo8zTsNRrjQjgflivvCWF/S4VkaPQSQ2W4pmrt+Vp2C18mTNb40FFafC3x2Yc+xd2XAPkcRLvAr+dlQ7a+q3j50+qea0f5SgmUZ4JdUsGOzdPf2d9ruZUpbT04KKSUb5srA3ZLhsuyrA62WFE/WTrwItGVs7r7xLKwEAJ//t7//qCTGXAJ0TTNQLKOCkRpKPKABGvMKi491pFk/Yfim2xmFhmQLCBY4GTZMbPss2GGPqBUSYGtUYFp3YbuwmjOtb95udDmNtlwUMMS2Q/bTZjrSARsCbL+ysdXPs4qOO+GCO83jsAIAVNturUSIILYPG19UZ60JCfbXRAXc+9124ly4CZ33eqEu3mPVhL94E3wHaN9QqAKlVY6/bZah59c2ZA/j97uwkNL9eyY7M+UdhXapePShzN0TqjnGHksbkGd/1ZB/jF69uVK1WqHd9svkjI/ZHrIxlo/NE2DK6644rhP44SC0tiYi/1zmWP4NGBYR5IFWAM8AAjTugu/QSEFap1eFTZKiRkzvStHonx3YSFFWCakVbx8hIO/z8uEyqlZvFy46mgdT8hyxOxj//vbD/X8D8JXHp3i9KjASAnUKFBVm5D1ntNUyKoLZCJpCkTLRpdCylQdYscOfi0IqKqErpvONrTg0cojKh2eqSQ+rjB0WdhxPQAff5cpbzmFjmVzZR81UcC4Cd56mJSunfl92al3vRF5NiKWrqd0nM7yR+zuusImlIqTK7V+r1YDNAtJ+pGZkXssPzdRCIl73v8rKzz2gEuJpmlw9uzZ4z6NkwlrYD3us1hbDCSLYV1J1v9zvsS3n2lAMv5zrRofoqTAqZH3ZkVFBbClmKKUtnSoucKlErXEq1mmbUK5kG+3DLxU2H71k/jEB9618vNeFc8d7cDQKWuAN8YSGIIlNELaBHg++48ASAW5cRpmf9sSGilDSVF0XwddxrP4LAOZ4aU/IgolxbBMutcZwTcZWpj4uIF88fqXYvVAHxnBTyFDfpcpj35fI6scq/QH6t3f42Av1oJr/MBjAtEQf3pSYXu/x5xPPepW2tHQc06ePh90Pun6BcLFV7Ou0AHrhUHJOjoQ6IKngDweMJAshnUlWQBA5SSY3gUZSNLQxpcF4ye9YRcxr1p5wztfJqWAQTS/CxkJFpBeqD2ZWoVUhfPN+LCOgmB5fPnRfYzUJsZKwigJKfzAaAGqNiHqvUyNEMF8HkphfYOUD7gWez+9JVtM5wrkKtKR0EXooxwU810ZTlucGtg5iXD0jvrWVYeoI7cn/MYTNWG6O/U/QYdeFYoW16dNgotsbmtUJHEOfv/cn1vmjrWwIXXuZUqYPTjgUAdvD+Bj//ZfLt9pwLFAa42rrrrquE/jZIJwIpLZjwoDyWJYx+5Cj8881OLbnhqNmyQVCmnQGFsmKaUEoLFRKux35sltVCqUDKe1tt4rIQKx8vAKF++s63YbHqarkOPed/3XF7TfqvgWcQ579RiTQgBQmAhlA0mrTYhmCri8LLlxCma2xzr7CHK8ATPbd/ciYaEOqUmv8eQGIPNlCNv3EYUcSBsIT/bYTkmfXabsF8qdfLvusfkdfgy1gu7UlxGVXdqzzSpCUYacrXz8JUu7BIu6gy779vQesoWmALdV54IiWKl3wHpCa40rr7zyuE/jhIKGcuESDCSLYZ2VrAD3wS+MhiYBJYFCAjPnrdJLLiQAMKkUdhzhahsW6aAX1SyuRFkVyyTlwlWgv/5/45N/cufK2z8WPLxf4+xY2bJhaeeUiXrPKlpCgKR0XYcyXoD98/HlRGMgpAAZsqW/jlqUkqpDqCLZNcsvytyzlaTsM9kqPI8+r1zSXZhjhMY+9+SBTbIJX2Zvx+1zqlXfc88JiXy//r26Jcdl2/cc5YD3RTiw/7OQAbHSIOm2s6Xf1uV6qQLKjcEasH4wxgxhpEcFogv+8v14wGXAKi4d1p1kffZr26BqApgWJBXGhcu78nyBXa00ESblcmWuKFX49i1FnmDxMTqH8ZuYb3wGZPQlI1gAcLV+BHu1RmsMDMEZ34UlVUICQlnTu0t9t4GkFPKkZDUOvq1IOGX4AWxprxvdcChkOMOSxcuPwwNIe46xmv/78OF/QhCEiOGhYe7hsrljfSeZ3aCHXC3dd9n9JeiUePuP139MIQTu+df/0+qPOeCSwhiDzc3NgzcccGG4WMOgcz+XOQYli2HdSRYAkJvPJ3WD2ihXKhSYO03BEGGkJHbnLTS7yE1KhV0XdVCUCm19+BfvYQYOA8AnfucnD/0YjxU78xaTUmKkBKSwBMsHDojRBjDfB0C2bLi/Y4mW0VblMja2QI7GMPMZinGFdlZDVQV03VqipTVyCpQdtePWhbJhWs4D7Id9NL4v9zlx5WnVsM8cwssg+ffrOUqPepX6u1cp1vVDiiXqFXV+Lz14H/FZcRlR9kPcuIkKi5ubbF1RCDmoWGuMtrUqZFmWB2w54MIwKFnLMJAsBj/gdVkZ6LjxuS98Ec9+zrcCAAoQak3B7K6EwKiQ2Kk1RoXCXqNDNpYnXN1yoirs7EKzwnO25bOD30zHQa48Ts8ewl71ZIyVgKwqlJgCI/cNtpla5c4Hk/KOQ6FsFczHOfDfDLbySHEe4kJ8Q+oECvdYK6E3vvNybCCwOm4nCv7Yi/8+vf9kq/CnUBZb9u9O2ZuHYXn8+H0zCnuJ1cLjdU6iK3T1lATbebcjMKOy9cDwMiEhq/QNKtZ6YzqdXhZfoC9bEAZP1hIMJKsDKSX0mrej/s1ffx7Pfs63QhuCchcuXsEaFxK7dYtxoXB+v0FVSOgpBcJFxpV4WMo7AChl4xy6g6EP8y3lOAmWx8P7NUZKYKQE1GgLcr6LOHzPlQsNLFES0hbNpQQMgm8LhJRgMYaQmNOT5W77MAianZSflNP3Ye8O2qte8UwtyYdbu0jQxIfVpzgeTCz6Iw2I3VrN4E1Is7H64hYOilHg68OXhCXELLymc+OClpAr09T5A+YM9e44Qgh84g//5/6TH3Ds2N/fH0jWkSKvCA+wGF55HVwub8a/+evPh9uy46sCgLGSaIzBpFKoW4NKSWhjiZYxBKkEpCNd0hm9jSHIjvkdgJ3lx+73Db9dB4IFAE9qH8V+Y7BbaxAESCiQLN1vBTHZsmVCIe1sSK9oyejbIlfS63Zgek9Wd3myjf8b+m1X8HBlC1/MmtRvZ8ptEO8kg6UzB1llQDQR0OezStPYKVnS+yT58XqPhYXj9DV1EBHqmVerOsdkgpeuU/O6316H8mCeYKWm91RN6438GLA22N7eXuvO8cseZK8RR/VzuWP4hOjgciFZAPAPX/gbNJ0vEIoRrVJK1K0lWpoIVaGs+lXIQKakI11K2WXG0EK+lVBRzcoFXAqp8PE7f/wiP7vHhi88uANDhL3GwFQbICEs4SonIEewRFG6kFIFOd5MiBakN8lLN27Imd8Zp0mWdyCk6HAad8uZ1IGUt+SO00+sluMw+y2kvXNit6yqFk4+s33PCRii8HPQOXpy1RtEGk6DS1qLBCv3CLqeud/T/uN2uwkzsyMHFevywLlz51AUQ9Hm6EDDWJ0lGF55HVxu33i+8aW/xZl/cj2AtGQI2ItaVUhMa41KSUxhPVp1azBnqpUqBMjY3CxVSOh6kVB1U+B9x+FR519dKP6TyRQP7G7gm85UaAyhrDbtN4r5HuBG6YjxBjDbD2N2Uo+WLSMKqe1l2v9xfX2WCUMCiAQMCN++BNyFXnQu9URxSHQHh+ngPCz5Sk+B/KkcavvDPnKf148vT253y4G9D7fKORziL5Q9z84y0mwzCtlmA9YbOzs7g+n9KEF0IsjQUWEgWR1cTkqWx/l//AKqp16H/UbH0qEnUJmyllezjNZhODSHLKqsTGvT36Nn6553/sjFfBoXHeLhr2B38i0AgEJJ6yVyo3YwOQ1RT2O8AxAULTPbix4teJUpZmcBkQwpKaGb1i1zZUKWI0XauLIjW+YkH5Eh9PyynvzL8delP1+2Mbn5jIt/BPa4mb9R1m+UWyfynrTc8fgxDiJxu7NoSjcmQ7wYqfF39mbNgXlw6R/HE0rma0tyv6Jk58N3AUpN7/yIQkAIDCrWZYKdnR1U1QHzOQc8Jhy28/zxhIFkdXA5kiwAqL/2/wJXfTN26xalK/uVUmDXUEK0CumN0s6DVUhobQJBsGb4SLCkdD4mpmR95G2vuLRP7gLw9a9/HXfeeSde80tvw9PPjlArhWq0FcYEyfmeJQ5SQm6dcXEOUcUKKfCqAOnWlfTibDpVFTEhX/tOwwwxdcpXYpb3Y3TcZVtAhAt4GtXAIiByJu4OKEe+kg0Op31R33E655jdqseStXxBbp0jP8xclRCs7EkSMhyL3Y+5WOQ20J3YBm+eJ93GCwgBtisVuO+P/pclJz9gnbC9vY3RaHTcp3GCMShZyzCQrA4uV5IFAKOHv4wnAfj74imQUkCTVbIUU7VaR7paKaLJXQg24FhkE98B4K5f/i8u3ZN5DPjc5z6HD37wg/iFX/gFSH0O27Mn2E7DQkFBWFIjVew2BICOomV/y5CZpSYF9HQKWVpyJQBQm859BPnYBz/ImeIFPreMpbZHhSwdkxOJGMcBZKnnNZyjQwu8q59Nsds9ZIoyy/rYDmXWZx5wlWgRvzkRoXXm9uXlTYo8jAeRul+mWczJItKOYIkDEuoHrBv29vYGknWUIAwkawkGktXB5UyyPJ7ZfgMA8KH9OOvQE62CkS4hRNKRyCGUAlrg/3jjjUd8thcXd911Fx544AH8zM/8TFhW7D2E3fKJAICJLABZQEKAqi3rq6mnQFFmFC1PthzpdAqUIAJBRpUKneVBJTFRifJElqlhYOTWg1oNFCr6vDwyr8u+6IPs+JyLiL5KXS9dOsBT1afRUWbfLumK3rL099IT9L+NicGjHdaZ7yi0vwcV6/LC3t4eJpPJcZ/GiQWBhnLhEgwkq4OTQLI8bjq9HW7/1qMqKFl1a8I4HeNGolgFyy77g5+47ljO97GAiPC+970PT3/603HHHXcsrL9/t0Z5eoSyqlA4e4ZopoCQtg3fq1iqhBhvwMxnkdh4lcl1KAkiAAayKGDalpEhN3yblf+CSEJRrfKqlu8q5I/Bd+PB6on45clf4rdaobbHH4O6jGPxOAfnYVGH9Cwek6/m2y7yHVoQukyHzfmuxGXn49HMLUlqm9RX5TsKfYdhcvw27WQksv5DIjfeQ0h88gPvXHoGA9YPu7u7A8k6SgxK1lIMJKuDy627cFW8+hn+TVDgpP2zN02Dd77znXjpS1+K667LE8Qr2/N4eP8KAMDpqnCdYSLENYitsyBveJcjCK1Bvu27YR2HgO1MBAAiS7R8NyFr7yRC2Mb+EqH1P1CBnqytLhkLj00+/sGVENsaFBhjR/Xy3ywTYsVuCrm4n92B3eak6GBFzJMk00OsODyByprdsUiwwtkQhXXzJMl9+fnpug1m92h6t/voJpIrPhQ68+gDLkNMp9NhbuGRYvBkLcPJutpeBJwkJevxgO3tbbz97W/Ha1/7Wlx55ZVLt53MHsW2vBJKFNgcbUIK6z8TQkDUVtWSG6dg5jPbrTc5BZrtxxE63qsltI13UASyMfEAAFUW0D7Vj5+LAAAgAElEQVSZXbuRPI44SGNgOr4rMiZ2GLLGg0CieEeiXWBvdwlVDv6ce7lBvrzWT6aWq1qzRq9UmVxlG56NZbIm97xSlo7VoWR5H8HqnJ39v24XVSwAn/zAUCa8HDGdTg/8bBjwGEA4EaGhR4WBZHUwkKzLB1/96lfxnve8Bz//8z+/cov25+7fxrc/9QxKqTASyipZXs0abQC6Bpoa8CpWUViv1nQfclLajsOiBNoGEASh7Dgi0xpX4nMEyc8qJO/biuvQiYOwy6z6JKSIBMmtWkpvuCJFHaXMH7e7LZaUAnu24cc03boeItnhI2e6iEpXt8zIjp01fBG2p4uhpOTN7kzR6s4v7CNeQFoe7BsK7ff75B+/a8n6AeuM2Ww2KFlHCrKfhwOyGEhWBwPJujzwmc98Bh/5yEfw5je/+VD/ZjecavHgbo2RHAFVhWrklCypIOophNGAKiA3nQmelQgBAEUBgQIEQBal9W4BgCQISEay7GKvFAnIqBpJAQFHiERUt4KBPihnftakWSwHOhAYCestAfr9FonVQihqr9SUhkt4xAImL/vFLXPlwF1GirolQkJ3fA6F4ebdYy6qcPxpdJ8HBR+W7x4kYxKiRbrNqlhSDR+TlzNmsxlOnTp13KdxckFp7M+AFMOnRwcDyVp//Nmf/Rl2dnbw+te//oL2fwLt4KF9iSeghKwkiqBouSHSky2gngOFNcFT2wDKJUYLRxA8kalGVoESEtQ2ENK9pchuJyHc9BkTXlt8np5gJCfEN/iyok+G9+N+4obJ8yG2z8J6rkwlApR/3E44BA8d7ek8zYlDi9xskXylq3s8V4jlUgCWYKWLFvbyq1pndm9q+7dv3eQC7rmyD512QpmOD4uMsefn4h2G0NHLG/P5HKdPnz54wwEXjKG7sB8DyepgIFnrCyLCe9/7Xjz72c/GzTff/JiOtdWcx/nZGUhRYKPcgBIKwv80U6smqdL+0B7k1mlXKnRvGTEBdANoAaAFiOwsRGMv9HJUgVgSvGkQlSQhAN/0Vqjw3AISkiQWl+UIVZ96lTsWW54oYYs7h1sJx8mMxMnlUhnqMcETW99hbMZQx4eV7rs3a1I7PsXjES3uR5S2l/vbpku8nIpldOsaDCyze5L5j3jDG96Al7/85fi2b/s2DLj8UNf1QLKOEkR2ssWALAaS1cFAstYTdV3jHe94B2677TZce+21F+WYo/l57KqzUAIYqwqyndtMLKlAo00IoUBu9A4Aa4yfbMHUcwhVgmoABoACAAEoQGpbFhRuFWAv9LKMhEMAgVzFkFIEEkRykRhRjliRiYSrrYFq7I6Zj3YIpUmm5CjTQsuDPwYyvGfhdm7bVD6jZD0vFe7MFj1XfuRON/ohlgs7x2cbkYsmSRbzXCwwHxaZdOSO65a6632/gvvuuw8f/vCH8brXvQ5lWeKbv/mbcfPNN+OlL30pxuNx5tkPWDfUdY0zZ84c92mcWBBhIFlLMJCsDk5qhMPljHPnzuEd73gHXv/611/0D0u5fw4PmzM4O1LYHJ2CEDKoWZDKGt9PXwHa3wUVrmTo/QethByNYOZziEI5FauI/oTEz9XYPC4P140TPVl6MVaBzEIgajweHDHLlAMP6D60j8MJCFesetQrtsRkiRPv+Mv5sNqFZQvHctDdY1L0aXmC1ThfFxs7GM4vF0jq87EAq2J5UmXa2qpXxgQVC8YEo/tNN92Em266CVprfP7zn8c999yD97///Xjb296Gq6++Gs9//vNxxx134Ju+6ZsWHnPAeqCua5w9e/a4T+MEYwgjXYaBZHUwKFnrhS9/+ct43/vehze+8Y0oy/JIHuOv79/Bt119CqUEymIMYQyE0fZHSKCdOzO8LxmObKmwmgC6BUaSlQ4bRpIiSQBKO4onmN/db2+qbgGEOAe3TLehPCnIgPxy30nY9WoVbL0HI2zUR6b6Soo9Zvc0YHRxGYfpEKB0HfNe5aSyjOJlHysGl/rOwm74aNtoEFFCqACrZhGZfB6WM7x/8o8XoxqUUnje856H5z3vefjJn/xJ3H///fjYxz6Gu+66Cy972ctw+vRpPPOZz8Stt96K7/me7xk+R9YITdPgiiuuOO7TOLkYlKylGEhWB8OH4/rgU5/6FO677z686U1vSgziFxs3nDH46wd2cf0TNnFmpDCqNhF0o2YKUhXEhoKYTwFVQioX5RCUJ+a1KgqIxqssvrMQ1jzPt3VDpQWcwbwoEIJAw2uwyBImkhLCpMuS25kQUwiZEKiEWCXkiyljbPs0rsremTW8o6hfnepGNnAfl8moVt1lPL4hqlSUNBB015NbyfOxuA+LjAEZ68HyQ6D7CFYOT37yk3Hrrbfi1ltvxWw2w6c//Wl89KMfxS//8i/jLW95C6655hq8+MUvxste9rKhVHXMaNt2yMk6Ygwkqx8DyepgIFnrgT/90z9F0zR47Wtfe0ke7zlbGv9wbgqcGWOrUthQI0itISpbOqR2DioqiE0Fmk+B0QRCNyBVQOoWRrUQugVpbf1YWkNUo0iuysp2qwUliz24VFa1cqqWgFOaJFIS5VUtVYLgjpvzaqmo+JFUgZCl2Vj5LkLqUbJycQn8YzU1uPPb1kCuMyRtZ8bUJLeeE6qgbrlf+/Mm5F4FP1bfzEICdDNzv1mpsK0XBkDbbkKzMsHqYjwe44UvfCFe+MIX4g1veAO+9KUv4Z577sHdd9+N9773vXjiE5+I5z73uXj5y1+O5z73uRf0GAMuHFprXHXVVcd9GicWRBSmXgxYxECyOhhI1vHCGIN3v/vd+PZv/3Z853d+5yV97GvHDb7wiMG3XLkBNVKoxlsQzQyCDASRHcXTTIFyHNUsR0TivEJhyVKdGzwcS4kCiCnJQlqixYmCLyPmOgKFhHBEiniGEzfBl96ULVhSfQ+Z6iNWiZLFjeFx5mVYllGq9l2UgjHdvKx4nO4+uXmFQflifqxc0rv3aenWBG9VOE6mm9AYq2KBDO77o4sT0yCEwDOe8Qw84xnPwCtf+Upsb2/jE5/4BP78z/8cr3nNa1BVFa699lp8//d/P1760peuHKI74MKhtR48WUeMwZPVj4FkdTCQrOPDbDbDO97xjmM1El+/qfH3j+zj2isn2CoVRsUYMkQ7zFzY6NyKTJNNoJ5bo3s9gygKkCNXwhvblQJaG/EAVXRmfHXiGXIkK7NMkMnPHuQmeD+mR4gYjIq+EmGPqpUoWXFP4zxRyTKk6wFHrjJmrYUSIaJq5U3ve17lIloIH7W/KORitU3nWzQjhMHwTga6qUG6SQgW6faiEawcTp8+jZe85CV4yUteAq01/uqv/gr33HMPfu/3fg9vfetbcfXVV+O7vuu7cMcdd+BpT3vakZ3H4xlEhK2treM+jZOLIcJhKQaS1cFAso4HjzzyCH7jN34DP/3TP33s6czP3NT4y69t43lPOYUNI7FRFDawVBb2HSMUtJhDtHNgtAHUU4jJFqie29E79QwYOVM892URIFrmh5KFIwQibtPpTBRghvfE5F7Z4/NlSTK5z8ESkU9xAsW6FVcpEeYIUV9HITesdwmVT3s3jDyFqAbDTFYdH5dmyllXQUvvL/qvTFuHQFK7vQk+rKMkWF0opXDDDTfghhtuwOte9zp84xvfwL333ou7774bt99+O86cOYPrr78eP/RDP4Qbb7xx+Cy6CCAiGGMwmUyO+1RONC4nkiWEGAH4dQCvADABcDeA1xDRV5fs84sA3tJZfD8RPeWgxxtIVgdCCEgpYQb585LhS1/6Et7//vfjTW96E4piPV6S/9lVEmj2sK0nwEhhpCaoVBHKh6gm1oDezIHRputAdARJFRCqANWW6hhVRMKlihDfAKLEiwUgGOLBo0Q8h2DbCWVH+yBXLgRirpZUdjujQYIRqxX8WbnZzLNW95AdsP1c+Y6X6zpki2ixRNglZdoAe46U1fPFbsBwHoacmkXQoenAJONzAEu2vJJFxuC+P3z7wjEvJZ7ylKfgtttuw2233YbZbIZPfepT+MhHPoJf+qVfQtM0uOaaa/C93/u9+OEf/uEhTPMCUdc1hBBr87lyEtEN/L0M8HYA/yUsyXoYwFsB/KkQ4juIaJm57O8AvJjdX8mINrzyMhhI1qXDfffdh89+9rN44xvfeKQdhBeKTTPFI9MxzowUtFIYV5su1qGGEC2o2rCKliyBcQk0M4jxJqipgbElV8IRqWCCLyob+UBkuxHbNnqritKWFxPy5I3xzNAuJFBUtnRYVHE7v54rWQAgi14fFidfBylZbcZbxdfv18vzsKzS5EqDhhMqiiVCAE1wypPtFwi+K1ci7IzOCd2GYR4hBUXLZ2GFUqFuj51gdTEej3HjjTfixhtvxJve9CZ88YtfxD333IO77roL7373u/GkJz0Jz3ve8/CKV7wCz3nOc477dC8bzGazQRG8BDCXiZIlhDgD4FUAfpSIPuSW/VcAvgLgnwL44JLdWyL6xmEfcyBZGQxvykuDD3zgAyjLEq9+9auP+1SW4gxmuH+3xJUbJRojsKlGELK0waVtDaNg77dzUDmGIDdkWrcwxpEoIshyBFPPXPdgGeMbylFUt4Q1zgvdsjKhJUGCjPV4ARDJN3Pnv+LqlHsNSxho6Uzy/jjGpMSKq1fM16WZf6w1OfVqkUQFMqYp+M69Ad4e03UWsi7Cxn1Ah5IiS3/XuvN4mcws78nSNR/8PE8jGzzBautLWiK8EAghcN111+G6667Dj/7oj+LcuXO47777cPfdd+PVr341RqMRrr32WvzAD/wAbrnllsE8vwR7e3vD5/lRg468XPgEIcSn2P07iejOCzzWdwAoAfx7v4CI/qMQ4m8AfDeWk6xvEUJ8DcAcwCcBvJGIvnTQAw4kK4PhTXm0MMbgt37rt/CCF7wAN9xww3Gfzkp4ctngqzsGT9isQEZgUhZQxQiAgBTSdt8RIKV2yeENqFCArq0q5VQsQSMAjjDoNhIcZdUtS7yYZwuwpcOiSBUupnSRKADqlAMz6lRQt6RMPVkZ9cpQNKHz5f1md/u71Ys+LD5Gp2uETx7DqVaenO05stXWbZLr2naCR+O5eeVqzkJHW5jLiGDlcPbsWdx88824+eab0bYtPve5z+GjH/0o3vOe9+DXfu3XcPXVV+MFL3gB7rjjDlx99dXHfbprhXPnzg1TPI4aR298f4iILlar+VNgy3wPdZbf79b14ZMAXgngbwE8CcCbAXxcCPGtRPTwsgccSFYGA8k6OkynU7ztbW/DK1/5Sjz1qU897tM5FK4Za/ztI/t4yqkRGiNRKYWNatPmMBkDISS0I0qBWMkC0A2oLCBMY1WpTLehAEDFxK5zalZgFv4ioYrgz0oJlbRzFclAu+Vpx6CK2/llPHSUzS5sW9aZlykN9pndW21giND2+LC6xEs74zsvEbaabc9M8MYt1wukyqlYhqDbOXQ9s8tdydATK9PM8fHf/3WcBBRFEczzP/VTP4Wvf/3ruPfee3HXXXfh1ltvxRVXXIHrr78et912G777u7/7cf9Ztr29PfixjhiE449wEEL8DwDedMBm33uhxyeif9d5vPsAfAnAj8B6unoxvPoyeLx/MB0VHnzwQbzrXe/Cz/7sz2Jzc/O4T+eC8KwzAkCNh2YFTlUKrSZUaoSyEhBtDQE7+xC6AQoJYVqba6VbGKEgSINkCWkaGBIuL8v5mDy58qVDX97TbVCePDkSpGGEfft6rxUJBZKlfQxOwpgJfmEZkASFmt7xOYsdhUFxqpssCYs+LrvhPptf2LpvvsvKhwudg6ZDrtxJ6LYOJ2OauSVWnmSdIIKVw9VXX43bb78dt99+O2azGf7yL/8SH/nIR/CWt7wFWmtcc801+L7v+z7cfvvtj8sYg52dnaGcetRYjwiHtwN43wHb/COA/xyAAvAEAA+ydU8GcM+qD0ZEu0KIzwN45kHbDiQrg0Fevvj4whe+gD/8wz/Em9/85hPx931C0eIruxpnRgqbpUJrBCpVQlXKGuEhAQWIdu4IkQJMC4JVuEgpO9/ZWAIldBuUJpKlnZsIV5Irqlgu89tAsRF/fBSOcmRLQRgdltnt8h2FOeIEpKW8bunPr7fq1aLited8WNrEOYOh61CbtKPQEPNjxW7C2DWYKRGa2EkIY6DrmfVhOfWKdIt2vo/7/uBteLxgPB7jRS96EV70ohfhzW9+M/7+7/8e99xzDz70oQ/hzjvvxJOe9CTccMMNeMUrXoFnPetZx326lwTb29sDyboEOG6SRUQPYbEEuAAhxKcBNABuAvCv3bJrADwbwMdXfTwhxBjAswD8+UHbDiQrg0HJuri499578Xd/93f4uZ/7ubXsILxQPH2DcO//t43rrtrERqmwUUmUUqBUYyhZAO0cVE2cH8uWDoVugFKBTAsyZI3sprX+LbC4ASWt0d0TFCkhyBMv+/oMShZXn6RPhVfBJE9OQbMm+MLtG1/jhnUt53xYc1ZCNIaC2lW7D1ZeIvS3G724bO4Ik1e0Wm0SRYtnZ/kSYTcuwmiCdjESXYM7kQkq1sfe/8t4PEMIgeuvvx7XX389XvWqV+HcuXP4+Mc/jg9/+MP4sR/7MUwmE1x77bX4wR/8Qdxyyy0ntqS2u7s7kKyjBuGy6cYnovNCiHcD+FUhxAOIEQ7/AcBdfjshxN8CeCcRvdPd/3UAfwKrhj0JwC8A2ATwuwc95sl8Zz1GDCTr4uH3f//3cfr0abzqVa867lM5Etz4tA0AhC9uz3GFqTBSwEYpoaQC1ASlAABpc61MDB6FUFa0Ns7M7kqGRgqrbkGG+YCCtLvvSJUnHpwoCeWS4F2JEWTVM7ed39YTs0ZrKEd4+edjGjpqCVzLCFM2+4p1EYayYaezUBMFAuf9W55s8VIh/7BuXTZWU/vYBh2ULF0zDxZZstXO9mGaGT7+b38NA1KcPXsWt9xyC2655Ra0bYvPfvaz+Iu/+Av89m//Nn71V/9/9t49Tori3P//VPXMLstVghFE8CvgEVCOMaCCGFQSg1GjIu6Gm1y8x6gcPSqKaI6JRhGRmwTUoEa8knhDY0QPKAhRVBSMIKJwjorkJwcvCOxlprurfn/Upat7emYX2KVnd+vzeunOVFd3PzPLzr738zz11FQcfPDBGDhwIEaNGoWOHTsmHW69qbKyEi1atKh9otVei6Mo0oV7oqsBeAAWImhGOjbSI6snREpRqQuAJxGkGVcBGMA5/7y2m1nIipGFrH2X7/uYO3cuBg8ejD59+iQdToPq9KvuAeccV11zMY45+AB4jCNNGdIU8B2KFC2BAwZOOYgshIeTBnxPuEymk+V74E6JqONinnSuUiDM0+6TTg+aRVNGmhAAYLRpMFcS6u1rGIcfcaQAsz9V4ECFarbk+ZVGP6ysrCEzr2OmBoFwV3ezZYOZKqypUb2vVIG7anQo0obKvVLd28FFPRZzs/Cz1bi6524wz8fCyVdi+B/mxH6vrETxfL9+/dCvXz9cc8012Lp1qy6eHzp0KNq3b49evXqhoqICJ5xwQtLh7pMqKyttt/eGFkewD2sjEOc8A+Aq+V++OSTyfMTe3s9CVowsZO2bKisrMWPGDFxyySVN6q9iUwqstDhw7/T5AIC7f3cVDmxVghJKkKYMZWnx78khBCmahkNT4lwiu5P7qs7IE01DQUShvEr3cQZOHTBQEOZqNwqAhDE/qNVSBe+OE0BWqOZKAU4Quh9yr+IaiJrglQtm0aJ3xoPjCtq8GNjy/HBqkXPxP854yL1SBfC+62n3ys9Wg7lZeJkq+NlqXH9cGtwvBS0RvbSeuf1a0cbBZ6j43SxY5dchhxyC4cOHY/jw4aiursY777yDZcuWYfLkyWCMoWvXrjj11FNRUVGBli1bJh3uHslC1n4Q52CuV/u8ZioLWTGykLX3+uqrr3D//fdj4sSJTfLD7WcX3xF6ni4V9R4mb13323uRLnEw5ebf4IAWKbhM1mpRAo8SpKmYn3JKwTiDQ1MCUHzlQnngqRJdn6UL3BkDd2SfLUKDNKJDdWpQOF7isXKgwk4V02MqXRhixVBbBukwecFfqdlI41BAOF6Mc32sxtiw2SsAW4wDGZkydGVaUXV0N90rP+vDl33GOGPws9XwM1VgvofrTmwFsDJwLwtCW4rtgzzRZZ/7HsB8PHvHdQCAYTc13VWG9aWysjKcfPLJOPnkk8E5x8aNG7FixQr8/e9/x3333YeOHTvixz/+MUaOHIkjjjgi6XBrVVVVVbNcVbl/1ejShftVFrJiZCFr77Rhwwa8+OKLTWYFoakQXBmA4dZkkCo1GowCAAeyNR4m3vZHXHDp+TiqUzu0K3WQkqDl6K8CRlIEoIQAThqEc4CmwDhAqQemargYAyjAiFmzlYIPAspZMM8p0SDl+QwOJXAoRdZTqb/cdGG45spwtWJWFKoUosfEVjjVxl+wap4qcN8d6oEVFLh7Pg96Yilnzeey6SiH7zGxsa/PwDwGz83oVg1e9S4wL4vrTu0IwrlIUzAfpLRMbFvEfF3jRnwfoFTPefauGwHGMGzS1ALfaSslQgh69eqFXr164ZJLLsG3336ri+cvvPBClJWVoXv37jjrrLPwi1/8oiiL56urq3HQQQclHUaTFueNZ1udJERCKY9cFTzYVLV9+3Z88cUXSYfRqLRs2TJ88cUXGDt2bNKh1KtOHnNz6HmqJHDnOGeRYy3keDjNli5N4fyLR+Hogw9A69IUShwJWQRIUWhHiSpOIgI+Ug6F7zOkHKLTeCQCRuaPr6+cr0g9lPlYO1meD0fe0JyXNVYSZjwfHmOolvsD1hhApdwqtVch4wFwKbhSjUajz6uznkgXuh44g/wqVg26WTHmez58V/S54pzBrd4N5mXwn0O6ApyJ9hTq/edMFP1LmOLMByEUnMnnvifq3zzhbIE6AOc499rfw2rv5Hke1q5di+XLl+O1117D999/j86dO+PEE0/EqFGj8MMf/jDpEAEAl1xyCY488kg89lhtLZQavRJbtt3nhwfwp885pcGu3/vBRe/VY8f3/a7i+9OjCGSdrLqLc46nnnoKHTt2bFKAFYUrRTNepgoA4JS0QPQPFLemEqnSlpFaLQ63xsWjDzwOABh+4Qgc3fkAtClNodShGrJSBEg5ROxxKE/1ZJ8rc1Veygk2L1f3UXVSJAJXJjxF51JKg7opLx6yFEiZ7pX6qlKI6hrVErZ2VoWbisbVXvm+cqp4sOGzBC3mczDPh+e6uu6KeVn8x+ndBSBxBnAmatCoE4wxH6DiGAEX74WELlBH7AdZKuvWZPPS52fcCs6Yha29UCqVwrHHHotjjz0W1157Lb788ku9ofVTTz2FH/zgB+jduzcqKirQv3//xOLMZDJo06ZNYvdvFuLJ98kqZlnIipGFrLrJ8zzMmTMHp59+Onr27Jl0OPWinwy/NvTcSecu/+acwctUwVGuluFoeZkqcM6146XcLjeTRaqkBE/OfxJPyrk3TbwIbUvTaFOakulDIEWpAC0CpCmBz1UzB1Es7vMg1aZdLcaQolTDjIIih5AAkGLASz2uCUFWUE+lQEr1yTJrszy5KjCj54S/qvYMgXslarB0StD1xcpCxnRxu4ArH362Br6bAcvW4PJfdBfOHgDqUPl+Bn0iCKEBdBEigUvAFqgAMOKJvR8J5yKlSIhwuCgFYQyL5t4FzhmGXjEp53ttVTd16dIFI0eOxMiRI1FZWamL52+88UYAQNeuXfHzn/8c55133n4tnq+pqUHbtm332/2apTjA/WaZ9KqTLGTFyEJW7dq9ezdmzJiByy+/HAceeGDtJxS5onCl5GWrAYg0YTQ96BdwtQSEtYjUb4lrOWlRw/WHKfPBOcd/XHOBWI3oEJQ4FCWOKJSnJEghqq/KTWKMgVKiWypo18sPwMuhBH4ErkzIyng+UpTENhOtdn39OOpaKYerOuPqgnZVh+VL5yobgS5XHmc+kylBUXvluR4g4cv3PPjZanjVu3DJkB7gXG44rXYFIgQENHhPHAec++I9dtKiNotzgPjie8Wk25WS6UTmAWmiwYzItCFkOnHRvKngvoehV94Eq71Xq1atMHjwYAwePBiMMWzcuBFvvPEGXnzxRcybNw8HHXQQ+vXrh5EjR+Lwww9v0Fiy2ayFrAYWB7c1WQVkIStGFrIK61//+hfmz5+PG264AaWy6Lsx64Rzrww9d0pKc6EpawBSDFCJYy3yjIcL471sTeg6s6Y/BAAYNn44Dj+oNUocgtYlKZQ4FA4BwDlSDkVKQlO4RkvIZywETL7P4RjPM8aKPwVAnHN4fgBCQABQasxjXI+p81RqMOMxuD5DtXStMq4nnsvjatw1vqpu7b5sLOq5nu5zNfInnUBJa1DyQ12ATzjgcCJfKIcTAk8CDgcOFYcJkU4XIzqVSDgXThdngOw9xlu0AFEpRu4DhIAQAs4oCCF44cHZOPuiCbDad1FK0bt3b/Tu3RuXXXYZvvnmG7z55ptYunQpxo0bh1atWqF79+4455xzMGTIkHpfMJPNZnHAAQfU6zWtIuLBvqJWubKF7zGqrKzExx9/nHQYRal169bh1VdfxdVXX93oYTQKV1HRdMx2HCoVV9Iix9nS56WM8+TPF02XhtKKnHMNXya0OekScM4x6qLh6NBa9NpqWZJCiSQLh4r6LUBkvQAgRYICdkJkHyuZ4itxKFw/4ioZxe9AuDeWGqsymo2qgvZMpAB+p+zUrsbNwnZfpgTNmitfpgU915fPa5DZ+Q3OG/T/dBG++pqSTp58pSFHjxpbMzlEvA+UiIUEjMs5gK7fUrDFqRMumlePZX8yAOIxZ7qey8JWw8l1XaxZswbLly/H66+/jl27dqFz584YNGgQRowYUS8O+c9//nPce++9GD16dD1EXNRKrPD9qB+040+cOrDBrn/MXxc36sJ3C1kxqqmpwfr165MOo3UZIykAACAASURBVOi0ZMkSbN++HSNHjkw6lH3WgLMv04+Jky44V8NWzP5cIRAzfpZM0DJhTI+HwKpUNByVY1H4OmnYL9GjY1u0TDsocQhSRLSBKHEoGNfNG3TBvMuYhKugHqvEoXkhy6zDyiggc8Nfa1RzUJ8FY66PjOvB87n+6ikHLOPCk/DluR68rA/f8+FlMjilt3gPTKACAnhKGePqtTmUhOCKRhwtEhmnhGjYUpsZEfEnt6jlUqClUobMA8CDcebpGq6zL8zbGNqqHvXFF19gxYoVWLp0KTZs2IAf/OAHOOqoo1BRUYHjjjtur645ePBgPPnkkzjzzDPrOdqiU2KQdWT7dvyJnw5osOv/+NlXLWQ1NWWzWXz44YdJh1E04pzj0UcfRffu3fGTn/wk6XD2SSZcxakQcFEnN7segFHdoUqNxc9jsefRVBDX0PPPRcs0RWla9N4SneRl/Op6BDmQFTQiDWArRUmoT5ZKDe6uFq5URrlYbuBiKagCgtShcq1EnytfF7O7GQ9uTQ2O7R64nimaC1NRwDJdOiewtPRxBV2UBG8tJaLYn0jQ0q4WET2fHBLAFgMJ3C4JVObqRQ1fsj3E2aMugNX+0+7du/H2229j2bJlWLFiBSilOPTQQ3XxfF33Ixw0aBBee+01DBjQcBBQJEoOsg5oyx8/peHe376L/ttCVlOT2kDVSlj6s2fPxtChQ9GjR4+kw9kn9f/lJQAAUoc0ZyxsGVCUD8ZopCGjhrAYZ4umSkLwRWIgjjqpvNdwUmlwztH/jJ+jQ5sWolieAmn5+igRtVppJ2hGKuBLQpZaNWj0v1JjCqLM567P4fk+sq4vWi344quvVgW6Pnyf4ZCWOwAAKUfEkXaC9zvtkNCxFCWi+30InqAfqzna0ZLQlaJEfzip1KKaxcG1u2VCl3qrCZH3kY+pCVaAgC1dz6Uei7Tj2edfnPM9smpYMcawYcMG3SLiX//6Fzp27Ih+/fph9OjR6NatW95zTzjhBKxbt65RdKffRyUKWY8Oarg2Hcf+bYmFrKYmxhjWrFmTdBiJ6/vvv8fMmTMxYcIEtG/fPulw9kn9f3lJYI8YIjFjOXNo/mLcHNiSAEVSuRCmnbBawSp8LnFSgcNlHOOcgaZKRNNNAI68J+cc1KHoemx//KBtC9Fp3qHwGYNkHOFiORSu54fbOqh0n1pJmPGCFYoZD8z3wTng1rgodf8/fV5JygQpGjuuoEkdD56H67EoISFHS9Wc5cCV4XI5EtYoCUBNgZZytFTtloYr6XAxzkEhbC7tdnFfpBUlXHEnDZFOZDjnV40/Xd6Y9fXXX+Mf//gHli5ditWrV6N169Y4/PDDcfbZZ2PIkCGhWtH+/ftj69atTXYPVUPJQVa7tnzBiXuXzq2Ljnv5NQtZTVHvvfde0iEkqi1btuDhhx/GjTfeiJKSmALwRqR8gBVVbcBVELbyHNOwxczUYBiUgHh4yoEx+TwKZlTe2xyPLkqgjmj3QB1ijFFjPgE10nLEfKwgxwAmdZwaLhMQD1tp4545Be45wEVD89WxlBFPigSxpgy4StHAHaNErIxMyW2MlNOlYEu9tabT5RBBWBSQ5xvpRl3PJRyucypGwCp5ZbNZvP/++3jjjTfw2muvobKyEocccggGDRqEkSNH4rTTTsOuXbvQqlWrpENtaCUGWb3bteWPnNBwDNT/ldctZDVFrVmzRnfWbm5au3Ytli1bhgkTJjT6FYQqRahVB9gS0/YcuISDFJ8ujBuPphZD1+RcuFR665jwczONaJ5LjWuYYEaNpfEKkMyXSB0Ses1qTgisIm8Jdag+h0bASAOPMZ7PwVLXSDtUt6fIB2gmcKk0Y7SeS8+VNVsKtNQqyjjoUnM9xkFUqlG2hgiK6IPCee6kce6558KqeMQ5x+eff46VK1diyZIl+Pjjj+F5HjzPa3J7qcYoOchq24b/uX/DMdCAJcsaNWTZPll5RCltlpD18ssvY/fu3bj66quTDmWflQNYQE6Pq3zQFQKYmDkqRUeoE5rL/KC+yYQmNR4a8+SY/AXA5RwFSr5bI55Ll8t3a0CdNDhn8JmvH6sYOedyXAKYfCzub7xkLmu2DCeLMY4QT8t/+r5r1KFRIv6Tb4fvMeECUaoBRsGWy3xxfeO+nu8bDhYB42E44pwj6wkIUlsIqfZeCrpU89O0Y6425CAEcFlQs+X7XD9WTVQd6YAxnVYEAALX56CEB26W7LgPJrrwM84BENT4ACVU/MeBZ597DsMsaBWNCCE47LDDcNhhh2HIkCEoLy9Hv379mgNgJS7bjDS/LGTlUWN3cPZUnHM89NBDOOqoo3D66acnHc4+q/9Zl4bzQvlkHt8L4OIheqGxx0yw4nIFm67l4gzcYyKtKKGeMRaAF+fwvawBS66+HvOyxmNXAh/ToCXmB9Cn4E2BGfNNB4yCG+ETyvXrJdIt4oyLpoPyLRDb3ATd53PFFKsZ6UdxE6Y2z3YoPJ/rt96EqbQEt5RD4fke3JATRgFwuPK8FKUCEqloxKq+Zcrp0qcw8bXaY7K3ljgW1JFxXUDvMgb4RKcLHUIQ/CoR4GVBq/i0fft2VFRUYNCgQXj55ZeTDqfJi9ttdQrKQlYeNae/fjKZDGbNmoVf/epXOOyww5IOZ5/V/6xLgydRcCoEXfsIXHr1YT7YMuZz35VTJfh4buhcHnG5mO+BSogKuWier2uxuOcH19MuLAOR+yGaf2vqtCI3tumRAEQoCRZSEgFWLJRapCAAfBkHdQInixm1WmrLH0oJ4HMQSuAaKzRFsXrwXKQKfdS44eJ51/eRlsfEORSeXCHpUCJTigy+F6QDNXQxyPYWBJWuL6HKgC7xIsVm1kYrCErUdQVMiZfA4UCAFiFAlctACfD4X5/F6IphsEpe3377LX71q19hwIABePnll+u0sMVqH2Uhq6AsZOVRc3GyduzYgZkzZ+Kaa65Bu3btkg5nnxUCrDjVFbrqkFaMApd+zgN3K8fFyjOmwYwbc5TLpdwqBU7y3yZX4OV7Oj7ui02TOfO1swXpWKkxQkhg7ytQog58SVLqfuYvKJVaJARgqh2ETA36ni8cL+l2EVn/pNwrlYoknOj0IRGFUPAh05CEaEhKUaIBztErI023K4ApgCLr+XByasAYUqCokYCmXCtQ9T0jAOOo9sWKSypruAhRLTA4XF+kJVW6MOszWasVrF5kXNRqWdBKXjt27EB5eTn69u2L//7v/7aAtd9k9y4sJAtZedQcIOuzzz7DY489hsmTJyOdLtz1vDHohKG/ySkwN9Nlsdob6KoFuELjcS5WXD0XDwOYeV4OiPm+cLgYE+Cl+mLpdKDYj08Bl3k9QHozhIYuKS4Tvrc+SEgAUkZaMLxakQcpQyZrGn2m4Uy4RFyuchQhMwOcCCV6bpbxUPpRuVYpR7VsYPrbkaUs5HIBFBlXQJdDmVFkL+ZXZYLthiiVNVgSuEABBwQuY3ojbtWjS9VzmUX3DEHTUwfAE399FqMsaCWi77//Hueddx769OmD119/3QLW/pTdu7CgLGTlUVOHrNWrV+Ptt9/G5MmTm8QH0glDfxM7bkKXAppQHVVUdYGuOqQVc0/JTTPG1XNFoUyYKBGXixDtcHHONXQxzwVxAnAT6cWwq6aK6zkCd0tskEy1exRdOanfQ0KNjKhYWci8wLES7pU6S9V9GYXzhIDJtKGqydIrHTnXH9TUobpPF3NoAFy+2JMxukoREONi9SHT6UOVD6zOetrpUisUs2AoAdXOVsZT7xlAIVKFBIAH6axxDsJJCL4qMx6ITD1G20xY7T/t3LkT5eXl6NmzJ1asWNEkPs8akzgAZtOFeWUhK4+aMmS98MIL4JzjiiuuSDqUehNNlYB52TrNjULEPkFXbWlFs824Hoqp64rUc6k5hBCRNuQ8SCHyAJDUOJeF78zz9DWjNViBQ6XuKQEH1NxoJgf0mJfVcZnF8/p9ZMHPi3ppzFdulIAq1SAVAIhvAJYBVlQCj3LNxKWZXhnJ5OpG12eit4wfrCY0WzSo5qoKfJT75Rg/09VZHzXED80hhABMpBR9Lq7NGIcPoMZjoIRpoFIF8w4ATkSvLp9xPPjk07hoZDms9o92796N8vJydOvWDW+99VaT/twuWnEOli3wGdrMZSErj5riDytjDPPnz0e/fv3Qr1+/pMOpN51YLtpNhDdllq6VLDAv1A8utudVPvDaU+iKG48BLhO2OOdhJ0sEmTeFyJkfGtPuly9hhVIwE5zUNdV7RKK1WBKY1K2dFMB9XcslYA+6xgsQRfBBClKmCOVFiAIv1W5CtoHgfvA6febDhyyqp0RDJzGapPoGkKljasWgatOgaqaciKtU4zIQ4mugEv8FBfuAaOngA6jOBDBFiICw4FtGQDngy4J4QOQNCRXv7fc1Hmb8+SlcM942K21oVVVVoby8HF26dMG7777bJD+zG4NEtxjrZOWThaw8amqrC2tqajBz5kycf/756NKlS9Lh1JsUYJkKOUWyVQIBArcItddqKdco33WDiXuwejFujoYpHpmSC18ysPBcCT+htKIaV+6VcS19JqXg8lzlYGnokjVdWuq9MlYuKpAKCuyNFKVMQaqCe6IcM0pC0CXCDVYgkpjaLwoJV6rpKRUpSL0pNCXwpcNlwphK65lOl0ODdJ8QQ40bBipVaK+KrUSfLJFC9GU/LsaB6izTTUyJLILXBfTJ9YVsNqqurkZ5eTk6duyI9957zwJWwuLNsKdkXWUhK4+a0g/tN998gzlz5uDaa69F69atkw6nXuWUlmk48LM1dT4vrlYLMBwsnvuhkdMjqz6gaw8K6lXqMHw/A7p4pJ7LlxaLCWLyHOVycQBc9cTiQaG8mFa4kJ5EoMtsE0FknRf3PYFRcdDFApgS9VxBXZRaEs6ZAihRKM98CWQSihjjAsQMOKOqjTsQ9MYCUC1bOBCiVghKx8sAKiBIO4ISVFa7su6KIOUE54hO8hSMcFBOwAkHB5EF8dy6WQ2oTCaDiooKtG/fHmvWrEEqZX+NJSrOrZNVQPZfZx41FcjavHkzFi5ciMmTJze5D6OTRk8KQYpT0iLUd8k8VlcAC1KHgZOVL3UY2wm+UI1WPQKXnoZ46FItJdRx5XSZoBZNK3LpbqnXxs2idQVUMODKD0NZuPu8mKvcNRO6tCMG6O7zIt0pr0PlaXJFIqFE1GPJ+zBAFv4LoOI8WOEIJo4zXzhNTJ7rqvdUriD05WpCMAFclRk/B74oEY1QRcUawDkBAwflAAMBBxf3JsFqw10ZV7hi1s1qEGWzWVRUVKB169b48MMPm8Sq6EYv2yeroJrWb916VFOArFWrVuGf//wnJk2a1CxW3PAY90kpB8Bg1G25hQvm823+XLBgfl+VD8hqcdOiUJVbQK8m0tz55rUi6XLVk0s9DnovBCs2dTG+GQ91xHUpBScc4CzkmOnzAO2G6UJ6mX5jPpfNTCWsqYszHgCXTjFyY+sfoueoVKKX9eHJ60K2ZahxRQE8NeBLpfx8uQePQ8Tj6mx4RaFKMYacMemK3XrfY7j11+fHfx+t9liu62L48OFo0aIF1q9fbwGrSMSB0B9kVmFZyMqjxg5Zzz77LEpLS3HppbU052yk+umFt8EpKRNPDHjyMlWx8/MBFpC7eXNw3NGF87HHSe6/EcEytRTN16VuK5/q4HZFXSwA4AjHGoUxcwzQmccQnJs9udQx09kKmWpRGPSZ4YAFKyBFW4ncBqqqxQOXrSJUF3oOCVwkWJ2ob8XEmGqWam6ErcBLQBrRDVLFSwrgKusyPS+aWiREdKKnEDVijAOOdLFkv1L57yKyaMFqn+W6LkaMGAFCCD766COUlJTUfpLV/pEtfC8oC1l51Fghy/d93H///TjxxBPxox/9KOlwGkxxqTPOuQAvXcCdmzpUY76bqdO1iZOOr8+SX+MK6GtNI8a5invzGzlPTZh26MzXgShkItfNMkAsBGEI5uoVixAABACQKwvNnlwhoIw+5hycEN23S8EaCJXXkqsGOQ/6eMlO9fq9NWGKkJy9FgmgocuUJyFKuFjilSqo8tSqR7Vq0IAlJvcu9GUD1gCwhFO2q0rAeMpwtygBrp7+MGb+5wW53yerOst1XYwaNQq+7+OTTz5BaWlp0iFZhcRturCALGTlUWNcXVhdXY3p06fjwgsvxMEHH5x0OPtHBVKEheSkSwvCGAD4BdKIOg0XTSVyBpBI53TEg5d5nQYBr5hWEaF4orVZ3ACouNWK6hgC4FL34fBzXK4QeEVdL5WeFDaTPIvJ57IdBaGg1BEgq9KV8rpgJOjNBQ4wIsrLVOpQOV1qoaRMMwroIiDgYIyAUllXpVoxOMF7lsnI/SNV+lGmFwmgnS3T5XJoGL6E22V/+eyLfN/HmDFjUFNTg02bNqGsrCzpkKwi4hz233kBWcjKo8bmZG3fvh1//OMfcf3116NVq1ZJh9OgOu0305BuUQZV/MM5N1bY8RA0eZmqeJiqg2gqfgUiGNNOFlduC5ADfKFtc6KS/bDyqj4+tEyAMx0lRFwuBVx52kPop7rVQ3xXemLsrch9H5waqUuz8D1azyWdKrNvFyEUIFz23wpATDmHhBBwUaQFQqjoQM8UBMrcnbF/opLn+hrCTPDSY55ythQoKmdQulxGD7PgtUff9nA60WrvxBjD2LFjsWvXLmzatAktW7ZMOiSrPPItZOWVhaw8akyQtXHjRjz33HO45ZZbGqUDt6cKtVyoBVRSJWXgUaAxn4euxfRz360xxsOAFVXgzuRCTGhxYWQbnZyVgea5+RYq7Iu7lWflo9kCIrdNBUJpxVCjVISdLh2zdKHgy5adJGgVEWqGSrgEnQh8yZWJREIU8gCXEvNd6VgF0AVCNCRBAxNygKi2ty30dsiBTI2nISx87aBnFjUej7vtfjxyy2V1v7EVGGMYP348vv32W2zatKnJtZ5pSuIAbLYwvyxk5VFjgayVK1fik08+wQ033JA3JWVlKI+bFXW5dPf4qAtGw1BGYEKY2N4mn3K+PyTG6eLMcE8aWDGpxUJb/nBQAaiGo5Xr6sQU0RtOl/mquFlHZQKSPk92sFdF8oRql4ub9VmqNUXsS+QyOSgsJ187WRFAEkHrVYcEAUQBxjhRxqA8L8bJisqmUvZMnHNcdNFF2LZtGzZt2oS2bdsmHZJVLbJOVn5ZyMqjxgBZCxcuRPv27XHhhRcmHcp+VUmLlHA7FAABMk0oxwzjJvw8Jq1ofDh42ep9jk1vTQPTIVLd2lVzTxNkguN6xaIErahiHa76+nCLuXYuAPqhWq6c9CLiC+bztY+I9ufSqxWjwKVBNxe6EHlsOl3EvIYBcnv4NljtR3HOcckll+DLL7/Ep59+igMOOCDpkKxqkXWyCstCVh4VM2R5noe5c+fi1FNPxZFHHpl0OEWpPWUPzhmcdKmEMgN65MW0k2U4WyTqcnEeNNo0XS4WTiMGBlG41YN2sEIF5yx0PBSXGNz7Fx1VvvPzFdDHpRfNFYpRuAJ0gb06zhHuPg8EaUWxNTPioasQCcn6MiXfy8bDVyys5Xe5cmq58qQLg+uE3TCrwuKc4/LLL8dnn32GTz75BB06dEg6JKs6iHPrZBWShaw8KlbIqqysxPTp03HZZZfhoIMOSjqc4lAdfsBz9wZMvnlekO4K0oY5rRYi/a2iLlfB1hD16XLluUc+J0ufRnKhSx9H/i1/QmBnQFconWiAl04jGnGaLlZDKloMH4xbV6yu4pzjyiuvxCeffIKNGzfihz/8YdIhWe2BrJOVXxay8qgYC8i/+uor3H///Zg4cWKzXsrc89xL8NniP8uVfcpNUulCMYezIDVozhFfAc4dmXLMk1I0XSrDyVJOV760o3pMEDhaqo4rmp5UDpfpbqni+VDhfARMzJqt6HHz3Hp1ufJdpzaKyJNaDLWQyNefy0gr6poxo1VEFLy4jMcELzFEg/0TketcqfhI7PEwqJW0qOtHpijWygdgVoE457j66qvx0Ucf4eOPP0anTp2SDslqD8TBrZNVQBay8ii8fDt5ffTRR/j73/+Om2++uSgBsLnJkYXxeuWi/Ep4uIUEMSGMG1vCcNGQUxRmS7GgqDwET8T4fst7hVKHkfRirNO1n1yufD8vIYcuClz53C8zrciDerekRAiBl2U6/RdAGWLSi0FKseOgUUmE22h03XXXYe3atdiwYQM6d+6cdDhWeyhbk1VYFrIKiFIK32/A/enqqGXLlmHLli247rrrkg6lqNSyRRpMOliMi/VjTLlWysniakyMM7HTr2QVw+2CMS7PCz8OHK5ofVZUoglnpGeWkxK/m6PQZVyDi2Vr0IHGFcqDReqe1Mm5rlBcAX2DQlcd0orRlKE+LdL4FMiFKm60hgBgtIcIN0LV90Gui6XGojHqLZrqQ9a5qrNuuOEGvPvuu1i/fj26du2adDhWeykLWfllIauAkoYszjmeeOIJHHLIIRgzZkxicRSbuv6wFb4uE4BFQUJWtckptUotwa+jnJQBPQXAK87dEocMh4s6IHBC6UgCGhTFmylBIOjPRYKmnTmrEpHrgEX7g9UJuuobuKL3i4GQqNMlJkdWKgJQDUz19SCBSi4iIKn0HqfnCKFgapulPLVc0cJ5dV4OvEUL6K3y6qabbsKbb76JdevW4bDDDks6HKu9lC18LywLWQWUZPG753mYM2cOTj/9dPTs2TOxOIpVZA8AyQSvklIn5GJxDUuIcbLCc5S7FXcDAuFexcETIM9nvnaw5KD8xYzQWA5wcRbsEwhjsRpTNT8Iu0N5CumD/lbhFYs5Kb6GqOUyFQNacU5XqBheT4x3uYLDftDr1FihqBXZ+kf3QxMDsdfcV1iq/D7/PpnNVb/97W/xxhtv4IMPPkD37t2TDsdqH2WdrPyykFVASUHWrl27MGPGDFxxxRV2GXOMtrzyCNq3KoEvQcln4j8m04ZiHHIsSCeqx6o1pZKGGeS3wRzHKK7mKvUYTityRrWzpS5MQMX2OszXhdimy6XaOFCaDhXNm0XyeaGNUu1yRVchFtr0Oepw5RTX50v71SdwxV0rX00X9+NThwjqtQIZ+0WaAAXkABYAMC8bWrEYBa04VytVmru9i3kN62AV1u9//3ssXboUa9aswRFHHJF0OFb7KFGTZSkrnyxkFVASkLV161Y8+OCDuOGGG+xu83l08vlX4PVH54CSIFVICAGFAC1z3FRoVR4l4D5HqkRtiWO4WhLSAB6u4RK0Fq6dknJS1FjFaF5HQBehjtiAWAGXLILn8rmeoy7AoC0rzhmITBPqVYtGj62cWi5Ag1S+9KE5Hi2ezzkWOqBu2kAOV1QKTFluTy51SqyrRaje51APmf3KANB0BMJybp37808IhZ+tCcUWB2nmqsXqHd8COLTgvZqL7rzzTrzyyitYvXo1evfunXQ4VvUgW/heWBayCmh/r+L75z//iaVLl+Lmm28u2j5dxSIFUnpFV+QXNCFA+1Zp7XJ5LHC01Bjnjn5em5yUWEJmQhc1C+c5ByjRoEUdAsjNiZXjxSQMqZQiIGGJCqdKF3arF2A6WcyHMNoE/BAnlbeWS8VDWAxcIZJWZNGtcZQLF1PjFTrewMAVvXaobUUk1Rhp6hpqeFpgRSLzIhAWA3FOSYv4NGKBMfM6bf/97Lz3b26aOnUqXnzxRbzzzjvo06dP0uFY1ZM4B7J1+AxtrrKQVUD7E3ReffVVfPvtt7jmmmv22z0bsy64eiKeuX86GAM4OFxfAI9npAp9pgq9ecjdooQAFPDkn1+UCngqTYvvt4IwcB4AkoInysGY2A0PlABMAJWep/Y2NM4FxBzqOMb1JCzpbXicwNWCgCgznUiclAQiA84I0c+DYnj5i55zgDpgCqLUAg4zVShryJTC/bryuFwo4HA1NGyZ6dYYxTpdpuMXmUecWn6+KYXvZfNeXzlYeVcmyuOL/vOYwvdpBrrnnnvw3HPP4c0338SPfvSjpMOxqmfZdGF+WcgqoP0BWZxzLFiwAD169MCQIUMa/H5NQWcfWIl1aAUKAk6kq0QABgJKIB0uVUTN4VAC5ouxNqUpMJnOU3Vcrs9CNVxAAF6UCsCilIDKlCA1UoFcQg2FnAciUpGMg1JxH2oAF3XkL3jm5DRJBSc6nQioevigoWXIpVINN6PtJFQzU13rJSEuRcGM6+bUccX13orruRWzAbQ+HvfNasg6rnwrJblRl1XAyeJ+eDNvdXUareWqRX62OneVoVTNzu17dK2mqNmzZ+Ppp5/GihUrcOyxxyYdjlU9iwMxnwZWShayCqihIct1XcycORPnnXeeXWGzlyIEIDxIGbZtkRLAJFN6HmNgPHCnfMYBxsCM/g2UiO5TjnSmWpSKX8wKunR6EfLDhEFSlYAxAGCEgzqqIF7ExhkHlW4JVQCn0osEgKPSi8IJU61KdfsGzkEcarhZVDpTCFJ4POIiqU87vZAwAA4q05IAAMcR74DuORVfIC8uHU415jRAjZ4HGPNi0mr1BV4Farj0lNj9IQvAl1nL5UfOQ1DHFVevFVXZET+rdU5T19y5c/HEE09g2bJl6N+/f9LhWDWIbMf3QrKQVUANCVnff/89Zs6ciQkTJqB9+/YNdp+mrAkTJ+HhWVMFREm3yOcAE+sEZYZJuFmUiN+ZhAAOpWA+Q+sWaQCiTsvzWWiVYlydVoqKOisFcYBwrzjj0skSThUhXAAUF4XznHEQSuTuOgKsCAk7P450vxjjcFJUXxcAiPx3yBkTqU5AA4Zyp6INPgNOCjdGFWBl1CI5wbi4LA9t9wMYdVlmajJuKx/pfkVdsLwtIvZH8XyelX45dVwAiJOu9fLMzYYHDNhySnIXqrxy689rvWZT1QMPPIAFCxZgyZIlOPHEE5MOx6qBZAvfC8tCVgE1FGR98cUXeOSRRzBp0iSUlOxZasJKqA/+D9/jrac9EwAAIABJREFUUFH4Dg7CgxWGHADlIpXogKCl4Uz5um7LaPvgi3ScLtERSxTRqtQJFc6bbpgjm6CWpII6LibTiAwSrAhBKiVcKgEaAqS4mYIjQYqSUAIiwUqlOCGvBQDEcUQ9GCHgTBTKq3SgSlsqEUrBVd0XnDBUyPouAHrVYqCgJ5cunIfhdCl4itZ26dV0TtjpimmAKuLlDQtbwY1y7kvy/FxH04eAAK+8LRkibpafzei5pd0Gwa3cuRcBNw09+OCDeOihh7B48WKcfPLJSYdj1YASkGUpK58sZBVQQ6wuXLNmDVasWIHJkyfbFYT1oPETrsfDs6aCEtH9qk1JSjpa4b5ZvvqdzgGHEPgAHCoAixKCli0CEDOBKlobXSqhKgpdgCyodwgcBxq4lPRnEA07XDRFQQzXCrJmS3SzFzFr1uEwfrFTAVI6lSfcmVBNl24XwXXhPCDAKlrTFdSB5VmpCORs9WM6XLHABSCu67yIwaz/ioGtBgQwzsIuXD7oAhGp2rgIqGM/OvNpwYIF+NOf/oS//e1v+NnPbMq0yYtbJ6uQ7CdFAdU3BL300kuoqanBhAkT6vW6zVXtvv8Crbr8G9q1SOkUH+MAqOQBiEJ0RgCxgx2BQ4JVhC5jOvXHmPjqUAFQSmUlKQOmWGwasSRFQ7Al6r4ARqW75gRpReYzUEp1QT0gW2JRVbAugS1YmKiL5VVaUgwGTTi5cR0AOaClaowIdQDOBGTo/CDRtV9ApJBeswgDITQvdEWBS82RweUW1MtxIBe2clKM+6FVRDSdaW6hk09mDy4VsyqYL+02CADw2t3n1WeYjUJPPPEE/vjHP2LRokU47bTTkg7Haj+osTlZhJBLAYwE8GMA7QB045x/VofzzgNwG4AeADYDmMw5f6628yxkFVB9QRbnHA899BD69Oljiz8bQFdeNwn33n2nLFwXoOXIX3wt0oHzxBiHJwvifc6loyVSf6CiFok6BCUpqqErDFWi2j3lhFs9iDlMj5WVGGlGX6UCAVAC34ApRz6mMjZ9CwCMyZiAIG0or6GgQIBbAGgODVYsglIwWdTupEqkoyUhyAQI3wOHWbOlOtsz0YsLhkumGqJSIiDOcWKBC8it48ppDxEtqo+0joit52oIdytfKpNHCubzFMqbrh2T7R7c6t1YMWdc/cXYSLRw4ULMmjULTz/9NM4888ykw7Haj2pkTlZLAK8CWARgRl1OIIScAGAhgP8C8CyAYQD+Sgg5kXP+dqFzLWQVUH1AViaTwaxZszBixAgceqjt+lzfqvzyU7Tq8m+6d2fLNJVpQoAjKGJPUQIPAGWiMN4BASdB+o9z0crBlylGBV0KesrSjoYuVxbJK0gCgJJUKuRmKehKG0Dm+kaaihJdi8UAfS0m54h/egKoVLE784UrFJqjoSyo61JmFCWObjVBnFQAS2qFI2cgqXS4l5SCHjVHHSM85JDJIji9MbOu4xLByDnxHeZVE1QxHnWuCjhdSvXpbuW7bnRadJUidWJrtVJdmucfUc888wymT5+Op556CkOHDk06HKv9qMbmZHHOZwIAIWRP+olcDeB1zvkf5PM/EEIGy/GRhU60kFVA+wpZ3333HWbPno1rrrkGbdu2raeorOJ08803454pd8DnKjUIME5AiShi95lwXFqXhGuv9MpEiF5YkC0VAKCshIqVh7LGK4Au4WilI46WAitKgLTjSLAKPnxSjqOdLQVdDiXwSTDmSMhQ0BRk72QeFGHHSqcXadDgFDQo5odRQK8m6nkq5WX+M4/AlXKzdDdzWdtFpTumVi8S83zZBBWIgS4jjRm8rlwnC2bTVYQdowZzt+q4MlHFxfU0+d7I19TcXKxFixZh6tSpePTRR1FeXp50OFb7WduRfWUu//zABrzF1w147brqBAD3RsZeAXBlbSdayCqgfYGszz77DI899hhuuukmpNO1Lw232ntVfvkpDji8F6698SZMu/MOMIg2ChSiXQMAY6No8Vg5R54BVa2kCyaK5hU4EaRkTyxQjlIqU4Gp4LpKJamUdqtM6Eo5VKYOmXDUpAumarkAJtlExOFzDhJNFcrmpmYdF6CcK7Ui0dEul5Mislmq6ZLJdhOqJQRJy2ub2+bIQnhjz0BAwRULgwchIIQa2/7Ic3wP1Ci0h+OIflyUBu0ofAVPKhVprE40XKMojKlzzNjEvOBnNVrYvtfOVx1cLhP+aKcf1/3aTUR/+9vfcMcdd+Dhhx/GyJEF/6C3aqLinP+iIa9PCLmUELLaGHqAc/5AQ94zRp0AbIuMbZPjBWUhq4D2FrLeffddrF69GpMnT86//NuqXrV108c45PBeaJFSq/NEa0wmi9ohG44SQBTDS9AqcahOKyoA000oKQDGUZpytKPFZHsHB0Q6TwRpCt0aQtlClHCkHRpJH1I4lCAlgQsQAKQgSHWedxA8V32sVONStYUPdQyHihINXyZoER6kJME5nBTRppJ2uvQLNcIUJ4svxvJKRsKrFqMF9krEdLnU8XTEmUqlAtCSblkAdBL+fFenD+PBSvXtyr9aMG+PLvme1Fkx1zF/tp3OIvPQnFysxYsX47bbbsMDDzyAMWPGJB2OVROVBKqCUEUIuR3A5FouNZhzvqy+4qqrLGQV0N60cFi0aBEA4PLLL6/vcKxq0dZNH+PmmyYBAG67404QLoBK1FcBIAQlsi0U56LPFYfqMaWTP0g7QBmlerWiWm2YohB1XRCNSXXhuzKtKJBWLRiY6DafdghcnyPtOEbqkMGRgOD5wRzVVkEXyxvPfc5B5LWpA7lKMdgzUT+GcKoUgFHZTV7XaaltfUgADWarCcYUOAQpSb06UTpXQPxKRnEtVbMVpBfVOCFUdK33XfFYuYEa1KgGL3FuOnxNBLVQzPdC7lfO/dX8Qvsd7i1w5bnmP+67pO7XaORasmQJ/uu//gtz587FhRdemHQ4VlYzATxWy5wv9uH6XwHoGBnrKMcLykJWAe2Jk8UYw5/+9Cccd9xx6Nu3bwNGZVVI6zd8jKN694KsGwcDUAoOpAgYiO5MoFYV+pwDRLhHJVS4XQLAhInCIfdFVFv3AIajJW/KONLpoJbK4xweOEooBQVBigpISjkCqhRg+Uy4XVnPN9wsLurIpFT6MSXdLQVgqoEXoWZneKMo3glAQPTvCmCKMw6W55+2OawXKqq6LJUyhKoL8+U8VUdFNayQlCM6yxv1Sno/xVRJ6Bh1UhqaSEpCWQi2wk6XGVNcQXrsuNGWIa7be52BK+JMOweLn/XmBFivv/46Jk+ejJkzZ+LSSy9NOhwrK3DOv0bD1m69BeDnAO42xn4O4M3aTrSQVUB1hayamhrMmDEDY8eOxSGHHNLAUVnVRb+dcDFumzZbwAAhAHVACQUjqkmBaN9Q6giSEnAlUmwCwABf9tVKURJsKs0DRyvFgJI01ak6AVdiPG00LQUCSFKtJTwWpAvV722fce0wqXQiNdotCEdMgFcKRAAXEcX4HhPF51S6r76nmoyKcznnUOXpZmd5Lvpd6HswYqTe5LDJJMRwjXx5caekTG/Vw4zUHUmXBlv4ELn5tXLF0qVgXlY7Y07kuXa5PFcttRROl2d0ZZfOGIBwt/a4ceN9NFObhYBLddbPV4+lAOvNB34de7wpasWKFbjxxhsxbdo0XHllrTW/VlZFJ0JIJ4haqiPk0JGEkAMAfME5/1bOWQrgHc75JDlnFoA3CCE3AngewLkABgP4Sa33i7XRAzWedZkNIN/3sXbt2oJzvv76a8yZMwfXXXcdWrduvZ8is6pNR3ftAAC4bdpswAAtEAr4LoR9lQJA5H6H4eJ4qsFHAJhuCyGdIVXrpFo+KHeLGBClVi8qKeDymVjNqB4DAqDUz6JKK4aL6APwAoCMFzz2jNWDrs9CP7S+Mc9MC3oawsI/4sy4h9mPKzwnvLIxuD4z5rjGuEohKvDxQuepuToVGdneJq7xJ/PC19DjkWuH44sBqphj+eoo4z4r335xf9ffJqc333wT11xzDe644w5MnDgx6XCswrLFv3UUIeRWiH5XUV3AOf+znPMZgGWc8/HGeeUAbgfQHUEz0mdrvZ+FrPzinOP999/Pe3zTpk34y1/+gokTJyKVsqZgsSkArVkgvivK3ikFaAqcUPFLn1KAOPANQ0dBF+cmXEF/jJnjTLpb1HCjVB2XxxhSlGrgAgJQA4TzBQBZL/gxU/1mFFBFgSvumNjgOngs5gR7IurzYsCKRVbime0eQo/lvBzg8rhuhup7fghQ8kGXOM8NOUZMOVTGCkUtDVZZY0i2z3CzsVAUB2Zxx+KOF4IxQPTCcresalaA9c477+Cqq67C7373O0yeXFt9sVUCspBVpLKQVYvef//92L9g33rrLaxbtw4XX3yxXUFYxDq6awfQym8BAL+f/SfhalEHqvM5pxTE9wK3iwgIE5Cl69kFUEF1iw9AS33rQ9BlOFqqH5eSShOa0GU6XGZTP4/FA5d4LMayXhiSzOdmA1Szc716rLb5MWVCFPMDgGLGdTWYkfAxQol2zggh8L1wjysWSvURAU1GGs9MF4r7u8Z0queEpK7tyvFIij+UXowoVDwfozjYUs1GV85tPsXe7733Hq644gpMnjwZt956a9LhWMXL/hIqUlnIqkVr166F74c/bJ955hmUlZXhjDPOSCgqqz3VMT8Qn0EKtMA8ACSALhDhcFHpcBEqipFkilFDl4QtlTJkLEg1Mh580ul2EAigTI1rqDK27RGpxRjAinwFAugKpwzD+yrWuGF4MvdVNF2x6F6MsTAFwDccK3NeIScs9FzBqBcq8ILvZoJmnoTCdzM57RGiLpcYy3W1RJzmuDHfNeAssi8h92NALGZOcwSstWvX4te//jUmTpyIP/zhD7WfYJWULGQVqSxk1aIPP/wQ2az4gPZ9H/fddx8GDRqEo48+OuHIrPZUx/yAgO/4P9z2wBOAkwJxlKtFwYkjgMpcKUdThrul9vyTLhCIBK6glgsIw5XiF18fE1Bl/lB5uvN8LmD5EcAynSwT0FR/LSU3B7jCfySYNVxRJ8wLgVUUoMz0Xx6YAuB5vuier68jVxyqlKpxXUIIfDdrpA4pfLdGHgy7XME58eNxacXoOb4bdywCbzGbQ6cPHQDmZpsVYH344Ye49NJLcfXVV2Pq1KlJh2NVWBayilQWsmrR+vXrUVNTg6qqKsyYMQMXXXQROnWqtcmrVZHqR3Q7AOD39z8mWgNQRxTA+55YvSbhCoSA01Tgaim4oo4GLgVa4ZRhUK+lpMYgr5IDYUZKUYMVLwBYMYXz5r6J+QrngcK1XkAudPk+C2quDHfM91lo0Z3nshBYeR4Lfer7fpBGBOJAK1iFqM+RLlfIqXIzOfPyulpuTei5eZ6fzcSnCtUOARLG0ocO0IfemHV+7vwmqo8++ggXXXQRrrzySkyfPj3pcKxql4WsIpWFrFq0YcMGfPbZZ5g7dy4mTpyIli1bJh2S1T5KgRYA/O7e+WJJfyotvjopwAlqtsB9DVqcUMBJy8cEhHMJZaJ4XmGDBioeFLLLnqHycQBdwVee41wBMr0XquniOYXzovFp2OUyVyKaQOVFoCpToKYr+tzzWChl6LuqiahcUekGG1erxxqqjPuqK2jQUg5X5BwxJgHKgC0vWx0GJFWvFQNgejwypp2tbE0waNRzEULQovvJyFbtbFZwBQAbN27E+PHjcdlll+Hee6PbtVkVqSxkFaksZNWi5557Dk888QSuv/76veoAb1W86vP9egDA7Quel64WBUmVAJSC+57hdDmBo6XaEOjViU4AYGbRNaFg0ulSMuEqWqelxtQ8ADq1aNZl8YjDlfVzf0RDtVosnDrcE6gCwqlGda7q9ZU1jkVTi5QSeBEIM50wEMBzg9WIutGrG3a4xHm5Kw39bLX+XpCI+xVMDbtYKg0ZGtf3CM4r63GKfrzkzrPRnPTpp59i3LhxGD9+PO6///6kw7GquyxkFaksZBXQ9u3b0atXLwwYMAAXXHABunXrlnRIVvUsBVoAcPuji0SxO6ECsBR4KdhSoqajZaQTlfsFiAJ6dY5s4Cnqt4KG4qbLFV/Hldtni/Owa5WNOFM1Xi1OVWR+ZSbczsCErGgqEQAyBgRFr+UZ0EW1u+XD/PwPVh/Kc9Tz0HWMVKSalw1WKppQ5WVr4qFJOVTGXGIeC40H56e7iuL25gZXAPC///u/GD16NM4//3w8+OCDSYdjtWeykFWkspBVQJxz3Hfffbjvvvuwfv16tGrVCgMGDMC4cePQs2fPpMOzqkf1+X49/O/+DwBwxzOvi+1dnFSQQpQrDZXjBerINCEx0olO4GapzuiqNYR8rBwuIIAtMx3IYgBMfOUGnImvUYCq8cIF7pkIBJl1XYzznBWIQG6RfMYNtvwBgKps+HghJ4xSAldCnJlmDFKJ8vW4QdpQgZCbNfdLlOdlw+lFddzLBOlAE5i8bLWeE5yg0oTVofktew3RU16++WQ0N33++ecYNWoUfvWrX2HBggVJh2O157KQVaSykFVHua6LBQsWYN68efjggw9QWlqK448/HmPGjLErDZuQen/2OgDgjr8uCeCK0AC6lKtl7Mkn0ozpYCWiTik6xqpEWTQPBA4XdXKAixl1XEAAVKE+V/Kh6WgBuWnC6PFspEFp1IkCcls/VEvYcSQ8qudx9xTHAwhTcJbJ+jlF8kAAWYQQuFmz47qa54cdp8j5ei4BvExuSlF3389UhVYMmi0jSroFu2I0R7gCgC+//BIjRozA0KFD8eSTTyYdjtXeyUJWkcpC1l7I93089dRT+OMf/4jVq1cjlUqhb9++GDNmDPr162ebkzZyKdDydu7ElBfeAEkFcEXMzv6ptHBCjFouALl1XIBYqaiOAQCJOFxUpRRlGwLDwTI5hoVSjMG4GwGqaD8spWovf7oPyE03RqEpCllAHJiFz6nKhpt+EkBAlQFZUGOQ5qA85maMLvIhUAs3OlXnuZmY7XEUtGWCmqy2x5yr5z131ZE5r6m56F//+heGDx+OM844A08//XTS4VjtvewvnSKVhax9FGMMzz//PGbNmoW3334bAHDMMcdg1KhRGDhwoAWuRqx/++ci/VjBFpgfpBEVdKk0IqBTicrhEo/N2i2IFKKTDm5kApe6ToE6LhPAlKKZvziAAoDqmEL28HnhH/kqN9eZqo6kDKPgVRXjZpnnUPlaa7Lhtg0mJBEjdZjNeKG0oZrgZjyjdstIRyrQikAcIUBZr6CBcHOGKwDYtm0bKioq8LOf/QwvvPBC0uFY7ZvsL5oilYWsehTnHC+//DJmzJiBlStXgjGGPn36YMSIETjllFNAI1t+WDUOKdhyK6sx9eU3QVMCnEgqFcAUIIvlnTBkAWEoc5xc4NKPU8aYgi4BY2bXKcVP0bRiCLpiVh26Ri8tILdmC4gHr2qjNQOQ61RVZnJTfbtrvFAtFyCK7BVgqWO7Vc2WGWc2gCTtcmW8EIyp+2QVlCHXuTKB7cATRurrP3b+ITmvsblp+/btKC8vx0knnYSXXnrJ/jHY+GW/gUUqC1kNJM45li1bhrvvvhvLly+H67o48sgjUV5ejiFDhth2EI1Qh731VOj53a+sAgBQh4I4VMAUkV81YDmhVCJJl0KeBCL/DXDVCgIIF89TAVhcF9MH+yoqmTVc5o+yx3JXJiqpR9HUIBB2umDMo8YvYbPAXo0rWNLPa1wNUkSPBc4TNcbEHITvEetyKccs3PbBjXGu1LG2P67Q17RwJfT111+jvLwcAwYMwKuvvmoBq2nIfhOLVBay9pPeeustTJ06FUuXLkV1dTWOOOIIDBs2DL/85S+RMut8rBqFDnvrKfg1olHmtCXvgDgUhFLhckl4MlciEkKAdIkYN1OJqlUEEKxaBMAlYEVXK3InUtsFwEfwmCG+SD66R6FSoZYPqg1DVQS8qlxf98pSqsyGVyFSAuysDrtZhAC7ql39S10d2lUTOFwmbO2qEXOJviZBTY0r55GcdGBWQlznwWP0PXfvqLFwZei7777Deeedh759++K1116zgNV0ZL+RRSoLWQno/fffx9SpU7F48WLs3r0bPXr0wDnnnIOhQ4eitLQ06fCs9kBdXw8vd5+25B0BBtLdoilRAE8kYIEIGNNpRQOyQinGdEmQUlTF805J6DkA8JQcM6DL5bmft3FNS+NSinG1XKG6LJILXoQQ/dz8nW2mEU3Y2lktXC7TudpZ7ea4WTur3Rz4IgSoNEBNrC4Uj7uffgF2fidaM9z3yw45r6O5a8eOHTjvvPPw7//+73jjjTcsYDUt2W9mkcpCVsL66KOPMGXKFLz00kvYsWMHunXrhl/+8pcoLy9HWVlZ0uFZ7YG6vr4g1J18+murhbOVckCoaKIpCuUpiAleaiUipSDUMVKKxmpFBVNAuCUEDTdK5YToOi4gqOXKafcQA1hAPvDKHdudza250qBlfN6rMXNqPufq+6osCCF6LiEE31eF4Us93lktHK3up18QimHqiXbbqzjt3LkTw4YNQ69evfDmm29awGp6st/QIpWFrCLS5s2bMWXKFCxatAjffPMNunbtijPOOAPDhw9H69atkw7Pag/U+dWHQs+nv7Zau1uEUjilypUiwsEiRDhbpS3EsO6lJdOKJS2Ciyn4SgkY4yFny3BCtQMWQJf6gY4Dp3zjCshMUKrK5rZQCLtb4TEaqaPaWeOBGoXtlAA7qtwQYCmw2lGV1S4WAPSr+DUA4LP/2w3AglVt2r17N4YNG4Zu3brhnXfesQtwmqYsZBWpLGQVqbZs2YKpU6fimWeewbZt29C5c2cMGTIEo0ePRrt27ZIOz2oPFAUuAJix/H0BXCq1KF0ukkrrZqe6tqvUcDTVykUAkEAWTh8aMBaFLOOXq4f4hRd1hSy94jDy0V7p+qFPe0IIKrNhN4sA2JX1jecBQO2Ica5OHXcV/md7Zeg+v/m3+BYVVmFVVlZi2LBh6Nq1K9577z0LWE1XFrKKVBayGoG2bduGadOmYeHChdi6dSsOOuggnHrqqRgzZgw6dLC1J41N0TouQNRyOaVpWdAtAUu6XCRdIlKKgE4r0lLDvTGbmpq1XHJ+yN3SYyWIUzaGXTI+j/0EN4EscK7CexFSQrDT6GdFYBS2yxWE1IAsQgKnytQvDtgVG69VflVVVeG8885Dp06dsGbNGruiuWnLQlaRykJWI9O3336L6dOn44knnsDnn3+OAw88EKeccgrGjh2LTp06JR2e1V5IQRctCVaZ3v3KKhBC4LQI6rMIofFpReX6tGgl5pr1NpTWnlY0xPKMZzwebgaKcF2XOlTtBR29zPqqnRkv1MtKRTLkggk59/rfb6ssVO2jqqurUV5ejvbt2+PDDz+0K5ibvixkFaksZDVi7dy5E7Nnz8aCBQuwefNmtG/fHieddBLGjRuHLl26JB2e1V7q//3jCf24pE2r0LEpi5aDlkkXS0IXIURAWBSyCAFpoRyv8GcwL4mvY+LpFrHjrpFeVFfKeDw0oMf1CkWi/1/+6/+Mve7WnTXoybbFHrPaO2UyGZSXl6NNmzZYt24d0ul07SdZNXZZyCpSWchqIqqqqsLcuXPx8MMP4+OPP0bbtm0xcOBAXHDBBejWrVvS4VnVg1Tn+VSeRRC0XQf84fEXxRPpWtEyOddskw4ApfkgKzou90pMl+V8itdIJ4sQ4PobJ+vxb2ty9zf8alcWrXd8HntPq/qT67qoqKhASUkJNmzYgJKS+LSwVZOThawilYWsJqiamhrMnz8f8+fPx7p169CqVSsMGDAA48aNQ8+ePZMOz6qBdNQ3a3PGUh3iU8i0fcfYcb9VfI0fa31g7PhOP3C4vvh0Q20hWjWgXNfF8OHDQQjBxo0bbc+95iULWUUqC1lNXK7rYsGCBZg3bx4++OADlJaW4vjjj8eYMWNw9NFHJx2elZVVPch1XYwaNQqe5+GTTz5BixbxaV+rJisLWUUqC1nNSL7vY+HChZgzZw5Wr16NVCqFvn37YsyYMejXr59tUGhl1QjleR5Gjx6N6upqfPrpp2jZ0vYNa4ayH95FKgtZzVSMMTz//POYNWsW3n77bQDAMcccg1GjRmHgwIEWuKysGoF838eYMWOwc+dObNq0Ca1atar9JKumKPuBXaSykGUFzjkWL16M6dOnY+XKlWCMoU+fPhg+fDgGDx5sGxhaWRWhGGMYN24cvvnmG2zatAlt2rRJOiSr5GQhq0hlIcsqJM45li1bhnvuuQfLli1DNptF7969UVFRgSFDhtiGhlZWRSDGGC688EJ89dVX+PTTT3HAAQckHZJVsrKQVaSykGVVUG+99RamTp2KpUuXorq6GkcccQTOPfdcnHXWWbbBoZVVAuKc4+KLL8aWLVuwadMmtG/fPumQrJKXhawilYUsqzpr7dq1mDJlChYvXozdu3ejR48eOOecczB06FC7XNzKaj+Ic45f//rX2Lx5MzZt2mS31bJSspBVpLKQZbVX+uijjzBlyhS89NJL2LFjB7p164YzzzwTFRUVKCsrq/0CVlZWeyTOOa644gps3LgRn3zyCQ466KCkQ7IqHlnIKlJZyLLaZ23evBlTpkzBCy+8gK+//hpdu3bFGWecgeHDh6N1nu7kVlZWdRfnHBMmTMC6deuwceNGHHzwwUmHZFVcspBVpLKQZVWv2rJlC+6++248/fTT2LZtGzp37owhQ4Zg9OjRaNeuXdLhWVk1Sl1zzTVYs2YNPv74YxxyyCFJh2NVfLKQVaSykGXVYNq2bRumTZuGhQsXYuvWrTjooIPws5/9DGPHjrW1JFZWddT111+Pd955Bx999BEOPfTQpMOxKk5ZyCpSWciy2i/67rvvMH36dDz++OP4/PPPceCBB+KUU07B2LFj0alT/P56VlbNXZMmTcLKlSuxfv16u9G7VSFZyCpSWciy2u/auXMnZs81spPeAAANUUlEQVSejUcffVQvQR80aBDGjx+PLl26JB2elVVR6JZbbsGyZcvwz3/+E4cffnjS4VgVtyxkFaksZFklqqqqKsybNw8PPfQQNm7ciDZt2mDgwIEYP348unfvnnR4VlaJ6He/+x1effVVfPDBB+jZs2fS4VgVvyxkFaksZFkVjTKZDB588EE88MADWLduHVq1aoX+/ftj3Lhx6NWrV9LhWVntF91+++14+eWX8d577+Goo45KOhyrxiELWUUqC1lWRSnXdbFgwQLcd999WLt2LUpLS3H88cdjzJgxOProo5MOz8qqQaRaobz77rv237nVnshCVpHKQpZV0cv3fSxcuBBz5szB6tWrkUql0LdvX5x//vk49thjQYj9fLFq/Jo2bRqeeeYZrFq1Cn379k06HKvGJfshWKSykGXVqMQYw/PPP4/Zs2dj1apVAIBjjjkGI0eOxIknnmiBy6pRaubMmVi4cCFWrlyJ448/PulwrBqf7AdfkcpCllWjFeccixcvxowZM7BixQowxtCnTx8MHz4cgwcPBqU06RCtrGrVnDlz8Nhjj2H58uUYOHBg0uFYNU5ZyCpSWciyahLinGP58uWYNm0ali1bhmw2i969e6OiogJDhgyB4zhJh2hllaN58+bhkUcewdKlS3HSSSclHY5V45WFrCKVhSyrJqm33noLd999N5YsWYLq6mocccQROPfcc3HWWWchlUolHZ6VFebPn4/58+fj1VdfxeDBg5MOx6pxy0JWkcpCllWT19q1azFlyhS88sor2LVrF3r06IFzzjkHQ4cORWlpadLhWTVDPfzww7j//vvx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\n", "text/plain": [ - "" + "
        " ] }, + "execution_count": 6, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ "bell_tomo_set = tomo.state_tomography_set([0, 1])\n", - "bell_tomo_circuits = tomo.create_tomography_circuits(Q_program, 'bell', qr, cr, bell_tomo_set)\n", - "bell_tomo_result = Q_program.execute(bell_tomo_circuits, backend=backend, shots=shots)\n", - "bell_tomo_data = tomo.tomography_data(bell_tomo_result, 'bell', bell_tomo_set)\n", + "bell_tomo_circuits = tomo.create_tomography_circuits(bell, qr, cr, bell_tomo_set)\n", + "bell_tomo_result = execute(bell_tomo_circuits, backend=backend, shots=shots).result()\n", + "bell_tomo_data = tomo.tomography_data(bell_tomo_result, 'Bell', bell_tomo_set)\n", "rho_fit_sim = tomo.fit_tomography_data(bell_tomo_data)\n", - "plot_wigner_function(np.matrix(rho_fit_sim),res=200)" + "plot_wigner_function(np.matrix(rho_fit_sim), res=200)" ] }, { @@ -277,7 +266,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.491915865423126 \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) + 0.00304822758495185 \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) - \\frac{\\sqrt{3}}{2} \\left(0.00869493382510282 - 0.00783370809820619 i\\right) \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) e^{2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{1} \\right )} - \\frac{\\sqrt{3}}{2} \\left(0.00869493382510282 + 0.00783370809820619 i\\right) \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) e^{- 2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{1} \\right )} + 0.00286997223350026 \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) + 0.502165934758422 \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) - \\frac{\\sqrt{3}}{2} \\left(0.00635202430568175 + 0.00319297154682478 i\\right) \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) e^{2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{1} \\right )} - \\frac{\\sqrt{3}}{2} \\left(0.00635202430568175 - 0.00319297154682478 i\\right) \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) e^{- 2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{1} \\right )} - \\frac{\\sqrt{3}}{2} \\left(0.00466742644792856 + 0.00165960173857872 i\\right) \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) e^{2.0 i \\phi_{0}} \\sin{\\left (2 \\theta_{0} \\right )} - \\frac{\\sqrt{3}}{2} \\left(0.00466742644792856 - 0.00165960173857872 i\\right) \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) e^{- 2.0 i \\phi_{0}} \\sin{\\left (2 \\theta_{0} \\right )} - \\frac{\\sqrt{3}}{2} \\left(0.0103070394398947 + 0.00329652116954638 i\\right) \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) e^{2.0 i \\phi_{0}} \\sin{\\left (2 \\theta_{0} \\right )} - \\frac{\\sqrt{3}}{2} \\left(0.0103070394398947 - 0.00329652116954638 i\\right) \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) e^{- 2.0 i \\phi_{0}} \\sin{\\left (2 \\theta_{0} \\right )} + \\frac{3}{4} \\left(0.492443570270737 + 0.00845863703582394 i\\right) e^{2.0 i \\phi_{0}} e^{2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{0} \\right )} \\sin{\\left (2 \\theta_{1} \\right )} + \\frac{3}{4} \\left(-0.00210405323397097 - 0.00166972608960388 i\\right) e^{2.0 i \\phi_{0}} e^{- 2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{0} \\right )} \\sin{\\left (2 \\theta_{1} \\right )} + \\frac{3}{4} \\left(-0.00210405323397097 + 0.00166972608960388 i\\right) e^{- 2.0 i \\phi_{0}} e^{2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{0} \\right )} \\sin{\\left (2 \\theta_{1} \\right )} + \\frac{3}{4} \\left(0.492443570270737 - 0.00845863703582394 i\\right) e^{- 2.0 i \\phi_{0}} e^{- 2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{0} \\right )} \\sin{\\left (2 \\theta_{1} \\right )}\n" + "0.499936777529623 \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) + 0.00184002904462755 \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) - \\frac{\\sqrt{3} \\left(0.000646212815416196 - 0.00312198107705811 i\\right) \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) e^{2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{1} \\right )}}{2} - \\frac{\\sqrt{3} \\left(0.000646212815416196 + 0.00312198107705811 i\\right) \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) e^{- 2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{1} \\right )}}{2} + 0.00184601514148403 \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) + 0.496377178284265 \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) - \\frac{\\sqrt{3} \\left(0.00182791613202358 + 0.00242837881744504 i\\right) \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) e^{2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{1} \\right )}}{2} - \\frac{\\sqrt{3} \\left(0.00182791613202358 - 0.00242837881744504 i\\right) \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) e^{- 2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{1} \\right )}}{2} - \\frac{\\sqrt{3} \\left(-0.0018595169535378 - 0.00449366757773884 i\\right) \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) e^{2.0 i {\\phi}_{0}} \\sin{\\left (2 {\\theta}_{0} \\right )}}{2} - \\frac{\\sqrt{3} \\left(-0.0018595169535378 + 0.00449366757773884 i\\right) \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) e^{- 2.0 i {\\phi}_{0}} \\sin{\\left (2 {\\theta}_{0} \\right )}}{2} - \\frac{\\sqrt{3} \\left(0.00429726480202502 + 0.00515185287893124 i\\right) \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) e^{2.0 i {\\phi}_{0}} \\sin{\\left (2 {\\theta}_{0} \\right )}}{2} - \\frac{\\sqrt{3} \\left(0.00429726480202502 - 0.00515185287893124 i\\right) \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) e^{- 2.0 i {\\phi}_{0}} \\sin{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{3 \\left(0.493176776136537 + 0.00470038875792548 i\\right) e^{2.0 i {\\phi}_{0}} e^{2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{0} \\right )} \\sin{\\left (2 {\\theta}_{1} \\right )}}{4} + \\frac{3 \\left(0.000998839809504471 + 0.0015077093321832 i\\right) e^{2.0 i {\\phi}_{0}} e^{- 2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{0} \\right )} \\sin{\\left (2 {\\theta}_{1} \\right )}}{4} + \\frac{3 \\left(0.000998839809504471 - 0.0015077093321832 i\\right) e^{- 2.0 i {\\phi}_{0}} e^{2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{0} \\right )} \\sin{\\left (2 {\\theta}_{1} \\right )}}{4} + \\frac{3 \\left(0.493176776136537 - 0.00470038875792548 i\\right) e^{- 2.0 i {\\phi}_{0}} e^{- 2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{0} \\right )} \\sin{\\left (2 {\\theta}_{1} \\right )}}{4}\n" ] } ], @@ -314,52 +303,54 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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Xr3zzjvvoL+/Hxs2bMC6detgmmZIug488ECSLoLYfdCXrU6hwnei6RkYGMAFF1yA5557Dvfddx/e9773TfpztJpQ7Lnnnthzzz1x6qmnAgA2bdqE/v5+PPXUU7jllltg23ZIug444ICWe48IgiBIsoim5tlnn8WyZctw3HHH4eGHH66o91Ul1LpPVq2ZOXMmZs6ciY997GMQQvjS9eSTT2LlypUQQvjS1dfXh/e9730kXQRBND2ULiSaEsuy8NWvfhX33HMPbrjhBixcuLCqz9fsNVm7gidd69atw3PPPYd169aBMRaSrv3224+kiyAmDn156hSKZBFNx6ZNm7B8+XKk02msXr0ae+yxR9Wfs9UjWWPBGMOsWbMwa9YsnH766RBCYOPGjejv78cTTzyBm266CYqiYOHChX56cd999yXpIgii4aFIFtFUPPnkkzjvvPNwxhln4JxzzoGiKLvleVut8H0yEULg7bff9mcv9vf3Q9O0kHTts88+JF0EURr6ctQpJFlEU5DNZnHNNdfgiSeewC233II5c+bs1ucnyZo8hBB46623sG7dOr85aiwWQ19fHxYtWuRLF0EQPiRZdQqlC4mG5+WXX8aSJUswY8YMrFmzBh0dHbUeErELMMYwe/ZszJ49G2eccQaEEHjzzTexbt06PProo7j22muRTCaxcOFCX7pmz55d62ETBEEUQZEsomERQuCBBx7AF77wBVx88cU47bTTapZSokjW7kMIgTfeeMPv09Xf34+2tjZfuvr6+rDXXnvVepgEsTuhSFadQpJFNCQ7d+7E+eefjxdffBG333479t1335qOhySrdggh8Prrr4ekq729PSRds2bNqvUwCaKakGTVKSRZRMPxu9/9Dp/61Kdw4okn4rLLLkMsFqv1kEiy6gghBP7+97+HpKuzszNUSD9z5sxaD5MgJhOSrDqFJItoGCzLwpe//GV8+9vfxo033ogFCxbUekg+d999N66++upaD4OIwLbtIunq7u4OSdeee+5Z62ESxK5AklWnkGQRDcHGjRtx5plnIpfLYeXKlZg2bVqthxSCIlmNgydd8uzF3t5ef/biSSedRNJFNBokWXUKSRZR9zzxxBP47Gc/i6VLl+Lss8/ebb2vKoEkq3GxbRt/+9vfQtI1derUkHTNmDGj1sMkiLEgyapTSLKIuiWTyeDqq6/GL37xC9x666047LDDaj2kkpBkNQ+2beO1117zlwHq7+/HtGnTQtI1ffr0Wg+TIGRIsuoUkiyiLnnxxRexZMkS7LXXXrjhhhvQ3t5e6yGNCUlW82JZFv7617+iv7/fl67p06eHpGt3LN1EEGNAklWnkGQRdYUQAvfffz+++MUv4pJLLsHHPvaxhlhOhRaIbh086fIiXevXr8eMGTNCHemnTp1a62ESrUX9/0i2KCRZRN2wY8cOnHfeeXjllVdw2223NdTSKSRZrYtlWXj11Vf92YsbNmzAnnvuib6+PixevBgLFiwg6SKqDUlWnUKSRdQFzzzzDM4880wsWLAAl156KXRdr/WQKoIki/AwTbNIumbNmhWSrilTptR6mERzQZJVp5BkETXFNE3cdtttuO+++/DFL34R8+bNq/WQJsQ999yDK664otbDIOoQ0zTxyiuv+NL13HPPYa+99sKiRYuwaNEiLFiwAL29vbUeJtHYkGTVKSRZRM146623cOaZZ8KyLKxcubKhj+5JsohyMU0Tf/nLX/yarueeew6zZ8/G4sWL0dfXhwULFqCnp6fWwyQaC5KsOkWt9QCI1uTxxx/H5z73OXzqU5/Cpz/9aXDOaz0kgtgtqKqKQw45BIcccgiAsHTddddd+PSnP419993XL6RfsGABuru7azxqgiAmAkkWsVtJp9O48sor8atf/Qp33nmnv6NpdBphBiRRn0RJ10svvYT+/n58/etfx1lnnYX99tsvJF1dXV01HjVBEOVAkkXsNl544QUsWbIE++yzD9asWYNUKlXrIU0a46TdCaJsVFXFYYcd5jffzefzvnTdcccdOPPMM7H//vv70jV//nySLoKoU0iyiKojhMC9996LL33pS7j88svx0Y9+tOkiP5TuJKqFpmk4/PDDcfjhhwNwpOvFF19Ef38/vvKVr+D555/HAQccEJKuzs7OGo+aIAiAJIuoMtu3b8c555yD1157DQ888ABmz55d6yERREOjaRrmzJmDOXPmAAAMw8BLL72EdevW4ctf/jKef/55HHjggX7LiHnz5qGjo6PGoyaI1oQki6ga//3f/43ly5ejr68PDz74YMP1viKIRkDX9SLpevHFF7Fu3TrceuuteP7553HQQQf5sxfnzZtX98tUEUSzQJJFTDqmaWLlypX4/ve/j5tuugknnnhirYdUdZot/Uk0Lrqu44gjjsARRxwBAMjlcn56ceXKlXjhhRdw8MEH+9J14oknknQRRJUgySImlTfffBPLli0DYwxr1qxp6N5XlUCSRdQrsVgMRx55JI488kgAjnS98MIL6O/vx5e+9CW8+OKL+MAHPoBFixb50tVMk1IIopaQZBGTxmOPPYaLLroIZ511FpYvX07F4ARRh8RiMRx11FE46qijAADZbNaXrptuugkvvfQSDjnkkJB0tbW11XjUBNGYkGQRu8zo6CiuuOIKPP3007j77rvxgQ98oNZD2u1QJItoVOLxOObOnYu5c+cCcKTr+eefR39/P774xS/ipZdewqGHHupL1wknnEDSRRBlQpJF7BJ/+tOfsGTJEhxwwAFYs2ZNy/74Up8solmIx+M4+uijcfTRRwNwpOvPf/4z+vv7ccMNN+Avf/kLDjvsMH/txeOPPx7JZLLGoyaI+oQki5gQQgh85zvfwcqVK3HFFVfgox/9aK2HVFMoNUo0K/F4HMcccwyOOeYYAEAmk8Gf//xnrF+/Htdeey1eeeUVHH744SHpSiQSNR41QdQHJFlExWzbtg0rVqzAG2+8gR/84AfYe++9az2kmkPpQqJVSCQSOPbYY3HssccCcKTrT3/6E/r7+3HNNdfglVdewZw5c3zpOu6440i6iJaFJIuoiN/85jdYvnw5Tj75ZNx0003QNK3WQ6oLSLKIViWRSOC4447DcccdB8BZn/TPf/4z1q1bh6uvvhqvvvoqjjjiCL9lxHHHHYd4PF7jURPE7oEkiyiLfD6PL33pS3jooYdw88034/jjj6/1kOoKRVEghCDZIlqeZDIZkq7R0VH86U9/wvr163HllVfir3/9K4466ii/kP7YY48l6SKaFpIsYlxef/11LFu2DJqmYc2aNejt7a31kOoOxhhJFkFE0NbWhhNOOAEnnHACAEe6nnvuOaxfvx6XX345XnvtNcydOzckXbFYrMajJojJgSSLGJOf/OQnuPTSS3H22WfjU5/6FBV4l8CLZBEEMTZtbW048cQT/ZUgRkZGfOl6/PHH8fe//z0kXccccwxJF9GwkGQRkYyOjuLSSy/Fb37zG3zzm9/EwQcfXOsh1TWcc5IsgpgAqVQK8+bNw7x58wAE0tXf34/HHnsMr7/+Oo4++mi/kP7oo4+mdVCJhoEkiyhiw4YNWLp0KQ466CA88sgjLdv7qhJIsghiciiUruHhYT/S9eijj+KNN97AMccc40vX3LlzSbqIuoUki/ARQuCee+7Bbbfdhquuugr/+I//WOshNQwkWQRRHdrb2zF//nzMnz8fgCNdGzZsQH9/P3784x/jzTffxLHHHuvPXpw7dy7NeibqBpIsAgDw3nvv4TOf+Qw2btyIhx56CLNmzar1kBoKzjls2671MAii6Wlvb8eCBQuwYMECAMDQ0JAvXWvXrsXbb78dkq6jjjqKpIuoGWyco286NG8B/vM//xNnnXUWPvzhD+PCCy+kH6QJ8NOf/hSnnnoqNV0kiBozODiIDRs2YP369Vi/fj02btyI4447LiRdqtp08QWa1lynkGS1MPl8HjfddBNWr16Nm2++2e9rQ1TOv/zLv+AjH/kIreFGEHXGwMCAL10bNmzApk2bcPzxx/uzF4888shmkC6SrDqFJKtF+fvf/46lS5cikUjg5ptvRk9PT62H1ND87Gc/wwc/+EGkUqlaD4UgiDEYGBjwo1wbNmzAW2+9hauuugpf/vKXaz20XYEkq05peH0nKudHP/oRLrvsMpxzzjlYtmwZNdCcBKjwnSAag66uLn9mIgBccsklePnll2s8KqJZIclqIUZGRnDJJZfgmWeewbe+9S0cdNBBtR5S00DNSAmiMcnlchSBJqoGte9uEdavX485c+ZgaGgIq1evJsGaZBhjNLuQIBoQkiyimpBkNTm2bePuu+/GBz/4QZx77rm46aabqDi7ClAkiyAak1wuh87OzloPg2hSKF3YxGzduhVnn302tmzZgoceeggzZ86s9ZCaFopkEURjYhgGOjo6aj0MokmhSFaT8vTTT+Pwww/HzJkzcf/995NgVRmKZBFEY2IYBkWyiKpBkawmwzAM3HjjjfjhD3+If/7nf8bRRx9d6yG1BNTxnSAak3w+j66urloPg2hSSLKaiNdeew1Lly5Fe3s71q5dSz8cuxGSLIJoTPL5PPUJJKoGpQubhDVr1vjrdd15550kWLsZkiyCaExM00R3d3eth0E0KRTJanCGh4dx0UUX4dlnn8V3vvMdHHjggbUeUkuiKApJFkE0IJZlobe3t9bDIJoUimQ1MOvWrcOcOXOQTqexevVqEqwawhijwneCaEBs26bIP1E1KJLVgNi2jbvuugt33HEHrrnmGpxyyim1HlLLoygKLMuq9TAIgqgQ27ap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\n", "text/plain": [ - "" + "
        " ] }, + "execution_count": 8, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ - "Q_program.set_api(Qconfig.APItoken, Qconfig.config['url'])\n", - "backend = 'ibmqx2'\n", + "IBMQ.load_accounts()\n", + "\n", + "backend = IBMQ.get_backend('ibmqx2')\n", "max_credits = 8\n", "shots = 1024\n", "bell_qubits = [0, 1]\n", "bell_tomo_set = tomo.state_tomography_set(bell_qubits)\n", - "bell_tomo_circuits = tomo.create_tomography_circuits(Q_program, 'bell', qr, cr, bell_tomo_set)\n", - "bell_tomo_result = Q_program.execute(bell_tomo_circuits, backend=backend, shots=shots, \n", - " max_credits=max_credits, timeout=300)\n", - "bell_tomo_data = tomo.tomography_data(bell_tomo_result, 'bell', bell_tomo_set)\n", + "bell_tomo_circuits = tomo.create_tomography_circuits(bell, qr, cr, bell_tomo_set)\n", + "bell_tomo_result = execute(bell_tomo_circuits, backend=backend, shots=shots, \n", + " max_credits=max_credits).result()\n", + "bell_tomo_data = tomo.tomography_data(bell_tomo_result, 'Bell', bell_tomo_set)\n", "rho_fit_ibmqx = tomo.fit_tomography_data(bell_tomo_data)\n", "plot_wigner_function(np.matrix(rho_fit_ibmqx), res=100)" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[[0.45501836+0. j 0.02838654-0.0069407 j 0.03416704-0.00509147j\n", - " 0.39767563+0.01159956j]\n", - " [0.02838654+0.0069407 j 0.04741073+0. j 0.00425551+0.00329646j\n", - " 0.03233094-0.00878466j]\n", - " [0.03416704+0.00509147j 0.00425551-0.00329646j 0.04684031+0. j\n", - " 0.00867067+0.00760748j]\n", - " [0.39767563-0.01159956j 0.03233094+0.00878466j 0.00867067-0.00760748j\n", - " 0.4507306 +0. j]]\n" + "[[0.48153775+0.j 0.04986367-0.02071181j 0.05420926-0.01399036j\n", + " 0.42550767+0.00541452j]\n", + " [0.04986367+0.02071181j 0.02967715+0.j 0.01582514-0.00135436j\n", + " 0.05000208+0.00902968j]\n", + " [0.05420926+0.01399036j 0.01582514+0.00135436j 0.04391773+0.j\n", + " 0.05013479-0.00670961j]\n", + " [0.42550767-0.00541452j 0.05000208-0.00902968j 0.05013479+0.00670961j\n", + " 0.44486737+0.j ]]\n" ] } ], @@ -369,14 +360,14 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "0.450730600133957 \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) + 0.0468403077860062 \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) - \\frac{\\sqrt{3}}{2} \\left(0.00867067369882213 - 0.00760748089221235 i\\right) \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) e^{2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{1} \\right )} - \\frac{\\sqrt{3}}{2} \\left(0.00867067369882213 + 0.00760748089221235 i\\right) \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) e^{- 2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{1} \\right )} + 0.047410729458634 \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) + 0.455018362621403 \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) - \\frac{\\sqrt{3}}{2} \\left(0.0283865426373279 + 0.00694070351354548 i\\right) \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) e^{2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{1} \\right )} - \\frac{\\sqrt{3}}{2} \\left(0.0283865426373279 - 0.00694070351354548 i\\right) \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{0} \\right )} + \\frac{1}{2}\\right) e^{- 2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{1} \\right )} - \\frac{\\sqrt{3}}{2} \\left(0.0323309357962314 + 0.00878465966622207 i\\right) \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) e^{2.0 i \\phi_{0}} \\sin{\\left (2 \\theta_{0} \\right )} - \\frac{\\sqrt{3}}{2} \\left(0.0323309357962314 - 0.00878465966622207 i\\right) \\left(- \\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) e^{- 2.0 i \\phi_{0}} \\sin{\\left (2 \\theta_{0} \\right )} - \\frac{\\sqrt{3}}{2} \\left(0.0341670433513886 + 0.00509146712699025 i\\right) \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) e^{2.0 i \\phi_{0}} \\sin{\\left (2 \\theta_{0} \\right )} - \\frac{\\sqrt{3}}{2} \\left(0.0341670433513886 - 0.00509146712699025 i\\right) \\left(\\frac{\\sqrt{3}}{2} \\cos{\\left (2 \\theta_{1} \\right )} + \\frac{1}{2}\\right) e^{- 2.0 i \\phi_{0}} \\sin{\\left (2 \\theta_{0} \\right )} + \\frac{3}{4} \\left(0.397675625888841 - 0.0115995620461406 i\\right) e^{2.0 i \\phi_{0}} e^{2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{0} \\right )} \\sin{\\left (2 \\theta_{1} \\right )} + \\frac{3}{4} \\left(0.00425551338456106 - 0.00329645907683558 i\\right) e^{2.0 i \\phi_{0}} e^{- 2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{0} \\right )} \\sin{\\left (2 \\theta_{1} \\right )} + \\frac{3}{4} \\left(0.00425551338456106 + 0.00329645907683558 i\\right) e^{- 2.0 i \\phi_{0}} e^{2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{0} \\right )} \\sin{\\left (2 \\theta_{1} \\right )} + \\frac{3}{4} \\left(0.397675625888841 + 0.0115995620461406 i\\right) e^{- 2.0 i \\phi_{0}} e^{- 2.0 i \\phi_{1}} \\sin{\\left (2 \\theta_{0} \\right )} \\sin{\\left (2 \\theta_{1} \\right )}\n" + "0.444867367250469 \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) + 0.043917727243482 \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) - \\frac{\\sqrt{3} \\left(0.0501347850838195 + 0.00670960560900125 i\\right) \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) e^{2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{1} \\right )}}{2} - \\frac{\\sqrt{3} \\left(0.0501347850838195 - 0.00670960560900125 i\\right) \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) e^{- 2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{1} \\right )}}{2} + 0.0296771540842934 \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) + 0.481537751421756 \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) - \\frac{\\sqrt{3} \\left(0.0498636678793869 + 0.0207118088508713 i\\right) \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) e^{2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{1} \\right )}}{2} - \\frac{\\sqrt{3} \\left(0.0498636678793869 - 0.0207118088508713 i\\right) \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{1}{2}\\right) e^{- 2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{1} \\right )}}{2} - \\frac{\\sqrt{3} \\left(0.0500020838134834 - 0.00902968211006529 i\\right) \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) e^{2.0 i {\\phi}_{0}} \\sin{\\left (2 {\\theta}_{0} \\right )}}{2} - \\frac{\\sqrt{3} \\left(0.0500020838134834 + 0.00902968211006529 i\\right) \\left(- \\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) e^{- 2.0 i {\\phi}_{0}} \\sin{\\left (2 {\\theta}_{0} \\right )}}{2} - \\frac{\\sqrt{3} \\left(0.0542092572641403 + 0.0139903637993998 i\\right) \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) e^{2.0 i {\\phi}_{0}} \\sin{\\left (2 {\\theta}_{0} \\right )}}{2} - \\frac{\\sqrt{3} \\left(0.0542092572641403 - 0.0139903637993998 i\\right) \\left(\\frac{\\sqrt{3} \\cos{\\left (2 {\\theta}_{1} \\right )}}{2} + \\frac{1}{2}\\right) e^{- 2.0 i {\\phi}_{0}} \\sin{\\left (2 {\\theta}_{0} \\right )}}{2} + \\frac{3 \\left(0.425507670232922 - 0.00541452224395614 i\\right) e^{2.0 i {\\phi}_{0}} e^{2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{0} \\right )} \\sin{\\left (2 {\\theta}_{1} \\right )}}{4} + \\frac{3 \\left(0.015825135999363 + 0.00135435891394559 i\\right) e^{2.0 i {\\phi}_{0}} e^{- 2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{0} \\right )} \\sin{\\left (2 {\\theta}_{1} \\right )}}{4} + \\frac{3 \\left(0.015825135999363 - 0.00135435891394559 i\\right) e^{- 2.0 i {\\phi}_{0}} e^{2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{0} \\right )} \\sin{\\left (2 {\\theta}_{1} \\right )}}{4} + \\frac{3 \\left(0.425507670232922 + 0.00541452224395614 i\\right) e^{- 2.0 i {\\phi}_{0}} e^{- 2.0 i {\\phi}_{1}} \\sin{\\left (2 {\\theta}_{0} \\right )} \\sin{\\left (2 {\\theta}_{1} \\right )}}{4}\n" ] } ], @@ -418,7 +409,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -446,25 +437,25 @@ " point += 1\n", " \n", "thetas = np.vstack((the1,the2))\n", - "bell_circuits = tomo.build_wigner_circuits(Q_program, 'bell', phis, thetas, \n", - " bell_qubits, qr, cr)\n", + "bell_circuits = tomo.build_wigner_circuits(bell, phis, thetas, \n", + " bell_qubits, qr, cr)\n", "\n", - "backend = 'local_qasm_simulator'\n", + "backend = Aer.get_backend('qasm_simulator')\n", "shots = 1024\n", - "bell_result = Q_program.execute(bell_circuits, backend=backend, shots=shots)\n", - "print(bell_result)" + "bell_result = execute(bell_circuits, backend=backend, shots=shots).result()\n", + "print(bell_result.status)" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV4AAAFbCAYAAACd5uapAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzsvXecFFX2v/9UV3X3dM8MccgZJOcoBkAlKCCKgq4JkdXFwK4f/ZoD7q5hdVd33V3jrolF1oAJxYAgIEnJGUSQPANDHIaZ7p5OVb8/Ls3kme7pqtv8lnper1Gmu6ZOV9+q9z333HPvUQzDwMbGxsZGHo5UfwAbGxubsw1beG1sbGwkYwuvjY2NjWRs4bWxsbGRjC28NjY2NpKxhdfGxsZGMrbw2tjY2EjGFl4bGxsbydjCa2NjYyMZLZGDs7KyjNatW1v0UWxsbP6XWLNmzVHDMBqk+nOciSQkvK1bt2b16tVWfRYbG5v/IRRF2Zvqz3CmYocabGxsbCRjC6+NjY2NZGzhtbGxsZGMLbw2NjY2krGF18bGxkYytvDa2NjYSMYWXhsbGxvJ2MJrY2NjIxlbeG1sbGwkYwuvjY2NjWRs4bWxsbGRjC28NjY2NpKxhdfGxsZGMrbw2tjY2EjGFl4bGxsbydjCa2NjYyOZhDZCtxpdN1ix4jjff3+Er77KZfduH6GQjsvloEOHDEaPbsJFFzWgb986KIpimt1wGA4ehOxs2LcPiopA10HToGFDaNkSmjWD2rVNMykoLITdu2HnTtizB4JB8brbDW3aQLt24v/p6eba/eUXWLIEvv0WNm6EQKD4YocNg8GD4fzzweMxz6auQ04O7NoFP/8Mx45BNAqqCvXrQ8eO0Lat+KId5vkD4XBxu+7aBX5/cds2aiRMtmwJ9eqZZhKAo0eDLFx4mHnzcvn++yPk54cByMx0MmRIFiNGNObiixvSsGGaqXZ37cplwYLNfPPNWlav3onfH0LTHDRoUItLL+3F0KE9GDy4C16v21S7NomhGIYR98H9+vUzrKhAoesGH3+cwwMPbCQvL0wwqBMK6eWOc7sdOJ0KzZp5eOGFHowe3TgpAQ6Hhe6sXVv8e0VoGhgGNG0K550HWVk1Nik4eRIWLBDGHQ4IhSo+zuUSKtG7N1x0EWRmJmd33Tp4/HFYvRoURahQWVQVvF7xuR58EG67LTkBNgzYuhW+/hp8PiG20WjFdlUVMjJg5Ejo0kV8xhoSDsP69fDDD+IjhMPi/2VxOsXrTZrAxRdD48Y1NglAbm6AJ5/cyrRpe9A0hcLCSIV2MzM1wmGdG29sxR//2JVmzbxJ2d24cQ8PPDCdJUt+wuFQ8PmC5Y5xOBQyMoTQP/LI1fzud6NITzdX+EuiKMoawzD6WWbg/8ekXHh37Chg9OgfOHgwQGFhBQ9kJaSnq7Rvn8Hs2efTvHniN+3evTBvntC1SCS+v1EUoUdt24qHVEt0vGAYsGgRLF4s/l2RAFWEqgrjQ4cKTzRRQfL54PbbxQUXFVWsQBXh9Qrxf/ddGDIkMZsAx4/D9Olw4kTlnUtFuFxQpw5MnAh16yZsdu9emDVLfL3xti2I9mzbFkaNEh8hEQzD4G9/+5mpU7cQjRoVOg4V4XI5cDjg8ce78OijnRN2JAKBILfd9hqffbaCYDCMrsfXtl6vG6dT5f3372XkyD4J2YwXW3grJ6XCO2dOLtdcswKfr2KvoDo0TSEzU+PLLy/g/PPrx/U3hiE83NWr49e9sqgq1KoFY8YIBy0uQiH46CMx3q3Mta4Op1MMya+6Svw7HvbuhSuvhAMHhOjWBI8Hpk6FKVPiF/2dO2HGDHHdNWlcRRHqN2GCUMM4MAzRrkuWJCa4JdE0MbC49tr4Q0tFRVEmTlzJl18ewO+v2U3l9aoMH96I994biNcbX4+ek3OMESOeZPfuwwQCCXRsJfB4XDz++HgeeeRqU8N3YAtvVaRMeKdP38sdd6wjEKih+pXA61WZOfNcRo9uUuVxhgELF4oQZ00fzBgxXbjmGiHCVRIMwhtvCA8wWcNOJzRoALfeWr347tghXPPYED8ZvF646SZ44YXqj920CT7+uOYdTEmcThg/Hrp3r/bQ774TppM1G2vbm24S4eeqCAQiDBq0kK1bTyZ9L3s8Dtq2zWD58qFkZFTdtrt25TJgwEPk5weIRJKzm57u5tprL+Ctt+4yVXxt4a2clGQ1LFp0xDTRBfD7o1x77QrWrz9R5XFr1pgjuiBEPBSCzz4rnhOrEF2H9983R3RBqMrhw/Dhh1V7kseOiTFzQUHyogsiHjxjBrz6atXH7d9vnuiCOM/HH4vzVsHq1eaILoivNRiEDz4Q846VH2dw7bU/miK6AIGAzs6dhYwdu6zKkMGJEz4uuugJ8vL8SYsugM8XZObMZfzpT58kfS6b+JAuvLm5RYwd+6NpohvD748yatSy07PHZcnJEcJrhvbFMAzxYM6dW4UGfv+9EA0zDUciIhti2bKK39d1uOEGyMur2TC/Mvx++OMfYcWKit/3+eA//zFPdGOEw+K8Pl+Fb+fkiLC52WYDAdGxVvYVvvDCzyxYcNjUe7moSOfHH4/x1FNbKnzfMAyuu+5vHD58El2PL44cDz5fkGee+YSFCzeZdk6bypEuvP/3f+vx+UwUoRLk5YV44onyN2w0KoahZjh+ZdF1kYq2d28Fbx4/DkuXmq8IIM65YIHIkCjLp5+KjIlEJrTiJRCAyZMr/jLnzKnG/U+CYFCcvwy6Dl99ZW6/VvLchw7Btm3l38vO9vP732+pcUy3Kvz+KM89t43duwvLvTd79mqWLv2JYND8eyoQCDFhwj8Jh615Pm2KkSq8GzacYPbsg4TDJnphJSgq0nnjjd3s2VPaM9qyxTo9APHQL14sHtRSfPNNBS+aiK6LXNySBIPw0EOVeoemEAt1lOTIEdiwwZreDcR5N2wQdkqwZYu1lxoOw/z55YX9wQc3EolY17aRiMG9964v81qU3/72jQpTxczixAk///73PMvObyOQKry//e16ioosFCIgHDa4776NJX4XI2MrPKKSFBXBTz+VeCEnR8zsWy28P/0khDDGG29Yq0Qgzv/oo6WzJL780jrRjRGNCjuniETEZKkVA4qShMMiBTrGli35zJqVY5kDAUJ45849xJo1x0+/9tZb8zl+vLwXbCY+XxGPPfYehYVVBLdtkkaa8O7e7WP16jxTQ44VEYkYfPVVLnl5Ypi9a5e19ortioT90/z4o/VCBMJGLOZqGPDSSxUvjDCbUEgEt0GEO3btMjeeXBGGIewUFADW92sxwmFYtar48l56aQehkPVtW1QU5e9/33H69xde+NxSbzdGNKoza9ZKy+2czUgT3g8+qHpW2kycToXPPjsAiEVTVntEMQoLIT8fIYY//WS9EIGwsWmTUKDNm099AAkUForFESDsmrjMt0ocDnG9WBfGrohgUEQ5olGdDz/cL6VPNQxOedY6O3YcICfnePV/ZAKFhUW8+eZ3UmydrUgT3rff3mN5mCFGYWGUt97aTVGRmByRhWHA9u0IV0yWEIEQ3X37RNxVVi8DYhWezyfcQVl2w2FYvZpQSFyyLKJR0YkvW3aMaFRCh3oKRYH58w/x3ntL4l6VZgbLl28nL8/asMbZjBR1OH48xL59cmNGq1blkZ2to6rybOr6qdDGjh3WzuaVJRwWNr/+Wq7wut1iM4QyE16Wc/gwB/aGpbftjh0wZ85By7JyKqKwMMLXXx9k1qyVlmQyVIbb7WTx4q3S7J1tSBHerVtP4vHIzVxzu1V++SVs+aRaWU6eRCzPlYlhFG/BJZNgUKQVxLt82SycTo7u80sZ7pfk5ElYteq4lLhyDMOANWvy+OWXXHlGAb8/xJYt8sKDZxvShNfKGeCKcDggJ0eXEmYtSTQKxtGjco2CCG/IdAFBCO/OnXJi2SUxDHIPRKULr6LAli0Fco0C27YdIRSS60FEIlFWrfpFqs2zCSnCu2nTSUsSzavC74/i90sWIsDtCNd8M5pkyM6W73mCWCQia4YrRijEkTz5W0kris6hQ/Lb9sSJ46SlJbhdmgls3Zot3ebZghThjaV2ySQSMTAMc3dbigenEcJwyBf8Sjec/R8lHJW/zUgopCezRXCNUdUIIL9tfb4UOBBnCVLu3nBYYlAsxSik6Fp1/awSXj0Fnaqu6zgc8u0qSmqa1sqVeWc7UoQ3LS0FHiBJFTCoMToqSgq8ExyO1FxwisReVeTbVVWH1JSuGIahmL5Xbjw4nal5bs8GpAhvo0Zp0jXB5XKgKPJ77KDihhQ8nHg8qRHeWHUMmTgcpLkkz6whhEhmenYMXXeRyL7ZZlG3rsm1/mxOI+U26tGjNunpcntPj8dBrVryhTccVSEjBTdsmzapmdRr1CjxOjnJ4nTSqL584dV1hRYtkquNVhMaNmxQ4woTydCrVxvpNs8WpAhvly6Z0odK4bBB69byPRS3G5QGDeQaBVEeR7YAer3QoUNK0skaNXcmXvMuSVRVOBGy6datPrVryxV8t9tJv37tpNo8m5AiS506ZVJUJNdDMQyDNm2c0lNb69YFmjeXu2RYVYXNc86RZxPENXbvLmczoJJEo2S18krvVOvWhXPPrY/LJc+wpikMGFCPLl2aS7MJ4HZrdO3aQqrNswkpd5DXq9G3b+LVYpPhsssa07SpItUZ0zThANK5cw1KECeBwwGdOokCcGnWlesuh6LAgAHQurU8mwBt2tCkmdweVdNExfkrrmiKpskbvbndDq66qhk33jgYr9ctzW4konPhhZ2l2TvbkNZ1/+Y3baTFeWvV0pg0qRWqCq1aSTEJiIyutm2Bpk3lLmZITxcFMK++Wt6w3+EQ1Y5VFfr1EzEWGbjd0K8fDocouCwrgmUYom/r0qU2DRrIE8CMDI0+feoybtxAU+qrxYOiKIwZ0w+3OwULcs4SpAnvVVc1JRKRIwqRiMGIEY0A4XzK0sCGDUVyAYoCPXvKWcKradC7t/h3s2bQvr31NkFc6A03iH937iwv3BCNCgUEunWTN7CoV0+UfQeYNKkNbrf1j47TqXDzza1RFIWsrFr07RtfmftkychwM2nSxVJsna1IE966dV1cf30Ly+NjHo/K3Xefg9stRK95czmjb02D/v1LvHDeeXLcMUUpbfixx4QHbDUtWohrBDGp16+f9SqoacLOqUnE5s2hVi1rTYLouC+8sPj3O+9sh6pa37aa5uDuu4s70j/+8Top4YYGDWozbFgPy+2czUidnnj22W6W37Aul8Kjj3Y8/bvDAYMHW68JWVlCi05Tu7aIf1ppOKYIGRnFr40aBe0sno32eODvfy/dsQwbZv2EosMh7JxCUWDECOvbtm7d0vOWDRum8cADHfF6rRvRpKU5mDLlHJo3L85mGD68J716tbY0Qyg93c0rr/wGVfas9FmGVOFt3DiN++5rj8djTaOmp6s8/XRXMjNLxxZatoT69a1zQFVViHs5LrrI2nCDpsEFF5R+TVHgxRdPxTwssjlgAJx/funXvV64+GLr4jpOpzi/t3RaVYsWIsJileZrmhD3svfOgw92sjTc4HI5mDq1S7nXX311Mmlp1nzHquqge/dWXHppL0vOb1OM9HU4jz/eidatvaZ7vi6XQs+edbjzzvLenqLA8OHWeEaaJsK5WVkVvJmWBuPGWSNGmiayGCrK3e3fH26+2Rrx9XrhX/+q+L0LLxRfhNkq6HCI85Yc75dg1CjrvuKePcVcaVm8Xo0PPzzPEifC41GZMWMgtWqVv6iePVtz772XWxJy8HpdvPfePSlZnny2IV143W6VOXMupFYt81RQUaB+fTezZp1XqaDXqgWXXmquA6qq0LixcAArpVMnGDjQXGVwOmHIkKrzdp99Fnr0MDfbwOOBDz6oWIlAfCETJ5ofVE9LE+etpPEyM0WChZkdq6qKRXkXVzHHNHx4Yx57rLOpIQevV+Xee9szZkwl3zHw5JPXcf75HU31fD0eFx99dD9t2jQy7Zw2lZOClefQsqWX+fMHU6eOM2nP1+lUyMpysWjR4GrTfFq2FHplxgOqaSJ8MXJkHA7esGFioYEZ4ut0Qp8+lcQ2ynzATz4RicVmeL4eD7z2WqVe52lq1YLf/EYcn6zn63CI8/zmN9XOorVsKTxfs9q2Xj0YP776S3j00c7cemsbU8TX61W5/vqWPP109yqPU1WVWbMeokeP1qZ4vh6Pi9dem8yll/ZO+lw28aEksvlGv379jNWrV5tmfP9+P8OHL2HvXn+NCmF6vSpdumTy9dcXJpRbeeBAcXmymqS9aprI2ho8OAEP2jBEGfa5c6lxPSKnU6hL377x/00wCFOmwJdf1qzsu6YJl/Ljj8ukbVTDyZPwzjtw7FjNrlfTRHjhllsSSl04cEB81GCw5m3boQNcdlliIv7mmzu5++71BAI1S6vzeFSef74HU6bEnw4YDkeYMuUN/vvfJfj9idf4U1UHGRlpzJ79CIMGlY8nJ4uiKGsMw+hn+on/B0ip8AL4/RH+7/82MGPGPqJRI64SQS6XA1UVaT3PPdcNpzNxz6qgAL77TtRpjFcXNE14QBdcIFJXa8SePfDpp0IE463c4HKJzIVx48qkTsSJYcDbb8MTT4g82HgEWFHEEP/cc0VMt0mTxO1GIqKHW71afIZ4cn1ju53161djF7agQJjNyUmsbVVVjIh69qzZROzy5ceYMGEFublFFBbGZzgjQyMry8306QMYNKhme3xMm7aAe++dRigUiUuAFUXB43HRr1873n33blq2tGZvEVt4Kyflwhtj714fU6du5cMPs0lLc1BUFCUUKv5sbrcDl8tBOKzz61+3ZurUzjRunHwsMTcXfvxRlIHXtPJaGHvuVVU4mqYk7eu6qBU+b57wDFW1vGGXSwhVnTpiWr1Tp+TTMnw+IaIvvlhcjbikCKuqyAEOBESO7lNPFS/OSIb8fJg/H9atE19eJFJahFW1+PXevWHoUJGOlyS5ufD996IqkqaVH+FomvhKHQ7Rv/Tpk/w+Q4ZhMGtWDg89tJF9+/y4XA4KCkqLcGamRiik06yZh+ee68G4cc2T3mA9EAjy6qvf8qc/fUJRURhFAZ+vWIQdDoWMDA+BQJBzz23PCy9M5NxzOyRlszps4a2cM0Z4YwQCOt99l8ecOUfYvr2AQCCCx6PRvXttLrusARddVNuSRRih/AAHNx0hZ0+IwoCKriu4NJ3GjaFpp9rUblMPxYrqA7/8ItThl1+KxdDlErGMiy8W2z2aja6L3uarr2DNGiHITqeYNBs2DMaMqSRNIzmioShHNx7At3kX6tFDOCJhdM1JNKsR6d3aktWjKarL/CyBY8ciLFxYyJYtEQIBB4ahoKqibQcOTKNfP68llSU2bjzCO+/8xPz5ueTlCfGtU0fjkksaMXFiJ/r0MX8iS9d15s7dwXvvrWb58u34fAE0TaNx43pcfnlPJk3qT/PmdUy3WxG28FbOGSO8BQWwahXs2iUcoGiUUmW0HQ7xuq6LNfp9+pRL6awZe/cKAdq/v9jlLfmdxCbEYnmk55+f/CSZrsNnn8Ef/wgHD4rzFRaWPiYzU3yW5s3hySfh8suT93iDQVi0SHifMY+zpKetKCILIhwWgj92rJi1SpL8fFi4EDZsqN7h7dkTLrnEnBVpa9bkc//9W1m2LA+PR8Xni5Sy6/U6UBQFp1PhwQfbcffdrUlPT244o+s6s2Zt4uGHZ7NvXx4ul0pBQenhf2amm1AoSrNmtXn22TGMH98TR5ITkYFAhFde2c6zz24+vRNgyQKzDgdkZDgJBKKce259nn++DwMHWrt9qS28lZNy4Y1EYNky4fDFWzYsVuWmSxcxRKzRPZuXJ1KjsrOLPc3qcDqFQlx+eWITTSVZtgxuv11MOvl88f1NerrIbfr3v6vJXasEw4ClS2H2bPElxxNbVhRxrW3awIQJNRr6RyIwZw6sXZt4iLdPn8QnuGIcOFDEzTev58cf8wgE9LjuKa9XRdMU/vznTtx+e8sa5bIuX76HCRPeJTf3JIWF8cXvMzJcZGVl8J//3MjgwTXb1nPatF+49941hMM6Pl/1X7KiiMm8vn3rM2PGBbRsac0Sc1t4KyelwltYKJzNwsKa7bGiqmI558iRCWZM7doF06bVfOrb6YRevcRuYPGmNRiGiK/+/vcihloTPB54/nmxOCJewmF47z3YtKlmZdgdDjHJdvvtCYU9Cgpg+vTkkhrq1xeXGtucJh6WL89j1KhVFBREarQpk9erctVVjXjrrR6n9/uIhzff/JG77/6EQCDOTrwMHo+Tv/zlCqZMGRS36IfDOnfeuYL3399TyruNF1VVyMjQ+OKLixg82Pywhy28lZMy4T16VGQ4JVuV3OEQIdErr4zTKVu9Wgzz4/VyK8PpFKsnbr+9+hkZwxApXbFshmTweIQa/eUv1YceAgH45z/h8GFzrvfGG4UrWg2HD8Nbb4l+TU+i+pLDISIft94qdn6rjg8/PMCkSRsIBJIr+eTxOOjQIZ3Fi8+rcPVYSQzD4O67P+Htt1fg9ydXnsfrdXH99X14443rqhVfny/CJZfMY/PmEzUS3ZJ4PCqvvTaAiRPN3ePDFt7KSckCioICIbplw6k1QddFqbHZs+NwJH/+2RzRBXGOgweF51ydujz5pDmiC+Ii330XXnih6uOiUXj9dZGuYdb1/ve/sGNHlYedPCky1wKB5EQXxN8HAuJ8BQVVH7to0TFTRBfEBO+2bT5Gj15VbYnzP/1pnimiC+D3h3j//bU8/vhXVR4XjeqMHfs9GzfmJS26AIFAlDvvXMm33x5I+lw28SFdeKNR+OYbc7SgJEVFYm1CpQ/7sWNCsMw0HImIybm5cys/5uuv4dVXzRHdGH6/EN4FCyo/5rPPRPy6pos1KiIchjfegBMnKnw7GoUZM8yvuVlUJM5bWTgqOzvAlVeuNkV0YwSDOmvXnuS++36q9Ji5c7fxzDNzTRHdGH5/iBdf/J4vvthU6TFPPLGBH344UqNFR5URCES55prF7N5dWP3BNkkjXXjXrhXei9mFEnRdaOvWrRW8aRjw/vvmqz2Icy5ZIrzfsuTni+WuNY3pVkUgAJMmVSzoe/aIdDErrjcUEipYAcuWiTZI1tMti66L0NQPP1T8/i23bIhrUilR/P4ob7yxjxUr8sq95/MFue66/9Q4plsVgUCYCRNmcPJk+R5sw4Y8Xnxxmymebln8/ig33LA0JaXkzzakCq/fDxs3WlesIBIRIdxyc0g//yyy6a26oSIR4WGW5S9/sUb8YgSD8I9/lH7NMODDD62zq+uwezfs3FnqZb9fZKpZZTYcFucv288sXnyMH388YVl1k0BA5847N5cTo+efX0AwaF3bhkJRnnrq23Kv33XXSssKx0ajBps25fHttxU4ETamIlV4V660viRYNArr15d4IZYzW5MZ/XgxDLE+dfv24tdycsSw3Oxxd0n8fiG8R44Uv7ZpU+nfrSAcFuJeojEXLLC+bXVd5APHMAyDO+7YbIn3V5Lt233Mnn349O+HDxfw/PML8PutE96iojCvvLKE7OzisM7cuQdYv/64pd+zzxdlypSVRKMmD1tsSiFNeIPB4lxdK4lGYfPmEl71jh3mxlcrIxwWS4BjvPaanDpk0ahIIYjx9dfWdjIx8vJEWh6ibdeuNTecXBGRiFhoF7u8JUuOs3+/BWGcMvh8UZ54orhTfe21ZVKEKRLR+ec/F53+/Q9/2Gh5JwNw5EgR332Xa7mdsxlpwrt7t/WVYWIoiphXAsRyuGDiOzfViOxssSjCyphyWYLB4phrXp7I5ZJBKCR2W0M4+rLa1uEQkSOA//wnW4oQAWzbVkhOjhi9vPPOcoJBi3sZIByOMn36KgzD4MiRItasOW65TYDCwgjvvLOz+gNtaow04d22zXqPKEY4fOrhjETgp8pnpU1HVcVQf906OV52jCNHxAWvWye33vn69RCNlvJCrSYUinnXOh99lGv5CCqGwwEzZx5g69ZcjhyRN/NfWBhk7dpsPv10H5omp20NA2bPziYYlFQ5+ixESnHsSETMSstk/34wdu9GkeWKgVCFdevExcryskGEG2IbDMvwsmMYBtE9+9izx4KNfKpg925YvjwfkDf7HgjozJiRQzBYVG1ur5kEgxE++2wjixdr0rx7EBWOly49zNChNdgO1KZapKjSiRPW1nysCEWB0L5DcuKsJTl8WIQ3ZLn3IAR/9WrrJ9XKYhgc33nC8iq/ZdE0WLWqQHrT7tjhY8WKvYRC8gxHIjorV+5l69aT0mwCBINRtmzJl2rzbEKK8OblWT/jXRaHAyK798sVQBD5tbEgpEy2b5ffyYRCHNnrlxbdiKEosGJFvlQPEMSiivXr5a/u2rz5EPn5kmI5pwgGdVavPibV5tmEFOE9fly+/kUi4DicgnxEh0PeBFdJCgutKaNcDYcOG9LiuzHCYdi4Ua4HCJCW5iA7u/xiCqs5fDhiSTXj6li/Xv61ni1IEV6Z80wxdB3UoPWpRuUIh+XHVUBsYpOCFUe+kFu6WV1HugcIYBg6ui7/O3Y4nNJHFQB5efK/47MFKcIrewR8Gj0FhnVdXmZBSVLg7QJEjJTssxRXbT6zMYyoJZUqqkNRHKnoUwmH7UUUViHlqZGZWFAKJQWGFSUlnqf0WM4pVCU16/pV9ewRQMPQU9SXp8DoWYIUZXLHX3ndNBQFdGeSlQtrQqxIpWwikZR42mlqaoajXq/8cI6iqCnZQCYajQDy2zbZMkg2lSNFeOvVkz8S1jSI1jd/V/1qMQxzCoYlSooEv2F9PenKvInickHnzvK/40jEoEGDBMphmESdOoplG+NURZcuyVd6tqkYKcJbt25qwp6OVs3lxzk0TVQIlk3r1vJDHJpGg5ZpKUknGzCgNm633LaNRqF798ZSbQJ06lTfksraVaFpCv3715dq82xCSmvWqSPfGYtGwd2ycfIVgROlfn3o3VtuT+NwCJv16smzCaBpZLXJlLpYDkTiSL9+GdKFt1UrD/37t5I6waYo0Ldvc845R66n7fVqdO0qpwz82YiUOzctDTIyZFgqJisLHO3ayJ100jShNt2tAAAgAElEQVTo1g2GD5d7wV6vsNmtm1wPPxLB1b41DaytEl6OBg1g8OC6BIPyZt2dToUrr2zEZZd1Ij1dXmwlI8PNqFFdGTu2hdSOJhiMMnhwHIXubGqEtJbs2FFeequmQadOCEFq2VKO0Ri9esHFF8t18VUVBg4UJedlBtM7dgS3mz595A0snE7o2xcyMjSGDpU3FHa5HNx0UzMuuKAtqipPAA3DYOjQDtxwQ2upnvbAgVnUrZuCWfGzBGl3UDtzC5hWia6XqEQ+YED1VYDNonZt4Wo7nXD55XLCDaoK48cLT7dp0wTr3CeB2y3EHuFoy9olTNeha1fx71//ugWZmXJ687p1nXTvnomqOvjVr3pLSWdTFIWxY3vgdKq0b1+LZs3ktG1GhsZtt50jxdbZijThrVULKUNSRRFO7ukUtm7d5AigywVDhhT/ftddIsZiNU4nTJ4s/q0owtuW0dFoGnTpAkBmpujorP6aFUXYyTwV7hw9uqGUSaf0dJV7721zuuT67343GJfL+pFFWprGPfdcdPr3++/vKiXFS1UVxo5tYbmdsxmpsxMXXGB9uMHhgPPOK/GC2w2XXWa9GHm9Yqgfo08fuOgia4f+TidccQV07lz82qBB1idOu1wwdmyp+MKoUda3raoKOzHS0lReeKEz6enWGs7IUPntb1uf/r1r1yaMHdsdp9M6u5rmYMSIjvTtWyyAt97ajnr1rL2P09M1nnmmFxkZkielK0BRGhqKUifJH2VO1TaUtxVFOawoyuZK3lcURfmnoii/KIqyUVGUPmZcm1ThrV8fWrWyzjNSVRHbzSw7ATxwoLXeZ0yIyirPc89ZK7yaBk8+Wfo1pxOuvtrajqZWrdKdDCLC0r27deKrqtCjh7BTkgkTmtOokXUdTXq6yj/+0bWcZ/2Xv1yJpln3+GiagxdfvLrcay+/3N9Sr7dOHSeTJ6cgHbJCwsDQJH/IKnvWMkwDLqvi/ZFA+1M/k4HXanIlZZG+pvb8862biHG7y+mBQFXhuuusMaxpIoe2pNcZo00buOce4Q2bjdcLjz0m4rpl6d0bmje3RgWdTpgwocLsiREjrHO23W5x/rKoqsKMGb3weMy/lV0uhT59anPNNeU3A2/evA5//ONISzIcvF4XDz88jDZtyk8ejhnTnAsvbGBJhoPHo/LuuxfgdKZqjX9ZFEBN8qdqDMNYDFRVU+lKYLohWA7UURQl6d3hpX/DXq94gMzWBE2rJqJwzjlwySXmiq+iQHo63Hhj5W78ww+L3sBMjzstDQYPht/9ruL3HQ647TbxZZs5vHC5YMyYEjOXpYl9FWb3b5omzltZ/3XeeXV59tlOpi4jVhSoV8/FZ5/1rTSb4P77L+Hii9vj8Zh3wWlpGued15qpUy+t5HMpfPjhIBo2TDM1y8HrVXnssW5cfLH8BSKVowCuJH+Sphmwv8Tv2adeS4qUdG1Nm4pQpFniq2kwbFj5YWg5LrkEevY0ZxjucIgMgjvvrDqTwOEQhS/btDFHfD0e4V1Pn161qGZkwN13C1fRDPF1ueDcc0XcugpatICrrjIvwqJpMG6cOG9V/N//teHXv25uiviqqkKtWhrffz+Q+vUrv1cURWHmzFvo0qWxKeLr8Tg555wGfP75bTiqyMeuXdvFokUjqFvXacpGNunpGr/6VWsefbRb0ucyH0eSP2QpirK6xM9k6ZdQASkbU3ToIDzfZLwjRRF6MGpUnOm6igLXXJO85+t0ihSNe++Nb7VYRgYsXCjsJhN28HrFxX77bXwi3qgRPPSQCK4no4ROJ4weLdLW4qBbN7jppuQ0X1HE30+YUJw+Vh3//GdXnn66Q1Jhh7Q0B23betiwYRAdO1a/CMbjcbF06f8xZkw3vN6ad+her4sRIzqxYsX/Iz29+nhNmzYZbNhwOR061Epqk3SPR3i6b7018HTWxpmDAxM83qOGYfQr8fPvBD9EDlCy229+6rWkSGkwp0ULMQ9Uq1biuqBpQvPGj4fGiYyOFEUI4IQJQrwSEWBFEYa7dhXeZO0ENhHxeoXne999wm4iXrfLJf7m8cfh7bcT85zr1xfi27WruNZEHi6XS3jYt98u0tQS+Nu2bUVGXVZW4gMMl0v83V13VRrVqBBFUbj33rZ8+WV/6tZ1JpTtoCjg8TgYNaoh69YNolWr+DvItDQnH3wwkSefHInH48Tlit+uy6WSlqbx6KPD+eyzWxMS72bNvKxZM4qrrmqBx6MmtGjR61WpXdvJp58O4ZFHup2BohvD2hhvHHwB3Hwqu2EgkG8YRtKlbZREtrnr16+fsXr16mRtlsMwYpVjRXHeaLTihHyHQ/xkZIhEhRYtkhxFh0KwbBksWFD8e0Xfh8slXm/TRnh+TZKMrR84AM8+Cx9+KMSwoKD8MYoiLjQcFu7jQw8JDzYZ9u+HWbNgz55T1UAr2NLR4RDXqyhw6aVw4YVJhWYMA7ZtgzlzwOcTbVvRoj5VFT/p6SJW36lTcm0bCER57bW9PPXUDnQdfL5IhXa9XrHV48CBdXnhhc706ZPcjly5uSd56qlveeedFWiag8LCYIW3VGamm3A4yk039eMPfxhJs2bJ7YuwcWMeDz64lsWLD+NwgM9X/mLFsyMcjUcf7cZvf9vR0gwJRVHWGIbRr+Z/39CAa5P8FK9U+RkURXkfuAiR/XAI+D3gBDAM43VF9EgvIzIf/MAkwzCSFsEzQnhjGIYoV3YgO8q+X0IU+FR0Q8HhMKidEaVlezdNmznIyjI5JS0UEsq/ZQts3gxFReLDqKoISPftKybn6pu8RPXIEViyBL75BpYuFXXTYoI7eLBQoEGDzLd7+DDGjl8Ir9+CkpONEgljOBwY6Zmo3TujduogXFYTU9J0XfQ3O3fqrF0b5eRJBcNQUBSDWrUM+vRRadfOQdOm5m43EQhEWbr0OHPm5DJr1gGOHRMC7HYr9OqVwbXXtuLii7No3z7dPKPAsWM+Fi7cweefb2H+/O34fEKA09NdXHRRe666qhsXXXQODRuau/nNrl0FLFhwiC++yGHNmuMEAhFUVSErK41Ro5oyYkRjBg1qiNdr/UKM5IW3kQE3JvkpXkzqM1jFmSO8ug5r1ohY6MGDxTXEDKNYZaNRkSY1dKhIGjXjCT15El59VYQBsrPF0DoaLRbeaFT8f9Ag4XX27p28TYBjx+DLL2HjRlGZWNOK3XyHQ2zuk54uJgNHjxZ7a5pAbq6oBH/wYPFXG/u/ogizmZnC4+zRw5wMBV03+Oijg/z1r7vYsKGAtDQHum6g6+JSFQWCQYOePTO57762XHNNE1Nm7H2+Il566Uveeec7du8+hMfjRtdF3TRVdaDrOoqiMHhwV6ZO/RUDB3ZK/mKB7GwfTz+9ji++2Mvx40HcbpVoVDxnqqoQDEapU8fNmDEtefzxXrRqZY745uaKUWN2Nqe/21glqpJt26WL8CWsXlOUvPA2NmBCkp/iBVt4K8QwYN06+OwzIUDxlKx1uURgeNy4+GdeyhIMwj/+AX//uxDXQDWFMRVFxFb794fnn684bzceTp6ETz4R6qfr1W+mo6riCTr3XJEuUG51SHwcPSqc6yNH4tuwTdNiWxIK7a9pBsqsWbncc89Wjh0LUVhY/cZBGRkq9eu7+PvfuzB2bM1Sm8LhCC+++DnPPDOTSETH7w9WebyiKHg8Lvr0acdLL02mV6+2NbJ79GgRjz66ihkzfiESMaqtWeZ0Kqf2fmjLn//cn0aNajbxevRosb+SSNv27w/9+lm3xid54W1iwKQkP8WztvCWIxIRnuaGDfEJblmcTrEOeezYxLzfQ4eEiO3cWb3gliUmwK+8Evcs/2l274Z//lOEMhLdvUxVxQTdPfdUn1tVhp9+EqJbkx0yY5OYo0cntv9OOKzzu99t4d13c/D7E9+pzetVufnmZrz0UteEVogdOZLP6NFPsmXLvmoFtywxAX755duZNGlYQn+7fv0xRoz4hvz8EKFQYjsGOZ0OMjOdzJlzGf37J7ahybZtMHduzdu2bl0xwZ1ubqQFMEN4mxpwa5Kf4mlbeEtRWCjE6/BhktpJ2+USuWSTJ8c3279hg9jfoLAwObseD9x6KzzzTHwB5x9/hP/+t2YdTElcLpg0Sbii1WAYsHgx/PxzctsSOxwiteuKK+ILN584Eeayy1ayaVNBjUQ3hter0r17JnPmDKBOnepjHps372Xo0MfJy/MRDtf8gr1eNxMnXsLLL99eZT5tjI8/3sXEiYvx+5Pb+9njUfn3vwdx003V7wwWa9sNG5JvW5dL+BANTd5+N3nhbWbAHUl+iifOSOFNTTpZKAQvvSSCUsmWLwiFxCz9v/5VvRe5c6dw3fLykrcbCIjUrqefrv7Y9ethxozkRRfEOd5+W0wEVsOyZcmLLoiISCAgEiIqSsAoSTAYZfjwFaxbl5+U6AL4/VHWrctn+PAVBINVn2vfviMMGfIIhw/nJyW6wm6Q//xnAfff/3a1x86dm83NNy9KWnRBTAROnryEL77YW+2xy5YlL7og2raoCGbOFI/FmUfK08ksQb7wGoYQoSNHzNssPBKBffvg008rP6awEK68UvzfLPx+ePll+OKLyo85cADefDN5oS9JOAyvvy5GC5Xw88+wdau5BThCIXGpVZ3z9ts3sWVLAaGQOfXfQiGDLVsKuOOOCjePAqCoKMTw4VPJz/ebYhOE+P7rX98yY8bCSo/ZufMk48Z9RyBg3qb3gUCU669fyE8/Va6CO3bA2rXmtm04LKYeZJdxqhoFkdmVzM+ZiXzhXb3afEUAccesWCECmhVx331CqMzesTsQEAsMKhLBaFQIsxmebllCIRGqqeB6Cgpg0SLzv2LDEP3WDz9U/P6sWbl89FEugYC533EgoDNz5kFmzcqt8P3773+b/fuPEo2aa9fvD3LHHa+yb9+Rcu/pusEVV8w1xdMtSyAQ4fLL5xKJlL8en0/kRFvRtj4fzJ9v7nmTw5SVa2ckcoU3HBZeqRVCBOK8M2eWF6OffhJZE0VF1tgNh+EPfyj/+rJl1Y/Na4phwPHjoiMrww8/WFd5KBoVX2d+funXw2Gdu+7anHR4oTL8/ihTpmwulymwc+dB3n77OwIBa+6pUCjCAw+UDzl88MFO9u4ttKTyhmHAoUMBpk3bXu69JUusbdvt20Wm45mDHWpInoULrRPdGAUFsHJl6dfuv99au6EQfPyxGAPGCAZFJxNMbGY9IYJBsfqtxPjw6FER8ray0ruuiz6lJK+/vpeTJ60tLJqfH+Ff/9pX6rV7732TcNi6+nbhcJTZs1exYcPu068Fg1HuuWc5Pp911+vzRXjwwZX4fMVte/y4EEYryyxFo8ULOVOPHWpInnAY5s2zPogUCsHs2cXKs2GDWJhhdVGwUKj0puSLF8upcBwMiqz5U/z4o/V1Ng1DrD6OTcZEIjpPPLG9wmWqZuLzRZk69efTixG2bcvmu+82EIlYa7eoKMzDD//n9O/Tp++wJMRQlmAwyptv/nz696VL5bTtwYNVTh9IxPr9eFOFPOHdtk2aqdOZDgDvvWe9lw1C2L/9tjicsXSpHLuhkBD5U/88cMB6kyAe0O2nRsKLFh2XVlQ5GjVYtEiMhWfM+N70uG5FGIbBwoWbKCgQk3f/+tc2S73dGH5/lH//Wzw34bD1I5kY0aiYhkk9Z8R+vJYgT3hjO+DIIBSCVavEXfrhh3I8TxAZ6fPmifH+0aNybALk5MDJk+zebe4+B1Wh66IvNQyYNi2bwkI533FhYZRp07IxDINp0+YTCsmx63SqfPHFSnJz/WzeXFXBAnPZtauAPXsK2LNHXtsahojjyxD5qlEwYT/eMxLrd8oA0YXK9HgNQ+TbnHOOPLEHMeX/3/9aX2yyLA4HrFvHthNDpKYDBYNw/LjBZ5/lSntIDQM+/TSXhx6qS16eiamB1VBYWMQ778ynoKARquoAJNWzBz75ZDfnnNNDygAqRiQiFngmtOWq6cQ83v895Ajv0aPyuusYwWCx1yuTDRvgl1/kJkSGQrBzJ8cYUv2xJqIosGlTEYmsfjQDXTeYP//nUwIojw0bdtO06SEp8d0YRUVRli07VNMtOmqMYYhUe1t4rUHOnZuba11p4cpwOoXw+s1Lqo+L3FyxPZRkwvtzpTr3ILyidesKpBdHdLkcLF26k8JCi9IDK+HECR9r10oMIZ1iy5Z8fD65NiORM2WCzQ411JyDB+VMNJUkGhVLdWWTlibyfiRzvEDD2dQgFJbXwRkGbNpUaOrKrXgoKtJZt26HdE/b43Gzc+dJqTYBfD4HmmYQlti2IEINqSW2gOJ/D3mhBqvTucoSDqcmE9zMasIJ4FcyxMhMMjk5ftOWB8dLMKhz9OgJqTYFDoJByfcxULu2V/qAEZDuZVfMmZsSlgxyhDdVC8BTYTdFtauiqjMls9CpECKAiKxMlTI4HNbn0pbF6VRT0rayr7M8sQUU/3vIEd5UFdKTPaGXQpQU5f6YUSmiJqSmOGNqrjVVaV2pr38ZW0Dxv4cc4ZWdXhXDjLo1iaLrKXlS1GgwJbKQTGnxZHC55LetoujSI2YgVs6lQgStqkwRP3ZWQ3I0biy/Fd1uUZ9NNoFASgS/lurDSIH0tmuXgdcrV3y9XpXmzZOsuFwDdD1K7dry29bn86Pr8tu2dnIFl03A3qshOVIhvLGCYbJdBV03fyv/OKhdT5W2QC+GokDPnhk4nXK/Y6dTYcCA9miaXMEvKgrTqVNyZdhrQoMGjpSEG1Kbwwv2Xg3J0rix/Eh9KCSq+VlRTKoqWrZMuCaaGaitWki/VKcTevfOkJ5OFghEGTz4HLxeucPQpk3r0a9fYjXRzKB37yxq1ZJr0+mErCy5Nstj79WQHHXqyB9+16sH558vb58GEAUpBw8WtdFlxrXT0qBDB5o2lWcSRF/aqZOLBg3k3uANGrgYNqwrwaC8to2Vgb/ooiZkZsq7lzMyNC6+uAktWsgdvOk6NGkiz17l2B5vzVEUUUdaVpaBpsHAgdCqlfBAZZGWBtddJ+qhy/Two1Ho1o2OHeX2b/XqicLHN9/cXFq4weVSmDixOY0b16VrV3ltm5GRxi23DGXkyBbVlm03k3BY58orW9Gli9xoXe3adozXSuTlW/XvL/fOiVXhvflmeYsa3G4YMECo0TnVV4o1ja5dweWiWTN5JjUNunQR/77xxmbShFfTFG68UVzob34zAq9XzshCURSGDOmG16sxYoS8L3rQoMbUquWiSRMxoJKBpkH37nJsVY0d402eli3lxVsbNy6uQ37NNXJspqUJkY+NBy++WE64we2GIWJzHIcDOnaU94C2bSv+37VrJi1beqTYbNnSQ5cuYseY8eMvkLJs2O12MmHCRacn86ZM6UJ6uvVORHq6xpQpondTFCGGstq2Y0c5dqrGjvEmj6LA+PHgsvjLcDqFnRhNmsDEidZ7vZomCmrG6NVLjMWtpkmTYtcTMbCwOhaoqtCjB3hKaO1LL3WzPK3M61V5+eVup3/PyqrFPfdcgcdj7T2lqg5+//vrT/8+fHgzOneuY/n33Lp1Jlde2er07/37Wx+tU1Uh8BkZ1tqJDzvUYA7dulmbaqUoYogfc8ViPPKIta6C1wuPPlo6KKYocOON1nY0TifccEMppfV4oHdva6M6qgp9+pR+bdiwLPr0qWWZGInswFoMHVp6qv2RR8bjcll3sV6vm4cfHk+DBsVtqygKr756AWlp1t1TXq/Ka69dUGqFXloanHeetW3rcAgbZwZ2qMEcFAWuv966GaCy3m6MevXgj38UAmk2igINGsDkyeXf69ABy2ZFRC4XtG5d7q1evayLcmgaXHhhxf3J6693x+Ox5pbyeBy89lr5wGNmppcXX7zNklivoijUrZvOffeNLfde//4NuOqq1paIb1qayvDhzRk0qHwiba9e1tzGUNy2KdrnqQLsUIN5tGgBV1xhvifodApRb1BJnuVvfiNioWbfVV6vqCZc2fVMmgSZmeaO/x0OkaI3YUKFbzudMHq0+XqvaULnO3Wq+P2uXTMtCTl4vSovvdSNrl0r3g38lluGcsUVA0wPOXg8Lr7++veVivobbwyiWTMvqmpe2zoc0KBBGu++W/Gm9poGV19tvu+iqiIJqFcvc8+bHNaX/lEU5TJFUX5WFOUXRVEeruD9WxRFOaIoyvpTP7eZcWWp2UVm8GCRXmaW+LpcMHRocSZDRSgKTJsmQhFmuYMejyj107591cfcd58QfDPEV1GKz1nFdWRlwYgR5kVYVFUMHIYOrfq4X/+6Bbff3tI08fV6Ve64oyW//nXli1IURWHatHvo3r01brc5iuTxuPjggwfo0aNNFZ9NY+HC0dSp4zJlsyCHAzIzXSxcOJrMzMqfjXr1hO9iVscaa9tRo86EjXFKYq3HqyiKCrwCjAS6ANcritKlgkM/NAyj16mfN5O/rlQJr6LAtdcKDzTZrtvphJEjxU91eDwwZ47I8U1mvCaeEJg5Ey65pPrjGzYUMeC6dZN7WjRNKOpjj8U1cde6NVx2WfJfsaaJbS+uvDI+If/rXzvz8MPtkg47eDwOHn64HS+80LnaY91uJwsWPM2wYT2TCjsoikJGRhoff/wwY8YMqPb4Fi0yWLVqLG3aZCQVdnC7HTRvns7KlVfSrl31y9RatYKxY4XPkYxYaho0ayYex1TsKVUdiuJI6qcaBgC/GIaxyzCMEPABcKXlF0Uqa2M4HDBmjEjBcrkSd800TXh8kycLNyzeu69WLfj8c7j9diHEid616ekiNW7p0tNpXHHRqBH8/vc197jdbujcGZ54IqG1nK1aibB3enrimq8ooll69xbeULwPpqIoTJ3ano8+6kNGhorbndht5nY7yMhQ+fjjvkyd2j7uLSDT09OYPXsqDz54NR5P4l5oerqb5s3rs3r13xg1ql/cf9emTSbr11/NJZc0rVGaWXq6xoUXNmbTpnF06BD/qoWWLeGmm8QtXRPR1DTRtuPGpW4DwapQFDFQTOanGpoB+0v8nn3qtbKMUxRlo6IoHyuKYsp+AEoieZD9+vUzVq9ebYbd0pw4Ad98A6tXiy0Vq1rmq2miRS68EIYPTy7vZf16ePxxUZstFKp6tVl6uuggHn9cdBY1vVMNQ9j9+GM4ebL6Kshut/CUr7lGZIXU0L2JRGDzZvEV63rVX7GiiH6xaVMxw53Mmv3c3CKeeuoX3nlnP7pe9cbpbrcDh0OEK6ZObU+jRjVXg40bd/Pgg9NYvHgLoVCEaLRyu+npaTidKr///XXcccdI0tJqFgIzDIOvv97PffetICfHh88XqXJzm4wMjUaNPPz1rwO54oqWNd5jONa2P/wgbuGq9v+PdaZNmoiIXyMLN3lTFGWNYRjx92Bl0LR+Rq1ayelNXp6yFyhZKO/fhmH8+9TnGw9cZhjGbad+nwCcaxjGb2MHK4pSHyg0DCOoKMrtwK8Mw4hjmFs1Z4bwxsjLE8qwZQvs2ydESlHE/2PR/65dRUKjmWVX162Dzz6DuXNhxw6hOooi7uLateGCC0Qo4+qrzZuc03XxtKxfD1u3Ypw4AaoGGBCNotSrJzzc3r3FNZsUfAuHRRHkPXvgwAGDUKj0qevWVWjVSjjmZm6ScvBgETNm5PDVV4dZufIEum6UaFqF/v3rMHp0Q266qRlNmpg3Abphw24+/HAJX3+9hq1b9+FwOFAUhWhUJzPTw5AhXbn88v5cf/1gPB5z3D7DMPj222w++2wv8+blsH9/IZrmQFHEEuBmzdIZPrwZV17ZilGjWpi2mXwkAtu3w86dkJ1tEAxC7NS6Idq2TRuxOMJKwY2RrPA6nf2MunWT05sjRyr/DIqinAf8wTCMS0/9/giAYRjPVnK8Chw3DCPpxdQp3+q4FHl58OOPQgC3bRNxWKdTqIXfLzK7fT5x55gpvPXrw7nnCqU5flzcwTGx93pFgLNDB1Oz13Uc7PL2YGejHhyIQtQfxEMAAyjCg+p107wxtPVAW8yrfRAIhJk/P5vPPz/I8uV5OJ0qHo9GNGqQnx+kRQsPI0Y04KabmpOVZd4CkGDwJAUFKyksXEsksg+n04vIs4wSDvspLGxJQUEfgsGhgHnCGwjU4uTJrvj9WRjGSVQ1CuiARijkpqCgHn5/M8JhR6kFIclgGAqtW7dg5MgWdOkCJ0+GCYXCGIaB2+0iM9NJq1bl082TRYsG6VK4gS7Hf4Jj+ynSnYTVNFQjiiviQzMyoN45UNQDaFXt+VJNLNRgIauA9oqitAFygOuAG0p/BqWJYRgHT/16BfCTGYbPDI9392548kn46ishelWNg10uIYDXXismrJLZkmvfPiHyR45UX5/N6SwOcQwYUOOMDF0XHuePP4roRjxm3W6x0Vq7djV3fAsKIrz44k6ef/4XdB38/srDKiJxQqV379r89a9dOffcujUzCuzbd4THH3+fjz76gWhUJxyu3K7TqaKqDq699nyeeup6Wras+RaMK1Yc47771rNu3QkCgWiVQ36PR0VVFR58sCP33NOhxruPGQb89BMsWCD2w4+3bS+5RKR717hfD4Vg+XJYvFh8iHgMN2woZl5bWSfAyXq8bnc/o1mz5PRm9+6qP4OiKKOAvyO8gLcNw3hGUZQngdWGYXyhKMqzCMGNAMeBOw3D2JbUh+JMEN7334d77hE3SyJbOLpc4gZ6++34MhpKousiu2HDhsQLYjqdohueMCHhsXhRkehbjh1LfLdKTRPPysiRiYeXN27MZ8SI5RQURKoU3LIIj0Plrrta85e/dEl4SDxz5jJ+/etXCIUiVQpuWZxOFZdL4513fss115yfkM1oVOehhzby6qs7KSqqWnDL4vWqZGZqzJs3hO7dE9vwvKhIhO0PHqzZLdWwoQjjJ5xsc+SISJMsKqqZ4d69xU1lwcrOZIXX4+lntGmTnN789FNyn8EqUie80Sg8/P4S+aYAACAASURBVDBMny7cg5ri8Qjhfvjh+NzBQECI/aFDyVUhdjrFdHCHDnEdfuwYzJ4tno+a1u1yOMTlXnGFmG+Lh48/zmHixPUJCW5ZvF6VgQPr8umn/eMqfaPrOo888l9efvlr/P5QEnZd/Pa3o3j22RtxxOEO5ueHuOqqZaxYcTzp650+/VzGjYuvdNSxY/DeeyIaVtPdQFVV9OfXX5/AqvqffxYpjbHQWE1wOsWmUjfeaPqSuGSF1+vtZ5xzTnJ6s2nTmSm8qUknMwy4887kRRfE3//jHzB1avXHhkLCQ66JW1KWcFi4ONu3V3toXp5Y3Ob311x0QfytzweffAL5+dUfP3NmDjffvC4pEQIRlli27BhDhiyLq9rElClv8PLL3yQlusJuiJdf/oYpU96o9thAIMKQIQv54YdjplzvhAkr+Oij/dUem5cnHM6CguS2YI5GRdtOnw5Hj1Z//GnRDYeTK64aDsOBA/Dmm9Vn2EhGQjpZykiN8P7jH/DFF8mLbgy/X9w4//1v5ccYhrhRT5wwb5PySESo4KFDlR5SVCTShpPV+ZKEw+KcoSp0bfXqE0yatJ5AwJxNu4NBg+3bC7nhhjVVbsX4yivfMH36Ivx+cx5ivz/I9OmLeOWVbyo9xjAMbrhhBdu3F1aZrpYIgUCUW25ZyZo1xys9JhgUt1xV7ZAooZA4Z5WPxqFDxaJrBtGoeC4++CB1teQrQFFEiC2ZnzMV+cK7ahU8+6wQSzPx++H//b/KPdDly2H/fvMrQ4TDInRRSdB23jzzHQnDEA/mggUVv19YGGH06OVJe35lCQR05s07wr/+tafC99ev380DD0w3TXRj+P1BHnhgOhs2VGz39dd3Mm9erum13/z+KKNGLaGwsGKB+/JL4aWarVWxzrpCwmF4911ze3IQ9+++fbBsmbnnTQKHw/Z4zcEw4He/M8/TLUswKMS3LD4ffP+9+TdrjEAAVqwo93J2tohqWFEFKBoVz0lubvn3nntuBwUF1tQj8/miPPjgT+Tnl/4uDcNg8uTXKSqy5jsuKgozefLr5bzt/PwQDz20EZ/PmlJLBQUR/vzn8pPY2dkiX9aqtt2/X+Ral+PHH617fsJhWLhQPC9nAHaowSw+/xz27rXu/LouFmAsXVr69YULkwuuVkc4LFJ5SjwQhgGLFllbazMSETZKalFubhEvvrjLtBBDRYTDOk89VXpk8c03a9m6db9lFSEMw2DLln3MmbOu1OtPPrmVcNi64XEgEOVvf9tObm7ptp0zx9q2DYeFjVJfp98vGtwqBwLEczJ/vnXnTwA71GAGhgEPPWR9b+r3wwMPFP+enw8bN1pffFLXhfieYudOOY7DyZPC843xxBPbiESsLcZYVKTz6qu7OXxYhBQMw+Duu9/C57N2csbnC/K73715WtwPHSritddE2piVRCIGTzyx+fTvO3eKSTWrKSgQ64hOU7aXtYJoVKymjGf21mLsUIMZrFwpVEIGO3eKH4BNm+TYjEZFXvCpB2PzZjmV5cNhYUv8W+f993MIhayfIFEUhZkzcwDYuHEvubknLLcJcPDgCTZtEqOmmTP3S9nGMBTSef/9/aerC69ZY63TGSMcFrYA0bGvWyfnpgLhrKQY2+M1gw8+sC42VRbDEKleIHpvWTerrsO+fRQVVZnoYDrZ2eIhnT//aI03WkkUvz/Km28KV3vGjEWEQnK+43A4wowZYmTx5pu7TJ9ArAxFgQULDhMKVRJ7tYicnFOPzb591obLShKJwNq1cmxVgR3jTZaYEMq6cWJ5PsePy/OyQajfxo3s3m19UcKSOBwidD5t2j4KCyV1MsC2bYUcOFDEu+8uTmhlWjKEw1HefXcROTl+fv65QIpNEJki06bt5pdf5FX6BdG2O3YgHAgZbnaM/Hzx/KSQ/2WPV85Hy842N9kxXpu7dslVQMOAvXvJ8ch9RmI58EuXHpeahul2O5g3bx95eYXyjALHjxfy3Xc5uN0O0/J2q8MwYOnSo+zbJ/dWDoeFh91jzx65ObYOh3iGZFTKruIjnMleazLIEd5t28TSRFmhBhBra7dvly/4+fkcPWpg3n5i8XHggM6hQ3JXHvn9UZYs2Y3H45IWagBRlmfJkhxpYYYYublFHDwov20P5epigYNMwmGRq9ijh1y7JZCwO1nKkCO8P/8sssJlousiQCYZw+HgZAomhLdvL8TjcVBQIE+MIhGDVat2SxVdEHHelSuPE4nIXWXl8agp6VT1vHwMVUWRFaoD4V2n4PkpSSzU8L+IPOGV7Xn6fHI97FOEHWnSQtklOXjQL21irSTZ2YcJBOS2rd8fIicnhOw0dE1zEA7L/44zI3lyQ2YxZOTMVYEdakiWVK2EiVWwkEhE0VAUAwy5dqNRPSXL7MMyg9ml7Mq/WFVNzdYmLiUCqdhCwerc9ziwPd5kSIULmDJSUx/bqhVjZ6rdswsjNcKb4ra1Pd5kMaumSqKkYOjtMCIYkr1dAFVVU3G5aClySVRV/sVGo6kRoghaavpzmXlzFWDHeJOlbVvxDcpayABiU2eXS3ps2W0UiYdE8jOalZUa16Bhw/oEAk6CQXkhB7fbScOGGidOyB1JRaNRVFX+CLxAqSWqVcqmVi35Nkvwv5zVICdo1bmzfK9X0+SUUi2DEomYWoczXtq3z5CeXqUo0Lt3K9LSalajrKakpTnp3buOdA/f74/GXfnDTIw69VBkOi0xkqlnaAL2Xg3J0rGj/DhvIADt24v8YZlkZFC/vvxxYYsWGnXqyL3WjAyVCy9sKz2dLBSKcOGFTcjIkDsOrVvXRZMm8ts2q5EKGRlyjcZKAqWQ/+WVa3KEt00b+cJbu7Yoyyubpk1p0kRueEzTxDPSt29teUYRQ+5hw1qhabLTulSGDWshPebap08dmjeX25drGjRvzqn/SERRbI/XQuQ8MZoGI0ZIMXXa3vjxQo1qWIa9Rrhc0LMnbdvKMwli8rlNG5g4sQWZmfK6+QYNXHTqlMm4ceclXIG4pjgcCuPHn0enTrXIykqw3HISZGZq3HJLGzp0kOtDGAZ06gT07Cn3Xj4DPF6wPd7kuekmpAU/3W741a9Er92jh7zkc12Hdu3IzBQOtyyyskQIfcyYxoRCclTB7XYwaVJLACZOvIj0dDkimJ7uZuLEiwCYNKk1Lpectg2FdC6/vAnp6XKnDurVOzXH1b69PMV3OITQpyJNpszHsD3eZLn4YmmmyMyEPn3Ev3v0kDPuVxQRyz7VzXbtKqfH1TRhCyAjQ2P48AZS+hlFgRtvbAbAoEGdcTrluBdOp8aFF3YC4MYbW0lJK3M4YMSIxmRkiBhD795ywg1Op7AFiIbu1EmOE6GqJQynDjvGawYuFzz8sEjzspL0dHjqqeLeulEjaNHC+t5bVUt1Lp07y2l4l0s4QzGee64zbre1zappCqNHN+Kcc8SEj6qqPPPMDZZ7venpbv70pxtRT3Wk7dtnMnJkYzTN2rZ1u1Wee6776d+7dRODKqvRNOF4nmboUOuFV1GgVauUZARV9FFsj9cMbr/d+tnZJk3gmmtKvzZypLVer6qKJ6TEFnqaBuefb634ahoMGlT60rp2rcXVVzfB6bROjJxOhb/9rWup1267bRj16lkbSqpfP5Nbbx1a6rW//a0XTqd1t7HLpTBuXHO6dCmOHakqDB9urdfrdAqdLWWjfn3o1cv6e3nUKOvOnwB2qMEsXC544QXrvF6PB/7xj/JeQf36IuRglQqW8XZjdOgg+hkrnG1FgTp1qHAi7y9/6WpZ7NPrVbnrrja0bFm6DTVN5fXXJ+P1WuMKer1uXnttMppWWnRatUrnzjvb4fFYI0ZOp4M//7n81oidOkHduta1ba1a0L17BW8OHWqd8MZc7Kwsa86fIHaowUzGjoUxY8xfUOH1wm23CRewIi69VNzNZj8pmgbjxlXYmTgcwnmw4jnRNOHIV3Q5TZumMW1ab7xecw1rmkLbtl7+9KfOFb4/alRfJkwYgtdr7uy71+vi5puHMGpU3wrf/9OfutOuXbrpIQevV2XatAE0bVr+XlUUMbCywuvVNHHuCm/V9HRrDCuKmBE+Q7xdsEMN5vPyy8JlMCs9Ji0NBg6EJ5+s/BinU2RWmBmcczph8ODSQdYy1KkDl11mbu+raeL5qCpJZPz4ptxzTxvTxFdRoG5dJ3PnnlelN/3SS7fSp09b3G5zhMHtdtK3bzv++c9bqzhG5dtvh1C3rsu0fjU9XeXeezswfnyLSo+pXVtooNltO25cNYUfOnYU952Z4puWBhMnyl9wVAW2x2s2bjd8/rmIVyUbdvB6hZf73nvVu5Z16sAttwivIVk3NBbEveCCag9t2VKMEM24ETRNOO/NmlV/7NNPd2bKlNZJi6/b7aBZszSWLbuQJk2qdiOcTo2vv36c88/vmHTYwet1c/75Hfnqq8eqzZpo2tTD0qWX0KyZJ+nJRa9XZcqUc/4/9q4zTIpia7/V3ZN3WZacc5YoSBIByYKAKAqmi/kCKir6yUW9hqsXwzXrNWdAQEyIRBUFBERyhmWXuMQlbZjY013fj7PDptndCd01XNn3efaB7unp0z1V9dapc06dg2efbVvutQ0bAtdeawxfWSzAyJHhzUcl0Ls30KtX/ILl/F1xd95J4+MCQoWN1wxUrgwsXgzcdFPs5OtwAPffD8ydG/k9atQAJkyg4PBYOi1j9L3rrgP69InYdNG0KQ1QhyM2x7Qs03wxejQN9sgeleGlly7BJ590hNMpxyTX5ZLRo0cqtm27Es2bR+YYTU524KefnsSECYNiJl+n04aJEwfjp5+eRHJyZGapFi2SsW3bYHTvXhUuV/STjSQxOJ0yPv30Mrz4YoeIE8s3awbcfjutQGKZz0NtO24cKbMRgTHyK4TMDrGo+hYLOaPvu4/GxQUGERovY2wIY2wPYyydMfaPMJ/bGGNz8j9fyxhrZMi7RZNPtUuXLnz9+vVGyC2KRYuAqVOpJnokSdNdLmKfl16imT8W6Drw55/A8uX0//ISejNGI6RJE3JpV60ak1ifj8Tu2kXH5WW6kmUSfcklQJcusVtKdu3KxeTJ27F8+Wn4/Xq5sfgulwybTcK//tUK48c3ijledunSzXjggU+QmXkaeXnll39KSrKjXr2qeOONOzBoUMeYZGqajvfe24cnn9wOv1+D2132jyxJZK7o06c6Xn21I1q3ji0rl88H/P47VUbnPPK27dCBFm0xL/5OnyYlJiODhJY3pi0WEt63L9Ctm2nOOsbYBs55l1i/36lTF758eXx8k5JS+jMwxmQAaQAGAsgEsA7AjZzznYWumQigPed8PGNsLIBRnPMxcT0ULhTiBYj8FiwA3nmHem6oV4aqSISYomtX0nL79zfGUaaqwIYNVD771CnqlKHfhDHqyFYrEW6vXoZpBh4Pveb+/TTXKEpRscEgrQCbNKFYdqN8kVu2ZGPatL1YtuwU8vKCsFqlIoU6fD4Nbdok4847G+LuuxvAZot/UHLOsWDBBrz66nysXbsXksQgSQycczDGoOscus7RrVtzTJ48HMOGdTakjJHfr+HDD/fh44/3Y+fOHNjtUv7z0PsGAjqSkhT061cTjz3WGh06GLPUdruBP/6gilc5OUU1L8aoyyUnU9RLjx4GRliePAmsWEEE7PfTGCrcuMEgRSx07EjjyGR7brzE27lzF75mTXx8Y7OVSbw9ADzNOR+cfzwVADjnzxe6Zkn+NWsYYwqA4wCq8zgrAFw45udQCECLFlSV+LffqNieqlIHadSIlvYtWtC63SgvisUCf6fuOJDaHYf3q/CkH4Xs84BxDbpsAa9XC3VapaBBA6B6dWNEAqTdNGzoQVpaFlasOIXDhzk4Z/mvpaNhQxkDB1ZDw4bV4TAwAqRDhxQ89lgNdO9+CnPn7sGOHblQVRqjqakybrqpAQYProP+/WsZQroAmTyGDLkULlc9LFt2HN98sx2HD5+EqgZhsSioX78GrruuLfr1q4UrrqhhWO04m03G3Xc3x+DBzZGWpmHFirPIyvIhGNRhtyto1y4F3bu70LChsSttlwvo3yUb/VMz4Nu1H8cOB+FVZYADdouG2vVkOFo3IhtFkoF21Ro1gDZtgKwsYNkyWkHqeoF5rH17It22bS8oJ1ppMCgRejXGWGH2/oBz/kH+/+sCOFzos0wA3Yp9//w1nPMgYywbQFUAp+J5qAtD49U0Wn//+CMlLlfV8PvSJYk6jNNJXoiOHePayRNa9m/YENKAwl8XUr5r1iSzWrxJm/btc+Oxx3Zi3rxjkGVW6lI4KUlGMMhxww118eyzrUvEzkaLlSv34OGHv8SOHUeg6xw+X0nzCmMMyck26DrHI48MxeTJQyK2sYaDpumYNesApkzZhNxcFV6vFrY6sKIwOBwyKlWy4MUXL8XYsQ3jqnHm9wPr11P7ltW2oYFdrRq1bf3Sgxgiw9mzwE8/Adu3U98sTbDVSn28TRtKIFVmGEME+PNP4PHHga1bScsNV9WbMVKvNQ2YOBGYNMlUh1q8Gm+Xzp35+jVr4nsGm60sjXc0gCGc87vyj28F0I1zfl+ha7bnX5OZf5yRf83/OPEeOwa89x6tz6KpFmG1UqeZMCEme2taGlk2OI+uMIaikPJ99dXRR8PpOsfjj+/E669nIBjkEZcnt1gYZJnhscda4IknWkatEebkeHHDDW9j5co0eDz+iL/ncFihKBJmz74XQ4d2KP8LxZCWloOrrlqGkyd9yMuL/EdOSlJQo4Ydixb1Q4sW0dtbMzKA+fOJ16JpW4uFsi+OGBGDLZ1z0jJDPoNIE9pIEv1dfjn5DqJVJPLyKH7911+JbCMdz3Y7aRQffEBx9SYgbuK99FK+/vff43sGl+uCNDUklni3bgW++CL28jyM0Qi56y4yQUQAzskMtmFD7JWIFIUUhzFjIs9ClpOj4rrr/sTq1WdirhThcsno3786vvyyC1yuyNZgaWnHMHDgSzhxIht+f2wv7HBYMXXq1XjiiZERk/6iRUdwww0r4XYHY6qZyBjgcimYO7c3hgyJbInBObBmDdlXY23bUITBDTdEoYQGAsDs2cT4sVZdtljIYXzzzZGz/oEDtPI7diy8hhsJHA7Sfv/5T8PzQMRNvB078vXLlsX3DFWrlkW8Csi51h/AEZBz7SbO+Y5C19wLoF0h59q1nPMb4nooJDKcbNUq4PPP46uJFlpSvf8+sGVLRJfPn09OrXgqqQSDQHY28NlnwJkz5V+fna2iS5ff8Pvvp+Mqz+N2a1i69CS6d18Ot7v8F9i27TC6dHkKmZlnYiZdAPB6A3jxxQW4666PI6oqPH36Plx33Qrk5cVGugC1VV5eENdeuxzTp++L6PrFi4G1a+NrW00DcnNJH8jKiuALgQDw7rtAenrspAvQdw8coM1FkZDo3r0UCnHwYOykC1CllnffpTjeC7FidDAY318Z4JwHAdwHYAmAXQC+4pzvYIz9izE2Iv+yjwFUZYylA5gMoETIWSxIDPHu3g18+218HbUwVJVGysGDZV62cmX84yMEzsmOOGsW9d3SoGkcw4atwaFDXvh88edT9fl0pKe7MWrUWuhlFEA8cSIb/fq9gNxcX5nXRQq32485c/7Aiy/+WOZ1K1eexPjxa+H1GlP/zevV8Pe/r8XKlSfLvO6PP6hbGdW2ISW2zOhGXQemT6dwLiNqogWDwLlzpJCUZao4fZoc0Tk5xuTo9XgopPO55+K/l5HQdZpU4vkrB5zzhZzzFpzzppzzf+efe5Jz/kP+/32c8+s5580451055+VrARFAPPGePQt88olxpBuCqpLmW8pI2bePnC1G1wz0+YDvvy9dWXj88Z3YtCkbfr9xSax9Ph2rV5/Bv/+9J+znmqZjxIjXkJ3tMUwmALjdAfzrX/OwfPnusJ+fOOHFyJG/GV500+vVMHLkbzhxIvwMd+gQmRiM7lJ+P+kHpSqCv/1Gwo3sVJoGHD0KLF0a/nPOgVtvpXFkpIbq8ZC2/fPPxt0zXggg3kRBPPF+/bV5Jdd9PrIlFEMwCCxcaE51eU0Djh8nZ11x7NmTizfeyDCl+q/breH559Nw8GBJcp0xYxV27DgCVTVertcbwLhx7yMYLHnvyZM3ROVEiwZ5eUE8/PDGEudD4d9mtK2uU2j3jh1hPjx7lojXaLYH6J6rV5Pw4pg3D9i0yZwx5PUC48fTjHOhwERTQyIhlngPHaL1oFklTIJBYN26Esa5TZvMGR8hqCopCsV3Kj3wwDaoqnl2M1XlePjh7UXOeb0BPPzwLLjd5g2eU6fy8MknK4qc2779HL799jBU1Zy2VVUd3357CDt2nCtyfutWcxUbVaWAgRJjeOFCc0vxaFpJJSIQAB59NLLdnbEiLw/48EPz7h8NKjRegzB3rrkMCFCH/fbb84d+P23jNFtsIECb30L4448zWLnytKmVcINBjoULj2PLluzz515/fQm8XnNf1u32Y8qUOUVC0yZNWodAwHgNuzD8fg3337/u/LGqUvSW2W0bDJKZ6jyOHqUljpnEyzk52w4dKjj3ySdk1zUTHg8wbZr5ciJBKNazQuONA1lZ1GHNhq7TXs18rSCcCcAMqGrRwfnaaxmGOZjKgt+v47//JXs/5xxvvLE0qljdWKFpOn78kWaazEw3Vq/OMr0Wo64Dq1dn4cgRMq+kp4up/xjaVX7epBpPvFq0glevLjh++20iRrMRCv9JNEJRSxUabxwo0nNNhiSdDy/bssV8jSgEt5sczn6/hh9/PC7kdXUd+OqrI9A0jo0bD0SUiMYI5Ob68PHHywEAX311UGh596++ouiVrVvFtW0gQDtwoevAtm3i+vKuXUTye/ZEGN9mANxuiqxINP7CGq+4XA2itASARsnq1fB07EmDRRA4B3buBM6dO2l6AcbC0HVgxYpTmDdvFfx+QUwEYPny3cjN9eKjj8Ro9wBFOHz0UTomTmyNzEwhIgGQBWvHDqCWe784oQApEenpZKYrL92Zkdi4kbSIGLPwGYKQjfcvCDHEm5dHOw5EIjMTmYc0yLIsrL9qGo2R9etPIidH3GyblxfEkiUnsWDBFgSDAtbe+bDZLPjll93Yu1esPTAtLQf79oltW12nkMT+6l6xXn+/n7TdhQvNiwYKB5uNzBwmbSeOCKXlnPgLQIyp4fhx8dmQLBacOuQVthQN4dw5YMOGc+VfaCA4B9atO4tDh04Llev3q1ixIhNOp9gkd06ngt27fUIVQIB0By5SzQ7hyBHKHyoSXi9FICUSFaaGOHH8uNhlEgAwhmNHNOG7IHUdSEvLEysUwPbtx6EoklClyO8P4o8/TkDXjUooGxl0nePwYV14l5IkgJ/IgjgjUj4OHRI/foJB8sskEhWmhjhx7Jg4L0gIfj/OZItPN6xpQaFmhhBOnTqN5GSTyn6XgYyMPLjdYotb5eUFkZcnCy9mqEg6mEf8pIoTJ2jpL3pjw57wOyOFIdrUgf9DENN1y0pmYBY4R0AXvzFPVTUoCjM1fjc8NENyMkQLn48nJLcK5+LbVuJBAAyA4BcWre2GICJ0rSz8hW28Yog3QR2Hc+GLQgSD3LDiGNGAMXFOtcLQ9QS8bIIg8fxqDqInGl1PTOawRBF+CBUab7xSElNhSGbiO6vFIgkJ6i8OziXDSuZEA5PqJEYA8W2rMRngCWhcSTKu1FU0SHR5oAobb5yINFu4kVAU2C0acgVPmDabkgAzAyDLtoSMzUqVJLjdLOJqGkZAURhkWTwBalAAJgFcsCZotydG401NFS+zMP7CpgYxhrI6dWKvSx4rFAU1qopfKum6hNq1Bb8rgAYNapqeoyEc2rVLTUg4WZUq4ok3qDFwE2uUlYoGDRLjJ2nfXrzMwvgLh5OJId5atcQvlTQNtRpYhC+FHQ6gTZvo64TFi06dasBmE0uALpcNPXvWFu7U03WOxo0V8VENCiDVriVWKADUrWtqUcqwsNmomGwiUZGdLE7UqCE+nAxAtfoO4cRbtSrQvXsqLBZxE43NJqFbt1S0bFlbmEyA8iZceWUjBAJitc9AQEerVjajS4SViypVQGWIRXYqSSKZrVqJkwlQJddLLhErszgqNN44YbVSIT+RaNsW9eoxoaYxi4X66jXX1IbVKo4VJAkYObI2brmlJxyOKEsfxwFZltCtWxNceWVNYTIBoH//WqhbVxK6iFKUfB5q00bs6k2WSeaYMYDTKU6upgHdu4uTFw4V2ckMQI8e4uy8NhvQrRtkGWjWTIxIgFZGzZsDHTumoFIlcevgunUdaN48Cddf3xW6oJAKWZYwZkw3yLKEO+9shuRkMe+bnKzgjjuaQpJICRTFgZwDLVsCqFYNqCTQlGS3A7VrU84EURocY8DVVyc+qqFC4zUA7duLiwvk/Hy593btxPWf2rXJxssYw223NYDVaj4r2O0Sbr+9AQCgTp1UtG1bz3SZJNeCv/2tFwBg2LC6plbaKAxV5Rg6tC4AoG1bcZGK1aoBSaGd0Z07ixEsy8CllxIRVqkCdIm5Unp0cLmozHyiUWHjNQAOB9C1q/kd1mIB+vU7L6dhw0IDxkQoCtCrV8HxpElNIcvm/7yyzDB+fOPzx88+ex1cLvNXFs2b10SPHrSccDoVTJzYAna7ubZPu13Gvfe2OB9FUaeOGJ+TxUKV1M+jWzcIMTBLEtCzZ8Hx44+LMTfUqgX06WO+nPJQYWowCMOGmd9hFQXo3//8IWPAoEHmar2MEQk0aFBwrlYtOx56qCkcDvPe1+WS8cQTLVGlSoFdd8iQ9rjkkrqmLsEdDiveffe2Ihs2nnyynekORYuF4Z//bHf+ONS2Zs/l1aoBjRsXOuF0EjGZ2aksFuDyy4Hk5IJzV1xB2raZY8jpBF57TczEUh4qTA0GITkZGDDAvA5rtQIjR5awJTdsCNSsaV5fkmV6reKYOrUFbDbztECHQ8aDkuw6KgAAIABJREFUDzYtco4xhnfeGQe73Rwnm8Uio2/fVujevajxPCXFiqefbg+n05z3dTplPPNMB6SkFH2vunXJ6W9W2yoKMHBgGFtyr17mEq8sh9c6X36Z+rkZUBSgU6cLQ9sFKkwNhmLgQAovM3qkyDIxbCme2KuvNkczslhIZLVqJT9LSlIwe3YXU7Reh0PCN990Dbu879y5Me6/fyCcTuMHaFKSHZ9+enfYzx54oBXatatsuOZrsTC0b5+KSZNahv38qqvM4SJFIQWzVrjQXYsFuOkm8zrVjTeGd0a3bg088og5JgenE/joI+PvGysqNF4DIcvA+PFk8zUKjJGn+c47SyX0SpWAUaOMHSeKQuaFHj1Kv2bw4JqYOrWFoZqg0ylj2rQ26N07DNvnY9q069GjRzPY7cZpZQ6HFQsWTEbNmuG3gMuyhPnzr0TVqsZtX2YMqFrVhh9+6FuqzTwpCbjuOuPbtk6dYrbd4mjSxHg7lsVCGmfz5qVf88gjQO/eFPFgFBwOYNYsWkJcKKiw8RqMlBTg/vtpho03GF2WyYQxaVK5WkDDhsDQocYMUEWhKIaRI8sPaXriiZa4666GhpCv0ynjgQea4MEHy46Tk2UJ8+Y9hA4dGhii+TqdVsyZcy969CiDEABUr27H8uWDUL26Pe5YZqtVKnK/slC3LkVcGdW21asD114bwcKsVy9ygBlBvhYLRS5ceWXZ10kS8MUXpI4bofk6HMC775YzyyQAFRqvCahTB3jsMTK+xtppQxszHnss4qJ8rVrRKs5ujz0GVFGADh0opj2Sgc4YwxtvtMdbb8VnA3U6ZXz0UUdMmxbZjiKXy4aVKx/HLbf0jJl8LRYZNWpUwqpV/8Tw4Z0i+k6LFpWwffvV6NAhNeb3dTpldOyYih07rkaLFpHFzTZvTlFQDkfslqzQJpibborCfDF4MC2n4iFfi4VmjuHDI+uYdjvw44/AuHGxrx4VhRLhLFhAs8yFhr+wjZfxKLZ2denSha9fv97YJ1BV4IcfqLCerkcW6xvq4P37A0OGxDTK8vKARYuAw4dJZCQ/g8VCfwMGxL6D888/z+K22zbg8GEv8vIii2t2uWQ0berCZ59dik6dYoufmj79dzz44Ez4/UG43eVXMpBlCRaLjMGD2+HDD+9A9erRbxpQVR3//OdmvPnmHug6h99f/uYOm02CJDFMmtQSzz7bERZL9G3r8QCLFwMHDkTXtrJMXSrmnbJHjwJffw2cORN5YUqrlVaAo0eTlzAWfPstmR+8XirNXh4kiezHvXoB//1vKUbs+MEY28A5jzn4uIvDwdcXCSeJ4Rl27YrrGcxC4ok3hJwcGi1r11LH0PWi+R0sFtIEGKMOM2AABXrHiZMngd9+o7JWikKrk8KbvywWOnY4aEXZrl381hHOORYsOIF//GMH0tLy4HDIyM0NnicISSLHnNeroU2bZLz0UlsMHFg97ny7fr+KDz/8Fc899wOys71QFBl5eQVagcUiw+GwwucLYPDgdnjhhTFo0yZ+m19Wlg///vd2fPTRXjBG1TkKl4N3OGTIMgPnHHff3RyPPda2XNNCJDh1Cli+nOpElta2nBP39ehBq5i4TRWcA3v3Ul/OyqIbBgJF2d9mo4epWpUUh5Yt49+CFwgAM2YAL75IxG+xkHYRgsVCWrLPR/bhZ5+lHSgmIm7itdv5+sIxmrE8w969MT8DY6wKgDkAGgE4AOAGzvnZMNdpALblHx7inI8o994XDPHmQ/XrOL39GHzb08FOngALBqArVqB2bTjaNUPVNrWgmBAvevSoD7/8koOdO1X4fBI4Z5AkHfXqMfTo4UDXrpUM3xDBOceGDUfwxRe7sGzZcZw7p4ExhsqVZQwYUAu33dYG7dvXNjzBeTCoY/HiA/jyy01Yt24/PB4fFEVBnTpVMHx4W4wb1x516xq/68Tv51i+PBuLFp3Arl3n4PNpsNtltG5dGVddVRN9+qTAZjO+bYPZeTi+6Rgy07zI9ijQdAaboqFWbYb6bSujUotaxie+4Zxqlv32G1XrDWnAVivtquzblyIUjA641nUqUrlwIbB+PZFvyCHRrx/F0levbqzMUhA38VqtfH2c2jg7fDge4n0JwBnO+QuMsX8ASOWcTwlzXR7nPKoBc8EQ77lzwJo1wMGD1E9UtaiSwBhN2sEg5V/o1q1obHks4Jzj119P4v/+bwu2b8+B3S4V0TwB2pJrsUjgHHjkkZaYPLkFkpPjc6QEgxq++OJ3PPHEXGRne8AYK7H8T0qyQdM4qlZNwvPP34Abb+wZN/GfOxfAf/6TjjfeyIAkMaiqDp+vQAVkjHIh+Hw6OnashJdfbosrrig9ciJSnD0LrFwJpKWFb1tJKtBIW7QghcyQHWkZGcD33wOZmeE1T0UhwuWcIgn694/fWaVpwNy5wDPPAKdP0/2LL/9dLiLIlBTgn/8kp0O8qrbXSyS/bBkdF18xAgWadu3awDXXkFHcxJ02hhBvuDjNaJ7h2LF4iHcPgL6c82OMsdoAfuOcl4hp/J8k3kCA+sv+/ZGXlmKMBmvLlmR1iKXP7t2bi7Fj12DPnly43ZHZWkNL4uefb4d7720Wkya6dOk2jBv3HvLyfMjLi6xqbFKSDZUruzB9+nj07dsmapmcc7zySjqefno3dJ3D640skY7TKaN9+0qYNasLGjWK3qyjqsDSpaT4RWprZYy4qmXLOCK1Tp8GPv+cbK6R2lpDpqyrriLNMBZCWrkSuPtuIDs7MlsrQCSclAS8916RHZcRg3OSO39+eLItDVYrObbHjaO4ehMQN/EqCl8fZ0IidvZsPMR7jnNeOf//DMDZ0HGx64IANgMIAniBc/59ufdOJPFmZ5NfzeOJLX+OLFN87ogR0Zl7lyw5jtGjV8PjCcZUH83plDFiRB189lnXiHemcc7xwgvz8eyz38PrjZAMisHhsOD558dg0qTBEZO+xxPETTetx08/ZcHjif5HlmWGpCQZ8+Z1R58+kWsf2dnAV1+R6T6eth0zJspkYHv3Ah9+SKXQY8kJarUS648bF3lYA+fAO++QlhurJ93hAKZMAR56KHLSV1Vg5kxg+/bIJ5jCYIze8Y47yOxhMOImXlnm6+P047Dc3IMAThU69QHn/IPznzP2M4Bw9ozHAXxemGgZY2c55yXqITHG6nLOjzDGmgBYBqA/5zyjzOdKFPGeOEGkGwzGV05KkkhZGTUqP1F1OXj33XQ8/PCWIs6dWOBwyGjRIgkrV/Yr1/Sg6zpuvvkdzJ+/KaKIgrLgdNowdmx3fPTRXeWS79mzAfTosQKHDnki1nJLg8Mh4d13O2LcuPKdHSdOALNnl1zZR4sQL4wdS8pZuVi7ltg+3qT7Fgt1poceKt/0wDlw770UWRBvOXSnkwLNP/qo/Egdnw94/XVy4BnxvqNGFc3yZADiJl5J4uvjNMEwVTXd1FDsO58B+JFz/nVZ1yUkjjc7m1ZGxW19sUDXSbn5/vvyV3fz5h0xhHQBwOvVsHt3LoYNW4lgsGxSmzx5Jn74IX7SBQCPx4/Zs//Ak0+W2a4IBHQMGrQa+/e74yZdAPB6dUyYsAVLl54s87qcHGDOnNgVzsLgnO4zZw7dt0zs2mUM6QJ0j1OnSIstLwj/2WeNIV2A7rFwIWUhKwuaRqaJkyeNe9/vvgO2bSv/WpHgHFxV4/qLEz8AGJf//3EA5hW/gDGWyhiz5f+/GoDLAews78bCiVdVC0jXSPj91GdLMx2kpeXi5pv/MIR0C2Tq2LDhLKZM2VrqNXPm/IEPP/wVHk/8pBuCx+PHK68swo8/bir1mvvu24KdO3MRCBiXJ9fr1TB69J84cCD8DBcMkl/Jb9yrAqD7zZ1bBgeePg188omxnUrTgGPHKC63NCxaRHGwRpBuCB4Pvcu335Z+zbx5FIBu5M4sVSW7+MmyJ1bR0OP8ixMvABjIGNsLYED+MRhjXRhjoaQWrQGsZ4xtAfAryMZ74RHvunWkmRpdkodz8p5vDcOBnHOMHbvGUNINwePR8O67Gdiw4UyJz86edeOuuz6CxxObTbcseL0B3HLLO8jNLVl9duXKU5g5MzMmm2558Hg0/O1vG8N+tnYtrWbMaNvsbLp/WEyfHpuNszyoKnXYjDDmutxccqSZUf3X6wXuu486dHEcOgSsWmVODUNVBT77LDGl5MOAg7xV8fzFJZ/z05zz/pzz5pzzAZzzM/nn13PO78r//2rOeTvOeYf8fz+O5N5CiTcvj1YzZhWiCAZpnBTXuObPP4q0tNyYHGmRwOfTMGHCBhS3lz/11DcIBs2ruhEIaHjhhflFznHOMWHCFlNIFwA0jWPjxnP45ZesIuc9HiJGs7bHB4N0/xLK5Z49FC5mFlmoKpkwit//lVfMLeCqqsALLxQ9x7lx5pRw4Jw03u3bzbl/lOBIuMZrGoQS75o15k+muk5x4yEEgzruu29jxCFjsYBzYOfOHCxadPz8uQMHsvDRR7/C5zNvcHq9Abz22mIcO1agGX3zzVEcPGjg0jcM3G4NEyZsLlLWfeVK89s2FDl1HrpORGSGtlsYp08DmzcXHB8/TkllzNB2Q/D7gU8/JQ03hJ07SbaZCATIriOqTFc5SKTGayaEEa/XSys2s2sxahpN2CHNa/Hi4zh3zvzS8m63hmee2XH++I03FpfrdDMCuq7j3Xd/OX/89NO7I84BEQ+OHfNh+XKK0vH76Tc3e6yG2vb8iiY9PQKvmwEIBGgLcAgffiiGmDSNCD6ERYvMn2QAGqy7d5svpxxUaLwGYN8+cdVEJKlAUfj00/3IzRUz923Zcg4nTvjAOceMGauhquYPTr8/iM8+IzXw4EEPMjIiDNyPEx6Phs8/px85PV1c28oyyQNAtgcRRARQ2NaZM6R2f/mlGLmqSiEdnNMEc/So+TIBmtn++EOMrDKQaBuvmRBGvDt3ikuPqaoUXeTzaUWW/2ZDlhm+/vow1q7NMNXEUBynT+di+/bDmD07U5hMXQe+/fYYgkEdW7eaa+4sjEAgP+pJ08iTKsoRxBiwcSN15HBOL7Pg9ZLtbPNmsXXQdu4U16il4K9MvEKKY6sqmclEIjMTWLEiCxYLM9UUVxgej4ZZsw7hyJFTMe9OiwWqquGHHzZi7txKRXIvmA3GgDVrzuLIkchyIRuFzExA23cQ5tY0LgZVpeQzsiyWkHw+ipOsVEmcdg/Qe2ZkxJ7/1CBcyOaCeCCEeM+epXY0275bGIwBGzZkR5QD1kjs3p0Lmy0DmiZOrqpqWLs2A3v3ll0dwmgEgxzbt/uEt60sA959x5AkUihA5obDh8USr6aRxhtzkuAYEQxSHHMCiTek8f4VIWTtEjKNiYQkAWvXnhVOvNnZKnbuPCJUJgBs2XICwaDYH9nj0ZCRETC1lHw4MAaoBzLFL4V1Hdixo/zrjEZ6uvhqCsEgTTIJRoVzLQ6cOSO+/FEwCGzffk6sUAAOB0NWVq5wuZmZKux28TvAjUgVEC1UFVCOJYAUZFmcg6swVNXcUvKl4Yh4BaIwKmy8ccLIHZWRQteBnJxEOAeCkCRJqKkBADi3JmTDEWOycLmcA7IvAZ2qeAkLUTCyInc0EOUcKQMXstYaD4QQb6JisUXE0RYH55rhFSMiAWNSiZ1zYpCgeqmJIEBNKyhLJRJGV8eIFAneRPFXtvEKIV6RUTCFYXSpnkhAGqB4AuRcTwjh0/BIABLRqULVKkQjEZMMkLiBmw8O4MLYP2c8hPyy9vjrFkYNxgCXS8i8UgyKcDMDQRXu5AJIw08EdGsCOlWiiNfnM7VET6mw2cTLLAYtzr8LFUKIt2pVA6q3RgmLBWjVKr6yIbHA7wdSU+Os2xUDataUDU0BGSlSUvSICzUYBasVCNaoLVYoQKQbUUZ2g8FYYjYz1E7Ab1wIf2XnmhDiTU0Vv2rhHOjWrQoURaymYLdLaNlSfIdt165qkaQ1ImC3S2jaNAHedgBSowbiZ3POTSmRUy4aNhT/rrIMxFlaPV5U5GqIE6mp4sPJNA3o1KkSnE6xjolmzZLQpUtjofZWWZbQtWsTNGokVtO2WiW0aWMXrowFg4CzcS3xZFS1KtC5s1hnF2NAp07CSrKfh8UCxFla3QhUaLxxwG6PsmChAahZE7jyyupCN1DY7RKuu64ehg3rhKQkcfYxp9OKq67qgFGjasNiEUf4gYCOyy9PFc4J1aoBSvPGYmdzWQbatwcGDhQb3pWUBAweDHToIHaiCQaBZs3EyQuDkHOtwsYbB1q1EqcoWCy0IkxJsaJnz8gr4xqBsWMboF+/6EuwxwOrVUH37s1w8831YbGIs+kMGlQDTqcilBMsFuIgWK1it7NKEtClC9C1q9jNDJwDvXuTpi0STZokLn44HxXEawCaC0wjoOtA48b0/7vuaozkZDGs0LChC02aJEFRZFx77WWQJPO1T1mWcNNNPSFJEtq2rYSqVcV4upKTFdxxR0MAQIsW4pz9uk7yAADdu4vzvCclkbNJkoDrrxejRUgSMHIkzWrVqkVWRtsI2GxAjx5iZJWDChtvnEhOJpOR2aZPSSLSDY3Ha66pC1k2nwBdLhlTphRoYA89NAQ2m/mEb7XKuPfeAeePH320OVwu80nB4ZAwZEgNAIDLBTRqJKZtGzUieQBoWSNC+7Ragf79C47vuUec3IkTC44HDICQEBJJAtq1M19OOaiIajAIV1xhfnQDY0DPngXHTqeCF15obzoZ1axpx9/+1vD8cYcODTF0aEcoinlyrVYFY8Z0R8uWdc6f+/vfGyElxVxScLlkvP56e9hsBe/Wr5/5SqAkFeU/WCzAtdeaT0YOB3D55QXHLVqYL1dRgCFDihJg166kwZgJq5W0bNExgmFQQbwGoUoVoGlT88hXlqmfJiUVPX/nnY1RrZp5S1KXS8Y773QusVPu1VdvNtXmqigSXnhhbJFzFouEt94yd6KpX9+BMWPqFjmXmgq0bWse+coy3b9y5WIfXHppmJMGwmoFRo8u+WLPPGPuTKMowLRpRc+FzBxmkmJSEtCtm3n3jxIVNl6DcPnl5vUbu538H8WhKBJmzuwOh8P4gWK3Sxg4sBYGDSoZWN+gQTU89dS1cLmMJ32Xy4YXXxyLmjVTSnw2alRt9OhRBTab8c3rcMiYMaNLWPt1797mmVztdrp/CUgS8Le/mbP0VxSyW7VvX/KzmjWBZ58FnCaE8DmdwNSpQL16JT9r3Rpo2dIcb6bFQr9lonJDFEOFc81AOBzA0KHG9xtFAYYPL53UL7+8Gp57rq2hcb2yzFCnjgPTp3ctNW730UevRt++reFwGEcMDocVw4Z1xL33Dgz7OWMMc+dehurVbYauLpxOGW+80Q6dO4fXMO12UsiM5kCLhZTOUreeN2gAXHedsYIZI+3v9ttLN17ffTeFehnp/bfbySb34IOlP9ff/gakpBi7dLRagauvpmiGCwgVzjUDUasW2QSNIl9FITIvz+k7eXJL3HFHY0PI12JhqFrViuXLr0RSUukDnkhwEtq0qQeHI35V3+m0onPnRpg+fUKZmzQqV7Zi+fJeSE21GLJ7z+mUMWlSE9x9d6Myr6tZExgxwti2HTEigp26PXsCffoYs5ySJCLTBx4oW6NljCoOd+hgDPk6HKTRTp9etqfSZgMmTaJnM4J8rVaKELnyyvjvZSAqbLwmoFkzmmCt1ti94YyRgjBqVPhVWTi8+WYnPP98u7jMDk6njHbtUrBt22DUq1f+UtPhsGLVqicxalRnOJ2xE4PTacXNN/fEsmWPwWotn9maNHFh69Z+aNUqCQ5H7E3tcEh4/fV2eP75yMrPNG0KjB1LbRMrL0gSfX/sWLpfRBgxgjpDPJqvxUIsP3Uq7VQrD1YrsGABqfrxmB2cTlqyLV0aWVap1FR6xjp14n/f4cNpxXAB4q+q8bJoUhh26dKFr1+/3tAHyM2lfpuTE91GJEWhcXHVVbH1999+O4nRo1fD59PgdkdmDVIUBkWRcOutDfD225fCao2OvDnnePPNJXjssa+gaTr8/she2G63QJIYXnvtFtxzT7+oZAJUbfmeezZj7twjUFUOTYuszV0uGS6Xgu++64qePaMvaJmbC3z7LVUgiWZbscVCq5drr43Rib9vH/DRR1QcMtICkYxRp+rYkdg+FjL75BMiQ84jL9Vjs9Es89RTwIQJ0WshwSAwdy6wbh0FOUeaQtJqpXe84w7TguwZYxs452G8LpGhCWP8X3E+w61AXM9gFhJOvAD104MHgdWrgbw8Og6Xgzm0fK1cmZx0deuWvCYa+P0aPvxwH558cjs0jcPr1aCqJX+P5GQFqqpj6NDaeP759mjRIr6QnqysHEybNg/vv/8rLBYZeXm+EgluJIkhKcmOYFDDffcNxJQpw1GlSlIpd4wMO3bkYOrUnfjpp5NQFIa8vJI/stXKYLPJsNslPPdca9x2W0NYrbFry5wDBw4Av/4KZGfTcbgJVlGIc1JSaMUbd1xwMAisXQv8+CP9PxgM36lsNjrfsiVpzPFm5DpzBnj9deD99+ml3O6SZChJFIysqkR8jzxCGyTiwYkT9K47dpBzzO8veY0sE9lKEtnmevQwNR45XuJtzBh/Os5nuK2CeMsH51QGfv9+DTt2BODxSOCcgTGOpCQd7dpZ0bChjNRUY4P1AwENa9eewfz5hzFvXibOnFGhaRw2m4TLLkvFmDGNceWVNVGnjrFbKLOzPVixYje++WYLli3bibw8LxgDkpOdGDDgEowa1R5XXNESlSoZ6znPzPTi119P4bvvTmLjxrPwejUoCkONGnYMH14TgwdXQ9euqYaGwnEOnDoFZB4IImOnD2eyZWg6gyxxVEnR0LSNHfUaKahWzeCNGJpGs/qWLcCmTVSHSteJFOvUIfJp0YKW7kYiJwdYswZYsoRmndxc+hGSkyk846qryC6dUjIqJS5kZ0NPS4dv8y5Ihw6CqQFwSYLuSobctjVsbVsIy3YWL/E2Yow/Fecz3FFBvGUjENDw8ce78OabW5GRkQOHQ4GqatB1DlmWoCgSvN4gWrWqjEcf7YQbb2xuSIWJ06fz8OKLP2HmzD9x+rQbNhvJ5ZxDlmVIEqCqOnr2bIynnhqG3r2NWZbt2ePGU09lYPHi01BVHZLEzlcJVhQGTeOw2yUMG1YdTz/dBE2bxk++nANpacDixcRFobzeuk5kJ8ukhCUnA5ddRpsVDImW0jTgzz+JgLKySMvSNBJeWHD16qTudu1qTEjTuXPAm28Cs2aRXJutoG6aLCO/cSkGccoUcs4ZwfpZWWQ/276d7l+4XJAk5ReNk4E2bcjRYVCO34MHgeXLgczMAjGF2zYYpPZs144434xIuMIwgngfj/MZ7qkg3vDgnOOzz3ZjypQ18HiCcLvLt3smJSmoXNmG117rhdGjI/W8FIXXG8AzzyzEW2/9Cl3n8PnKl+t0WtGuXR38979j0blzbLlKMzN9ePDBPViw4FRE9lZFoTjkUaOq45VXWqJ27dgCZffvJ1PgyZORmT0tFhqw/fpRQq6YVqScA+vXA99/T0vfSARbreRcuuYaSgwTCxH6/cB//gO8/TYxTyT2VqeTbJ2vvELEHwuys4FvviHtWtPKt7dKUsHOkNGjY9a6jx4FFi2ito3Elh6acy67jOYas6wN8RJvQ8b4Y3E+w/g4iJcxdj2ApwG0BtCVcx6W/BhjQwC8AUAG8BHn/IVy751I4vV6g7j11p+xePGhiAi3OJxOBbfc0gJvv30FLJbINaTDh89g4MC3cPDgGfh80SeTdTotePPNG3DnnZeXf3EhrFx5FsOHb0ZeXjDqOoIWC0NysoxFiy5F166RL085B1auBObNi62IgcVCiuiECVGuilWVNM2tWyN3cBWG1UobF266Kbpl8fHjFNmwb19sVXIdDtoYcc890X1v/37gv/8l0o+2cSWJtPEJE6JOxbhxI61gYsmQqSjUprfcYrzFA4ifeBswxh+N8xnuj494W4OCI94H8Eg44mWMyQDSAAwEkAlgHYAbOec7y7p3wsLJjh/3oHPnuVi48GBMpAsAHk8QM2akoVev73DuXBhnQhj88cd+tG//b6SnZ8VEuiRXxaRJczFx4izoEXqRP/ggE4MHb0R2dvSkCwCqynHmTBB9+67H9OlHI/qOrgMzZgA//BB75RhVJS57/nng8OEIv5SXB7z6Kml+sZAuQN/bsoU00Ly8yL6zeTNtd92zJ/bS5F4v8OSTwPjxkRPo2rXkUPN4YqvMq+sk9623gN9/j+grnJM1Y8mS2NMSB4PkC3zvPTJPXIjgcf7FJZvzXZzzPeVc1hVAOud8H+c8AGA2gJHl3TshxJuXp6JPn++wd+85eL3xbezzeILYvPkUBg2aD7+/7Hvt2nUMgwa9iXPnvHEXpPR4Avj887X4v//7ttxr58w5jgcf3AOvN/7IQq9Xx9//vgvz52eVeR3nwFdfERfFyn0h6DpxyltvkfmyTAQCdOHx4/HXCQux/ttvl/8S+/aRvfTs2fgTpHs8wHffAZMnl3/t1q3Al18aUxNNVckeFMGq8qefSHS8YjknJX3GjAjaVjD+RzZQ1AVQWCXJzD9XJoQTL+ccY8cuxaFDeeedSfEiENCxffsZTJy4vNRrsrO9GDjwTeTlRaYZRwKPJ4D33luJWbPWlXrNli25uOOOHYaQbgher44bb9yK3bvdpV6zZg2NXyPL8vj9BavpsOC8YATHovmFg6bR/WbOLD3pr9tNGbUi1YwjgdcLzJkDfP556dccO0axu0b+yKpKO9fKUEG3bgU2bDBWbCBATVdq2yYABhFvNcbY+kJ/RWxIjLGfGWPbw/yVq7XGA+HE+9lnu/Hbb0fg8xmbwsLrDWL27HT8+OOBsJ+PH/8lTp1yG56w2+NRcffdM3HkyLkSn6mqjuHDN8HjMX4PjcejY8SIzWGdc6dPk48nXk23ODgv2BR1twaVAAAgAElEQVQRFps2ATt3Gl+SR1UpPnXTpvCfT5lCcayRbh6IFB4P8OijFIhcHLpOa3QzCs6pKvDuu2Enr5wcMjGYIdbjoVDgCwkG7Fw7xTnvUujvg8L355wP4Jy3DfM3L8JHPAKgfqHjevnnyoRQ4vV4VDz88OqYbbrl3z+Ie+9dgWCw6ADcsiUT8+ZtjXinWLQIBDRMmfJdifMffHAEZ86YUwmSc+DoUT9mzChp7/32W+MUzuJQVdKkT54M88HXXxvP9iEEAjSbFGecvXvJphLpTrFooaq0G6041q4t2BFiBtzusPben382r201jczjJ06Yc/9o8T9ialgHoDljrDFjzApgLIAfyvuSUOJ9+eXN5dph48Xp0z589NGuIufuu29OROFisUJVNXzzzWbs2FFAgrm5QTz++F643ebtGHe7NTz88N4idvJDh4Ddu41X/gojGCQOLIKVK80j3RD8fpJTGI8+ao76F0IwCCxbRuEDIQQCNLuZ+b6BAIWiFJpQTp4U07YLF5p3/2iRyFwNjLFRjLFMAD0ALGCMLck/X4cxthAAOOdBAPcBWAJgF4CvOOc7yru3sLKlPl8QL764CR6PufOQ2x3EE0+sxT33tIEkMaxbdwCbNh1GNGFzsSAQCOLxx3/A99+PBwC8914mAgHzC5H5fBo+//woxo+n1U48EQyRgnMgPZ1MnLVrg1SlRYvMJ95AgOT06UPBqLt20T5zs1TAEHw+4Omn6ccFyIAuoqa9ptFEM5DSfy5bZv6rAuTPPHIk/i358eIosORJIN5qtadi/SLn/DsAJZaynPOjAIYWOl4IIKrpShjxLlp0SEjtM4CW/qtXH0evXrXx+ed/xBw2Fg10nWPJkp3weAJwOq348MMjhjrUSoPbreP9949g/Pj68HjIuS8Cuk55WUaMAG2HE4m0NEqfOGuWmBLvnBPZnjtHiUJWrTJ/kgGI3FetAgYORCAAZGSIKSoaDJIDL9HEyzkfktgnMA/CTA2ffLILubkCtASQrXf69D3QdR1ffrk+4mxc8cJikbFgwXakp3uQmWmSzTEMdu3Kw9GjPmzbZn5NuxBCu4A5B9k7RbnDAwGSxzkRrwjNE6DdBgsWEPkePy5GJkDhcVlZ2LtXXGEIzmm3s6jK0RcjhGi8gYCGn34SF6GtaRxz52bgjjsaIhgUVwAkN9ePL75Yi/37U021wxWHLDN8/30WgsH6QhSxEHw+4NhRHXW2bRMnNMQK27dTiIUouN0Ur1uvnvnllAuDc2DzZmw9NVBo22oabUVOtNb7V4UQ/Sg9PdvUoo/h4PGoWLlyf9wbJaLFpk2HsGrVOfj94uR6PDrWrDmHo5FtaDMMjAFZaWfFEhFAZLR2rXi5O3aQLUeUlg3Quj8jA8eOiRMJkClJpGJ/sUEIG+7ceVbYEjgEu13BypX74PEIHCQAjh/PxbZtBgbyR4ht2zymRVSVhkAA8Ow7Ls6+EYIs0w4Cj0es3JwcChsRDO3oCbhL3ytjCoLBCuI1E0JGzI4dZ0yL3S0NgYCGLVvEb0B3OCw4fFgwAwI4e1aC1SrWKMc5EMw8IVYDBEjeli3ijZBOJyUVFozTOQosFvEGV9Fa9sUEIcS7f3+OMAdXCF6vhrNnxWuejJlU37wcWEysJFAWbO4zYmKcCiO0jVg0JEn8uwLIlSsLt6oAxu7ArkBRCCFeo7cHR4riO9hEQfTKGwAsFikhXmhZF6zthiAijKw4GBNvVwagMSUhIQYJmGMuGgihCFHxu8VRVvlzE6UmQKa5u5nKAk/Ib4yEEGCi4qsY15GIfpWopr0YIIR4k5LEL4MZQ9RVgI2RqyVEU1BVLSEDJSgnxrQCWwLkcp4Q8rXogYTM5wLKsl20EEK8l1xSBTabWBJMSrKgXr0qQmUCgKr64XCItzUwFoCuix+dapWaVC1CJKxWKtgoGsEgVagQjCrSOWia+LatIn74XDQQwhBt2qTCbhdLvIwBXbs2giSJ7bCcczRrZnIVwTCoU0cSbvaUZcDWsJZ4o7YkUYFK0SqZ3w/UqiVWJoDkqtaEWDkqNk+YByEjpnXrVNOzkhWHxxNE796N4XKJXZI2alQVnTpVEioTADp3rmRK3ayyYLEArqa1EhNO1rmzeO2zdm2gUSOxMgGw+vVQubJYmVYrUKOGWJkXE4QQb506LiQni7XzNm2agr59myMQEKcGyrKEAQNaYcCAKkhOFqfhJyfLuPLKVDRvLtYhoqpAg5ZOqgcvEpUqAb16iS2XIElA795UidhuFyfXZgNatUKTJmLbVtNod3QFzIEQ4mWM4ZZbWkBRxPQcu13GnXe2RoMGVdCsWXUhMkmugltv7Ybhw6sLSQkZgqZxDBlSDV27ijW31quXz7nduonL4CLLVH69enUqiy4KTidVPL7kErFxVpoGtGuHdu3EWlaqVDGn8nAFCMKMc7fe2lKog23sWCqTfffdl8PhEKNtu1xWXHZZQyQnK+jbN1WITAAYOrQabDYJzZqJ04qsVqBHj/yDLl3E2XlD9l0AuP12IkQRkGWgZ0+yr1xyiRiZANCiBWC3o25dEi0CigJceqkYWRcrhBFvx47VUKuW+YOEMaBDh6qoX5+Wv2PHdjFdJkBbhe+5p9f52OH7768Pl8v8icblkjFxIiVBlySge3dxmlHHjvn/qVkTqBZvvuoIUa0ayQPykwELgM0G3HJLgVbfp4+YpYXVSrJA/bpzZ3FtK3JuuRghjHgZY3j77d5wucztOXa7grfeuuL8cc2alXDvvX1M13qtVhmPPjro/PHQodXQvLm5Ew1jQKdOSbjyyoK4n8GDzVc+rVagf/9iyubo0eaTkcUCXH99wXFqKvDAA+Y72RSFSgyF0LKlmPSQNWoUMaf07Gm+RUdRgMsuA5KSzJVzsUNoHNDgwfXRtm1V0/qrojAMHFgPl11Ws8j5J564Copi3qu6XFb8+98jkZxc4HRhjOHdd1uZGtNrt0t4++3WxZ4FGDLEXA5UFCLeImjenGJrzWpcxoDGjYFmzYqef+ABczdTOJ1UxTi1mOlozBhz1U+LBbjxxiK/p80GXHmluSYHSQKuuKL86yoQH4QSL2MMH37YF3a7OR3Wblfwxhu9SpxPSXHg1VdHw+k0no0kiaFu3cq4556Scrt3r4wRI6rDbjf+Z3Y4JIwdWwsdOpSMKOjThzQWMzjQaiWlMyyxjxljHitYLMANN5Q873QCr7xijq2XMTJtjB9f8rP69cnWbMb7WixA+/Y00RRD587k0DSjbS0WYNAgsUEbFyuEb7Fq164q3nyzF5xOY8nX6VQwY8YANGoUPob2zjt74uqr2xpucnC5rFi06D5YLOHXgB9/fAlq17YZukRUFIZGjRx4551WYT+3WIgrjOYEq5WcLp07l3JBjRrA2LHGCw5pf6UFll5/PXDttcabHJxOqiZcGhONHUvufyNtO5JE4QS33BL2Y1kGbr7Z+J9YUciP16mTsfetQHgkII8WcNddbXDPPW0MI1+nU8E//9kFI0eW1BBCYIzhiy/GoW3bOrDbjem1TqcVP/44EU2alO5Ycrlk/PZbZ6SkKIaQr6IwVKliwS+/dC5zN2CtWsCddxo3QC0WUvLGjCnnwi5daD1slK3DaqX7lcr2+XjjDWINo9Q1hwOYMYPYqDRYLMCDD5J9xwjylSR6/gcfLNN8kppK85BRbasoNKeNHFmRGEcUEkK8APDqq5dj6tRL4XDEx0YOh4xXXumJf/yj/PgXm82CX399EAMGtIrL7CDLEipXdmDp0vvRu3fzcq9v0MCBDRu6o1EjR1xmB4dDQosWTmzY0A21a5dv12zdGvj732ksxzOgrFby8UycGKFzZ9gwYOjQ+JnBYqF7DRsW2bXffw9cdVV8ZgdJorX8V1+FMWSHQUoK8I9/EHPF874WC1C1KjB1akRJEho2JM3XZouvbS0WoEkTYNy4iqQ4IsF4FJvAu3TpwtevX2/oAyxceBBjxiyFqupRbSt2OBTYbBLmzx+GXr1qRyWTc47nnluE559fgkBAi6ouW1KSDfXrp2LJkvtQv350WUTcbg1jx27Fr7+ehdsdXRC+yyVh6NBq+OKLtlHnvTh9Gvjvf6lyTTQFEyWJiHboUKBfvxgG+J49wMcf0yaAaLYVWywk+K67ytY4w4Fz4K23gOeeo6Q20SSwcLmIQOfNi35rcCAAfP451WWLtiql1UqREnfcEbWjMDsbmDmT/o3mJ2aMfuJevciZZoamyxjbwDkXE8/5P4aEEy8AZGV5MW3aBrz//g4AVD2iNDidChgDJk/ugIcf7oiUlNg92jt3HsM//vE9fv55N4JBHapautzkZBucTiteeOEa3HJLVyhKbJo65xw//XQGDz+8BwcO+ODxaKXm0pUk0uhbtnTilVdaoG/f2NNFBYNUH3LBAhqgZe22lWWS3aYNMHx4nHv23W7g55+BFSvouCx2CGmMffqQtulyxS53717gmWeApUspWXFZZJiURMuCJ5+M34C6Zw/wzTfAyZP0rqWNL8pbSlruddcBrVrFzH66DmzdCvzyC4ks61Ulif6aNKGfuLqJGzsriLd0XBDEG8LJkx589VUGFiw4iFWrjsHjCUKSGHSdIznZgj596uCqqxpizJhmqFzZuBCinTuP4ZtvNmHBgu3YvDkTmqaDMQZN01G3bmUMGNAKQ4degpEjO5TqRIsWnHP8+utZzJ+fhcWLT2HvXi9kuSDla8uWTlx1VTUMH14dV1xR2bCk7sEglSvbuRNIS+PIyck3T3KASUD9+gyXXAJ06FCwT8EQuN3Axo0kOCODmJ8xelmbDWjalJj+0kvjI9zi2LuXNNglS4DNm0n7Zoz+rVkT6NsXGDiQNmMYZZfmHEhPB7ZuBd+5EzhxAgCjnLqcA9Wrg11yCdCuHWn0BrWtphHv790L7N/PkZtb8BNLElCrFkPz5mSCMpNwQ6gg3tJxQVl1srLOIj19G/bt2wavNwsOhxWMSdB1DXl5KtLTayEjIw+nT1dH5crGpE7inOPwYQ1paU4cOlQPul4VdjsDYxyaxpCVxZCWVhlt2ihwu4OoXNkY4tV1hurVq6Bnzypo2LAlVFVHMEgat6LIsFol1KtHCpGuGxc4r/jy0PnUKnQ+vhXIPgxVskKFDTLTYFE9kLKSgGMtgYbdgRrGkQKOHgUWLiTtd98+ssPKMrGFx0Mq2IAB5BVsXr7dPCJwTs9fvz4RbOfOdC70g0oSUKcO/ciqahjxajrD+jPNseFEc2Scuw66pMEhBwBweDUbWLaMpieAS+sCl2nG2VZzc1UsXHgI339/Ahs2ZMNqlWCzKdA0jry8AKpVs6Jfv2q49da6GDiwWoIqtFQAuEA03l27jmLKlLn4+ecd8PuD0PXSn0lRJCiKjGuu6YRp00ajcePYp+6lSzPx8MNrsX9/brlVkO12GbLM8NBDbfHII+2RkhLbINU0YNs2YOVK0j7Ls8tZLMQHvXvTNs6YneceD2l9v/2WXx64HNtnKC/gddeR/TFWpKcDTz9NS35VLTvBjCwXBJM+/XTJzRLRyv3xR6oKXJ7NVVGIoHv2pAiKGJ1zmgb8+Sf5+AKB8pOnWa30N2IE5b2IdXLNzlbx8sv78Npr+6FpHD5f2T6LpCQZjRo58corrTFokHmqb4XGWzoSTrzvvrsMDz88O2onl6JIsFoVfPLJHRgzpltUMgMBDffc8zu+/np/1GXnHQ4ZyckWLF16FTp0qBrVd91uYO5c4OzZ6FPYWiwUyz96dAzhqgcOkHctEIhesNVK2cduuCF6Zpg5E5g8meRGk9FLUeiFX32VbK7RQNPItLBhQ/Tvqij0vnfeSVpyFMjLA955hxT7WHxrNWoA991HGS+jwZYtORg0aC1yc4PweqMrvOdyyRg9uhY++KA9rFbjA5wqiLd0JIx4VTWIv//9c8yZ8yc8nih7aiE4nVZMnNgPL754PaQI1MGTJ70YMmQx9uzJhscTe65ep1PBZ5/1xvXXN4no+uPHiXT9/tgLU4bCPMeMicJG98cfwKxZ8SUrt1qpHMGECZFt4g8GKbfBzJmA1xu7XIeDNhK8+GJk63G3G/j0U+DYsfje12KhDRnlxQ7n48gR4M03aVERa8ZIWaa2vf9+oEGDyL4zd+5R3HbbVng8saepdDoltGyZhMWLu6JGDWO3XlcQb+lISBwv5xxjx76H2bPjI10A8HgCeOedZbjvvhnlXnvunB/du/+A7dvPxEW6JDeIceOWY+7cfeVee/IkcZ/XG181YF2nwT1zJoWIlYs1a4DZs+OvEBEIAIcO0dbc8tbPnBNBx0u6AH1/xgwKIC5PQfD7SeU8ciT+91VV2rG2YUO5lx4/Drz8MpCbG1+aXk2jeeO114DMzPKv/+qro7jtti1xkS4AeDw6tm/PRY8eq5CdLbiSyEWMhBDvM8/Mw5Il2+D1xke6IXg8AXz++Sq8996vpV6j6xwjR/6Eo0fdUFVjkpR7vRpuu205Nm48VcazAXPmGFsdJxAgPvX5yrgoI4MuinbdWxo0jdj+ww/LJsE33wTmz4+fdEPweoEffqDY3NLAOTB9OtlwjEpSHiLfgwdLvcTjAV5/3bifGKD54803yXRRGjZuzMbtt2+BxxPHLF4Iqspx5IgfI0euL9O/UgHjIJx4f/89DS+9tAhut4G9FUS+kyfPxrZth8N+Pm3aZmzYcAp+vzGdtUCuhmHDloTVoDknc6MZFWp8PvIdhYXXC7z3nvG10IJBclr9WsoEt3EjMG0aMZKR8HiAf/+b7h8Ov/9Odmyjq32qKpkuSpnhPv2UHs3oQpReb+nzG/W3dYaRbgh+v45167IxbVq6ofetQHgIJV5d13HXXZ8apukWh8+nYuLE6SXOHz/uwbRpm6N2pEWKnBwVL7+8tcT5/ftpKRqPeaE0aBqt/g+Hm2cWLTJWDSuMQIA0Wre76HnOgUmTjNN0i8PrpRSQxdkoFK1h5vv+8kuJ02lpFC9rRmVnTSNFe9eukp/95z8ZyMkxpx97PBqefz4dJ04IrGV3kUIo8c6Z8ycyM8+adn/OOTZtOoifftpR5PzUqeugaeYtoTyeIF58cSuysgpIR9eBn34ytwBvMEhRWkW46OxZYPlycwVrGm2BK4yFC8m8YSb27qVJpTBCO9PMQjAIrF5Ne3LzwbmxVpxwCJmTCr/ayZN+vPTSvrjtumUhGOSYOnW3afevAEEY8eq6jocemgW329zZ1O0O4IEHZp4/PnAgF3Pm7EMgYOLgBBAM6vjXvzadP9692/gVdzjk5NDq/zzmzzeXiAAio1WrCsiIc4piKK4FGw2PB/i//yuYaXJyKHDWDLWzMDSNtOp8bN1K85vZyMkp6t979tm9CAbNbdtAgGP27KM4cEBA572IIYx4V69OjzuCIVIcOHAae/YcAwDMnJkuxGEQCOiYPj39fCzypk3mKp0hqCrthAVABLRxo7gquCFW2LIFOHNGjMzTp4n5AHpxEbuvQskQ8gl+xQoxleUDgYIUF5rGMX36ESHVq3Ud+PLLI6bLuZghjHi/+GKV6dpuCJqmY9astQCATz5JM9yhVhp0nWPlyuPwesm2KwqHDuUve3ftElftV1VpCQ5Q2IYIJgLoRefMof+vWydmdgOI4Pfuhc9HFg9ROHiQIhxWrDgtLOLA79fxyScRxLRVIGYIGaW6ruOrr9YJ6ziBQBCfffY70tKyceyYuCWT263iiy/SkZYmjv8ACr7PyABtligzxsxgnDxJGuicOeYv90MIBkneuXMRBjMbBL8f2LAB27aZX3CyMCSJFhRffHEk6lSi8eDoUR/27jXZdHQRQwg9HDp0psyUi2bgyJGzWL78CGRZXCIQXQdWrDiGQ4fEKWIAKYGHD4OSz4iEohAr5OSIlZudTXlvRTIgABw4gPR0cco9QG27dy+wYsUZ0033hSHLDGvXCjBkX6QQQrw7dx6JOX9trHA6bVixItO0ELLScOiQGydPig9Czzqm0vYpkQgEyM4rujqi3U7eSzPDCsIhLw+HDgpkv3wcPMhx+LBJYXqlwO3WsHWr4P50EUEI8e7adQw+n9hBous61q8/ZXhwe3mwWCScOydWJgDwk1nm1v0OB12nVGuiCVBVaV+t+MbFyZNiRQLAgQNeU5LYlAXOgfXrs8u/sAIxQRDxHkUgINbUkJfnx7FjAu2d+UhKsgpdEobgcJ8GT0R+1cOHxdqVAdpMYXboWhhokOHzi/+Nz53zQFHEy92/vyKkzCwIIV6jtwdHimBQ/JKfTCri5VqgJkKsWINnYYjWdgGoXIaUgLlN1/VEvK6waKCLEUKIN5rUk8bKTYjYhIAlhHWRuB85AXI5Z0jE7FYxfv56EEK88ZRSjweJWJ7R1mTxclVYEiHWuDpl0UJkvF4+FBaErov/kSVJFrJPpDis1orSQGZBSO9t3rwmFEXsQHE6raheXTwpuN2+hAwSrz01IbyLOnWiLkkeN2y2GMpwxA8L02C1ilcDk5PtpuYaKQ3164v/jS8WCGHDNm3qwOkUOzgVRcall0ZXmscI+HwaUlKEi4Vevab46ALGgLZtE0O8tWuL2S5cGKqK6tXFT2+NGzvLraNmBrp0SUBHvkggjHijqadmBLzeAHr3rgeXS2wh5bp1XQkZnNXqWI0tix4JbDYqxy6a8AMBoFUr8WYOpxP1G4hv2wYNJNSpI3Zyc7lkdOgQZQG4CkQMIcTbpEkN4Q6CKlVcuOKKOkJlAkC3btVRv75xJbsjgcVCJdGiLdAYNzSNiFc0AVqtVHJZdNxevXpo2lSsgm+xULHlbt1SxQnNR+fOFRqvWRBCvLIsYcSITsJWhooi4eabe6B9+yqoVEncpoLkZAvGjWuBFi3EeoR1HWjeHFSeXOQuspQUoGZNYNQocc4uWaZClNWrA8nJYmQCxLZduqB9e3HJ3wDqRx07AuPG1UVysrjdnykpCtq1E/j7XmQQ5vG6/fZeSEoSQwo22/+3d7axUVRdHP/PztydndnSbrEWqH3HvmyfprS0FIrQIN1KihKaFhWriOBGJBprGoMSP5gWEJUYkKQxfkETP4gR049NWoKJUUwENBiieTAifDCBtnmMKH3Z7u48H85T2j5t2W535hbt+SWb7M7Mztk7O/O/55577r0CTz1VA0VR8PTTBRBCTjGjUQuBQAYWLQLukRheXrr0f31NpaXyJqvRNKCmht63tACmKceuYZA9AFi1Sl7TIhIBiouRlDT7VYDtYNkywOcD6uvvlSb4QijYuTMTynz0Ei8QpAnvxo1+uCRlny9e7EV5OT0dJLzO29U0BU1NuXC7ySspL5czglcIsgVgvAkuw/tUFBI+AFi9Wp6n7fEA1dX0vqJCjk1FmRRTXr9eTrjB7SZb9N6F5ualUuoZIRTs2HGf84YWMNKEV9NUHDzYBK/X2Ts2KUnHu+9uv11bl5Skoq7uPsdzeoVw4cCBytufS0vlCK/HA/j9EzY0Njo/a5eqktqnpdFnlwvo6HC+c8/rBQ4cGK9YFi+mC+10RaOqQEPD7Y9VVXKy2XSd6rQxOjoKHU/L1DQFgUAa/H4OMziJ1OTaPXs2wOdz9o7NyUnDtm1Vk7YdO7bG0XCDx6MiGCxCTs74zappwMaNzoqvEEAg8H+6s2QJKYOTrpHLRXHdiTzxBMVdnSQ9Hdi+ffK2hx92tqJRVfKsJ5RNVYHHH3e2T1HXgUcfnXz/5OaaCAaz4PE4dy8LoeDo0X85dn6GkCq8Qmh4//2djo1kM003Pvhg55TYVH5+MoLBIhiGMw+orqtob6+cst3vp/4nJ0JlLhc5nPffP83OrVudEyO3m2oUn2/ydlUF3nvPOVfQMIBjx6aWKyUFWLfOuRpO0yZ5u2OUlVH81Qlne+y/Xbly6r6OjiLoujOPrWG4EAxmIT9fUrx+ASN93OWWLeV48sk1touv16ujrW0THnigYNr9R46sRl7eIttDDoah4tSpOqSmTg2hKArQ3OyMJghBUYVpRT05Gdi1y37Dqkoe9SOPTL//wQfJrt0dbYYB7N5N55+Ohx4ib9huFRSCPPmkpCm7FAXYs8eZWK8QwPPPT1+c1FSBU6cqYRj2llXTFOTlmThyxB/7YCZh5A94B9DZuQMVFdnQdXuaw4YhEAiUoL29ccZjdF1Fb28DfD7dNg/UNDW89dYqBAIzd0SkpFD2k50tf02jZugds6nKyshTs6s9rCgkQC++eGdv+tAh6vyyq7PN46FA58GDMx+jqsCzz1IM2K4/Vwigrg4oKZnxEJ+PLoedIQchgL1775wVEwik4fDhYpimPa0aRSFB7+1dDV2XvKrHAmVehFcIDd3dbVi3riBhz9frdWPz5jJ8+uleuGJ4PBkZXpw9uwWZmd6Em2uGoaK9fSVeeqk05rHZ2eSdJuqAKgo95M3NNEVCTDZtAurrEzcsBCnBK6/Ezp1VVeDkSaC2NnHP1zTpPCdPxg6dJCUBL7wApKYmXssJQd71TB72BPLySCh1PTHNVxQ6x3PPAYWFsY9vbc1De3tBwp6vrruQmenB11+vRUaG5JVEFjBKPCPKqqqqrPPnz9tmPBqN4rXXPkNn55k5Lf1uGG688cZW7NvXEFfO4R9/hNDY2Itz5/rjXhpI0xQYhobPP69DfX1mXN8dWxdyeDj+dFtNI4fuscdIW+Lihx+AEyfIaLyjvdxuCiQHg/F5sZYFvPkmcPw4TVweL4YBtLYC+/fHp2gjI8DHHwNXr8Y/lNnlogvd0nJHT3c6+vupqDdvxr/enhD037a2UiQnHnp6+rFt2wUMDUXjnn/a61VRXe1DV1clUlLsj4cpinLBsqyq2EcuPOZVeMc4c+ZHvPzyJ7hypX9WS8CbphtlZZk4erQFa9Ysn5PNSCSKEycu4/XXz2NwMBxTgDVNgaa50NSUi8OHVyE7e2rcbzaMjNBiwBcukDbFSorXtPGU2erqBJq1AwNAVxdw6cGvWHoAAAL8SURBVBIZjSXAuk6vxkYyPNf46dmzwKuv0oqNg7NY0cA0aRje22/TSLy5EI0C330HdHfTBY8lwC4Xvfx+YPPmOY9+GR4GTp+ml2XFFmBNI7MbNlDjZK79kteuDWL//n+jq+s6wuFozErd61VhmioOHSrC7t1Zji0Iy8I7M3eF8AI02XNPzyUcP34aX331M8LhCIRQYVkkPKFQGIbhRm1tEdraNmH9+lm0x2ZBKBTBhx9exkcf/Yzvvx+A263C5cJtu0NDESxZYqChIQv79pVh+XJ7Jg4ZGgLOnSM9+v33cYEFyHY4TJ5tcTFQWWnj+IQbN4CeHuCnn4C//hpvlisKCVYkQrGRtWsptmpHdoRlAV9+CXR2At98Q0I4MfwxOko1Sk0NhQtqa+2J1UYiJMDffgv89huVZeJ5R0cpRFFQQOqXnp64TVD98sUXZLqvb2qkZ3SUstPKyymMbFf68y+/3MI771xBd3cfbtwYgWGMPz/RqIVQyEJFRTKeeSYTu3ZlOb6OGwvvzNw1wjsRy7Jw+fJ1XL06gOHhUXg8AoWFS5Gbm+boMMZwOIqLF/+Dvr4hjI5G4fVqWLHiHqSlORv7CoVID8dW0fF4qMnp+ACMP/8kQQqFSJSSk2m2HScHJFgWLUP/669UYF2nQGl+vrPTPEYiwPXrVOZIhIR+2bJpMxbsJBSiZekGB6nopklzGTk98m1gIISLF2/i1q0IhFCQnq5jxYpFUufFZuGdmbtSeBmG+fvDwjsz85LVwDAMs5Bh4WUYhpEMCy/DMIxkWHgZhmEkw8LLMAwjGRZehmEYybDwMgzDSIaFl2EYRjIsvAzDMJJh4WUYhpEMCy/DMIxkWHgZhmEkw8LLMAwjGRZehmEYybDwMgzDSIaFl2EYRjJxTYSuKEo/gGvO/RyGYf5B5FiWde98/4i7kbiEl2EYhkkcDjUwDMNIhoWXYRhGMiy8DMMwkmHhZRiGkQwLL8MwjGRYeBmGYSTDwsswDCMZFl6GYRjJsPAyDMNI5r+HQSgxXGdK3QAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "
        " ] }, "metadata": {}, @@ -489,14 +480,14 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
        " ] }, "metadata": {}, @@ -514,9 +505,9 @@ " \n", "thetas = np.vstack((theta,theta))\n", "phis = np.vstack((phi,phi))\n", - "bell_eq_circuits = tomo.build_wigner_circuits(Q_program, 'bell', phis, thetas, \n", - " bell_qubits, qr, cr)\n", - "bell_eq_result = Q_program.execute(bell_eq_circuits, backend=backend, shots=shots)\n", + "bell_eq_circuits = tomo.build_wigner_circuits(bell, phis, thetas, \n", + " bell_qubits, qr, cr)\n", + "bell_eq_result = execute(bell_eq_circuits, backend=backend, shots=shots).result()\n", "wdata_eq = tomo.wigner_data(bell_eq_result, bell_qubits,\n", " bell_eq_circuits, shots=shots)\n", "plot_wigner_data(wdata_eq, method='curve')" @@ -533,14 +524,14 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 14, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
        " ] }, "metadata": {}, @@ -548,14 +539,13 @@ } ], "source": [ - "Q_program = QuantumProgram()\n", "number_of_qubits = 5\n", - "backend = 'local_qasm_simulator'\n", + "backend = Aer.get_backend('qasm_simulator')\n", "shots = 1024\n", "ghz_qubits = [0, 1, 2, 3, 4]\n", - "qr = Q_program.create_quantum_register('qr',5)\n", - "cr = Q_program.create_classical_register('cr',5)\n", - "ghz = Q_program.create_circuit('ghz', [qr], [cr])\n", + "qr = QuantumRegister(5, name='qr')\n", + "cr = ClassicalRegister(5, name='cr')\n", + "ghz = QuantumCircuit(qr, cr, name='ghz')\n", "ghz.h(qr[0])\n", "ghz.h(qr[1])\n", "ghz.x(qr[2])\n", @@ -579,11 +569,11 @@ "for i in range(equator_points):\n", " phi[i] = 2*i*np.pi/equator_points\n", "phis = np.vstack((phi,phi,phi,phi,phi))\n", - "ghz_eq_circuits = tomo.build_wigner_circuits(Q_program, 'ghz', phis, thetas, \n", - " ghz_qubits, qr, cr)\n", - "ghz_eq_result = Q_program.execute(ghz_eq_circuits, backend=backend, shots=shots, timeout = 300)\n", + "ghz_eq_circuits = tomo.build_wigner_circuits(ghz, phis, thetas, \n", + " ghz_qubits, qr, cr)\n", + "ghz_eq_result = execute(ghz_eq_circuits, backend=backend, shots=shots).result()\n", "wghzdata_eq = tomo.wigner_data(ghz_eq_result, ghz_qubits,\n", - " ghz_eq_circuits, shots=shots)\n", + " ghz_eq_circuits, shots=shots)\n", "plot_wigner_data(wghzdata_eq, method='curve')" ] }, @@ -596,14 +586,14 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAD8CAYAAACfF6SlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAGAlJREFUeJzt3X+wXHV5x/H3JyHoLSoXJUW4Ac1MY5CRjtGd1E6qRcQGpg7J0FahtQMONuO0dOxY08YyYy3+wVWm2s6UdpoibbBaiogxU1IjEBxbptrcGBQDRtIUJVcwEYgtJZoEnv5xN8nu3t17995zds+P7+c1k8nu3pN7zm52n33O832+36OIwMzM0rKg6AMwM7Phc/A3M0uQg7+ZWYIc/M3MEuTgb2aWIAd/M7ME5RL8JV0qaY+kvZI29NjmnZIelrRb0mfz2K+Zmc2Psvb5S1oIfBd4O7Af2AFcFREPt2yzDLgDuDginpH0sxFxINOOzcxs3vLI/FcCeyNiX0QcAW4H1nRs8zvAzRHxDIADv5lZsU7J4XeMAY+33N8P/ELHNq8BkPQAsBD4SER8qfMXSVoHrAM47bTT3nj++efncHhmZunYuXPnjyJi8Wzb5RH8+3EKsAy4CFgCfFXShRFxqHWjiNgIbARoNBoxMTExpMMzM6sHSd/rZ7s8yj6TwLkt95c0H2u1H9gSEUcj4r+ZGiNYlsO+zcxsHvII/juAZZKWSjoVuBLY0rHNZqayfiSdyVQZaF8O+zYzs3nIHPwj4hhwHbANeAS4IyJ2S7pB0uXNzbYBT0l6GLgfWB8RT2Xdt5mZzU/mVs9Bcc3fzGzuJO2MiMZs2w1rwNfMLFebd01y07Y9/ODQYc4ZHWH96uWsXTFW9GFVhoO/WUU42J20edckH7rrIQ4ffR6AyUOH+dBdDwEk+5rMldf2MauA48Fu8tBhgpPBbvOuzsa6NNy0bc+JwH/c4aPPc9O2PQUdUfU48zergF7B7iNbdid5NvCDQ4fn9LhNV9rM/6HJH7NqfHuymY1Zq15B7dDho0meDZwzOjKnx2260gZ/SOvNbDaTfoNaKqWP9auXM7JoYdtjI4sWsn718oKOqHpKHfwhnTez2Uy6BbteUih9rF0xxo1XXMjY6AgCxkZHuPGKC5MoeeWlEjX/FN7MZjM5HtRa6/vPHTnGM88dnbZtKqWPtSvGHOwzqETwT+XNbO3c2tiuM9h1tjuCSx/Wv9IHf7+Z0+Q+7tl1OxtI/QvS+lfq4D/mN3OyZurj9vvhJJc+bL5KG/wvHDudBzZcXPRhWEHcx202WKXv9rE0uY/bbLBKm/lb2tavXt51MPOt5y9m1fh217itKzcJ9M/B30qp22DmW89fzOd3TnoQ2Lpyk8DceD3/EnHWMrNV49uZ7FLzHxsd8fhQzfXz2fD7Y4rX86+YuWYtKX5ReBA4Tf1+Nvz+mBsP+JbEXJaoTXV5Xw8Cp6nfz4bfH3Pj4F8Sc8laUl3L3It5panfz4bfH3Pjsk9JnDM60rVeefrIomndLame3npGa5p6fTY6M3q/P+bGA74l0W2dlkULBIKjz5/8PxpZtJAXL1rQdUGv1Aa2LA291jDyKp7decC3YvpdtfHw0ed50SkLGFm00At6WRKc0Q+GM/8SW7rhbrr97wj45Lte7w+DmU3jzL8GZqp1ekEvM8vC3T4l5u4FMxsUZ/4l5lqnmQ1KZYJ/ijNaweu1m9lg5FL2kXSppD2S9kraMMN2vyYpJM06GNEq1RmtZmbdbN41yarx7SzdcDerxrfPKxZmDv6SFgI3A5cBFwBXSbqgy3YvBd4PfH2u+0h1RquZWae8kuE8Mv+VwN6I2BcRR4DbgTVdtvso8DHgJ3PdQaozWs3MOuWVDOcR/MeAx1vu728+doKkNwDnRsTd89mBF2wym5s8ygJWTnklwwNv9ZS0APgE8Id9bLtO0oSkiYMHD5543C2PZv3zGFm95ZUM5xH8J4FzW+4vaT523EuB1wFfkfQY8CZgS7dB34jYGBGNiGgsXrz4xONrV4xx4xUXMjY6gphaw8brelgrZ7oneYys3vJKhvNo9dwBLJO0lKmgfyXwm8d/GBE/Bs48fl/SV4APRsSc1m5wy6P14sv3tfMYWb3lNf8nc/CPiGOSrgO2AQuBWyNit6QbgImI2JJ1H2YzmSnTTTH497sEslVXHslwLpO8ImIrsLXjsQ/32PaiPPZpdlwdM90skxrXr17edQlkj5FZq8rM8DXrpW6ZbtYylpcFsX44+Fvl1S3TzaOM5TEym42Dv1Ve3TLdOpaxrHwc/AuS6kJ1vWR9PeqU6datjGXl5PX8C+BJOO38erTzpEYbBgf/AngSTju/Hu08qdGGwWWfArim286vx3R1KmNZOTnzL4AXqmvn18Ns+Bz8C+Cabju/HmbD57JPAerWmpiVXw8bNHfXTaeIKPoYumo0GjExMae138ysBvIO1J0zpmHqzLKug+iSdkbErJfKddnHzEpjEG2/7ibrzsHfzEpjEIHa3WTdVbrm7zqeWb0MIlB7xnR3lc38PSvUrH4G0fbrbrLuKhv8XcebzpcytKobRKD2jOnuKlv2cR2vnS9laHUwqLZfz5ierrLB33W8dr6UodWFA3W7QY1tVrbs4zpeO58JTecymFXdIMc2Kxv8Xcdr5/Vx2rkhwOpgkGOblS37gE8PW9XtUoZZuQxmdTDIM/rKZv7WzmdC7VwGszoY5Bl9pTN/a+czoZPcEGB1MMgzemf+VktuCLA6GOQZvTN/qyUvE211Magzegd/qy2Xwcx6c9nHzCxBDv5mZgnKJfhLulTSHkl7JW3o8vMPSHpY0rck3SfpVXns18zM5idz8Je0ELgZuAy4ALhK0gUdm+0CGhHx88CdwMez7tfMzOYvj8x/JbA3IvZFxBHgdmBN6wYRcX9EPNe8+zVgSQ77NTOzecoj+I8Bj7fc3998rJdrgX/t9gNJ6yRNSJo4ePBgDodmZmbdDHXAV9K7gQZwU7efR8TGiGhERGPx4sXDPDQzs6Tk0ec/CZzbcn9J87E2ki4Brgd+OSJ+msN+zcxsnvLI/HcAyyQtlXQqcCWwpXUDSSuAvwUuj4gDOezTzMwyyJz5R8QxSdcB24CFwK0RsVvSDcBERGxhqszzEuBzkgC+HxGXZ913VQzqSjxWD35/WBFyWd4hIrYCWzse+3DL7Uvy2E8V+dq6NpNhvj/8JWOtPMN3wAZ5JR6rvmG9P3xlM+vk4D9gvqiIzWRY7w8nIdbJwX/AfG1dm8mw3h9OQqyTg/+A+aIiNpNhvT+chFgnr+c/YL6oiM1kWO+PQV4OsKpSHwBXRBR9DF01Go2YmJgo+jDMaiP1YNeqs8sKpr4M87pEYpEk7YyIxmzbOfO3oXMQKoavbHbSTAPgqbxGDv42VJ73YGXgAXAP+NqQueXQysAD4A7+NmTOuKwM3IXn4G9D5ozLymDtijFuvOJCxkZHEDA2OlKLwd65cM3fhsoth1YWqQ+AO/jbUHneg1k5OPjb0KWecZmVgWv+ZmYJcvA3M0uQg7+ZWYJc8zezwnipj+I4+JtZIbzUx3TD/DKsXfB3JmFWDV5crd2wvwxrFfydSVjZOTk5yUt9tBv2l2GtBny9aJiVmS+i3s5LfbQb9pdhrYK/MwkrMycn7by4WrthfxnWKvg7k7Ayc3LSzourtRv2l2Gtav5eNMxmU2TN/ZzRESa7BPqUkxMv9XHSsNe9qlXw96JhNpOiGwKcnNhshvllWKvgD84krLeiWwudnFiZ5BL8JV0K/CWwELglIsY7fv4i4DbgjcBTwLsi4rE89m0zc2vhSWWouTs5sbLIPOAraSFwM3AZcAFwlaQLOja7FngmIn4O+CTwsaz7tdm5tbCdGwLMTsqj22clsDci9kXEEeB2YE3HNmuATc3bdwJvk6Qc9m0zcGthO7cWmp2UR/AfAx5vub+/+VjXbSLiGPBj4BWdv0jSOkkTkiYOHjyYw6GlrQxljjJxa6HZSaUa8I2IjcBGgEajEQUfTuW5tXA619zNpuSR+U8C57bcX9J8rOs2kk4BTmdq4NcGyGUOM+slj+C/A1gmaamkU4ErgS0d22wBrm7e/nVge0Q4sx8wlznMrJfMZZ+IOCbpOmAbU62et0bEbkk3ABMRsQX4FPBpSXuBp5n6grAhcJnDzLrJpeYfEVuBrR2Pfbjl9k+A38hjX2Zmll2pBnzNbLg8CTBdDv42UA4u5VX0WkdWrFot6Wzl4hnG5eZJgGlz8LeBcXApN08CTJuDvw2Mg0u5ea2jtDn428A4uJSbJwGmzcHfBsbBpdw8CTBt7vaxgfHFS8rPkwDT5eBvA+XgYlZOLvuYmSXImX/OPKnJzKrAwT9HnjFpVm0pJW8u++TIk5rMqiu1GenO/HPkSU1m1TVT8pZ39l+GMwxn/jnypCaz6hpW8laWMwwH/xx5UpNZdQ0reStLedjBP0eeMWlWXcNK3spSHnbNP2ee1GRWTcOakX7O6AiTXQL9sMvDSQT/MgyumFn5DSN5W796eVtLOBRTHq598HfvvZmVSVnWvKp98B9m+5aZWT/KUB6uffAvy+BKmbgMZma17/Zx7327svQYm1mxah/83Xvfriw9xmZWrNqXfcoyuFIWLoOZGSQQ/KEcgytlUZYeYzMrVu3LPtbOZTArwuZdk6wa387SDXezany7x5hKIFPwl/RySfdIerT59xldtnm9pP+QtFvStyS9K8s+LRsvQWHD5iaDclJEzP8fSx8Hno6IcUkbgDMi4o87tnkNEBHxqKRzgJ3AayPi0Ey/u9FoxMTExLyPzczKYdX49q6lxrHRER7YcHEBR1RvknZGRGO27bKWfdYAm5q3NwFrOzeIiO9GxKPN2z8ADgCLM+7XzCrCTQbllDX4nxURTzRvPwmcNdPGklYCpwL/1ePn6yRNSJo4ePBgxkMzszLwXJtymjX4S7pX0re7/FnTul1M1Y961pAknQ18GnhPRLzQbZuI2BgRjYhoLF7skwOzOnCTQTnN2uoZEZf0+pmkH0o6OyKeaAb3Az22exlwN3B9RHxt3kdrZpXjuTbllLXPfwtwNTDe/PuLnRtIOhX4AnBbRNyZcX9mVkGea1M+WYP/OHCHpGuB7wHvBJDUAN4XEe9tPvYW4BWSrmn+u2si4sGM+zYrLS+eZ2WXqdVzkNzqaVXVeQ0JmKpxez6FDcOwWj3NrIMXz7MqSGJtH7OZ5F2icV+7VYEzf0vaIJYecF+7VYGDvyVtECUa97VbFbjsY7moanfLIEo07mu3KnDwt8w6u1uOl06A0ge8QV3fwH3tVnYu+1hmVe5ucYnGUuXM3zKrcneLSzSWKgd/y6zql4Z0iaZdVcdvbG5c9rHMXDqpD191Kx3O/C0zl07qY6bxm1T/P+t6JuTgb7lw6aQeqjx+MwhV7mSbjcs+ZnaCZye3q3In22wc/Odp865JVo1vZ+mGu1k1vt01UasFj9+0q/OZkMs+81DnU0FLm8dv2lW9k20mDv7z4EExqzOP35y0fvXyrtdmqMOZkIP/PNT5VNDMTqrzmZCD/zzU9VSwri1tZlnU9UzIA77zUMdBMU/uMRuMsjaHOPjPw9oVY9x4xYWMjY4gYGx0pPLXZ61zS5tZUcqcVLnsM091OxX0OIZZ/srcHOLM3wBP7jEbhDInVQ7+BtRzHMOsaGVOqhz8DajnOIZZ0cqcVLnmbyfUbRzDrGhlnieQdPB3X7tZ/vy5alfWpCrZ4O/1eczy589VdWSq+Ut6uaR7JD3a/PuMGbZ9maT9kv4qyz7z4r52y0tZJ/EUwZ+r6sg64LsBuC8ilgH3Ne/38lHgqxn3l5syt2BZdZR5Ek8R/LmqjqzBfw2wqXl7E7C220aS3gicBXw54/5yU+YWLKsOZ7rt/LmqjqzB/6yIeKJ5+0mmAnwbSQuAPwc+mHFfuSpzC5aVQz/lnJQy3X5eD3+uqmPWAV9J9wKv7PKj61vvRERIii7b/S6wNSL2S5ptX+uAdQDnnXfebIeWSZlbsMouhW6Ofgcu67rCa6d+Xw9/rqpDEd3idZ//WNoDXBQRT0g6G/hKRCzv2OYzwJuBF4CXAKcCfx0RM40P0Gg0YmJiYt7HNl/dAhv4zXxcZxCAqcyubhPCVo1v7xrUx0ZHeGDDxSfu+/Vofz2seJJ2RkRjtu2ytnpuAa4Gxpt/f7Fzg4j4rZaDugZozBb4i9Itu1n/uW+C4OjzceKxlFvXyrxQVZ76LeekkummVN7qV9XPgLMG/3HgDknXAt8D3gkgqQG8LyLem/H3D1W3wHb0helnRnUMdv1KJQjMpZxT1kk8eUqlvNWvOsxnyDTgGxFPRcTbImJZRFwSEU83H5/oFvgj4h8i4ros+xykuQSwugW7fqXSzeGBy3Z+Pdr1OgP+yJbdlZnz4YXdWswlgNUt2PUrlSDQa6E7oDIf7jx54b92vZK/Q4ePVmbOR6YB30EqYsC32+DdogVqq/lDPQf05qLqtc75SmVwdy5SfS/0GgDvZtiD4sMa8K2VXoN33R5L4Q3eSwo17m5SGezuVx3q3vO1fvXyaYlAL2UtETv4d+gV2Or+Zu4l1cyum1QGu/uV8pdht0TxuSPHeOa5o9O2LWuJ2MHfeko5s+vGHS/tUv8y7EwUe5UFyzoe5gFf68nr1rRLZbC7X6l0fvWraoPizvytp9Qzu06pTOjqV7e6d8pfhlCt8TAHf+vJZY7pqvThHjR/GVabg7/15MzOZuMvw+py8LeenNmZ1ZeDv83ImZ1ZPbnbx8wsQQ7+ZmYJcvA3M0uQg7+ZWYIc/M3MEuTgb2aWIAd/M7MEOfibmSXIwd/MLEEO/mZmCXLwNzNLkIO/mVmCHPzNzBLk4G9mliAHfzOzBDn4m5klyMHfzCxBmYK/pJdLukfSo82/z+ix3XmSvizpEUkPS3p1lv2amVk2WTP/DcB9EbEMuK95v5vbgJsi4rXASuBAxv2amVkGWYP/GmBT8/YmYG3nBpIuAE6JiHsAIuLZiHgu437NzCyDrBdwPysinmjefhI4q8s2rwEOSboLWArcC2yIiOc7N5S0DljXvPtTSd/OeHxldCbwo6IPImd+TtVRx+fl59TuVf1sNGvwl3Qv8MouP7q+9U5EhKTosY83AyuA7wP/DFwDfKpzw4jYCGxs7nciIhqzHV/V1PF5+TlVRx2fl5/T/Mwa/CPikl4/k/RDSWdHxBOSzqZ7LX8/8GBE7Gv+m83Am+gS/M3MbDiy1vy3AFc3b18NfLHLNjuAUUmLm/cvBh7OuF8zM8sga/AfB94u6VHgkuZ9JDUk3QLQrO1/ELhP0kOAgL/r43dvzHhsZVXH5+XnVB11fF5+TvOgiG5lejMzqzPP8DUzS5CDv5lZgkoZ/CVdKmmPpL2Ses0arhRJt0o6UKe5C5LOlXR/c8mO3ZLeX/QxZSXpxZL+U9I3m8/pz4o+prxIWihpl6R/KfpY8iLpMUkPSXpQ0kTRx5MHSaOS7pT0neaSOL84kP2UreYvaSHwXeDtTLWJ7gCuiohKdwhJegvwLHBbRLyu6OPJQ7O99+yI+IaklwI7gbVV/r+SJOC0iHhW0iLg34H3R8TXCj60zCR9AGgAL4uIdxR9PHmQ9BjQiIjaTPKStAn4t4i4RdKpwM9ExKG891PGzH8lsDci9kXEEeB2ppaRqLSI+CrwdNHHkaeIeCIivtG8/b/AI8BYsUeVTUx5tnl3UfNPuTKkeZC0BPhV4Jaij8V6k3Q68Baa86Ai4sggAj+UM/iPAY+33N9PxQNKCporta4Avl7skWTXLI88yNSkxXsiovLPCfgL4I+AF4o+kJwF8GVJO5vLw1TdUuAg8PfNEt0tkk4bxI7KGPytYiS9BPg88AcR8T9FH09WEfF8RLweWAKslFTpMp2kdwAHImJn0ccyAL8UEW8ALgN+r1lerbJTgDcAfxMRK4D/o/dqyZmUMfhPAue23F/SfMxKqFkX/zzwmYi4q+jjyVPzdPt+4NKijyWjVcDlzfr47cDFkv6x2EPKR0RMNv8+AHyBqbJxle0H9recbd7J1JdB7soY/HcAyyQtbQ52XMnUMhJWMs3B0U8Bj0TEJ4o+njxIWixptHl7hKnGg+8Ue1TZRMSHImJJRLyaqc/T9oh4d8GHlZmk05qNBjRLI78CVLqbLiKeBB6XtLz50NsY0HI4WZd0zl1EHJN0HbANWAjcGhG7Cz6szCT9E3ARcKak/cCfRkTVF7dbBfw28FCzRg7wJxGxtcBjyupsYFOz62wBcEdE1KY1smbOAr4wlYNwCvDZiPhSsYeUi98HPtNMfvcB7xnETkrX6mlmZoNXxrKPmZkNmIO/mVmCHPzNzBLk4G9mliAHfzOzBDn4m5klyMHfzCxB/w/h9nBTUs55TgAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ - "" + "
        " ] }, "metadata": {}, @@ -619,20 +609,21 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 16, "metadata": { "scrolled": false }, "outputs": [ { "data": { - "image/png": "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+ulNPf4zzzyDs846q+tFkoSLJppO5aKLLqqIps2bN6toUpTFQUVSk1CRpCwpfvWrX+H222/H0aNHce2119Zd+6gRnn32WZxxxhno6elp+rE7CZdoetnLXoYbb7wRO3fuxObNm7Fs2bJWd1NRuhEVSU1CRZKyZPjyl7+Mt771rVi7di3Wrl27YHWMfvWrX2HNmjVzHh3Xrfi+j/3791fCcxMTE7jkkksqOU2NFOxUFCURFUlNQkWS0vXMzMzgrW99K775zW9i69atOPnkkxf0fM899xxWr16Nvr6+BT1Pp8NF0+TkJPbt24e1a9dGRFN/f3+ru6konYiKpCahIknpah555BHcfvvtGBgYwKZNmxYlBPb8889j1apVKpIapFgsYv/+/di/f39FNF166aW48cYb8YpXvALXXnutiiZFqQ8VSU1CRZLSlYRhiE9/+tO4++67cdVVV+H8889ftHO/8MILOOWUU5DNZhftnN0IiSZymvbv34/LLrusktN0zTXX6GusKG5UJDUJFUlK13Hw4EG89rWvxc9+9rOWFDx88cUXsXLlSs2vaTLFYhH79u2rOE379+/H5ZdfXhFNV199tYomRTGoSGoSKpKUruLf/u3fcOedd+Kss87C+vXrWzI1yO7du7F8+XIdubXAFAqFSnju0KFDOHDgANatWxcRTRryVJYoKpKahIokpSsoFot4//vfj89//vMLUvuoEfbs2YOTTjpJawItMoVCAfv27cOBAwcqoumKK67ATTfdhFe84hXYtGmTiiZlqaAiqUmoSFI6nmeffRa7du3CzMxMWyT37t27F0NDQzpFR4sh0URO06FDh6pEk5ZpULoUFUlNQkWS0tF86Utfwl133YVLL70Ul1xyyYLVPmqEiYkJLFu2TCd/bTMKhQImJiYqTtOhQ4ewYcOGyui5q666SkWT0i20/kLYJahIUjqS6elpvOUtb8EDDzyAbdu2YXR0tNVdqrBv3z709/c3ZbJcZeGYnZ2thOcOHjyIw4cPY8OGDbjppptw3XXX4aqrrlryVdOVjkVFUpNQkaR0HA899BBuv/12DA0NteWNbP/+/ejr68PIyEiru6I0wOzsbMRpOnz4MDZu3FgJz23cuLHtPmuKEoOKpCahIknpGIIgwKc+9Sn88R//MTZt2oTzzjuv1V1ycuDAAWQyGaxYsaLVXVHmQT6fjySCHz58GFdeeWVFNG3YsEFFk9KuqEhqEiqSlI5g//79uPPOO/HLX/4SW7Zsaet8n4MHDyKVSmHlypWt7orSRLhoOnDgAKampnDVVVfh5ptvxnXXXYcNGzYgk8m0upuKAqhIahoqkpS251vf+hZe97rX4eyzz8YVV1zRktpHjXDo0CEAaKs8KaX55PN5TExM4ODBgxXRtGnTpopoWr9+vYompVWoSGoSKpKUtqVQKOAP//APcf/992Pz5s1Ys2ZNq7tUF4cPH4bv+zjllFNa3RVlESHRRIngU1NTuOaaayqJ4OvXr0c6nW51N5WlgYqkJqEiSWlLfvnLX2LXrl3I5/O49tprO2q6icOHD6NYLOLUU09tdVeUFnLixImI03T06NGIaLriiitUNCkLhYqkJqEiSWk7vvjFL+Id73gHLr/8clx88cVtUfuoEaampnDixAmsXr261V1R2ggpmo4dOxYRTevWrVPRpDSLzrpotjEqkpS24dixY3jzm9+M73znO9i2bVvHJj5PTU3h+PHjOO2001rdFaWNOX78eEQ0UcV4Km55+eWXt33+ndK2qEhqEiqSlLbgwQcfxK5duzAyMoIrr7yyo4dWHz16FEePHm3p/HFK58FF0/79+3H8+HFs3ry5Ipouu+wyFU1KvahIahIqkpSWEgQB7r33XnzsYx/Dpk2bcO6557a6S/Pm2LFjeOmll3DmmWe2uitKB3P8+HHs3bsXhw4dwv79+3HixAls3rwZN998M3bs2IFLL71URZMSh4qkJqEiSWkZ+/btw6tf/Wo899xz2LJlS9dMCDs9PY3JyUmcddZZre6K0kXMzMxEnKZ8Po8tW7ZURNPatWtVNCmEiqQmoSJJaQnf+MY38IY3vAHnnnsu1q1b11UX95mZGRw4cADnnHNOq7uidDFSNM3OzmLr1q246aabsGPHDlxyySVd9b1SGkJFUpNQkaQsKrOzs/j93/99fPGLX8SWLVu6MrmZckvaddoUpTuZnp7GxMQEDh06hH379qFYLFaJpk4bKarMGX2jm4SKJGXRePrpp7Fr1y4Ui0Vcc801HVX7qBFOnDiBPXv24Pzzz291V5QlzPT0NPbu3YvJycmKaNq2bVtFNHVieQ2lbvSNbRIqkpQFJwxD3H///Xj3u9/dsbWPGiGfz+OFF17AhRde2OquKEoFLpomJiZQKpUioullL3tZV38vlxj6RjYJFUnKgnL06FG86U1vwve+9z1s27YNK1asaHWXFpzZ2Vk899xzuOiii1rdFUWJ5dixY5Xw3MTEBMIwrIim6667DhdeeKGKps5F37gmoSJJWTB+/OMf44477sCKFStw5ZVXLpnJPguFAp555hlcfPHFre6KotTNsWPHKk7T3r17AQDbt2+vOE0XXHCBiqbOQd+oJqEiSWk6QRDgE5/4BP70T/+0a2ofNUKxWMTPf/5zXHrppa3uiqLMiTAMI07T3r17kUqlIqLp/PPPV9HUvugb0yRUJClNZWJiAq95zWvw3HPPYevWrRgcHGx1lxYd3/fx1FNP4bLLLmt1VxSlKZBo4k5TJpPB9u3bceONN2LHjh0477zzVDS1D/pGNAkVSUrT+PrXv443vOENOO+887qu9lEjlEolPPHEE1i3bl2ru6IoC4IUTXv27EFvb29ENJ177rkqmlqHvvBNQkWSMm9mZ2fx3ve+F1/+8pexZcsWrF69utVdailBEOCxxx7D+vXrW90VRVkUwjDE0aNHI05TX19fRDSdc845KpoWD32hm4SKJGVe/PznP8dv/MZvoFQqdXXto0YIwxAPP/wwNm7c2OquKEpLCMMQR44cwcTERMVp6u/vx44dO3DDDTfguuuuw9lnn93qbnYzKpKahIokZU6EYYjPf/7zeN/73ocrrrgCF110kf5KZDz44IO48sorW90NRWkLSDTt3bsXhw8froim6667riKadK7DpqIX4yahIklpmCNHjuB3fud38MMf/hBbt25dErWPGkVFkqLEI0XT7t27sWzZMlx33XWV8NyZZ57Z6m52MiqSmoSKJKUhfvSjH+GOO+7A6OgoNm7cuGRqHzWKiiRFqZ8wDDE1NVUJz+3evRtDQ0MR0XTGGWe0upudhIqkJqEiSamLUqmEj33sY/jkJz+Ja665RvMJaqAiSVHmDokm7jQNDw/jFa94BW644Qbs2LEDp59+equ72c6oSGoSKpKUmuzZswevetWrsGfPHmzZsmVJ1j5qFBVJitI8wjDESy+9FMlpGhkZqeQ07dixA2vWrGl1N9sJFUlNQkWSksjXvvY1vPGNb8T555+Pyy+/fMnWPmoUFUmKsnBI0bR7926sWLEiIppOO+20VnezlahIahIqkhQn+Xwe73nPe/B3f/d32Lp1K1atWtXqLnUUKpIUZfEIwxCHDx/GxMRERDTt3LkTr3zlK7Fjx46lVr9NRVKTUJGkVPHUU09h165dCMMQ11xzDfr6+lrdpY5DRZKitA4STdxpGh0djYimLv/hpyKpSejQJKVCGIb4q7/6K/ze7/0e1q9fr7WPFEXpSDzPw8qVK7Fy5UoApgr+4cOH8dRTT+E///M/8eKLL+KUU07Bzp07ccMNN2D79u049dRTW9xrpR1RJ0kBAExNTeGNb3wjfvzjH2Pbtm1Yvnx5q7vU0aiTpCjtC4kmHp4j0XTVVVdhbGys1V2cL/rrtkmoSFLwgx/8AHfccQdOPfVUbNiwQWsfNQEVSYrSOZBo2rt3L370ox8hCIJOd9E7uvPthA5VWsKUSiXcc889uPnmm3HZZZdh06ZNKpAURVlypFIpjI6O4pJLLoHneZ0ukJQmonfEJcru3bvxm7/5m9i3bx9uu+02LFu2rNVdUhRFaSnFYlEFkhJBnaQlyFe/+lVcfvnlCMMQ119/vQokRVEUAIVCQWvBKRHUSVpCnDhxAu9617vwla98BS9/+ct1NIeiKApjdnZWUw6UCPppWCI8+eST2LVrF1KpFG699VatfaQoiiLI5/MqkpQI6it2OWEY4r777sPmzZtx2mmnYdu2bSqQFEVRHBQKBfT09LS6G0oboZK5izl8+DB++7d/Gw899BBuuukmjIyMtLpLSwZN/lSUzmN2dha9vb2t7obSRqiT1KV873vfw9q1a7F7927cfPPNKpAWmQbrjymK0gYUCgV12pUIKpK6DN/38eEPfxi33XYb1q1bp7WPWoQ6SYrSeahIUiR69+wiXnzxRdxxxx04ePAgbr31Vh3a30LUSVKUzqNQKGBgYKDV3VDaCHWSuoSvfOUrWLduHVKpFHbu3KkCSVEUpUGKxaJeO5UI6iR1OCdOnMA73/lO/NM//ZPWPlKWFLncagD58rMTbA21FSJtY2PDi9IvpXPxfV9FkhJBRVIH88QTT2DXrl3IZDK47bbbdFRGG6E5Sc0hl9sCYJq1zIhHoh9WKGVhhFIvuFDK5b4PYG352eMALgLwVGX92NiO5nRa6Vh838fQ0FCru6G0ESqSOpAwDPGXf/mX+MAHPoANGzbgggsu0Juy0hXkcncAOFp+RkJoEFYoyV/5y9h2JI4AK5qy5ee9ALbCiqYrAJQArCu3Bcjl/qOqPyqclhalUgmDg4Ot7obSRqhI6jAmJyfxW7/1W3j00Ue19pHSFeRyv11emoERLiR8XGGPkqONC6V6RBO5TIARSOnyshVMtm8TleWxsdX1/UNKx6IiSZGoSOogvvvd7+LVr341TjvtNNx8881Ip9O1d1KUNiSX+yCMY1RCVOC4RJCLpM9+LdHUX35OookLpmWwwqoE6zwFKpiWAKVSCSeddFKru6G0ESqSOgDf93H33Xfjs5/9LK699lqceeaZre6SosyJXO5jsOJoWXmZO0YkmhYqebaWaALiRRP1r4Bcbn9lu7Gx5QvUV2WxKZVKGB7WBH/FoiKpzXn++edxxx13YHJyErfddpvW8OgQNEcsSi73WdhcIxJALjEkRZNru0ZFFM9pksSJJpnPBFhXKeo25XIvAUjr6LkuQJ0kRaIiqY35h3/4B7z5zW/GxRdfjOuvv15vvB2EFpM0/O3fjuPYsSKscxTACpZ+sfU0ACk0uGiSIba0YxvXdpIk0UQkJYHLnCbTlssdreyngqkzCYIAK1asaHU3lDZCRVIbcvz4cdx11134l3/5F+zYsQOnnHJKq7ukKA3xwAPjOHQI8H2UZ1Xvge8DYXgcRqTw3CM+io3jEk0zjjaJ3MblTsXRSBI4b+eiKYtczoinsTEty9FJlEolHQyjRFCR1Gb85Cc/wa5du9DX14dbb71Vax8pHccDD4zD94HBQSOSAGBqyjx63gDCMGBbu0JnLtEkSwCkEQ3fxblKLhZKNHHxZNblcubZ2Fidp1NaSqlUUidJiaAiqU0IwxB/8Rd/gQ996EPYuHEjLrjgglZ3SZkHSzE0+uKL49i3LyqOyE3ibUAKx46RUJK5RryNC59BRGdRcjlKrrZGBFE9JIkmDhdMXCzlobQvQRBg5cqVre6G0kaoSGoDDh06hNe//vV44okncPPNN2vioNJx/OpX1j0i14ie0zJg1w0NWcHjEkyelyqH5oCo8EnBCh+ee+TKXTqKhRdNkji3yZDLmTyssbGXFrAPylwJw1Cvv0oEFUkt5jvf+Q5e85rX4PTTT8dNN92ktY+6hKWUuH3s2HhFHPk+kM1aUeT7wDTLkR4ZMW2ZjFswmeMZ0eR5ZiRnpnyVKhZdogmodpAoFOcSSLVEU6Mj56KOUTVcNAE2DLcaY2MTzj2U1hEEgY4gViKoSGoRxWIRH/rQhzA+Po5rr70WZ5xxRqu7pCgN0dc3XhFGJI4ymWioDZChNiuOZH4stS9fbkQTiSNq7+mJiqYTJ/IwgkgmaQP1C6RaSeCNOE+uHzhSdFnRZCbohYqlNiEIjDjPZmXoVFnKqEhqAc899xxuv/12HDlyBLfeeqv+culCuj0nac0ak3+UyZg/EkKuUBtg24GoOOKO0uiou522l6Kpvz8baTelBlyOElBbSLmKWJJDJUfiubaJo3a5gVzufADA2NgvE7dTFpZSqQTP87r+u6s0hoqkRebLX/4y3va2t+GSSy7Bxo0b9QvZpXRzuG3NmnHk88Y5AoB8PuomyVCbFExcAAFGBGXYlYiLI1c7F1O8fWiop9JmBBMQ7x65ShAsE9vVU+hS4hJRteYCM/vkcuswNvZYjW2VhaJQKCCVStXeUFlSqEhaJGZmZvD2t78d3/jGN3Ddddfh5JNPbnWXFKVh1q41AonEDxdGPDmblslhImFEoke6QzxviYuguHYusng7hfhIMFH4zyaHS4EUJ4ZcLlMt52n+5HLrAEDFUgtQkaS4UJG0CDz66KPYtWsX+vv7ccstt2jtoxgoR8PceOjmM1heNje3sbH/pxVda5hudAi3bDEFIvN5Iz4oBymfj4bZeEoHT9yWOUgyoZvggiou1CZDcySO4l0mfvNL1eE0AVZMxdVyqqfNhUzmriaXuwZjYz+q41hKs5idnUUmo7dEJYrXYFige2MIC0AYhvjMZz6Dj3zkI7jyyitx/vnnt7pLbQXVjjFDpfsBfB/A9bAiicIUViSZx2EAyzA29onF7G5DPPTQQ9i4cWOru9E0tm8fx/S0EUQking4LW40G7W7HCPKZyJoHW/n4kjev0gcue5rJJrqbbeiSbpMEj6tCse1rRRC8jnPmXJtZ8TU2Nh/OrZRms3zzz+PH/zgBzh61PWedBwt+ZXmeaeEdqqeheLIN8MwvGmBT1JBRdICcfDgQbzuda/DU089ha1bt+rM0oxc7gcAroSdymE5jFCiX+EkkOj5sFimRxJOyzA29q4F7nVjPPzww9iwYUOru9E0brzRukhcLJFAIoHDxRIxPe0WOJlMvGiS4Tm+XgojvtyoOKJ23l+ARs5xSBwFqKYe0USCSNZ2GkZUPLlv0GNj33K2K83j6aefxk9+8hNMTk62uivNoEUiaSQEXr7AZ/naQ2EYXrnAJ6mgImkB+Pd//3fceeedOPPMM3HFFVdo7aMyNFu6YRjWQSKBJENsVDCQCyQukuixhKGhHtx551sWtP+N0E1O0i23GBeJxBGJInKR8kxPkNiYFrpBOkYkeKTY4YJKrnOJJiCanyRpVBzx7WldsZhHtTiinCRJkmDi1wHXvq4262x1Sqi5U3niiSfw7LPPYmKiK0oytFAk7Vjgs3x1UUWSBmCbSLFYxAc+8AF87nOfw+bNm3H66ae3ukttQS63v7zUCyOI6FEKJB5eWyaW06LNPJpckxRGR82cYYODwLXXtl4sdcvotte9ztRCymarQ2uUsE3ihrtIlJdEQoYLKT5qTbpJ9SR08xwkeTwgus6V1E3tsp5TXHtPT7byfwFglcBdOUn1TtLL9437ETVTXmeEUi73GyqUFpBCoYC+vr5Wd6PD8RD/ee5MVCQ1iWeffRa7du3C9PQ0brvtNvT397e6Sy0nl6NfZCkYYbSs/FgrvBYnjKjN3HRoBBPdCOkG94tfjOOCC1orlLohcfuuu8YrQoFEDhc3PNwWl19E8BIA8lhc5MjwW9w6LpiA+NFuQHVStxRBSe3caaJ2qgQOoDxZr6uEABAvmqRAojCcFFPDiIbfSsjlXg8AGBv7ayjNpVAo6HV73qhIUhz8zd/8Dd7+9rfj0ksvxaZNm7riBjlfcrn/KC9dDOMY1RteA6qFkWwrVQoJcoEEAKtWmRvbwYPjOPnk1gmlbnCSuPvDBRCJIy6YZNhtUGgDLjYGB+2+5FAR0mWKq6fkcpM4LtHEi13ydlrnEk18n/hzuMSRbKc2emFSrF0WwASqC16SkCJX6fUqlJpMsVhUkdQUVCQpZaanp/HWt74V3/rWt7Bz506Myp+wSxArjgBgHax7FBdeK6FaDElhNBh5pPAHzQO2apVZK4VSGI7D81ojlDpdKP/BHxgXicQPDfunof+uZG0upLgo4vlHceE3vj9fJx2jJDepHtEk25P2oXW8XYom30+eqNfgCq8dhRFK9bpKRKnymMu9BWNj4zHbKY1SKBSwcuXKVnejw1EnSSnz8MMPY9euXRgaGsKtt96Knp6e2jt1OSa8dlH5GYkhHl4DogIpSRgNw4ojc8PwvIFICIbfvGhZht6y2XHMzCy+UOpkJ+kjH7ECiYsbEkw8xAbYdVwY8VpJFJrjz+PcJFrHc5pIlMjwm3ST4sJsQPSzIttdIbVa+xBcNMVN1Ot2lKQImna080RuWbvpKIxQ+i8YG7sXyvzxfR+D0gJV5kB3FeRUkdQgQRDg05/+NO655x5s2rQJ5513Xqu71BbY/CMujuYSXhtm29h1lAdCNyj+KG+etG7VKnNznkmu26c4IOFC4oa7SSSQ5HB/WUQSsO9JnCiifeg9y2ajogioz00iksJpvBAlF3VxiduuUBuvKk5w0cTbuWjigsnzbLtNAnfNOUc5eAQPudnK4SqUmoOKpGagTtKS5sCBA3jta1+Lp59+GrfccovWPipjR6/VEkhJo9eAOIFELpQUSHQ9o0d+s+Kht5GRcTzzzOK6SZ0abrszVn+4AAAgAElEQVT3XlsPibs/2ax7qD93mVxOEq2nfV2iiEa40Tp67+h5UjK3HP4fl3/EzxmXm+QSTVIc8RAc/39d4TwekuSCibtjJP7p/zHlBkgEcXjuEi94+RIAIJe7B2NjH4Eyd4IgUJE0bzzY+nfdgYqkOnnggQfw2te+FmeddRZuvPFGneMHXBwBURdovuG16Dq6wfAbkBRGNEfY6Gi1ozQ6CgwOjuOxxxZPKHWqSAKqCz9KwSQLQcY5Sfw49H7RNrI+EQ+xyXPVSubmfY5zeID6QmZ8nSyUSeuS3CRZJ8qVG+X77mlYAFQGJFC7rQQuXaWXyo/LYURToEJpnvi+rz985406SUuOQqGA97///fjCF76AzZs3Y82aNa3uUltgCkPSLwaXe3QK21qG1/gUIzI5O14gkQiqHJUJI7rx0M1Z5ijl82Zy1iefXByh1Iki6b776nORgOqcJLmeJ3nT9nHrauUkyXICsi7SXISRa50rzAbYzxk/Hxc6rgKa0pBwiSYSR/xYXOz5vi1zQdiwHYkjlB+PwgilT2Js7PegNE4QBCqSmkJ3GQgqkhJ45plnsGvXLhw/fhy33nqrDg8tYytn08g0urDw8BrgDq9xYVS/QOKPlN/C81y4sySdpJERsz6u+vJC0IkiCXDPg+YqBSCdoFqJ2lwUucJvPO/IVWOJwnJAfIgtbl2c+IkLpdG6uLwlvi5OGCWt4w5cXPHMOIfMPVEvjYYLYJK5VSjNBXWSmoE6SUuGv/7rv8Y73vEOXHbZZbj66qs79qbXbHI5Pv8UhdVIPMr8oyRhJJO4bRvdCFwiSD4C9kZLv/i5UOLbnX02sGrVOL761YV3kzrt8zJ+7704no/OyQZUh83kyDbeDsQnarsKSNI6icxJShJFgLtiNxGXlwRUi+a4nCW5bi7CiPczzk2Swj8uCZ3mruNOk++bxxMnjsMIpfswNvY2KPUTBAFG5AdImQMqkrqaY8eOYWxsDN/+9re19pHACCS6qyWNXjuV7bWaLXPXiYukEuLCa/xGkySUuEDiNxw6FmBu1It1Dew0kWSKH9kpReiGLmskEa7wGj3ykW+EzEmSp+aPcl85uk2eO250Ga2bi5NE/aVzxYXfagmjpFAgTeXico2ScrFcpQ7oNe/vH0A+byqBq1BqjFKphOXLl7e6Gx2OOkldzYMPPojbb78dw8PDuOWWW7T2URXDAArlxzj3iG8rl91hNs8bMs+EqJHhNSDqGtE2tUJuJJpWrTI3pte9bhxf+tLCukmdJJLGP/hBAFYQ8IlruTCReUVSzHBk4UmOfA9rCSopimi9qyRAI06SK/eI2uPEjytpW65z7efqK/9c02vOxZF0lOLmqJOlDvbtM0UuwzDA3/7teFtN/NzOqEhqBiqSupIgCPCpT30KH/3oR7Fp0yace+65re5S25HL0RIJpLjaR7SNHNZfva6nJ1uVABs3vF+G18hlohsLtVFoZ3Aw6i7RDXfVquRZ45tFJ4kkZDIIMr2RGkVitXOYv2sb/pwvZ7NuFwmIiiI5TUlccUnusCQ5SUniBjD78lpQcl8u1JJEU6PrCDonCSYpjBp1lABbcT6fT8H3oUKpToIgwIoVK1rdjS6gtYnbnuedAeD/hglphAByYRh+Zq7HU5EE4OMf/zjGx8dxyy23YGhoqNXdaTtyuSyAPEwOEmAF0qkwlYKTBBIfyQZwgQTE1z7ioba48BoQvfny7Ugs8RsJn8bk1a8ex//6Xwt340ilUgjDsO3F0vhdd1VeQB5iI0HkEkWuaUgIfjPnwobDw2v0PnEBxcWJS7hJRyXJSZJ5R3EChodqgWpRRPvGiS0Zgoubx04mpnOnyTWHnQzByfCcq+I4vW80UlGFUn0EQaDTksybtnCSfADvC8PwYc+EKR7yPO+BMAx/OpeDqUgCsG3bNjz33HNa+8iBEUiATdKOS7zmImgYSeE2OfcajUCSYojfuKQQAqLVn12VoLnw4kUMZZ2aJQ1TJ3EuUZKDBFS7RnJbHirlTh/vAn9/k4b8S7eH9okb+ZaUdyT7lCSK4sQNF1v8f+eiz3Vcvk6Gi+nz7HKT5P8Z5yZlMmYdL+fwjW+M4+abVSjFEYah/khuCq0VSWEYTgCYKC8f8zzvKQBrAKhImivDw8MqkBzkcjw+LwUST852hdfAtjXt/f00EscKI7rIy0TtONeIh9fitqObJneSpDA6//zk/32+dIqTFMlwhxWkrhFsfJck0cQdJNouThS54KI2Ll/JleMDJE8f4lovk7XjRJFcL3OWZH/rCbHROi5+pLNF67hr5ArByfwkErb79rnrXCnVBEGAgYGBVnejw2kLJ6mC53lnA1gP4MdzPYaKJAB9fX2t7kLbYQWSFEfiiu8USNxJWlYZphyXe0Q3Fu4occFUSzy5avBQThJBN3467/Q08MEPjuNP/mTp/rIef9ObzEI+j3zGTiUwPW3/ZGFJoDqBmx5dokqO3JJks1ERzENvMlwXF3rj1BJNceG3WqIobj1Pdncdl84ti3PKkYI8aZvOR+fk3w++LqlEAG1n85PMsb73vXFs27Z0P/NxBIEp0tnb211TarSGBRdJo57nPcie58IwzMmNPM8bBPCPAN4dhuHRuZ5MRRL0i+FGTisCVFfOpvVcHPFHvp1FVsh2TTcS5yQR5FLEORJcLLlcp+FsAfnswr3v5CS1PaRS8lFBFFcHia9LSuKOe19kaE0KML7e5YAk5SPRMTm1Ermlq1OvKHIJH47cl693/c9cZMY5TbymEhAVVFIwccdr3z77nuTzKpRc+L4Pz/Pa3/ltezwsQuL2oTAMr0zshef1wAikL4Vh+JX5nExFElQkSXI5qm1EgqhfPCe4Y+R6LFW5SPJRukdxTpJ0F+KWXYncfH0qf7xywFNGCrVeijnTERdbuvPm8wCqwwz85uwSRNxFIqRY4ILJdYxaoTe+PoUABT96AY4r2CjXy/CYXF9LFAHx4sZ1/CTRlJTITeulYHIJo7jK3VTagPYhN4mcwUOHgEceGcf69SqUiGKxqCkXTaO14TbPXHw/D+CpMAz/23yPpyIJGm7j5HI8WYdXzpbiSD5G20xRyFQk5whwO0h8VBFfx8URF02AWzTR/Z7fvPgNJ5OBGfcAmLtINouPfGQc99zT/JuF53nt7ySVX7wgO4D8lL3xxuWv1JuHRI9y+6Qq27w9rn4SAPRmgkoHg2y1sHNN/8HXxQ3pp/VJThL/XLnCkHz/Wg4XFz/yM8rDbzKZ27UfT+aWYTvqD+UmATahW4WSZXZ2Ful0++TSdC5tkZO0BcAbADzued6j5bYPhGH49bkcTEUSVCQRViC5ah9Re5oty5FuRiAtX56qSsrmjzxxmydsyyRfVxu/KfARbYTrF3yVW8HubqtWuV+L+dLuTtL47bdXjb3nIZu4fCSOy0ni8PcszkWS+UhEbyZALx1XTvRWJpU/bhbKBw8Go4MG+OYuJ0mKk0bX80KZstim/By6XCjeN/45Tgq/8XU8Z0kmcwPRStz0faP31BSchFJGRVKzaL1ICsPw++WONAUVSdBwmyVpwlm3IJL5R8uXG8uaBBIfxcbdI1fyNp84VM7HBlQPNadHVz0e101qAMejP/XzeaSSYj3zoO2dJKZQUgiQz6dik6/5DTxueL88tISOneQSZbPAQDaINnLrhMeXHCdKTR+NdiozENm8kZwjfmq+ntopiZznxvHta71OLkEl3SJ+Xi6g+MvgylkiXHWTeFHV6WngV78axznnqJuUz+d1hoWm0V1iU0US1EkCgFxuXXmJCyQujmTdIxlei+Ye8dE2XDAB7vwjCgHw9fymxitqE0miiIgkgmey0XgS3TkWgLYXSUDldTg6Hc3FiBNLtXDlI9FjXOgt9jyyDLZUaVI0yXgWgF6YnLPebAbH89X5Jq7cn6T/J84N4i6SHFDAuxt3bBlG42E9El9cqHJhJHWjnDxX1k3ibhItT0yMY/XqpS2UZmdnVSQ1hUVJ3F5UVCTBjETKZDLwl6j/nMttYc9co9f4YxpxAkmKIT7KZmTEPpeukSt5m+ckuYwDmZMkCxRywyhys+PvcfkO8+lPj+M972nuTaIjRFI5SSfjA2vW/BlMwlYIoFjegPpPl4l+fOYz/2fDpwCqE4sllfcoLr5Xw0WKVGXkJy4zkDVJ33GiKKmWUVUfHetlgjrXdq5RmPw1kMIoLvzGP+u83zL8xuGiiUa50d/oaHIO2lKiUChoRKFpqJPUlfT29i5ZkWRxhdVc29jHJIHEH/lLKxO3SSDRxTpOINGNw5WTFOcq8RtXr+8Yvz09jQF/ziU0YmmXnCQjgA/DCKDjIAGUy30dVgxJUURtIYCeSPu73kUiiV7wdHmZ/rL46lf/IDEfid/wYwsd8gJEDpcocYw9recfFFEws5YocjmTSUP+Xftzdynp+NxFkq9NI+E3uU6WDOA/Unzf5iX5vrpJhUIB2QUKvS8tWp+T1GxUJJXp6+vD8ePHW92NRSeXu4E9i8s9GoS1UI171N+frfwaJaQwkgnbtMydIiB+yL8MW8gbD8FvCvLXNy1XFnh4TU4a1kRa4STlcpsBHEFUEP2s/MgFUQAjfMg5AlsP1ubqP78A0puQghVLwK/92rvLy30g4QScjCef/F1nv7NZIOWXyzG43hNeUVFahkTcZGnsGL3l42ayvTVFUS3R4wqfxSVxy/VxThEdO5+Pukp84AGdm+/vKgtAJBXTpImfSWgdOzaOoaGlKZSKxSL6+/trb6jUgYqkrmQpWq1WINEktFwgUUiN33CsQAKq84+kYKJQGr9Qc4HEQ27cSXIJpFqiiK+ndBV+YwJgb7BTU9G74O7dSS/TnPA8r1LFd6HI5XYAOArgBIzIeQ5WEHFhVHI8B6LCqIQoYcxyirVxkUTLGZhfk5lyvzIwF82XsHbtB2CEUxbAKEqlNxmHr5w7VLnDywqQEq4EXLYQrZcqgsFFkat+UlJojQ6dlLclP49xx45bL8NvXDuS20TbcNNMVuzm879J95YPknAJu6VEsVjEsmVx7rlSPykY97l7UJFUZmkmb8tkbC6U5K9x85wmp5VuUZxQkvBJbWWiNq2jG4L85R4nivgve5nrQWSzAPKI3g0og9XV0XmyUE5SLrcNRnwcB7AHRuiQa0R/XARx54iWwbaR4sgVegPspSKEFUo+WyZhNAsrmrhgor88gGkAU0in74YRTH0IZ95SrYalGIojaaI0wBGviv4gqjf0xj82nFpJ7vIzGyea5Og2ejnk9DsujUiCiUbcEVIfHjoUzROk42Wz5rdCsTiOnp6l5yYVCgWceuqptTdU6kCdpK5kqTlJudxvwNwg5RQirqTtNHp6zHDq0VF7EY4TSjK8Ro/cSaI20iy0DFiBRO5SLVeJh+J4Yiqtp8KBw1m2I7/TTU/jvvvG8ba3Ne/m0EyRlMvdAuAlGDF0GNWiiIsjKZR8RAWRdJFIQElk26x4TuKIXlMPVoClyst+eX2h/MjFUxo2LNgLb9mnYATTAMJnbo6eiqsKWYI6KU7GE3x4z8uhvSDj/s67QmNyvewWJ2m4v2u93NY1uk0OUHAJt2w2OikuUO2S0Y8TnpdE/y8lci9FoeT7PgZdAltpEM1J6lqWkkgyAom7SK4JbK1Y8jwjkLi4kflIrulGCD7CiQsinpNEj2TuuIb/A26B5ArFyeWqEW70E3qB8pLmK5JyuVfBhNKOAdgLt2NUjzjizpEMtyUtE65QG4mgsLwPF0y0LoC5YNJ6EkwkntKirQDjMp2Ad96XYcJyIwifvDa2mCSA+GxqPoyNKx5xI6zlEvFDxSWZu0adufYn4kRTnHjiOUlSFEmXSZYjkE6SdJooLD49bZykpRp2K5VKKpKahoqkrmRphdui86sZ+BQkFs8bAlAtjFxiKK5NJmoTNBKHO0ZAde4Fd4pcQ6eJugQSv3nSXW1qCqndL6CZzEUk5XLvALAfJhy1H0Y0cGF0gi0XYMQFCR8fVoBwx4i24QJIhtzoueyvfM6dIsDWRKF2enO4u1SAdZD4epnzxAUUbevDW/sNAAMIH7raJtgkuUhccbhEFbNWUtlqN0km+ydV2Y4TTUn5SI2sd3Wfu0hVOXeIlgtISuSm7xuF3+i7bfcZx+zs0nGTVCQ1C3WSupalIpJyud+GOxdJXiCsWIpziZIKR/JfsHIKElpf7wijuJFFcflJ5ETJeybyjjsS/SR3Ze/Og0ZEkhFHBwA8CyNojiHZOaLcIlcOErlHgWgjuLsUiHaJ7D+JoxJ7HpQfpViifCSINv4eSFFEoTg6tw/jKBXhbfwugD6E/3mF3T1pTD5fn6A6KPSWdYx4k7vEhd54nnit0JprvSxp4eqDTCR3JXHTOn4u7jQB0URuwIbfSDTJHyxLhVKphOHh4dobKnWgxSS7kqUTbpM5RySQqnOS+BQjcvRMnBiS23BR5BrRRseVo9vk/Y0nvcaFJXjSNx8pTqN/hjOIj4k0+a5Qj0jK5d4LI472wrhHLseI//mIOkYkljy2zENdBbYMVAsoiOVa0LYee87FUYq1F2FGufBcJS6I0nALJyINK8Zo2Ye35UEA/QBGEX53pd1cvq+ukt41RFOtXCTatdaoNpkPVwv+meYGGBdN9LmWRVT5v0bhN75/3MtCLhJtR+u4mMpmx3HkyNJwk1QkNQt1krqWpSCScrm3l5d4mG0Y5qYDAMswNJTCsWMBhoaic7C5krH5ujgRRW0yHYREEf8lS9vKX8r1/LKNE0+Rtrhx3ZTZ3USSSgDkch9EtTjyy8sFVIsiH1HXiJZJrFB7SbRJp0i6RbUEkgd3UjeJo6Rl6kNGrCdhxEsIULur7ADfjnKgyqG47S8hnV4O/9tMLBF1uEhRJ6r6+1/vMH85as0l8mslefP8Ovn5j0vipjYZfuPbcCfJlcTNywBQ6G1wMFqaailQKpVw0kkntbobXYCKpK5laYTbhmE/wFwcRW8gJJBkmC1JDLkcJbmvHPLPkRf+pCRYua9LIMlf9JX1rrtCXJxjHricpL/5m7sxPX0MwIswAmIGVhxJYRQXYuMhLJ6M7cEmSsf2KmF9nCBytdO5wNZJgRSK7VzrZQ4TWJsL+o5SGQIfpZIPb/sRhN88rXyoGGWTNOptcBC9ZcGYzZo+ujRzrbCY3LbRfCRX6E3+KySK+HckLvwWN+cbnZuXo6LcQOoDjXxbuXIck5Pd7yapSGomKpK6km53knK5PywvkYtUfbOU4gionnuLQm985ExSyI2H2PgEm3JqhXzeCikupiivSOYh1TuqLXKTifuZzE/aJKRIyuXeD+AQTL7RCZgh9a5wmlyuHLH8yItCcgHCKcKNzClKi+dxQinuOHLkm8xF4ELKlZ/kiee8Ty64qphl+4TwbnwRQD/Cf19lP2RAdDw9hyesOaY+iXOJ5HpanmuCdpLw4louKbxG65OSuAH7seffX/rN4BoEODLSdIO1bSmVSli+fHmru9EFqJPUtXS/k8RdJPPc87IIQxtaA+p3jVxCSW7Pl/k9iMQQhdrkJLRxN4+kUgC1qBJLruUmkkql4Ps+vvCFP0axeALGLZpBVCD55WUuIOQyhd+QsI2kx7EP5fVIoQRE84pqCSUuhOjz5OpDnGCqh1rviSssZ0KN3s4J9PZmMfvAyexw7O7v+rCwD1Ym0zvnXCSeVxcnqpI+brXOQQaorBYuywDE1XHiP0yAaidpdDRaImB62vwtBTcpCAKsWLGi1d3oEjRxuyvpZicpl/sYe7YMPT2mbLwJe6WqaqlIhyjONUoqAyAnr+U1kVz5SfSLNW60UD1CKI6qUBtNTcLvXL6P8U9/Gm95z3vmfiLG//7f/x0vvAAY5+gYzHD+IowoInHE849c04kA0aTrenAlPMt1KUTDZDSUn8NHsHFC0S4fXQKLlwyQlBC9DMnnsj/yuJQADqA8vUmhEMLbvh/hN0+qtmK4yyTDbrDNtRwe/jgXau1bzzniXCYiaSJcIPodnZ6mZG3rUnHnt9splUoqkppC9zlJ3SX55kE3iyTDctjRbO68HsA93N+Vm+Ryl5KEFF/PBRJd4EdHq9JEANgbVr31HuVgJjmNF4B4J6nWnGF18tWv/klZIB2BEUNcGPGwGc/Zke6QFBSuNsC4Rq6LEs2fJNelxaMrTEbr5b4p1p4Sf3wbWVwSiAqljNiG2uNw2S/cEbPJ3GbZiE/vxqMYfMXzyeFUXn46xuahz+B8RBE/Vq31cQMQ6HsQ50ZR+C0uzDcyYta7ygFRte7BQftd5OG8NWvGkzve4aiT1EzSC/y3uKiTVKZbw2253GdAH6yhoR74fo/TzZF5SNw94hfeesNrrpwkOha10b2rnlBbPdB+lG4iSwCsyCJeIDUh7PbTn/4JHn3Uw/S0D+MekTAqIpqDRFN8UFFImWMEkCti27krROE0anNNKCnbpaMkQ1a8irZEukdyWa6XlxUpnJKQoqnkaAOio/v4eej/NK/fzEwPBm7aj+P/cVb1kDPX2Ws4OPP5fMpzcFwj25LOQe005L9qejpRCoA0IE/i5uem3wd8VByvN9btblIYhlpMsimok9S1dKtIIoaGUhVxAsQnZ/Mq2Hwd36eWUxS3nieZEo0u1yLxYs7vNrJK4DzvAt///sfw6KMpTE+Tq8GFEYkIXjPI5SBxeh3r0uV2wC2MuEvEf3X1ONooxCbdIZdTlBbHkJcNlwji+7r+R49tS85SvXlLSaFHcpPofSggn09hYMfzWP1rvxKbsqzlmPe/lovE18/XaeLHoI8qCfxa5yDnR45H4MfuRQGp/HGk8serzjsyEnWQeM0l+t6edVZ3uklhGCIMQwwMDLS6K10AiaTucZJUJJXpxnDbF784jqGhLJYvNzdUXtCRnksxFNeWFHKrJYpk/pFrmWsWmSNF8PyKWqO8XQSD5WJxcRUD5xhu+/73P4EXXkhhZsaDDa/NwuQhcQcpD+NwSIEUF3YjpCDin9W02EaG0+jC0lP+I9coLsQmhZNLFAFREdXD/lyhOBJAXEDR6LYecXy+nVyG2E6O6pMhSSOWwrCEfD6FY8dSRijF2T/5PFIIkGqowGaUZosm1rVIOwmZTMY9dQo99mbc/0sqfxyp6aNVgomLJPqOy2TxboPqmVGupjJfXN//Zv4tLhpuK9ONIongxRx57jIPgfFHvpxUDoAvx4Xf5Hnk8H5e00WGMuRyrWrbcbkcROTm14RQ2549H8cvfpHC4cPAzAwQhiSI8rA3bDlMn0ascaQz0lvehi7atMxDbHC00faheOSj2lw3AleITSZuy234ix2y7aTg4dvSurRol8tJln2cK8VrRhE9lXVhCARBCsePp3D6//FT7P76JYnve60SAM2k1qg5vuyoVhD5frgiRikE1XOP8PX54+jNZNCbzSCTSVVVrZcTUncbvu8jlVK/oDl0X7hNRVKZbgu3PfDAOFatss/ltCBymLAr/4iLJ1ebrOrLj8PPSetp2TXiht8M4trnQ13HaeAu8Oyzf4oXXgAOH/YwPc0FEo0Wc039keQWyZFoSUJJriehFJbPxdviCGGdJdc6+YK5Ckpy+Ig5GXoLHW0Z0c7XyedJpQY8ROssuTCva6FgHK18PoUzb/0pTjqphMe/em100xi13YxcpHqpJZoodykuhYa+l72ZAAU/FXWTuPXEv/zl5d5MBqOjqcrgTyoDQMc877xxPPNMd5UDKBaL8LxGSlQoyXSXSFL5XKbbnCRybPjoNKD64u4adcbzEVwOkXScXAKqljtVT/4Rz43ibZJ6qh9XdUKubOCu94tf/FccOOBhZsbD9LSHfJ6KJfIwG6+SLeFujgdb+Vyu63Usk7AgkcPDaEA0h4iH4FKIhtpq5SC52urZhs7N3SPZH/6/Azb0xp9nxDqX61Qrryt6nlIJKBQ8FIsejh9P4ciRNK7Y9cPqzX2/rrpIRD35vnMR+/WE7njtJF40kujNBFbpxNUyoPVsRzndCY16a9aPlnYin88jne6uG3vr0JykrqWbnKSvfc0kWPL6RSRcZK6QK+RGF2Xe5pp+xJWzFJdzNJB150bwC7FrCPOCMA8b4MUX78XkpIfJSSOS8nmazJUnRPEQW0G0yWUpinpRLSZIBPWwbWRiNu3HhREXJzJ5WwqfesRSkngCouKG948LHhJQPJ+Jb0PPuTDix5EhvADRCyf/nPG57uh9AopFI5SCwIilDdd/I7EEQLvQSAJ3XC5SJewWN19hPo9eFCJJ2/RH39WLLuquBO58Po9MN6q/ltFdIkk/GWV6e3vrmrm9E5A1h8i5IYt+asodSksKudFxqY2O78pP4vv1ooDerDlYyi8gW55IlP/qXYjwWl00eFM0Agk4csRDqWTykMzNl25Icm41wIbF+HMZMnNtRyEzancdp9ZntQD37yDar+hoi3su22ROEhANubmcH+6C8fU9oi0j1vM8BwrTeexRJsB7bD3HQ6kUolDwkM2GFUcJADbc9C08/P/eEKm8XYuFDrvVc356lKUDKrhG7vGO83UsUdC8Kr0VN5k0JE132E0UCgVN2m4arsK0nU13/TfzwPO8rvg18cMfRn/lJU0mK+102p7vS49JJQHkelqujJyZmor8auUjarjbJZNUeUFJ3t9WcPDgJ7F/v3GPKMzm+67EbDieJ4WDuHPUKx5DWAeJb+vKJSJnRobhuLvkCouRs9OT8Fy2cSeIu0l8G49tS68BTx6n1046SFIg0XMZjuOP0k0iZPI8KssUdgOAIPDg+yls/vVvVh1hMUsAzBcSS7H9IPdIhNYqTE/bbfL5qtGnJJi6jdnZ2a5Lt2gt3eUkqUhidEPIjZK1KReJ/pJGtEkRUk9OUa3h/anpo87+cYEk849ctPrGc+65/xUHD34Sk5PAzIyHI0dsfksYUpiNj2ZLwpVjRPCQGq3vZdvx9TK81sO24xcSuY38m0tYLcWOTyKIxJFs437IhK4AACAASURBVPtJwcb348tc2JDwgtiHluPKBXBHj8RqGHleHvVdCb0Vix5mZ1PYfP0/Io7FFkJk8sSVtkjsDw+ryVERRJJggnF+ef0kvns3hdwKhYKKpKaRQvTatRB/i4uKJEY3iKR8Hjj9dLPMxVGSKxTnJLlEk8xzci1XBBK/APPlfB4p34SOUggSh/03nQZiBWvX3ovHHkvjyBErjgDKReJbumr4ANGCkPzLzYUN/+K7BJFrezjW1RJALmGV5B653CS5TrpLPYgKIyAqfjKOffj/AtZGF1uIfek5EBVrfAShdJzA1rkpFj2USmbf6275h9jtFgOXKOIukdQ09F3hydaFjCiMyEWTq/K4cJEklM9IoftW/3hpJoVCAdluLgS16KiT1LV0+q+Jp56yv+7iKmuTRnAN33eJJtd8anxZhtciAongy+wCzOsWucJrEt5ej9Zp+ELOdli79l488kgKR44YUeT7FGYz603umis5lm7E/Y51QFTo8HBar1jvqqwt3SQ5uo07NXKdK9E6yWWSosglmlxJ3hDbgu0vQ3D82PyPXg9P7AuxnWu+O+oDF03RyXyDwEOhkEI+n6qE3ABEHKVbb/2faFdIFMUYQOjNBCZxO6mSvBRMQLQC+dQUMDWF3vzRqjB3t4XcisWiiqSmwSv5d0cxSRVJjE53kkZGjIvEE6yBaqdICiA53JdoJD+plycVJwkkRwyhZWG3uCQoAE88kcbhw6lK7hEvpmcFWq0QWxpAFlbw8AtxP6LuEneOgKjz0+tYhthfCiuZ6yRDc7VGt9WzzkO1mEoSVlIc0TJQLaro0VUWAIgKqAysOPIc+wHyfQoq+tZDPm/zk4pFD+k0MDubwq//+uIKpbnOAycLsVbh+t7Jct4u0VSmNxNEJsClr8natd0RcisUCjolSVNRJ6lr6WQnaWLCXLD4SDUahSbdI15Mkk+CSflJXDTVyk8C6hBI8iLtWJahNkmtH3p13WDiNhIn7u39bzhyxAijUsn8G6WSEUvRZG2Ch4X4cyIFK5ay5b8QVkRxISXdIFdbnJsk/+LCa/XunySAZJ94CA5iWyAqaODYFuwYrra449BjL2snR4kLJcpTMiPi6PNUKgEkdmdnqdikV07m9vDmN9+P+bBQBkXijwlyhOJKcCcIoqr15W1kEdluMl5834dObtsstE5SV9PJIgkwF0jKG5Df+aSRbCSMaL0sTse35ccaHGT1j0TOkTPrNGbZNVcWL2LZVGocdHj40xWBdOSIGcXmeVYc2cK8cYIoKTlbwp0jElJyX5dzxMWPHPFWSwzB0VZLCNVaduUowfHc5TK58pKkowT2XOYcxQ/3j4ZDo8fi4sg+R9lRsq6S73t429u+EO1Fk/PlkgR+rZF1fNk59SAXTC5quEi0TSYTPxK10ykWiyqSmoaKpK6mk8NtFGqjZZ6wnZRfFBdqc4klOUN4hZico5rLogpwIxfeOf2STSrXnc3iQ/eNVHKQKFG7+v7CXaQ4gSSFTSPPyVlKIeo6SdET5zzVEkP1iJ9G/1DjuBnHMhzt0iGSITWZo8Sfp8W+ENsC5CJRLTQSRiZh2xAERhzl88ZVKhZT8P0U3vvez6MdqKccgVMQUUJiUtiN2qenKzlJsugkjZrtJk1RKpVUJDUVFUldS6c6SSdO2NyA0VH3NbJW/lG964EEgVTPskwULdPoL9Na4TW6ztekfOJP/eL6yig2UyTSuAhmTqe40Wsc12dHOkAkevh66TxJgROyfeJcIlrHXSWX6IHYJk5EzcVF8hzbQGwvR7gBUWHEzx8nkGQ7IUfA0SOFNfkvXPOe9vSEsLNReBWxRG6h75v8pCDwEIYpfPzjn2s7B8XVnyA7YAVRg2G1qi9WeV1q6nCkmUa4dUNeUhAEGBoaanU3uoTuS9xus698a+lUJ2l01IgCEkiUW8Sr8NIyXQN5bSRXsUZXeA6IOlA0jD9RHNHBXaNo2PIAfBQyA4l5SXz3ecN+kv+P43dg/36vEmYzuUdyh2hIp6cnjWKxJDeCETT0v6ZYWwq2YjYPrZ1ANGlbTmpLlbazsBPg8m2KbBliv1C00XaheKRlXoGboP87I7aNO04Pqo+bEdulxXq+D1/OwIocIi3aXCE5vi2dg4flTMX03l7zPAg8BAGd01Tlps9fqWQ+JsWih0ymdb8p65n0NhESQklfHu4uOZyV4WwB+XwvRkbMpvv2dUf1bd/3MTw83OpudBGL7/YsJOokMTrVSfJ9W0SSTyFA1zm+zEWRzGkgXAIprizAnENtcpkR16+mwQ769ZFfx969Zqi/75ubJyVom2RtrumMxRAN9fG51GgFT9QeFtvyfQDrLmUd66RjxENvMtzmcphczlQG7mH7rmNJpwjsucupyojjuEJr0nWSLpJc5u5RWrTRH/2fvAwAT9wGuHgid5Dyknp6jHAKAhr1ZhK3KVkfsJ+Jj32sPcJuNZHVYwk+egOoz2Vix3DlJnY6QRCoSGoampPU1XSiSOrrs5PZkkAC7PUxrv4QH9XGRVOtUFvDAqmebWr8HJ1rXZZ69nviCSuQZmZQuSlazHN6jfr67PqeHvrCpuEeju9K4pZihq+TOUj8WD1iG7B2meNUKzcpC6Cv/OdanySWIPZxiSY42l1hMuoDfy6XadSax9qkaKLz0b6usgFhZL35qtsCoalUWHlO5QGCwOQrzc7aRO4g8PC5z/0VOopaydv1hObK+/PJr7tFJPm+j5NOOqnV3egaPC+1oH+LjYokRieG2yiJkk9ISwKJ/+qLE0K8Wi/hSuCW7ZXpRfiFlVfrlXkOrmV63iL++4s3VEJsJJAo1FZyRNLk65LJ0AWBiwcujMix4W4RFZnsF9vLHCRyomQoigsdl4OUqdHGhQxghEc9Iilu/7hcJfrfSAj1ijZeNoGLJb6uDzbHQYrGNNuWO0hcRAFSKHmeWS6VgJ4e80juUU9PWKm6HQQ8mduUB/A8U0+pUEjh/vtbK5TiHNYUAjNaNEkQuUSTrJvk+zaxT0xdQiNPu6VeUqlUwki3VchsEZ5n7ykL9bfYqEhidKJIAkyoTYoimtDbNTeba1lu4xrVRssRgUQ06hjF/LKlMgau9kZx3ifKB/qfv9iAyUmvPMDOizhI1cnaHrJZ+7yvz6sk/PL26lFpgHsIf5Y9xlXcBowI4GJJhtn4efh6Kbxc+1MbiQjpCsW1u8SSFEgkhGQyN7VJUUV/njgX2HOZuM1Db7Qs3Sq5vTkmTfgeBACZxybU5lWEk2mLiiXaLpUyCf3f+tb/QCupeeMQeX+x27jylVw5hFNTVefqhkFhQRBg+fLlre5G19BtIqkFp2xfOi3cduqpNtRG1zq6aE1Pm2XSLvUkbfMQHBEbapuLQKIqllIsofq8SWSz8VEBwnXxDpBCamoKP5y5oJKo7fvkIsXfR2SXMxnzvK8PmJ01bT09PeVEbvoMFRzLszA3/AJ77IcRSnnYZGuZvE3iveRYV2LPQ9bOHShaV0Q0lBc6toFoq3e7sNxP13YZR5tM3pbPMzHr0uJRLsttfHDBmyr/LOzttU6SLSxpErj7+qzTROIpCELMznrIZChPzUOxaM4TNz0IUPtzuiiMjBhHiIsmPqqDI4WS+CKlpo8ikxnGyIj5vw8dWsB+LxKlUgkrVqxodTe6AnKSugl1khidJpIGB4Gzz7bP5TxtBBc/LiHEl+MSM2MFUqPLMQJpMcNujzySKs/HBszM8ARgryrMls16sa8PD3ECNkfJhOCy8DzuLKVgQ2wyp4jaZDt3mUox62R+ERAfHptLWM3lHsl2co4Qs14O/edXUe74UBhNukpyeD9Pyk4j6hbJOdyoX/acxgU0+xuh5FXcJSOUrNtEkKtEyd1UaPKBB9o81BSn/slqdq1zOb51DLLoVIIgwMqVK1vdja6gG8NtXfARbx6dGG6j8BTPuySng0RR3AAX2l8uJyVzV4b911NVm1tX1E4JU1NT0eF3i8SXvncqZmZoyhEvcg/xWGTFvAZe5N8ZHPSQz4eR5WXLjJtE7lZ/v/3dkc+H8LwehCEfWp+FHdIPmBIA3EGq1c5VHHdtTqDaUUJ5X+keuR5p2VUGAGL/lGM//ly6QjynSvY9LbYjkcTX8+VSTLssU8CFkjleJpMqF5IMy46SKQHQ22tEUF+fydgmR0kKJcDM6dbTE1RKBgSBh4cf/kts2PD26o0Xkcr3mL74kiSrlNY7D1h9jOGRAFNT5nPeDcnbQRBoTlKT6EYnqcv+nfnRSU7S1VeP49ChaPFIHmqLI04I8WW5LTBHJ4kOwC/c8iK+SAKJTnP4sIepKQ+zs+5Tm3BKWBGaBP3w5sskjPr6zD7LlgFmDjBzA81mSVTJOkgkfopwiyLeTpAgKKFa9PDtuYiaRW1xVBDPXWE6iDbajtrjBJOs1eQSPvRc7ivdJmqXIT1+jJBta27i5qNm1a8d1RZWCkUCYTm05iGbDRGG3FEKKyG6VArl5G7znHLZKOzWNjQiiJJEVY1jjYyYWkmdThiGWGa+vMo8aQeR5Hne/wXgVgAHwjC8dL7H03Abo5OcJN+PhtrIoImriVRPfSQePmpYIMUlfc5jJFuzvmx02vvvLyCftyE13jVqM86ZF3kteHL24KCtlZTJRCcFJpYtM3/pdIhMJkRPT0/lz05yC0SdFUripnYKq1GekywTIMNotD2JCNe8bRmxH2psw9v62B+FwOT+tB2FAOE4Lr2pPKnbVYOJ/lwJ2nyZQnR0PFpv8ofMqDWgp8eG1Hp7rWvIE7VpmX4rmZFvXjlZGxEo/OZ55u/xx+9DW1JLMPFt6hFX5T8yXjp9hFsYhgjDEAMDA63uStfQBuG2+wHc1LT/p1kH6gY6yUkC7AeGwm10wZqaMjftpKTtepcjw/75hKELIJDM8eem22t9eX74w1kcOWJzkfgPZRInMiE8mzUOES1nMmGkcrkJx4WVBHmbr2Taubgidylahdue20KvU4FtR4ndMlzFk725M8RdpTjnqF7HSE4eGzq2pXyiMGGbjHgewgo/vn1ceI3qGKXZch87Dv/smNCacYiikyfTV9wIJhtuo0RtwCZzG0cJLBcpLAsjCrWhksxdLM799+ai//KOfvjj1ycgrxedWnm7VFbI6XSbuYEdSjs4SWEY/n+e553drOOpSGJ0ipO0ffs4pqdtlW26cdN8lPxmzy9grvCabHcN+4986GUuEl92XXz5SBr5S5WWeX6SPF+TOHAghdlZ202KMvT0oOwGSMFkBJLvG1eIlq1AMseinCTKUTKvvX0kAWU/WvZmakbD8XAbuS4yHwmIihpq60N0qhIgKpr4CymnP0kasZYS7XGhOr6ta9Sa3N8liuRINuojz1GiY5YQDc3Zc5taVSHSaRJQ9Oihtzcq/EgMReduoxIAZluTzB2ydXaUG4XiSqWQVekGHn/8PpxzztvQlpDFLGPx/DsbF3ajkXGyzkgZ/oOs0/B9HylpEypzZpFE0qjneQ+y57kwDHMLdTIVSYxOcpJIINF1i7QKF0i0HPdLrx73iNoHskF97lE9o9cSfnY2+wvm+8CjjxZw5EgqElHwPHfBSBKQYWiH+VN3+/pIHNmkbZOTZITSypXUbvKSSDiZ+4qH6WnKWwJmZkL09Bi3o1gsojofSQoYEg7cPYKjTQqZIow75cpN4ufwxHo4tuPLqZh2WuaCSB5XiiIg6iBJ4UTrSdHQTa3EKvCGlXyjVCqoaiNHid5zykdKp03OEZ/o1ggtu0z30FLJjGoz24dIpbyKePJ94yjt3ftZnHbaO9CWNCN5e2pq7iXw25BCoaAiqYkskkg6FIbhlQt+ljIqkhid4iQBRhjxUW10c3dd55JqtfBcJdqejl/lIBFxgqee8FqTfPlGLP7JSa/iIJVK3DUi7A3cJlvbhGzjINl2IKw4SiREjfixDpIRTmHFQTKiCSCx1NfnYXbW3LhNjSXuGFGfyF2SjhIcbUlhtYxjPV9utJiPFEB8mYst6Vzxdin0SrB5RaReaV8KG9r/I5MBSiWjbIxTREP6A1ihE22jfUkQ8ZBbOu2VR75FXSRyj6KOkx0BZ5a509RBN9x6cpUStuW1kjrVSZqdndVQWxPxvO4Y8chRkcTo6emB59mLZTszOmqXuYvOXSUukHhZACIp7FYVgssj+ktU1lhJWq710yLmYt2MMkrPPFPE7Kz5pR8nFrnA9H1zE5VVC0zOlxFNPLRGuUgmomjXkxDKZMJyuM2OejPvV1ieB44naxusYMoiOloNsIKCj5LrQXUuU5yzRG4VP15fzLYQz63wiG4TF0ardY6MWKbwmhVDxikywiMMjZAyHycjbEggGffILFNbqRSK9Vwg0ag2G54jIzmTMSPYuMFQKpn3kkbDAShPgovKsu+bx8nJz2LZsjZ0k2opGVfiIk+2i4TTO8d1T2J2dhaZVifRdBHtkJPUbLrs35k/vb29mKUyym3ILbeYUSTc8aEp0wYHza86UvJTU3Y7l0Ai4pR/5MPeaHJ2vUJpATM+V6yYxdNPpzE9XT0fW7Q7NkE7nTaCJp8PKyPdKGRGpQGkICLBBCCSi2RrKpEoAoCwnMNkz80F08yMza8BSBjwcBvgrrJNr2NcAjVgSgIA7rykJIGTStiGb+tytLgQdIXZSKTYcBsPoUWFj9kmnebOkAmlmffWCqR0Oqi4SeQklUrm+L295ocQD8VxQeR5xkkKw6hQMjlLZtsg4O38z53E3VaJzfWWAIj7zk5NITM60BU3w9nZ2fKoU6UZtINI8jzvbwHsgMld2g3gI2EYfn6ux+uCj3lz6evra2uRBBgXaWTE5kTz+owU/pG5SK4EbkmciGp4VFs9obY63KM46t3mqafSyOdNTaRSqTpEJwUkvXZhGM0z504RCSIumEjwhCEVluSj28Kq6WKMWDLOkqnRYnKUAEoSp/UBPK8PYUivP30us7CiiMJu3HXiIoTXQXIVc6xHJLncI5cICtlzV04SLVNYO6i0meH6po3ETH+/Ob4VN1w0UY5RWAmbme3MOjtajUSTcZ6oL+QapVImETuVMiE1MpH5aLdonpLJS+rrs/9XdPSbaZ05+mdYNvxuNELLbi6N1lXqIlQkNZd2EElhGN7ZzOOpSBJ0QvI2T9qmUW2AHWWSlKwdRz3CaV5J2S240M7MWO1mCv+ZZQrX8B/LVESSh9q4cCJnSA7/p9Fty5aZ1948hpUk75mZqCiyYsnmK83MhMzNM84SABaOSyGfp3pJdHNOwYom+sz6qBZHcqg/kOwIFeCGfxBcwokfk5yUAFaYyVwllIfpR9t4sUcrhihXCKzNFoGk5f5+Ek0hq38UDckVi1b8GFHksZwmcx7uHsl0lSAwgsos2zBbKkWJ3B4KBQ89yzr40lpPiJzRyTkohUKho3JR2512EEnNpsv+nfnTzl+YV7/ahtq4wyFHt8n8oyRNkpSXVEEWFmo0F6nezjSR2Vkf09MeSiUvZguTY8Jzj0yorToR3iZp22rcxaId3UYj1igxG7ChNlpnRZEdAUfOB+H7YUVIUfiP+kYj4QCvPBoOqM4FysAkewPx4ogeXWJIhvXo/4nLVcrU2M4+WqeIbxsyd4i290QbwIWOyTMqbx2adSb8ZqDtwjBEf799jSkkxwtKmsKR5jy8sjaAiOsEIFJQklfqlpBwKpVSmD7wCWSG/7Bqm46kyxwkolAooL+/v/aGSt2oSOpy2t1JymTsCNzp6ahjlM3aWbnrCbXxZdfErXK5SgS56iLx51xtLABJbhlNOyI1HReQ1a+Jubka0WkEETlJ/LFYNDdR7izZ0guh+GVNOU3mpjo9bX95z8wAYWhzlajkAGAeyWEiYUZuVE9PpiKiiDCUCdtwPBbYclJJAC5oXK6TWzh5XnTYvg1RySH5dpJZEjH9/fY4xgFKob9f5hLZcBsf5m+rZNM66wyl00ZEUTiN95eStmWojdwjHmKLlgmw+L7ZP5PxRG4SkJmjxdLJzkynUSgUkNUXvGmok7QEaGeRlM1W10eankblxksCiRd340Khng9v7DbzCa/VQyaDoAmz5Pg+0N/v4+BBrzKBLTtFRBgZd8OG3cIwZCLKLvPJbMl5krlJADA4aG6q5v2wJQMomdssk0MUsvwjW2+JcpEACrchEpajbeiGTSPmzES6JVTXLyqyZVdiNRdBJDziiklWh9jspMC2bWAgeo7oYFEPAwMBuFix29hJZmmEqRU/MnyWgu8HlfCccZhoZCq5SxQ+sy4UiSdqkwUlrUBCJFeJC8Ni0b4nmYx1msIwLIumcmJ3TxrFA3ej55S70bbUist3uYAoFosYHh5udTe6BhVJS4B2DrcB1vGhGiXURkKJCyJXknIS8xJItYQT2TANnTiepOv65KQXyUGSp5KRv8FBc5OODvmPOkkUWqP1JLDy+egwfxI/fDQbYIVCX59Xdoi8sotkn3MxUipRKDAs99XmMPG+83P4fqr8yMsGRN2d6kcrJjzPlWdkH3lYyzzn25TPlgGMyDIuUG9v6HRgeAhNHqO/3yavU04WJWMDqNQwonwk6hcPn5llD75v6yaZEJoZtUbLrvwjWscFFE/wppAdFZaUFb2Bcs2kMAVvHiLDUdx6bpDlHEejoXBRTDKpDlu7UywWdXLbJqIiaQnQ7iJpZMRd80gKoloXrobqJfmo/wI6BwepmYdcvdrHCy+QWABsXR3AignzjO5fvm9uuJSMTd2iZG4SSDz3i+CJ2/yYFpOIHS1SadbQsajwpOlLNFxH4ipauiYqwAjrktn8pTjBY4RUVPRU4867IcjVMmGtSo+rtiuVKJzmPpYNtdk+kxvFw4omdSQ+3Ga2jeYvZTIppFKUjxSiWLT5SHxyWxJLVD8plQorFbkBE0qjqt3cSQJswUlykTzPuJNB4CHdBGe6aWKJ4CMTmpBr1MlmU6lUwtDQUKu70TWoSFoCtGu47S1vidZH6s0EFedATiNCo93iroH1XNTq+qDH5Sg1kSSDynU64yJVr6sOtUXFEk1DQpXGzTEoSbs6SZ5P/8JvmDaB3ooiqpNkXncKyUWfEzaMZgUT9YOElHz/eNJ+vKjhFcPJCYvOu0ahI0k9BYlLJQqjufcxYi9V3sY6OpzoV8+4UQMDNoTGk7bpvePhNhJEtvaRDbeRIOKJ23R+WkfhOhr1Zo5BIjAUI9vsMhEEpl+8j5lMCsUDd8NbcXftFzGGhsuM0QWgloMkDxJ3waih0jrZSSqVShhsugpduqhIWgK0s5N0+unmMZU/XrlTymTtuIlta9VIqotG85LiaLJ7RKLHCAkSSdWj2jIZr/xaWLdIihkZcisWzU1Tjiak4f5A9CZBAoZylsIwLNdOim7Ln1sxRG5WgL4+O8KK+ksfTS5AZmerc6M4VPLLJogD1S6TfR0llCvEBVSyaIpWr2ZHijyzISrTFxJC/f22TpLclnKSenoC9PRE6yIB5jWgZGsKqVHhSSN+PBQKYcVJSqdRmY6kt9eKIfM/Rl8jM1UJiUDrZBWLxoWiOlzkSBWLZvqbbF8aXhN+ePm+jXLJezrVTBseDABk4sVOIzF3ue3goJ0LqQxpsU7G930VSU1GRVKX065OEmCuT6npoxU1lMkMALC5SPv2me3iBFI9NC1xu+ETzP2QxIoVJezZExVHPT0ycdjWP+I5STSqngulZcvCioix5QAoBGcTsPn8d2HIayPZhOy+Pg/T0wEbvWYrbZPoIDFk8pPMc5MPRRXBqZYTT+42+0aFk13mmr/e6XZk6CyToWRq+/olPY8mOhuHKe7UcvQ1iRsbMiNniERLUHnfKExHIbNomQASUdZdstOU2HwmU6gzmsydSgWRudzsyDebsxUtKGkwwsiMdEulzLlKQQpeKoXSi/8F6TPurfr/k74OSd8DLpqcyPg5HUxOTTLP0hydLpSCINDE7SaiTtISoF1F0uCgCbEBiE2CbuTDWU8eZ2U53+RCkHw+KHHCueov348WjnRhw2zmpsiLRcpyCPzc2axxUvJ5VJwlObTfVOo2N03jMNlcJFpP4sc+twLMjnYzx6AK3HQjpv7RPY5GvlE/02kbjos6RvaYfKZ72jYZGv2XqggliXG83CHDyJE8K3xImPD9SLxIMUUiiofXTEK2Tegm8QikkE5bEUUJ3pTQfeIEKg4U5TBR8jmJUBJINlnd/k/uyeLN8XzfcyZw+z7Q29PTNDdpzjcgbrfGuUxztJs7dXJbwITbTjrppFZ3o2tQkbQEaMdw2/veZ/KR4PvghXaMaDJX7oXIC2jqhz3uYDECqRZSTG3dWsQjj6Th+2bSUc/j00rQEH+znM2GkXsCH4pPN1xXsrZps6PZZBHPMOQiKKzkIgFG7FDtI9Mf0we6wfAkclsOwDIzE92OMPtHBZVMUDfOE7+Bh1XH57hEDneHksJtAwPcUXILsYGBci8q7owROECAvj4beuMj5Hj+T08PxHO7vlRCpfI2D4tRuykREZ3HD0A53GZykCjcZ0e2RV8H43ZFc5Ro2D//KxTKo9/60vBqXFfq/a7Jz71zPx4yczlIJJbqGd0R07FOd5AI3/dVJDURFUlLgHZ0kio3RpqxljlJ/DqWcE2LpQ7tEk+9qsaV5xA3pM6B/KXqOu3TT6dic8f56XnCNb2uYcgFT1gRVHEVzU1+UhipbWSToqPJ1dQfKjHAw2M0Kk66RySgKJ+Jhv9z54MndhMk0ugmb18LtyiSVaVtu2tb/oxcoGq3hUPnjBNNdn203Y5ss22ZTKoyUa15HaIuksk/ioYkzbB9qnlkjkNujxm675WnMTGPlKQN2GRuEkVm1BrK+9pyACSS5Ii36IuXgZdOw3/23cic+2cxG80N/pkPkIrOswg0VtCVb+Ma3RFznE5O3A6CAMuXL291N7oGFUlLgHZ0koBy0vYhRJwkKr4oB7Esyoe0HoHUoAKbT6rT7KyHfN5jxQ3dP6iB6PQimQxwojyTVfHKwQAAIABJREFUhwmz2VwUnqxNSdp8YlsaFWc1K4WM7Ag2M82JDZllMiY3CbACy7pN5hwkNkhUcRFC+Ua8nb9m/P+s96PMR9QlwcNJ5rVNRRKjrXgyrkypZENqtsBkdUjNOkvRFZRzxMsAVLtKttYRDfOn55SsTTlKvm8f02mgULBuIx8JZ8sB2NeHH5NGvpm+kdNlzu/7ZkLlVIqKStohdPXUTKJNkjZN+m4YoYT4GBgf/p8UepOJe4zjGIDvm99sdJonn3xLfKfamFKppCKpyahI6nLa0UkCgJRfiF748nkga+4ucQKp0aTtxERQGtIFNE8gVXU2enh+00865Y4dRfzwh8nj1AcHURmlRs8pXMFzkLhDxAtK2olvbUJyOk1hNxJF8pzR3ChKxKb2YpFGvkXzi0g0SQPOFKy0rohL3JAQM1Tn+SQJIVcSOEHhNlfyNxdP0lWKhtT4ZLPRkBoQwvOsW0QhuDA0ZQAoZwiwidF81BoVlPR9lF0kEm9BlYtE8GRw2pZcJdf/yRO7o8ne5OKFEXfJ88zj7CzQ19NTM+Tmop6BV/y7kZo+ap9ImznuS5SUvE0d6LY7Xxl1kpqLOklLgHZ0kjIZVBc/Kv/UlEUkCZ7IXO85ZD41AGPf16NUqjpc57L4RrlOUeu0JtRmBQkN9beHtzc8OaqNL8vXiwRTOl29juZwo9eL6ixxUcCH9/PcJMA+N5WgzXZUm8k6XaYcgHkNwqpEb2qnEByvgG0qTVfn3rg+3nGj1Kh/5jG6T7S9upyA/K3hSnru6+O1kqyg41OR0Ho5ks3kFoWV949qIFnHx26X/f/Ze9cgSa7rTOy7WVmP7qrp7pmeGWAGmMGTgADMgA+AhAgQCsWGZdOOsBWyvSGFIrwRcqwbVsgbCkm75pp62OvVStbGKuQVbWtJebU/HLsmFfRSIrWItVYMSV5KooQBhgRAAoRAAtMYDB7TwPRMv+qRmdc/Tp685968mVX9qOnqrvwiZjLr5s3Mm9lVlV995zvntoxHSetETG5L2XPkQ0qseyUrclM7eZDIwG6ulwtJ8v3hKtw0nQl5wZRSaNYAVa+j/+3/Fo0H/1n+ZgwBv8/cz6eswB9FQKPsCTUs9FYUt5fp/wsL2Y+Zw4AkSbC4uLjfwzg0qEjSFGBSlSQAJq6WPtGDMATQsL7T1tftB/oY6jtuH6OSphIuRoQj3x5FFGoD8oRAHppJDcD8kh505Ami9YUFE1qThSZlMUkmOUxOZIFGF/Kc8qHtW7JK5IbWWBXKlwmw9+fju0qR8QFp57WBO7Grvb9/m18x8h9fTl5ryJIMocnrk/vlr49VIg6Fkapke5M4ey6ONWZmFLa2zFQi/T5X53bHY4pJsh9JhuDciXPN9RjyppSfDAaBRqxCKAABxxYx2sOkyJztZmDmIAmPL/TG7JEPIgusyWPIfwKrq/TvIPuRACJJC6USeoXtoCJJU4BJU5J+9Vc/S19EMp2E3cTY/htyV2nEjIWFfHpLmb9hG+tFX/wcevP5liSBYlIhLRc8z5op2EjmaAYrRgCFvgYDnd5eu5ik7UFSaY0kerB2u8DiIj2PjKdJpyTJVpNcdUkasKUCKEkTXzu/PWXqP98D+brIlC1VojhGSih2BkluXHLEZMFO87ez0gh0/+I4wMxMkhIVo9ZIEsT31VWLjIpkq09MKLkqt9YJZmZMCQAya9OSvUt8DPZWaZ1AKSJIRbWe3Cy3ODbVt4NAod9Pw4z1OpRMuUzhKsDu59MNO/s+v1mJBJmZ4J7ErWjqnpQPXOBF4j6rK6bpoJMkrTVmBXGtsDtUJGkKMIlK0vHjAFbzX1pJaMZa9IPxpkOSpR0SpCIvki977fz5CK+8UksN2/n6SDTNiM6eA/z97xpjWUVqNrU1rRUViuQ6SHa2mywYWWS0le08dlaX3Nec3SZDcLWam/VmV+F2BQA3ZCbDUTZ0WnE6P2bZ5m435Md3tSbMxuTIKCtEepLEFHdkj5Cski2PIUkQqUp21hvv76pCPkWRM9143bedzeeSlLklASj9nzPeZBkAIlxF9ZLiGKi3WpZ52/2YSGtQmUo0lDTxG9g3LYk7p44ciMQQLxKbtifiO2eHIBO+xoxb0bTCrlCRpEOOSSRJjW5qxuQntKO1h6FtWXKxk5DbyG90aegexX/kW2+1sky9YRluLnl65x2ahoSz2mR0QKpLrZbOyAj7N1gZ4gc4vzYZbTr3S5n9QmZfk9HW6wHz80bZYkJjJrY1hm16Tcdkz5NrnDaFI+1r5mrbcioSN1zl3js3Hd+FVHwkAXJDca5HqSjsxsqQLBrpkpM8KXLJkt2f52aTxSTrdX5tzNd0/dqauqTXo9Cb6Ufb+31SA2m6EgWZSSfhKmOUuWbKALByRAol9RkM6H1Zq9mVxXsv/Ddonv/t7LVLlphHMU8pEnYYpixFSQd5IvfE7uSP7n78gVpYwI31fDzxIGe2kUrorRJaYQcIgoM94bEPFUlyMGnhNgD0BOWnNa93OgiQgGZ8L/djjgW+zBl3AG4fhvwUeX5Zr6/7VSUf2I9E84vZ23iyWvnaNW3bqft0HB9hMkTF1DCStZO2tpDWMrLHQHOmmbRzrsLNxmwuB8C1kfj65a2R9wUwoTR+YBtVyTzgi5Qlhqve8PxsRdlvLoEzhRZdY3fexO0eg88pSVOjoa2xEGEy2W5MftxMNZfE+d4rNEVIvl+tpq00f1oSqaIQnK0csXlbKW3VTDJkiY+dFpEUJI8KSyqoIICq10cKe7t9+D0rly4SBAh8sVv3hwwzK/krwP0Bw/PtFMzZdtBDbf1+H0rl1ecKO0cVbpsCTBpJarUAvL1uvtA8MvhuJe8iAWhHBxoWaiv41TpKqK2o77DvuU7HZEGxigQYgzZHHyRhYrWHhmx8Rzz8rS1jAGdvEmBIEKBlSasc8THPLNqPH/YbG0l6Gw1pcn/wu+E6XkoiV4QiwskerWbTrldUPpmtQRyrrBaSnPMMyJuZ2cgtSRGVACDFT16DqzbJ8CFn+/ExOIW/SEUiBc7NcENWULLfpylJoigR90CG2micknBKP1IUKYvsetFsjlQviTFMBS4L9WYHYMJj5u0x293Po8t8hDTLai+QTxA5iOj3+6iN+gavMBIqkjQFqNVqqNVqiItSpfYDrB7xu098O+3kDbkn5m0X2/QfWVJ+iiKbxDDSJA/PzwNp0gbs1HefosST3BovkpmvrVbj+kb0MCSCZNL8+dhEkIhgxbGdCcftJmvNHhcTH7citzGOayukJa/fDceZt0nelF0UdivyIeWVI3+7D0xsXLWJfUlmPrf8eMycbfZ218gdhoEIseXHIFUkXvZ6tM5TtfiiLaboZD4EJz1JBkbtAujvyVW6w5DOqZRCC/Cat+X4y5IXhm1voO8nOwwZu/P9uup0ClkX+5BkEcmD/EDs9XoVSRoDDvJ7wodDdjl7g0ajgS0uw7zPCEMUf+FFEYDxeaisL+OyeJ6rILnO6GGeB2yvbAFvP306xvXr9hPODU/QM4EIjxwGkyLahwgPZ7nxvG08xMGAIw+sGiEXapOXMxggM0X7/nQUgiMCMBgYEkXXZhQpN7uN2/k6XRO3e+/KaiIxfGTHrpPEyyJ1iKtuFytHZhx2FpgEkyLXl8Q+JF92mzRyNxpGLZRTj2xt0bF7PfIc9Xomw21mhrxInOHGr30Ze5zhKENvbkFJPieTbRdBoKEareyGMIn3JRLwdrmUkOS+UE3yhdTkwd2dXIWJ/Y+dDvrO9wybtg+qHwkgkhQetif6PqNSkqYEzWZzIkjSZz4jJrZlJYm/+NIvNF8Cy14gR5B8kPEguV5EkIrIkifsJisMFKlKvZ4xbbsKkkSno7MHlzwtZ7RxqElrY+ZmOwYTHf5xTpW4kYWFKEPGhMcGA1P0kW+FWytJhtzsH/Z5T5F73b6Qmrxe8kvZ+/qqR+/EzO+ClbIif5JfoXFJkj02WXVbKkS+7DYWZDi0ZipzB+Bimnw+mY9Rr0MQLklwmPCYMgQcmmMPk6zXRNlv7FNKUKtRMckwpHalzPuUq28zohf/a4Tnfid3f1zS5Jq3i+oj8fsz7NCFBvBUP+Wb50uFlSUCCpSkKAJWVg7P5La9Xg/1AlWvws5QkaQpwcRluMlfgt0ucOuttC6UpL1+Y66uEonI5oJy4ZKcYV6kIb6kYV4k33aZveZXkMwpmFzQs8DOWuPtUaSy0Jrbh4fNXiStTeFGqnlk92PyOhjozGPkQoa+eDJVui4ye29smPCNmz1m7kGSU4N4m9u36NxyX1aF3PPmw23Fvic3zCYz3Owx2GZtUozyPiT5HKvXkfqOTAHJRkNnah5NNUJ1iuR4uTgkH4s8SqbYpKtwUX+7nACH3lwjtxk3kSVAZ4qga95u1GKoMMx8SWVkVYpARaIPb5cm7iDqmzdhUW2kogNKomSlihr1qNs9HESp3+9P3nf9AUdFkqYEk2LeDkMgePuKaRhmyvFgu4rBSP3LCFIZWWKpx1l/f9XQMEmAfD7TYb4MCd8UDtLHSlnNRkViFUYOcTAwihMrCWzibrd1Nk43nd81WZvjmUrd8nbVanlTt6nDlDdxu19EUi1y740pE6BFf3NeCVf9cUmSeaaYMFtR7aQk4TIAyJEQHotSKiM2bpFIrW3Vh03Zchx8XCY/FHpDFlpjQzZgKpi7BTRp3AGSJMmmKjGEiDPdWCWThm4TPlSKC0/Cqp1kQ2OQhAgBKOcPOGqI2UeKOOTGy1l5aFlIizv4VCRp6JMn6XSw2Q2yCtsSBznUBpCSNCnf9YcFFUmaEkzcrwt+EhfVOxkzks6cmTjTR35kHEtKOCOE3fqReSrLKgcMN+zmKkoys80XJeCwmJsSz5ltMrxRq5mikzxnm/vgl2qSITimKjeHZdh47cvGtsEeJ0Oair5kZMYbw624DeickXvYtCPbeTv5TN2GsNhLH8wzKcgpR3wsQ/hoXjQTgjOkyB0zhdpkDSVbgQoCWFOTBIGseWTUp1pNiylJ5HaVqna+Wko+gmTAIbdWKz1Wq2UZxty/qSx4KkNvMgTHpMj3t0vCBqlJXAODSZEkP5Jtu2/MhYXsR4z8fAJ0qLffzp/zIKLf76N12Ir67DMqkjQlmCiSxBMkuVICgKQ1C9d6MFb4SJGUQ7ZJkKh/PprornPdJJcgRZHKPpQ+sYrNzeyd4VCbezlyrjbfJfODirPKpOJDviWV1ShqtVSmFDFZ2tribXm/kE8RMqEwUjHc0BiHfGQoiI8jjz9KDSHeN1/viPf1t/tgPjYqpzL5/Um8zTZrKxWAJpL1FZjkpcLmpvQhEep1IEls0sPnnpkB+n1thdrkklQkUz6ACZcv0dWQJX/YUWuNwYC8SPz3I2+SwmyY30cSdh9Rll8BLqSK5H3mW2GzyFaXACOrShUpBYfYOKuNx3rQVSQAGAwG1ZQkY0BFkqYAkyLBBkjsX4GssQu2UJZ0th2wB2koFhb8+b+jkiJepuu+rLZRQm1nz8bY2Ai81y49qPI1PXyINJkHEc8RZopHAnZWF43FlAMAOCwn6yfRPG/Gp6QwGJg0c07jJ5hsNjlPGx8XMCZuNgjL22eKSuavvcyHZIhU3utUZLbOh9vsTC7aVuZPco3ahkCZPjwucxz2FOW3yZAbK0Yc8rKPSSE3jU5HZVXKaSy+8JlREm2YkBuTKLkv1U5K0jGTP0lr8iTJhACpLul6A6rVsriKzyJURGqHkSJqT9UkH+ROBSpS0pq1NjFROiwqEkAk6ejRo/s9jEOFSkmaEkyUkgQUepECJIDfVj0UQ4vQDQN7HFhOcc0yLjnytA8LtY1i2i6D9G34PrgU9eBaR9r6Ne+m+fP9kkmPJtONvEaU+m+rR82msogPH4tN3UUwwmFi3V4eDwAMBubBz+ZvRq2W5EiUb0qSYXWP+LVbmRrIh9nkNl/SEBPBInWpTEFSKrDIXb1uql7zvZmdJTLE6pI0avP4fCUIZOiNlybkJud1g5jPLbG8U1oTQbIrcNtKk6zK7WYc8vuIo1/y94R8PxaRIu4rlwDM59SXNgqYkFzBk82tjXSTI/1jxWAwQKdwLpcKO0FFkqYEk6IkeWNMI8k92z/NUBR5kWQqFx/MLUjE8KhK7owr7ph8/NCXqCP/ySG22+ZhxNW23eeG77JkOQD7IUVPZiZBvA/XUuJ523ibDAVxXaNm0yhORLTyfiRfgUj5UOZzSpisK/vaJHkZ10OOxmsyvfKkyp6upNGws9+kL4i387Y8YZLH0V4fEofc3HAh10JqtYDNTTNvm5m/jcoHuO2sJklyxWZtQPqa7HT/wYCurd/n7DcTfgte+q+QPPB/gVP7XRRltvnM2wwmMrRPAw04HyD3l4ObltlqYbMboLtq3isy5HZYQm0Azd125MiR/R7GoUJFkqYEE6Ukyacuo+BJN443J5+q4Z7AF2pzf+oWhdpgujPkfFAuafKF33jONt81m5lbtPUaMBlpvF+ABK1WAAWdObL11hZUqwU9GECHjYzAmOrYxRW0eUxuLaStLXo4SnLkKju+MgGyLEBRhpvcJo9ZFHLzFYssylBz5zyTHw0mBr6PS1l/V0GSZm3fdUjQnGi8H09BYvuQAEnSKMXfTEtiwnO0XVuKkYHOjZOUIGPgjmM6npzHTfblkhJcS4u393pAo9mEarez/mWhN5+iKbe5qqdE0ppNFWf48/YXFrx+R4BqIrkVtg8T4jhGW/wNKuweFUmaEkwUSXKllO3Em3YI9idZpygiSMOM2z5VqdWyKvj6lKSitjKvhhwaTyFS5FkCgLruAQgRdDehfU+mWg1B1EcSNtLUcW0RFFZyOMQ2GNgma0nG+DZpneTa3Mw7GYbzPb9cIlFEjIgQ2YTA7e8qLa6/yG2PY5XzGQ0LszF89ZMksajX7W1kpjbXYKZuMeqS60NiFadWM6SIx1mU3WZCiiozdpNSaJOnOM6HyVhhAuzUf+lJKgOHXn1GbSY/PvHYVZNkFmUUGXE3+4EwREVKwga6UQPdVbtKAP9o4fpI3/nO4VCRACJJc3Nz+z2MQ4eKJE0BJirc5lu/iadeXaXv1ga/U1wFSc7c6uYlF6X9pwTJ/TLmL2KXIEkxzUcWzBQRpj0M3QKShpA00AcQ0iMwPaDqduk1nywMswqPbICNa/U0m83+RS/H12oBq6vGvyLVIxqHSu9rkrX5DNhFqhFn0fkglaiidH8gH6bbDZpNW5lhQmIM3vmUeFtdoiUrQDyvm9vPLiJp4CpWs7OBZdKWKlOvR8SIs9k6HcqQazSIHDHId4Qs9NZoBGLy2/y1BoH0UBmvFLUZs74LJb5n+P3kVvvgbQzX2seESIaRJWjfAGHYSN/3BklnzvzoiPL7HWYVCahI0jhQKUlTgokhSYxdkCVPVi8A+408konbTfsvUop8BEn+3C1J+y9q4y9yXz95WKp9ZwiT9B6FIXCkHdt1X4RTW3OoLYqAWg3aiWPoZhNB1KfQSdjIVAjXMyQtWfy6VjPZbL5CkXwaN8PNN0GtD74vpVGy3GSWmSE3dl9/2Mzf17cfgFyxyMHA1D0qglSQEtHVFI002+p1bRWa5H68HxMnMnZrS0WisZqQm2+6EldRovILtpmbvVNcK4kqb/NYASKLMJ6kZhNIkkxJKjJk+/IgbN+Rvc2nIvEx+McJkyKXiMkfKnwerq4dRYdLRQIqkjQOVCRpSjDR4bY9OqTvjTz08Fx6WhoofKE2OfumiX9lh3G/hHmdt60KyZ/JkTSRyrH7+Gy7ra2QUi5S2I2g19ZMKpEcGCtI/JpLcYtc/SDqoxHW0I+C3GS1rjIkQ2pbW2byVPf+y4e2L1lQ1jyisI8J23Fft3YSt7nrvuKSRePyhdTcmkpJYkiP76PjZsHJda05XGkMz7IfkSJjkGYVTPqSODzJ95CJFJMiec6irDZJimo1Uq18ITf5mvxJtkIkpykBgCii8KRUm/p9oDEDM6svDLlxC0gCNilyczekigQMz+6X52PyI6uL8Md7ZcVefve7h4sgAUSSFsaQCDPNqEjSlGCilSTf6zGeTq5b87j5jNsuUXK3A9js0hGkhO/6H3jdt3QTcsxwisNQ8/MacUzqUmZiZci8f5l/LZkHmYls9lKroREmaSFJc5mc9SYv2xcucV9T+QBDciTZckNsZVWyXSLEkOnzw8zRw8AfD7eiNZ3fhNlkGK4IkhxyiM4UjpQEKD2q0tm2zU1tlQLo9UxYzq2L5JI9ft1uG2M3L2XordWiQqEckuNCk0RUeUzKCa0RWEW0YRvJWCV11aQiwiS3ra8Dx4+b9jAk4sOir/v8l8Ug3bAckyEZXuOMtsOKOI6rOkl7jIokTQkmVknaJopCbWVgD5J76kTWY5KGCCBPLHxht06HjtEtJkiMIoIkQ24AEyOV1qkx04i4YbYM7gHSMbKqpDm0trZG28mNDZ0eVPMTjaSjtE89Vz+JyRKTHqnS0BCMCuR6hzhjTvaXcL+AfG8PX7FIX78ylcm061zfMsiPjnssJhOsrADFU5gwYXLHZfuUbJVnfp6IkzyuUb1o2WopbG4mVrabm5XmZru5oTg6nltxW2fXx+9HqZbJfbNVnSdVOcM1SszYoM+rLHsht7kEx92PPw6yOCVgyNLKCvW5dOnwqUgAkCRJpSSNARVJmgJMFEnaA/getsMgjdJyvSF1fWnaZvA3sTsDZwr5K9UlQb42Nxxn2myztg/y+68+2LAVoyiCXl83E43Kn/RyCdjSjSBLutHIlKkwVN4wJpcL4HEXKURuhpsMt7mp/vJvqbX2EK38vfARorIQmjsu//5SBcqfM19t267YTcfPh9kkoeD+xpdERSUpVAZnm0146nWdbWu17NCb75rckJqEzWc4nGvqJ8ltJiQn2+R+QD8JESSJFT52w2Fy26i+I/kbQKpMQLGSJEPcsmjkYSZIAClJi4uL+z2MQ4VKSZoSTGS4zffOW1kBWie9u4yqIrF070ORquTNWnPLBDMKCFJRmwy5+ba5+/Mp+J9EjhwyuRGyj+ZQmuwjl1wICTAKEofe0n66VgOgspCJNNzyGAYDnWvjdbk0w0hKiZM//X+H8bMxw2f69oXiDGkJMuMzXx+l/du+JDoOUK8HWdYbn4sz2rgKtzm/Xf+IFUgAmJmhLDYuIEkhuCSb3oRDbvlQJiuaSaoaBdn0JEqRL4n6ESGU8wcyOIws/9aSAEnFyPUdyfcFEy3eR0J+PlglYu8fv2/5n6+k0mFDkiQ4duzYfg/jUCEIdjmTwwSiIkkeTAxJuslepLJhrK+nX7L8hHfzlaWfh5F+K29GjSzF2Kck+ciTz9AtX/ODyv1AyqraAGW0MfT6OmlPPsUoHb+W3iPOdgNsZiN9Sul7pREm6A1UNib5IA9Des1vq60tWyHiedqGQSofZWn8knC5RRplm2+fIPCbv+1ssPx4ytpcULVteW7Xi2R8RoljIaPUfOrYrGv004KNbjFJv2nbzmibmaHwHC9pDL6sNrnOZCmx+tiww3f541IfNTOD7lW+B0YZcr1srmIkfUeArRi5PyCkOsUhNiZgkmC9/bZRkZisvfnm4VWRAPqbVNlte4tKSZoSTHS4LWMrhLlOgtVVeuLslkPxoX3GbVZHGh0UV9WWWW0pNiNzL/nXaRlBkvND8XqRokTIh93MgyGvEGnnNTMWLWeNlRedzk+iBwPjT5KMoNcTUkk9raFk0vpdf9H6er6YpITvC8atb+TWCnL7yefxTszZoxAd/37au2+SqCz7jc3exp8kC0LamWG1mraKRUrCpFJVycoKFGQJyFf45mWnQybtsuw2N2Tm807ZoTadXpftQeKq2xJbWypLbHM+ztlng1UhGUYrUowkMSoLsfEPiCgiUuQqSXwe4PATJICUpKri9t6jIklTgIkiSWXMJ303LiyYL0P+wh0lK8UXxXOjTYBNSrjOUCNM8vMhOASJ67K4xMcdnyRPvCzyJLklACTyafWwWZa4OC0vSvqRfNltzHbEE0tL83b6fvH5kdzQmi905vMoFWW2uddq6iHliZM0cEv4VB9fWQD5Wl6bv42VHLt4JH+UmBz5tsl1uxAjEAQKSaKh4gFUypJUHEOHIXS/D5XuENbS96WKEQc0QCaVfM5m0xSj9JEfyX9dD1LRksN1pL7ljdj2e8JvBHfDs+5nWGarGfXRryS5YTIfMWJyJCt6rKwYpen69ekgSMAERQ0OCSZFSVJKfRLAPwVQA/B/aq3/l50eawIuZ/IwkR+cITIR/7IcxUswypu4TFUCiCw1ALvAijAwSYIkjynHKCtuu0pSGbEyITdWkaSaRGqGd3LvKAK4PpLvoqSCBBSH2KQfSZCloFZDgiCnHklyxA/Uoiw2l4D4/Es7UQx9Co9LEOgcfnOzvX/e5C3XORzmm6JEEiM2bLv9AiRIIhNPVJKxpLFA3TfVo3UcE3ESspOKBmg0aFCNOtBNbWV879yMNlaXWi0uBUAFKPk1+5FMdW6bMEmPmKy6Lfu4/RTMW02GxSRp8mWrFXmPfAZw9h6xksSIIuDyZfODhH8XTANBAoAoiqCUykh2hb3BJJAkpVQNwP8O4IcAXAbwjFLqy1rrb+/keBVJ8mCilKQ9wrAMN1f2B0x/aeCWwlEf5DVqhEk2kSbVQWpYX96SuMk2KffLtiJSBNCvYfoQ6myKD4KbNWXGr6PIZLHJi3Oz3Xg9JUKapQgfWZLKUhxDp++ZAAnC0J4iRZYD4EO4kETKt42GbJMT6R2yPUf2Uq7LKtu7RRybUJL8yPiy33zXnJ/LDVlMTWmd/doXkhAte71sXRIjnd4QVpyCQR+JuDGuaZvIdN6PVFZtm/qZed7sfgpIsx1ZUfN5kewlochnJPk6YIiOq6j6vEduu6skMTHi6Uc2NqaDIAHAYDBAUFR/osKOMQkkCcDHALyqtf4eACilPg/ghwFUJGmvEAQB6vVD49sDAAAgAElEQVQ6Bns5ydVeYA/ffaOG2tywmyRL7GPY7AZotUyhSKCcILlhtSiiX7zuNt8+wyCfSY1o07Rfu2ZiOexPunYNqtUyfiTe5qhGOp1fREu/ksx0E3Wj4pqRRVw1SPIqX9YbQ05HYsJuSa6idq1mrndnb9U8icl7mMpVo3yxxPJ+PrKkVAAMSOpJPEw+Iz9xDC2NSf0+AgAJ/13DEOj3oeUNTfflByKTHeNLKiNy/vCYW3XbmLjtfe3aSDIrTmf/y7eeDKkxaQLy/qNRw2wAESOgOMTG54/j6SFIANDv9yuSNAZMCEm6DcAb4vVlAI/t9GD7fzkTikajMVkkSfpl1tf9U4OX7DpqiEZmsvkI0sqKycBxq2C7X+5FZmy59LWVLeXxAQ5vmH+lH9CiVH9HVdKuauRL+eeLb7dpPSvpXM+F1sw9SnLhM6607YKP4b4F0/qW6VDsKtplf2MfmfHdK6+vq6TPdrPaqBJ3qhb5Ih1FDB0gAuQQXQDmJrMK1esZopQus3BiAPSdkJutEtkZcS5GM7Ln1SMqA0CG/kzp29zE6mp+mhEGkyBXNeL2lZViNYnDbLKdQ2xWtiqmjyABQK/XQzgBT/PDiNysBnuP40qpC+L157TWnxvXyap3SQEajQY2Njb2exj0TbaLuQF89ZJcFck3wa37rGKO5tuHs2Pkr9kyMuSG3Hz9XQXp8mX7tf2rXGFhIc8bszDbYGATIHEh2iVLfPBt+pH4+PwFsbGlsl19oUB/FltxOM3dn0/pthdlvplzlB97O7AT/fKKjFJmahLXd1SrwYQzYdQiCz5pE7DJEgAEAXQUQTusRsexYWJhkGXE+SDnVqMQXJLVSeIl1U8qMsMrxHECE3YzqtNgoBCGXPfJeJh0Wn/LJf5Mgsra3TZuLwuzuXPAvf02MDMzfQQJALrdbkWSxgGe1Xu8WNFaP1qy/U0AZ8Tr29O2HaF6lxRgIs3bDJZuFhbs6UK2CUmWfD/go8j4kWRf/hW6smJKJMkvdF73kSE3DDdsm1wytrbkwwjodMz6/Lw2ZkytKcwmL8xVjnwXn5IirTWRrCFkKbdvus0XbqP7Z3uUAHuqEgbPWyaPJU8pVQ1fm9bFZEiG6ui1PxxmVLFyf1H++PbxSpWmKMoIg4IgrilUkpgwG/uGoijzLLFqFHS7mQeJSRQfK0hJrY5jaG0+M9KnxCG4YaD53Pg9aGB7wFzzNqHbVWkxSY1/9gf/BwA7rOZ+lpgEyc+TbOcwNaMszMbrfJyjR6eTIAEUbqv7Mgsq7A43hyQNwzMAPqCUugtEjn4MwI/v9GAVSSrAxJq35dNyfR1YoIqxvvdlWdXtIk+SnFiTwaE2rvorZyThYfiIklz62lyixB4lqSJJY6l9+ZxhpDIjt4TW2i4cCeS9Rx7Ttk7jdlxU0pqvTTqvBSHS7bbNRqIIYUhfwGtrPG0JcpAepSK4XKyoJEARir1G5tiyNpELf2mAPGEa5lOS2zNFRylLTQJAJnj2jDlvai1nlZVtbsVJoSCpOCbFL44ztcpk9xnlaH3dVnrkddp+It6XzNuGyNL70e1HKpLf08TvaRlWY7A/yf2BUESOjh833j5+y3Ibh9lkraUzZ6aXIAFEkib2O/4gYwJIktY6Ukr9dwD+X1AJgN/RWn9rp8erSFIBJkZJkilnHPNy0tDc9+R2aiX5Qm0MJkVy8kt3HyZIo4bVioiSWzhStq+uAoNBF0At9eN08bM/u4Hf+R2ncl4KrbUdF5ehNLdvt2tKUUrTNqtJYWiCJ0yqHEKUGcEbjWw9bIbg6Sh8qf5lsIng7lOUZUabnbnF20cPv8kQG73evrHbCq3xujuAOLbapGE7I1HSGM19PdluuXOkobf2DLCVlgaQkTqusC1DcOY6bMJDS0OOqEimW407rzhpTQT6yJEg9wOgLKw2ikGb26T/KIrM98K0EySASNLEfMcfJkwASaJh6KcBPL0Xx6pIUgEm6ldGkSQUhgjWb2BhYS4XIvNFktyHtONXtirv+pQkXnfntnWVJF/6/6iKEmATJfuhsCGWG+h2j2NmRkNrnhuLts51ktxFaPk6SudvYxXJjWU57moN42/iTLdcuM6VfJpAGJrMNZ56RPqRSL1QWbvsZ2C/rtU04tgmTlonqNWUe8m5fcvg8xbJcY1eedtfdVseV1qDOMwGD3GywmzphSmkobR+P2M2WRsMMco8S7J+UhhCxzGCXg96djbtK8PVJvSW+fA9BTddtcguB2CWPAmuDbvf2lpC2X3Iq0RutpuEVI749sg2Vo041AZU5Eii3+9jhsueV9hbTABJ2ktUJKkAE/Erg78l2bXsbksxqjpR1s9HnuS6zGrzESSZaeOSHv4ilyGCoj5M8JggkYIksQFDlvIEyYWWJ+E2U6baf/F8QMePpF2fkpQfoiirlaRnZ7OQUhgqybf4UCLrzRh5Xbhkw0T77H1IXdteGI72H77PsNCZmTLFZK35+idJgJpKFSAmRu54WCEShSIzSBKVOCohYP4WqdIXxLGpkcTESSpTWWmArKVgKcNt+XCaGD2K/gZxnP+bETayNqWOWOQIINJTFG5j5chtY3IkFaXVVeCjH60IkkS/38fs7Ox+D+PwYUKUpL1ERZIKMDFKkiySwnDlIU+zxChhHlccKQq1sdokM2VcBahMSSojShxaY5JEBElmGPLrdSwtfRbA/5a2yyePSk2znlRxVpBkuyRF8mbImkg+spR+wfqMxi6K/Ei+B66vjX1IMv1/FJT5kcrG5T/WcOP2SEUknTBaphoplZ9XDx5fUkpUAdhkyQm32ZltKXHa3ERS8Ll2FaR2O8D6uqm4TRluOst0KyJEct42M0VLnoAFcR/mvd2G1qam12AA1Ouz1mdFqkx8S1g5kuQIMCbtlRXgh36oIkc+DAaDiiSNAxVJmh5MhJLEYNc0YD/Zhrh+mcTIX5e+Pu5hXP8RYIgRkyI3k20U87ZPNWKjtgwd5BUkfph0AawDuJG+5oeO8KFYXpGsMVeUx3X7ZOUCXNLEbW4RpvTGJVwGoCj8loKVIHrA2oeWYGWJ/UzbhS88tBOVaSfnHWriHti+Ix1FNmEqUZC0x5ytIApJpmUAVBQhEVlLFlmCfSdom50dOjsbYHPTjMl4uMruYd60nQ+16bTuaEJESinQ+3gO9g8BAJjDYGBIkyRMkiDJCtqATY5+5EcqclSGwWCAI0eO7PcwDh8qkjQ9mAQl6amf+Rl89jd+g15IsxAbuNNKdPLZLN+fo5ZY4rmi+KHN5EqeiocgJ5zl7W7KP0Dr8pewJED8mhUj2W6OseFZsor0fwPgFHmF1VWq6ZgDO2TTdctPhPxjL+l2je+IIRSkTGECqDIiv5Y3TuzX03XvdCSO5Qnr6/mq2+4cai4GA+Nnci66dD8fRqmaPRgEIpw2XFXibUIfyqpp+5Q3izB5XORBkiBxTUEi5JmRqDjOTVmSCyuKTDeZ4ba5aRMxlyDJ4zQaNLdbPgSX38dXCuDTv/hJEOF3MQfzI4BeG8LEqtsRXL2apK9jzMy0MnL0Ez9RkaNRkCQJOt4JHivsChVJmh5MAknKsLBgfjbKVLTMbX3Mel8ywSlL/+fd3XbXi8RhN8DMs8a1kQDbZC2Jkjy2T0Eqat/akiG2PEGSGAzk1A/KflgJxpbLEZOEJoooDd1zM7RbI4mXst1TUDJ7yAd1a1eJYan/eQO3D8V9ivxGww3YwwlTkVLk226BiUmrhSQt1OoNp7nZg7zNqaxtHddlIlGUtQVxjMStosn1lnpdxA3zmRo1BCqLQvKSCkra6pF9DHrdaiWg9/Ic7Pd0By5BMq/jrE3rVfG6ja2tLpaWfjo/yAqFiOO4IknjQkWSpgMTE24LQ8NS+MkqU1YAzLYSRJ0gK/zI/GAUHxIf1s1wkwoSn1LyM65pxGE2nw9JrrsKkiRGHG7b2pKGmw3QA6IGQ5A2sLT05azHK6/8NI4e/UyaeWdTIX7FWW1MeHKEybkZljmbj+W+F1jBkH3Y38ChOQdhyFNTGJQRFjsUt7twmU3I9ib05jeaG+9UhqI3oUc1ygo/hiGpTkLxsc4t25isyDankCQPSrtlBcS6QlKYvQbYHn273pHvfrrtNlmi05ZV83cN8IYgAaY46tLSPyo5RoUyRFFUhdvGgUpJmh5MlJIE2LEzl83A1EFxw2uux9t9/9phH5uHSbRapsK2VJcYvirbQD6zTRqzZbjNEKR30+UNGAUpgP0L24WhRFqDlKHIk9ovegMgE7d3ArGULAGWT8mahoTDbSVfCHz6a9eSdOJH7SVGrhoj53vL9x21ptFwMjQso4765DsNS4qjqtJpcUZfTSQXvjCbb90XNpMVuOv1XMp/Nmb2NqWv1dqaMN/nw4hyUtuyeVAbDU7/L/Yu8bBpihadVtzOK0SmLRGvjWIEXMPS0meKB1NhZCRJgvn5+f0exuFDRZKmBxOlJN15p2EoDFEWW05Nsp0MN8dCY62zkiSLRvJSFo+UniQuA1BEkHwqUhQBa2sDEBniB4JLiIgwLS39Se666CGpsL4OWN95RR9Wj6k6Z9oWTMGnLHmP58mEUw2+HpV7vq+uloe17ClDiCewD2m7WW7F2W0e5SfXR44j33+k+kms9vjecEXEyLedlSbA+JPkMR2yFcQxGevjuDg71EEQ2AQpvYDSpUfYytaVyqtOYS1BuZJEWFr6wtA+FXaGKIowNze338M4fKhI0vRgYkgSQKE1GUeT6HYRhCGA2RzRkXWMWPSQ9hnZV0KqSjK1WB5Thtl8xKhMSZKvadoOfmC8C0OUNgC8k637CBJdPtVKiiLxdEoLQCph3NZra0Y1kjeDTdxlN4TT/ms1MnaLytrsSWItK5HTl4j7OQpsH5LxWqVD2HE9pOEo8zaV9y8iTJn64juACKOpMETiMc/lqmW77abEtWkXGYmF1bZZFZRtrEYF9rX54F6Oz7Qt6yrJdoDUpE//fBuski4tfbv0fBXGgyRJsODOiF1h96hI0vRgUsJtT/3kT+Kzv/VbJrQmn7hCWeKaRhyFk3OtSaID+IkSYJuxXSWJM+BkSA7IV9mWRSWLiBH7kGj6BlaN3hLr0qQti0fm8fzzP42Fhd9Ep0NZbqwmqYUFaD6xNJu4JQJkGI4Vpawh/0TUkSkaKed6B687D+8ijJ7qP7qBu7g4pE24xgGt7VAiTwuTbCPc5st6U0qZrDg5NYlbWRuCkvh8RylxUltbSNJKy/lpTQLnSGbdnb9NJk6ySuQnTPRWkCHVihjtP+I4xtGjR/d7GIcPWhdnDB1QVCSpAJNCkiz4KjsuLKRMyFZ6yoQRt60o1V+G0nx1kop8SIA/ky1feZsJkHx45jPblpaeGXJjjB37+nVgrlMcHpPG7eyx5RCl7GnvhtIaDfNLqahGUnYgP2EpT/UvtJWXYvR6SFLRSLxDHK0K92j92TSfoewXZkGRSWtfjyfJIqNBQP08s7tbCpRzHtcczoUk220qINluK0vlK8+AczdqNBom1NZsJiOV5agwXlQkaUyolKTpwSSF2/pRgMbttwOvvpr3JaUTq/kKQAJeq4wFn6rEBImPw0oU+458RMn1I5X5kgBA6zXYKhJgiNE72E44otuVD2uFG+uBmb8thZccuXDVJVkbSal82j+/R4q+FNKbxqRidZXGpFQ+y808p+3RdbtF9ZB2hmEkyCVxwyptFxGm7K/RbkNzur/c0eclkhjmT0rPpZLEnDe9r6rbhWaixBdUEPZzUX57irxJ/n5KJQgCU6ai2UzQbid4772yc1S4GUiSBMeOHdvvYRw+VCRpejBxSlKnU1wdMorQ6TQycgOYEBj7u10yVBR+4/2YIEmfs09BYoIEGKIkl9zO+9P0CzEMQZIhNkASpFGxtZVgfT3AwoJjkE6f4BqA6nSgC37Cu/qN34YzRGFxFCXNptAogvsxc0M3YqgF8J07H0LLV3we5Zi7r+ztbfNkE1pnlyExXwZdyf5aZrCJPq4ipLU2bbVartq2Fv0AoFmL0Y1MEoRr4HYVpfz489tkZlySAMvLl3J9Ktx8JEmCxcXF/R7G4cMhJEklya3TjUlSkv7O33kKm5g1viRXTQJyBIkxzItUpCRFkZ3R5s7PNqpRe2XF/DOVgzm9/wZIRWIPkiRIo5taX3jhZ9I1nf3TWtMae5CcfSz/S9rX/XBnQRKf631YDHNErK/zPGA7NWSXqRmjHNfezl4b23NjH3OkjDYOnxX98/RVqW8oVxuJtytlG7LTf14S5vjQFE+qW1B7SWK0DDdzeNmeJ8BmP0r9rzAJqCpujxHy+3Ic/24yKiWpABOnJAFmRkt2VLvuavhDbe78a3Ibb5fqkQzNcX85dQkbr/l1WaiNyVKeIMXwG7SZIG3vF/f6usbqqsL8PGW7ATBPMDk1SdEB3FCbqLDphol0s0n6i+zLh0nN37YJebSPmW8Kk2GgsgC7wyg+JOqXrcnW8n0APxMvCrEVfQmW1EqSWW1ZmzO5beEx5HocIygoipT38LsZbLk9rP3qdZ3WSaowCdBao+2dy6jCrnAIlaSKJBVgkpQkgN53N8JjmMPbXiVJwpcE1+3mQ2jMt4B8dW3XkyTDa0VTjhT5kYggyfAar19JlxswRSRXsLTE66Nja0unn08358yE0+iZlqYbaZ0jBznPjDNfm0sNaF4uRTPLu+ZvAXe6Dirb439gGnJkHrIq43zl5uFibKdzcd9hITbpX9IFdZwMz7LJSa7PdgpL8nqJt8lL69jXtL4OnWa8jYKi8FoUiew7bWokhSG1X7v22sjnqDA+JGmWZN1j8K+wS1QkaXpQr9dJ3t/e02j8OH7cniCt20XSmfOG2hiuSinrJvF2wFaSmBDJ1H+g2Je0PYK0Dqoq7GayrWA7XiSJCxd+BseP/69YX9dYXBR/N1+4zVGUcvOHbeNvvpP3h1ss0gWF4OQ5tn2Kkv339v1c6IPyeIp83iK33fUNyaXs4/UpOSqQjmOr6nruONIXlV2DJKJFITcXRSE2Pg4pSaNVSq8wbkRRBKVULoGiwh7gEJKkypNUAKXURIXc/t7fe4pITKdj0v6jCOh0spo0Ej6FSG6TqhJgh9WkF0kuXSLkhtVc/5EhSJIccXiN/Ufvpv+IIC0t7Ywk0bVoRBGwsqKpCjk/udLiSdbDdYQKj4WOHpd1jsxihvmEduNNGuX4Ozhiqri5Kpbfs1SA1DsUtFrGR+Rmr/E/33ZxQu0c0+o7pC07lv9CrW1FBMklxZR9aLaLA0JroyK12xVDmhQMBoPCsGqFXYJJUuVJmg40Gg302PA5IbiyOovTrZThdDrZm8ZVhTjExkuGb52XcqoRbitTjqQfCTDrtv+IVaR157X0IG0BeA9LS7t7kLz9doKFhQDz8wqrqxoLC8foV8D16yYupHWWGcVhOJbWOHyWgR+UMvVfwkeURDhvb1DuedkOajUZDtKivWyf/Dm7XYV2Oxm6rzjZ6IPkKUXCEImce2UYyQEQJAmSsodfWVhu2zBk1FbTzD1mgtRoaNy48foenLPCXqDX66E2qumvwvZQKUnThUlSkgDgF3/xKfOCMzNaLSQI5FRuAGwCJImRG2pzidIoSpLMXOMikX6Dto8gsXq0AVKPtgC8tWuCBAAvvvhz1tQdWmvoMITm9O/0tWvk1vST3+xTcHwdRdlcbnwWb18+LoBu0Mr15HpJ2fm2SaiMelG2/3ZUJdO3PLutfF+FJPtX2Du9h4WZbnLUJX2s/qly5IbPZAjNDaNJpagoA9I6h5ZhUC3fQsKLxcdMMj8Sbd+9ub7C3qHb7VYkaZyolKTpwaSZtwEiMVdwDKc7NyzTdkH5pNy0JL4wnAy1lb3mKUmKygFQDSTpP1oX60yQ3H9dLC3t3RfW+nqC1dUA7XaqE8mnWRiaekmOzOYzcWdKk3RP83b50E2XCkJ1Ync88iKT3ItJq0wd52PnPRPFj/FyomUrHmOzYsh74vEk5bun4/J4g+S6z3+kYAy4shhRdl4uLBnH2TQyueN4/obFPiSzdAmSP8uN/74JtP4eKkwOer1eZdoeFyolabowaUoSo9sFNkMzgzU/j93JaLkvQ6b/c4isKOTmEqAiX9K1awm0XoNdQZsJkvQjueRoBUAXQH/7N6AEX/3qz2Ew0GnhSqMUZcuyjDYPMkWiTFpJf+HktkaRNQkwH8aFmzGYnXubCpP0D5UNt+ywYaitf0Uq07bgUYQKr23ISXIT3JZhO4MtO2fWnKdwWpsyDC5ZUkpbGX8VJgMVSRojDqEnqSJJJZhEJenXfo0M3KurwGbUQB9E5Nx51zj8xg9fVpWkUbtMMQLKjdoAESSTjeYatH3eIyZHK1nfvVSRGFQVWWNlRZNpJgxpySFKDrs5KCNE1ras0enn/QBbgR9IJUIewq9GyP139rDNZ12VH6ss3Far6eyfS8bKhSzRqaywZFkYjttGJT4FIbTtE09va0E/oyoxwSwq9VBh/9Dv9yfyu/1Q4BCSpCrcVoJJVZKY4IShPVOJVJIk4XHb3LR+t79vKaca2dpiQ+0GgBqMUgTYJEluY4LEnqQYS0tGDdtLfPnLP4cf//Ffx/y8Qq82g+Z8umF1lchRKrvplDxlIZq0muOwwBWH4YoojYIM23DkR1tqkV+dyL+WITo3HLc7iFDTDo7n1nOy10rO6juX88WX9XCKQPr8Yhp2uI6Lf1qaj9hfHt8XbrP6pcuNDakUEfp9uyZSHJvX5EciMqlUFWqbNFQkaYyowm3ThUklSf/8nxsDN6s6TJoAuxgk25ZkSI7783IUJYn/2QSJpxbxqUgbMFOOuATpubERJMbqqsZgQCUBdK1mHrD8pOt0wAZrlX5hasAoT/CH59INuYdqmQHYVVvcEJznBNZRdhTissJk2zeHj4pazfyTv/a0/Af3igA1O2vumzVacQVW+DDd4puORNzgka6y6IbKv6HwJJXfP5tscnabUpWKNKkYDAaY2Ubx0ArbRKUkTQ8m+ddGtwu8/DJw550mHZ/bWy0iT7z0+ZSkksRq0zAf0tZWF6QOMTlyVSRJkNwUfyZIW1haenJP74UPb70V47bbQiwspA84fpKn6pHihyxPIZJW19agh50SWXDalwmzE8MP+Pns75NvLleZituGo3iYeSVr1yjLTttNOj7vO4oTfdiFeLZvbCSecKXpKtUkuZ3RbH53+Lgq3HT0+30cOXJkv4dxOFEpSdOFSVWSAOBf/sunsL4OvPgivSdXV8tDZr5Uf7kclvY/GHRhK0eAPVFtGUF6L932LJaWju/+4kfAxYufwupq6kti2YZLXXc6RHxShSmbn02QIVkWIGur1SzCNJo64+okowTzdoph5xhlDGX77GT/EvgI0i5+MWZKoVCDtHwNM3J5BUkqt/YVmXk51d/3593a8l2//VqpBM1mlfY/qRgMBtW8beNC5UmaLkyykgQAv//7T+GHf/izeP11mq1EqkOS/HCaOa8P8x8VEyTAkB8g70XyESQOuT2HpaUf3JsLHxGXL8dot6m45Nz8vNlw/ToA5JUkiSgyipKDXEgIaakA5B/C/KDdTtq9T70wZ7BHsB2lx3/csj7F2/JhKUAPuUatdW4KmFyfonbfFCY8BnFzS/1GBZ4kRzsDAMQxLZPET4h4334/QRxTmE1rjSBIEIa6UpEmGFEUocNJHBX2FodQSapIUgkmWUliSFLU6eRJENc18hm6Zc0jWWGbl0SOgHKCtO5sc1P8u9gPggQAf/EXn8Itt/xjnD4NxFohkKYgDr2xiVt8sGW4jdUIpZRFhizUanZquqfidrENhhrtmkjbCasVjWq7atEeFE+SxKRg3T0rgELi5J27bZvxv2RbP3R0ancyBGm7ZnmldFZIssJkIo7jiiSNCxVJmi5MupIEAF/96lN47LHPAjBeIyZK7jQi0ncE2ISJt9vqEVCsHDFBktvJc2RCcCtYWroFwA/u9WWPjFdfTXD6dID5eUA3m1CZyxhAu00EiT1LAKC1XRQSMGqTpilNXI+SBui4WcMwk29+++ihu+J2W+kpOm8RGSoe2ziQbG7ukeFpBLjn8Z03CBBH/nuotcbGhgmzsRfJLTipFLUfOfLqXo28whgQx3HlSRonDhlJqjxJJTgIShIA/OVfkj9JThcC2KqQS5x4+hFZL4mX2ydIxpSdJ0j7ixdf/PuZNylpzkA3m/Rwm58305WIVLPsURiGNKUJh9u4j1RIUo9ScONGPjMre5338djZbv69fH2HZ7mN4hkqP0eut5VdtneepGB2dvTOzgC9riAnAy3rI7Lnsm3p300HAXQQAEGQGvaR9ZT3ggp722d0Tduc1VZNQTL5iOMYc3Pjza6dWiSJmQtrXP9uMiqSVIKDoCQxvvWtp7C6ShlvQL40gEuY3Aw2Q5AGsMkPkPcbuQTJNWhfmwiCxPhX/+pTuH5dk+m23QYWF41xm83YTIjSf5nmIlPU2czthtLYEC4fyGmfYHNjZHLj7+cjWbtP69/JMfLkzk7R91EoN42/iGa5FMxHHQvbdf7eyL+H29+90ebvJQkSrXONJIDnzNPg2VAGA404TrLzB4HG/HylIk06KiVpjKiM29OFg6IkMd588ynMz38Wr75KRm4uACmJEReEBGyCtLbGDwNfgUhJmMoJ0tJSG8DNyWDbDlZWNNptYOZkA2p93a7E3WpBc9iNZ55PfUY6DKGiiEJ1/T7NA9brAc0m1MYGknbbDmBx2C0tTClhnsu8ogrI03bIT3kIzj7v8GOMSpq83UbwIeXIiTy7S17kMfi+yi9JnrON+7nme/f1CGPiEfkKSMrurC4ZY75GGO5+kuYK40ccx1hYWNjvYRxOHEJPUqUkleCgkSQAuH6dFKVX0x+0RSE49iHxP8Iwg7aPIK3AJkiTiX/9r/8+VlY01jYC6GPHjILU6WSKEgAqLhWGmdKEWo3CboBl9pahOKlwWAik7SUAACAASURBVGpHun8UUUsUaUSRRrvt5sLZKA5/7TTUlVd9doa9C7fZhy2Q2qxKlTYSaXRP+7ht8ojJzIz/WHzelHDlZz/RqYJEr7e2ktxcbRRq05ibqzLaDgIqkjRmVErS9OAghdsklHoK1659NiNAnY4dbpMGbZsgufOt8Xq5QZvmX5tcggQAW1tbePPNBPPzAdrtAMH8PJGd69eBZtN8+Ho9aC42mT5o2eyt49gQDFe94Aw34Zth0I8rmwSYz7pRlUYnH8PVo73DKMfMX/NIewzJesu1a00eIrFvLgSX/j0y0hqY34EaICWQ27Wm/qknKY5NjaREWIv85ZySNAuOSOeJE68UjLrCpKEiSWPEIVSSKpJUgoNKkgDg6FGaumR19bO4fNlU33b9SQCg9SZsUsRkqUg9IoK0tMShucnGtWvX8NJLL2Fm5tM4duxX0G4HONqq2UpFrWay2tg7ww/ilDApwBi83UKTsDPc1I0b0MIcapu0lTm2CNf4w3HlYbOijLbhatFo4bjibblgmbVD4bxovNzYMOuyQCeviDn1fNditfA5PX4xqz8btZEqSzCFJDe38vttbSVZWK3f1xZxYsQx1UaqcHCQJAmOHj2638M4nKhI0nThIIbbXNx111P4d/+OSgS0WrAI02CwmfaSChITI27PE6SlpXdv2vh3i8uXL+Pdd9/F448/DgD44hc/jb/9t38VzdMtzM45qfwbG+Q9kh9yUWiS54CjFw4ZYKUp7auk6oQ8IXLhIzv5fl4jkP/CtwUfjfH08ozR5iSjen5KzjJSKYWCfaS6xwqSuyxAnqCSmsTtSUIZbVw8kv4lUErjxIm/Hm2cFSYCcRzj+PHJ800eClQkabpwkJUkiR/6ITMh7uc+91vpmjRoS+WIX/McbfRvaenbN2u4e4aXX34ZYRjiIx/5iNX+3e8mmJ1VmLmlBjQa9I9N2yIjSuu0ZhLP6yYnv2UliQmU1lC1GtTmJvTsrH++t+y4Zj2KNMLQ71Gy1Sf//s6WdOnWQsqrPiN7mEckUCPDR1aK5DDATCXDYNLqk3XSe54UzBystc6RJp3eK66sHcdAt6vTKtrI/EjutVN/jZMnv+M9V4XJRaUkjREVSZouHAYlycXS0k9arz/3uZ9L18z8a0tL/+ZmD2tPobXGxYsXcfbsWe8vxj/+45/HyZP/CM2mwvx8B0G3C0QRFFfh7fWggyCbBDcLtTFZajZz3qNgcxOJU/sn88dYKoXKxshw/UqyX8EVlt8AL9na7jHK9pX7+8NqQ3t7CnJay5QMuZ4jnm8vd8dSXxGvZ+2CxPoM4PL62I/EFbcBqsDNRu0koX+DAU9BcrgeBtMCrXU1d9u4UJGk6cJhJEkulpZ+fb+HsKeIogjPPPMMPvShD2Em9Z348IUv/Dx+4id+Ge12gMbcHD18b9wgE7fW9jQjQJYNl5GlOKbQXK9HylEcG5XJeRgzCWq3VVq52Q8mTp1OUDDJKr1otRS63QJPkNNXrg8nPLzuJ2jbCbd5PUmSvPi2i+yzwqlKPOn+2dxtjkqVCDLLIbiMNLE3KaH6Wfzn5qXxI1Fbv68xGCQZgYrjBLfcUtVEOmjg7M7Z7RQzrbA9HDKSVJUAKEG9XkcwxMtQYXKwubmJr3/963jsscdKCRLjX/yLX8DbbyfYjOpEghoNUolaLShO/W82M/KTFZ9M17PyAGk/t5ChT7kwWaykkczPq2ydYRuVzTa7NAC1by+bX8M91076tdvJiMdJkVa1LkRBmr+7f6KU6ZveiCztX+7P50v/BsnMjFVTic3aAxVCayZGOg21JYhjUoy2tty/A5GjKEpw+nQVZjuISFLmW6/X93kkhxSsJFUlAKYHjUYD3X0ohV5he3jvvffwyiuv4Mknn9xWHaDlZep7220dBLUawFOMBAHQ60HxJKuNBj1NZTkAVpYcdcPyNNVqmK1pbGyZNoA+68S93Ky2fDjObBOvxD5a5/fZbiXtkq259Y0NhXY7Hy6stwRRKfNkBUHh9mzcklQlST68xvuzt0iQUqlMydAbZ7RlNZHS71s5oa1UlJKEstr6/QSDgU4rbGucPv1y4bVVmGxEUVT98B0nDmG4rXq3DME0hNwOOpaXl3H58mV8/OMf33ahxKef/kW8806ClRWQGjQ7S4QoDIFm08zzxeSo2QRY0QDs7QwZNkrVJfdHkN0mVSFXofGpSj4CVR7G01ojSYJcmzsnm1SrRrmVeT9VfqT8L97YyEiLtS1Nzc8IjfAiZVcm5lrLSBb7k7RGIv5W2TY+l5ijrUjR4grbcWxPRWJ8SJTN5s7ZVuFgod/vVyRpnJhwJUkp9TeVUt9SSiVKqUdH2ad6twzBYclwO6x46aWXEMcxPvjBD+74GF/60i/hnXcSvL8KxLMdqm+Uhtky0gTkyVKa8ab6fXowp4Uo5dKASQj9m59XgqSIXg458RMneF7LfgXEZSQC6ZKmfJXuZjMp/r5yWRZnlPkeTE570uvlaldl/4qy4nyhOnlcSahgkzIuHslVttfXzb3rdhN0u0ZFIl9Sgvn5vxzhHlaYVPR6vYokjRMTTpIAvAjgPwfw/426QxVuG4KKJE0mkiTBxYsXceedd2JxcXHXx/v8538JP/Zj/zMAjaPzqaIUBESAWi2g2yXiw5W4hYlbAzTHG5AzbcdpKMxMTZI/N/OPTkdhdZX9RzptkybuPFEKQ1Wg5nDb8HIAo4LP02wW7CvDfb5wmusbcttlvSO5nYmO5rBYYgiSY9pOeD4+uR+vBwGSRgMaKjVr62yqPjouhdfk1CRUH0mj34/xrW/9Bq5cuYJWq4WjR4/igQcewB133FE9dA8Qut0uwoISERX2CBMcbtNavwQASpVlD9uo3i1DUIXbJg/9fh8XLlzAI488sqck9vOf/yX86I/+A9RqCu02eZQyRSgIstSnbNqSRsMmSzLMli6JWChBelRGehhMPqheEhuEaVutNpzMuNW7eZ2+B4q8TPn9aSxDT1e4b9FIpUfLanc9RJ5jsdfImpJEKbPOITU5PUwQZHWskvTzy36kKKYvR/Yhaa2tjEM2b3e7lM3GWW1nz76Es2f/Y0RRhLfeegvLy8v42te+hj/5kz/B/Pw8zp49i3PnzqGVmsIrTCZ6vV5l2h4nbo4n6bhS6oJ4/Tmt9efGdbKKJA1BpSRNFtbX1/GNb3wDTzzxxLZ+DYyKL3zhf8Tf+lv/ExYXFebmWgjSB7cCTIiNp8vgEgApWQJs0zAARF0gDHX2vRGGxqidn88tb7yOY/+cbv7Qme1fYkO3z+M0WjkA3+vifROt/B1dpQiC1AjVyFKfmPix1COUJJ0k+Qlthf8o8yP5Km+LtH72HlEmW5Jltg0GpCpRuC3GmTOmkGoYhjhz5gzOnDmDxx9/HKurq1heXsZrr72Gb3zjG+h0Ojhx4gTOnTuHW265xX+jKuwb+v1+9cN3nLg5JGlFa13oJ1JK/RGAWz2bfl5r/fvbPVlFkoag+kBNDq5evYpXX3112xls28XXvhbj0UcDDAYKi4szCGo1JGkhSWidESYNQM/OUluvh2R2NlOYkJKnmabGVi/IFKQoUpaKAai0flICd6427mNnv/mw3XZ7m5zA1f2R7ZrNqb/ctzj0prn2VMF2AEjEtC9WOI6LFMlt3MbGeRlqYxLEFyDrIrHhGwrxQFsmba43lSTmdbdrstkkQXKhlMLRo0dx9OhRfPCDH0Sv18Ply5dx6dIlPP3006jValhYWMA999yD+++/vwrzTAAqkjRmTEB2m9b6P9jL41Wf2iGoPlCTgddffx1ra2s7ymDbLr73vX+IY8d+Ec0mPXjb7Tqas3UEUR/o9ejBjnR+Nqd2ksx0S9K8iMEgSb1DAGeQAVwGQCo75rokceL2ZlMWkcxDKQWt89lXw+5Xvi7T6CgsJumEHQFY6fjeopFO4U7ZloiMQnDoLSVJPA1JEoaWcsShtrhBavDWVj6DLY5JMSIlyRCkjY0Ed9zx4rbuRbPZxD333IN77rkHSZLg3XffxfLyMl588UV8/etfx9zcHE6dOoXz589jfn5+W8eusDfo9/tVSHScmACStNeoSNIQVOG2/YXWGi+99BLa7TbOnz9/08574cI/RK/3C/i+7wtw8iSFYNrtOoImzBxh8suATd2NRra929UIQwhyxOZtWrbbwMYGrDaLaOiySW7tfr51H9xJd/Pbcy3ZGo9R9pEqlHU7shV/7SS3zpFsS5LEDp8Bpqo2X0OtlrVZx6rVDFlKVSQuDmky2AgbGya8xv+SBNjc1NsmSC6CIMCtt96KW2+9FR/72Mewvr6O5eVlvP766/jiF7+IVquFY8eO4fu+7/sq8/dNRL/fH6nQbIVdYIJJklLqRwB8BsAJAP9GKfUNrfV/VLZPRZKGoFKS9g9JkuC5557Dvffei4WFhZt+/hde+GU0Gr+Ablfh5ElSdJrNELVGiCAe2A94wEpHj7VCs0me7ygiT1KrpbC+rq3pSWiCW3NO+/tF5xSmbEuBgjNq9lq/H6Be90/eWnyesvM5EBWuS7f7SJT0GrFniRUlmfnmhN00h9qcukhJBGxuJmnNI5qGhGofUebaxgYZtHu9BBsbCc6efcE/5l2g0+ngwQcfxIMPPogoinDlypWc+fuOO+7AQw89VCkdY8RgMNiX75KpwYQrSVrrLwH40nb2qUjSEFRK0v6AM9geffTRfSWqzz77y7hy5dN45JEA3a7C/LxCo6HRatURhhpKJ4i1Qi1VfHoDylIjFUmh200ycgTojDAZVUYjikwaPxErJlCwlgTaRlUJyoiQKlCNhoXThhu3pXpkq0r0oh7GpeE2vbmZbbNCcJL8AEgGA6MIsR+JpxqRfiRnahJdp2lmkizVn3ZfX08yctTtJhlZ4jBbr6fHQpBchGGIs2fP4uzZs3jiiSdw7dq1zPx98eLFzPx9/vx5nDx5cuzjmSYMBgN0eCLrCnuPCSdJO0FFkoagUpJuPtbW1vDNb35zbBls28Vbb/0Knn320zh3TmEwUJifJyLTbAK1mqLU/Ro9bOt1lRIhSXQo1CZr8gwGGkoZn5JUl1yjto842Sg3bg/LZJPb3ePb4TRpOM9vd8+TaOVVitzwGCAKSQaB8SnJqtmsFrHsxhlu7Efi46Sf196A+g8GGr2ezsJpXAeJXus01Z9CbHfe+XzRjRoblFI4duwYjh07hg996EPodruZ+fsP/uAPEIYhFhYW8IEPfAAf+MAHKvP3LhFFUUWSxgn61bHfo9hTVJ+4IahI0s3Fu+++i9dee23sGWzbxVtv/Qreegt48slPo9dTmJtTGAwoVMa1jFotUi6iSGfqUatFPph6nbZ1u8bEHYY69SWRmiQ9Sy439GW4aU39bE+SqxopZx/f1RUrTb7+khj5suSSkDP4NGryAL4ij742merfaBjvV72eKUpcBT2rmZSSB12jZdxLMqN2t0vVsnl6kY0NndVC6nY11tZi3H33zSdIPrRaLdx777249957LfP3N7/5TfzFX/wFjhw5gttuuw3nz5/HkSNH9nu4Bw5xHFckadyolKTpQhVuu3l47bXXsLm5iccee2yiCJLEv//3v4KPfvTT6HZpahFSk5AatE1m2fo6kaX1dWThtSjSaDYVej0iTxsbGrUah9q0IB/kRaJsNts35HqRtFYp6fJltZUZv4dnvbn9fZDfh5ypJ8sCZGbsbteYseUPDzlfW70OzYU7AYopAllaP2e4JUqZY6WfT60UBkkAxOQ/Akgt2trS2frGRmJlsvV6GqurMe6/fzIIkgvX/L22toY33ngDr732Gn73d38XMzMzOHr0KB588EGcOXOmMn+PgDiOK3I5TlThtulDRZLGD601XnzxRRw9ehQPPfTQfg9nKJ555lfw8MP/Q0qUADMfLsk/snikLBzJ2W7sV5LeJACZMtVsUugtDA1x4n6tliROwDAPEX1n2eZwhntsIF8nifu0Wom3vzyu1kSQZIStEToG7SAAxx2zEBsAnRKijEDJsFuSENlieY1DbClZSpRCFKt0mhGdkiOek42UI5nF1utReO3atQQPPTSZBMmHI0eOWObvN998E8vLy/jTP/1TJEmSmb8ffPDByvxdgCRJKpI0ZkzqD9ydoiJJQ1CF28aLOI7x3HPP4f7778fc3Nx+D2dkPP/8r+KOOz6FU6co9NZsIg2lGbIEEDFi0tNsIl2a192uTufGtdUlMnnnv3DsKt3DDNnURt4nWm80hilD9na7jpMP7JtK0O9Ti1SSktDULdK+EBsNyvgYOI0/STLGlqX/JwmRqDTkltRoe6/HYTVSh6hatgyxGaP22lqCtbUE774b4bHHxm/SHhfCMMQdd9yBO+64A5/4xCfw/vvvF5q/T5w4sd/DnRhEUXSgvmcOIvKa9sFGRZKGoCJJ40Ov18OFCxfw2GOPHUhD6qVLv4ZXX/27ePjhGubmgLk5lSlFtZqtFoUhe49M6E0qSawuUbabUaLIn0QhtcEgydpoacbi1mACbM80kxmeSw4A6vXRf/HZVbZNe6+X7yv/lLyfqpnGLFU/SagStlCUsp3Ti+Mv3ITT+dOQ2yCijRxaY/9Rr6edEBv5j3i5tpbgnnsu4q67Rr70iYdSCouLi1hcXMSHP/xhdLtdvPHGG7h06RK+8pWvoF6vZ+bv++67b6rDcnEcVyUAxgiNiiRNHapw23hw48YNvPDCC3jiiSf2eyi7Qr3+T/DSS8Ddd//3mU+JPUpk6GYSZPYxJIeUD/IlIUeOAKREi70+fAS5jYkTbzNGbUmY7Oei8Q7Vagr9vkIQJOn12MSJzynDcHa4Le9D4rFwiC6KzP6Biq1UfblErWbmaqvXyZDNJm5FF9Dr8vVyOI2z1KiNVCNSkVg56nY1NjeJID344EUcdrRarSwbLkkSvPPOO1heXsbFixfx53/+55ibm8vM39NmYq5I0vhRkaQpQ6Uk7T3efvttvPHGGweeIEl873v/GK3W383Cb7UapfXTlG8mlZ8f6mGIjCD1elyZ27Tb3iVDeqhepUpLAui0zc1gKw69uZuY3ASBv8QAG78lMZKZd2bi3vwxuWyB3CcMVUa8VJDuVEuQBCGgY6DRQJyIcF2iEccaOtHo98nQ7qpHrBxtbVEbZxFy9trGhsabb0Z44olveu7L4UYQBDh16hROnTqFxx57DGtra1lY7vOf/zxmZ2dx7NgxPPjgg7j99tsPvcqUJElFksaISkmaQlRK0t7i1VdfRRRF+OhHP7rfQ9lzdLv/BK+9BszP/xxOnQoyjxKpShSaYpJi6h6ZsgBmGhOzjf/JkBvVjjKkh7e7E9Dy6zA0ipAkUEyM6Fz5NnqN9JimTWbMGSWJj6OteWjlPv2+6c/Lfl9TqDWmsNFgYI7PXqMkSdIpQ8iYHUXIVKStLW6jrLWNDTp/rwesrmqsr2s88MAF3HlnwR9tynDkyBE89NBDeOihhzAYDDLz9x//8R9Da42FhYWs8vdh/IEYxzEWFxf3exiHGvHwLgcKFUkagook7Q201nj++edx8uRJnDp1ar+HM1Zcv/7ruHHjZ3HihEIQ6MyrFIakMHW7VEdJa52qRsbIbatLKlWXVNrOZISLVSorzOUqSDzhbRQZ8hPHKqvrJIkPb3eVJp/XiVWjet2EvJjYcBuAzMitVJIV0jQebMo4CwLaRlWxddZnMNDZfGs8ps1NU5TTqEl0PznUtr5OJu3V1QSXL0f4G3/j8IfXdop6vY4777wTd955J5588km89957WF5exve+9z08++yzOHLkCE6ePInz58/j+PHj+z3cPUGSJDh27Nh+D+NQ43DltlUkaSgO46+pm404jvHMM8/g3Llzh9oDMRiczlQU4PP49reB48d/FHHM07olWeYb10bidfYjcSVvVpek4sS+JQrhAW6xSFdBksZtH5liYiRDYEVKkozC9PvUJ0nyxEmqR7ydVSNqo7Fwv3qdyJRSbLxO0uPolCgRKWIPEilGHF6jkFq/Tz6kblfjxo0Y6+sa9977Js6cAVZWTmfnPn78Cir4oZTC8ePHcfz4cXzkIx/B1tZWZv7+8pe/jHq9jqNHj2Zep4MalqvCbeNFFW6bQlQkaXfodru4cOECPv7xj6Nmp1sdCnzqU5/Fb/7mP8DqqmljotRuA+vrX8Dbb/9NHD+uMDcHzM6SodslS6wa1WoKGxuGILkhOEB6fWyVx6hACkCSqjBMiOSo82UFmBy5lb5ZIZIhNu4j+zJxGgzyNZdYEWIiBBBx4ppFNAZzzH4fmWLE97Lflx4kUweJikPSfVpdjXH27GWcOIF0m30tTJgqsjQcMzMzuO+++3DfffchSRK8/fbbWF5exrPPPos/+7M/O7Dmb631gRrvQcRhI0lqm4WfDpuSNhJ+6qd+CtEhqyJ6M7C6uopvfetbh8qgzZiZoQcuP8R5eeOG9P+Ybd0ukCT/JU6cUClR4npKOjN3hyHXRzIhNzlvG39WpdFbtvvM21qbrywOs2mdoFZTqNXMNiZJ9br9FcfZbrKd1+t1nSlUrBbxtjCkJYfUuE+/LwkZEzm7tIHWSUqUEoswbW0liKIE/b5Gr0cZbDduEDlaXo7x+ONXMjLIoT4GEzpJnG6/vSJLO8GNGzcy8/c777yD2dlZLC4u4qGHHsLtt9++38MrhNYav/3bv40oig7lDzYH+zLp5YeU0l8d8zmOA89qrR8d82kyVErSCGg0GhVJ2iauXLmCK1euHDqCdOqUCam9/z4tJVGiudrsNg639ftfxFtvAUr9FzhyRGF2VluqkiQt/HtsY4Nfa6EmyRpLCqwcAZIc2cTJTH+C1NukvSZuGULzH0+Sv7wPyZQugLWNQmrcHylZoj7sV2IypDWrSUSEul3axplrgwGwtkZzs62sxLj//su49Vae/oWvx1wDVxJwazpdvmxCcRVhGh1zc3M4d+4czp07l5m/L126hK9+lR6P8/PzuOuuu/DAAw9MlBIfp2/SKSBI+4rDpiRVJGkENBoNbG5u7vcwDgxeeeUVAMCjj940sj92MDkSM2Wg00EWZksS84+fC2trtNSa2pk4dLv/D65eBeL4RzA3p3DkCM//RqqSnMzWfJ/nQ2xEfFix0RYRMvuaApWsJBmypIS65Dduc183Uw0woTX5+4FDbLyNiUkYJmnmWoJeD1YWG1UWp+vo92VRSG7TWcVsKgip8f77Ce65ZxlHjtCxjE+LxsrElPbPhxGzu5pe7xtvEGE6c6YiS9uBNH//wA/8QGb+/uu//mtcuHABnU4Ht956K86dO7fvWWVRFB1YL9VBQeVJmlJUGW6jQWuNb37zmzh16hRuueWW/R7OnuB0u01SxPoaktaRjAiZgom0vHHDkCTOyKrXgc1NO0OLFSbK5voSVleBq1d/BLOzwNwcG7whKnYbcsPQWos50uxSAFI5YhM0t6UzfmSgUJjtWXKnLXGVpCBIsmvPCkQGZJ6u1xOLqNj72YQqCOyQGk3pRnWQtrbMFCe0rrG2RgTpypUEH/jAJdx+OxEwk/FH62lhbgAUWvMZz5UqnmbljTdOV0Rphygyf7/++uv4vd/7PTSbzcz8fe+99950wtLv9yuSdBNQkaQpxCRJxpOKKIpw4cIFPPzww5idnd3v4ewJTrfbhrWEIepBDATA2mYNUWQITxQZ9cglS1wnaX0971ViwhDHX8L168CVK/8ZFhepAKU0eJMqorP9jCJkvDzNplGVjIpkCA6H2Nx6SXwsQ2Js9sBEiNt9lbf5OqRqxMdkQzc/m0z1cBPu6/WSNMym0e8nqf9Ip6E2IkivvRbh4Ycv4cwZpPWW+N4hO75L0Hh7rUZ/D/f56L7m/TgMV4Xgdgdp/o7jGO+88w4uXbqECxcu4Gtf+xrm5uZw5swZnDt3Du12e+zj6Xa7VahtzNCo6iRNJSolqRybm5t47rnn8Pjjjx+KX2qnKRWLmA9LE2EIDZWF0xoNCrXJMFsUIZ2jzYTY2GMTBMZMzH0lyaKpO76che/ee+8/xcwMVenmsBgTH+ZtAJGcOCYyIsNpjYZdEoDfwq5XickRK0hxrKwyANyffURs5Jb+KTaW1+s6U4X42PTanXPOhNGMD8mk8w8GbMhOcOzYd1GvA/fdZ+5fGJp7KP48CAJzT6WCxERKhuDcvr5wXEWW9g61Wg2nT5/G6dOn8fGPfxzXr1/PzN8vvPAC2u02FhcXs8rf40Cv1zuQc0QeNBy27K7qHTMCKiWpGO+//z5efvllfOITn9jvoewaOXLE8Zq5OcSJyohNkthqBqtHHFbjEFC/bxMofjD3+7a3iZeSOAFfwfo68P77/wmOH1fodFTmWarVNBoNlYbc7JpI/LrXS9IJcw0h4X2BvJLU6+lMDZPhPakw0bjt8zEBAoC1Nb8qRUTFjIOWSUqQiOCRIZvIkVJ/jTCkUKbMUmMyxG18PyXh4XYZdpPtdgFNs87cUZIlJpZXr57GiRMVUdpLzM/P4/z58zh//jz6/X5m/v6jP/ojKKUwPz+Pu+++Gw888ADqUr7cBfr9/p4dq0IxqnDbFKIiSX5cvnwZV69exeOPP77fQ9k1Tq+tkSkoCAxJYskmihCEdTQaFDZzyY8kS1yBWqoUnHYuSZZPTeKlyfYCms2nsbZGx75+/ZNYXARmZhSaTVJ/OIzWaEi/EZMn7SVFMhTHhKZW0xn5kJlsbjiOVSPTTuc36hN7jFiZYiM2qU9bW7Tv1haF1W7cIHK0vNzHbbe9BgBpeQPzt+H7KwkSK0esKvFYJHGSbZIQSR+Tqyhpbf78ElevkqpUkaW9R6PRwF133YW77roLWmusrKxgeXkZr7zyCp555hkcOXIkM3/vplp2t9utvsvHjMq4PaWowm15vPzyy6jX6/jwhz+830PZFU5fv05P2kaDnsCNBrGahQUTZguMB4k5FKtH3C5DP1tbJtQGmAeuVJDkUpKlwcDs5/ZtNv8tCnhUBwAAIABJREFU1tchClf+h+h0FJpNIj6GKJlwW6NhKnJzSM2QoCTdbjxEhLySJEkRkJ8Y14T2DDECSCXi2kjdrlGObtxIEEUvZwRocdGQyTCUE+IaQtPrUdiPyRKTKUmI+HjcxiSK/2401ryqxAZ8IK9KMTodYGvrNGZmKqI0LiilcOLECZw4cQKPPPIINjc3M/P3l770pcz8fd999+Gee+7ZVni/3+9X3+U3ARVJmkJUHyyDJElw8eJF3HHHHQd+PqfTa2uGIPFTlCWKVCKKUUPUt8kQ+26CgLLXmBC5ChJlnNn1e+Rx+DWAdOoN+7Xc7i6JiPzb1CydAPgYlDqGmRn2TNnkhl5zSM2QoUZD50JvZSQJ0Flmmmkz6hEbsIkMITViEymK42+nxzJ/A6kS8bLXs19z/zA0JJLN2Hyvub/824g/o7VNEidjKKelUrbRW5InJlVbW6QqVWRp/JidncX999+P+++/H3Ec46233sLy8jL+6q/+Kmf+HpYwMhgM0JJ/0Ap7Dg3gsFUUrEjSCKgkWsJgMMCFCxfw4Q9/+MB/2Zx+7z2TehZFJBPwa0Ga+HcqZ6hJkhNF9FBlVUK2u8SorI1f09xkdqjJfU3kiH+ryTySr0FrYHMzhinp9TEARwGECMMgI0iGKNF6vvCktF7qzKQtyRSFvYzPiAtL9vsJtrYGAC6IY9SsdaPgBKmvqpbdSyZITG60JlLEbUqZdTZiSzIkSVCjkVf5+J4ycZKEi88Xx0SOXCKmtV2DqVKVbi5qtRpuv/123H777Xj88cexurqK5eVlvP7663j++efRbrdx/PhxPPTQQzh9+nRu/36/j5mZmX0Y+XShUpKmEJWSBGxsbODixYuHIoMtI0isHMkCO/y0DEMMImURH/YSdbsma01uiyLa5iNDcl36jtztbhtQRIzcpbueAPizrF0ek0gU9/1B0NdACKMgsbmVXw/E60H678/TNl9Kdc1ZjzzrYXqcWloJuZb1iSL6kzA5kqSJ1SQOx3Ff6WOS4U0ZdmPSxPtJ4lSrGRWJCVHs5DIHAc3HJ/cLgtMYDCqitB9YWFjAwsICHn74YfT7fVy+fBmXLl3CH/7hH0IphYWFBdx111148MEHEYYhBoMB5ubm9nvYhxpVCYApxbQrSe+99x6+853v4Mknn7RMvQcRp997z2SwMUFqNmm9Xs+ekjqd+ojmXLMJDnu6XYXINRuz8gTkQ2nytVLkY+J+ZimJkEYxQXJ/uw0K2rm/zHf/w/Ib5oXMEJLnYPLM56l51muiTy3dPxCvY5DCxMczhFwSJaVsRSiOTTaazH6T5Ej6lxgsiLIaqLU5JuPIEdMn8fxMrtcrorTfaDQauPvuu3H33XdDa42rV69ieXkZL7/8cmb+7vf7uO222/Z7qIceB/sJkUdFkkbANJOk5eVlXLt2DY8//vjhIEhMjpggsROYCVKjAR3UvGn63Ob+I++N33vEviVu435uaC2OjbpEyopLhCLnNT+tmRDJNve33LDXjFEVQmcStNx+TIQiz7rbFoh95PuL+sRxgjimPrUaLZkc+WobsdGb1SVZroHvNZcXAEyVB46wMpnqdIxiJMs9uGB/P3Aa771XEaVJgFIKJ0+exMmTJ/Hoo49iY2MD3/nOd3DhwoWbUrRy2lGF26YQ0xpu+/a3v42ZmRl88IMf3O+h7Bo5giTXmSSlmWyS8Mh1roXEKgZvHwxMKC4I8gpSEcni7YYcSZIjyZCrDLlhNdlWFH7zEaNRv858E5/JkFrstPFxA8827u8qSu66+zpICZMhSxx6Y69QFNlGa1mFmycfZrjEp9+nUBpAbwX2P8lQXhgSeeJz8/FZsVpcrIjSpOKFF17AJz/5SXzlK1/Z76EcalQlAKYU06YkJUmC5557Dvfccw+OHj2638PZNU5fv05PSJYL2P3rECaZycYhG9dHxIqPS5wkaWLCxPv3enlixG0Ae1+kUlSkGo0afnPXk4J2F2XbXO9R5NnGbYHTDth5L6woya+fMoLE66wu0TlkuE0asZnURJEhPoCtKPGy1TLh08HAhOPqdROCm521s+XcrDnAvD5x4jSuXq2I0qRgc3MTX/ziF/Hkk0/i6aefhiqa6bjCnqEiSVOIaVKS+v0+Lly4gEceeeRQXLdVB0maVHiZEuA4NQy76hH/4xo+m5v+cBvDdwxuZ3IFmMrclMIfwQ6r+chPUdjNR4x2G3bzwde35mzz+Y2AvKLkEqLI6S89T27ftDVmL5MdgmNwYeVu1yZSUm3ykR2ASBFAXLrZNBlwkmDxObm2YS3QGWs+PTeHKzdu5MZc4eaCCdL3f//3Z2bu/7+9c4+O6rru/3deeiALBMJCSDzlSDwsJFI7DilO67Xitm7sX9rGeXQ5XVlJlldJU6eNs7KSNk5+hPSXhqcNMdQW1DV2jZexJF4GY2zkYGwwtiTAyCCQBAgHAzaKLYQk9JiZ+/tjtHX3PXPuaARXutLM/qylNXPPfcxBM8z9aJ999hGGFokkJSnJEklqb2/H0aNHsXDhwoT4Qsm7di1yx6NxMJ0geb3oDXqiIkGqIFEUSRUfnQzxH1r0lfKQPJ7ItSLtau5RrGgSP1bd1kWKYg212cnRQF9vau6RTo5oO5YU8fN10aPuvtdSl5CIvg5VOPf5vPB40P9DiwsTvDYSjyRxcSIRilQHN5+nppoz3bKyzOvxopZerwceulggIKLkMl1dXaisrMRtt92G3//+9wnxfTZaEElKQhIhojIQly9fxunTpxNiBhvQJ0iUnE1DbXRnA/rHT2hNNrsIEh9mU/fz5G7d8JxdJCkUshMj3q7LTwKskaaBygKof9fZzXaLF348lxUeMaLjVClS23Sz2tRzKBcr0Hd8AObvg46N3PxIQDk+n7kmGxciwJQmde082kdvUWamKUx8uI0vSWPmo3ng8Xoj5diDQeSFw7gwystljEa6urpQXl6OefPm4c033xRBGmZEkpKQRI8kNTc34+rVq1iwYEFiCFJHh7lGB81eo1ykvqlMvUEPwmxWGt0AdcNsdjPadLJkl3dkFSTd0Bo91w2rqTPZwrAKiy7KRMepbepzxNFOxErWpjaevK0TBLuokm4/FyhCvaZ5A/T5fDAMqxhxdBW2AWtUiT4mJEYkyHQcrVxDx1NOkyccAnqC1ozwcNjsjDAsdHd3o6KiAnPmzMHbb78tgjTMSJ2kJCVRI0mGYeDEiRPIzMzEvHnz3O6Oc2RlWaNG4bBFmAxEF4ns6TFrIvElRgaSI0A//KYXJJIb3RAaPY9XjmIlbeskSvdctx0LXSTJLh+J9wUYOGp0vZg3wcgQZuS6VCKAIkw0zMnhufuEegwdR1W4adRWLXLpIwPjC8r5/cgLBnFBRGlY6OnpQUVFBQoLC1FdXT3qi96OVhLt0y6SFAeJGEmiGWyFhYUYN26c291xjDxePRvoH2ajRWqDLOeID5uQLPEZbJTvQhIF2AsSlyfdbLaIIOkiR6oUeWFKkW5YzU6OBluR2+6rLFaCNof6TZJiFwHSnevtOz+I6K8gnuRNr03bHtZGv6uwco4HwaCZzB1gaU2pqebQGJ99CFiH4gCz8rbHY5bQ4sNrPPoY+bj1DbW1t5sX7vvJ6+nBBapIKQwJvb29qKiowIwZM1BbWyuC5BKSuJ2kJJok0Qy2z33ucwgE1OTYUQ5f3ZTGT7xey81RFxmidp0oUXRBnd5P2zpB4suO2AsSYJUcXcRId6yatB1PdIlL0WCjSep+VXx4CYB4hjf4UJyuL/z6PX3b/gH6SaJkVuumj3YwGJEcPtPNcqbXTOru70XfS/l85nN+PC31Rx8zT7DXLMZEHyQa3rWrRCk4AglSfn4+jh49Cp/PqSilcD2IJCUhiSRJV69exbFjx7Bw4UK3u+I4ednZ/TclA57+e1W4yxoB4I+AVZxCocjNlEsSP0c37KZGjghrDpIugqRGgewiRnZyhBjHAaYYDTaaNBCxokiqMA12aI1HjtSoEt9Pj1zKTJEKhbz9idzcUWgIjoSIJ2xH9cRnjUTxytwUSaTPlY8uyMWIcpK8XuR1dOCCVHt2nGAwiMrKSkyaNAl1dXXwi5C6jkhSEuL1ehEIBNCrS1gYRXz00Uc4d+5cQgpSP33rrqmRI0rA1uUZ8VXledSAT/m3m9XGc48Aa6FJa5I2YC9IvdALkprMHcL1yZHaztug2RcLNVIUS4p8rE09J5YIqdDxfpiRJcD8+uLDcWZ/fD5/fyJ3MGjmJtlFk9TVaoDI54YCE1SJm6e6AX1Dbik+eK5ds656zD8wvb3WypbCDRMMBrFlyxZkZ2fj+PHjiRcVH4XIcFsSk5qaOqol6cyZM+jq6sIdd9zhdleGhP4oUt9f9DxKpP6oUaSODlim+JMs2UUYCPo48PtidzetIK+TI56DBOgFSXcO7Rso0gToK3Gr0sSF6Hq+0ni+Bx9ii5WTxI9To0u64TueEN4Ls3CkXXRJlTF/f40j/j6mpkbeH11emh0kSbx6BMfrBTwwIhZFJb/DYWtxJp8PeX/8Iy5kZ9u/kBA3oVAIW7duxdixY1FfX59Q0f7RjkhSkpKamop2SsocRRiGgbq6OmRnZ6OgoMDt7gwZ18KpCAcjQ2v9w2xKDlI43F9g23JjpORsji6CpP4A1sgRYfqRKjr9R8Cag0RtPIl7IEGyiwTxfQZii5EuemQX1VGn+vOIkppfxCVHjSzZJWXzitu6fUDk9xVQXk8dbqP2yNBbMOjrlxuPB1pxImhqP1WPoOVKSKquXQPS063J3vS5MdCXuA1YJw7wHDn1QyZcFyRIY8aMwalTpxJ29vFoRCJJScxo/EslFAqhtrYWs2fPxtixY93uzpAxfnxe1KwlIHomE48aUcI1jyzxYbR44FEnc2guDP3XhCpMsWoYxTPExh/V6JGhea4To8HkJ6l5SIB+QVt1yE3dNhAdUVJlyG6bvq7Cyn46hke0zNdU31OqgQRYXYaG0vgyM4B+jTb+vP8zR1ZFHyyOmhkuXBehUAjbtm1DamoqGhoakMZXLRZGBAMNno82RJLiZLRJUldXF2pqarBgwYKET2ZsbY08hsPmKu26exSgLzRIM9r4NuUxqTlMauRIl7AdgQ+v6WSEyw8QLVE+RPJvdENstB1v9CiM2ENuOrj4cOwkS12rjYbXVNGhY3XbfGq/uh8wRY1fU7eYrilMoZAHPl/kmHjrCnKX8XjQv4ix12vmKpHzcAH30ck8cZsSufvqCeR99BEuTJoUX0cEC+FwGDt27IDf70djYyPG0CJ7wohC6iQlKaMppHvlyhXU1dXhzjvvdLsrwwbdrNrarBEknozd22vmD4VCkeeUQ0Q3UC5FA0HXM69JUSQyLlUoVGECrDlJ/Fh12y4HSRUksOc8emQnR/y1Yw2/6YbXDLaPR4vUKf52uUo8j0gnSvz16RjepgqcKlEmHo/+PdUFd3ibmgtMKUeANenf7wcMrw8e6gMfcgPMk6Sw5HVhGAZ27NgBwzDQ2NiIDEmCH5GM9OE2j8ezAsD/QeQv0NMAvmsYRmuscyT+GyejJZJ08eJFNDQ0JJUgEWr0iOdO87/4ATPPhOjujkSO+NR+uygSX/rCPkjH6xcB+ghMLDlSI00q6gIAtK1eO1ZeEkWYDOW57ofvD7Hz+XX566jH8+c+5Tz+b1Z/B7H283+LXZA/iFAorK2kHQ+GEflMcLch2VKLjAKwLJzcH3oKBExhkmUyBo1hGHjppZcQCoXQ1NSETCnMOaIJD/HPDfIagGLDMEoANAD494FOkEhSnIwGSWpsbEQoFMLnPvc5t7sybLS351luYDwHKRSKJOkSdn/Ex8qn1QkSn8lGrxMRMt2CsrobeKz6RQNFkfj51KZGkNTz1XY+/Kb7pai/EDVyRHhgRn34v8mn6ROXI5rGb5eDRH3gf8OFEB0hoqidbup3dFQp3iAO/zzwaBH/CuDb/JiAfKM6imEY2LVrF7q7u3H69OmEWh0gETFgnb870jAM41W2eQjA1wY6RyJJcTKSh9sMw8DRo0eRmZmJ2bNnu92dYUUVJJWuLvOnu9tco42e9/Zao0e8tA3lJFFNwMjUfusQnjk0p7vRc3TyA+j/NtJFRbgo6WoP8W0exQHiE6RYf6vp9vHr2/VVdz31HDupu562ePZZ4e99PMdyVJkKBoFQ2BOxp7S0iKHzx7Q0ID0dZffeG3f/khnDMPDyyy+jo6MDjY2NGD9+vNtdEuJghEeSON8DsHugg+TvnjgZqZGkYDCImpoazJs3T8bpGepSEoPh+mdq053WbmTe7k5sN4RkhxN5LddbK0mN8BiaNr6PDy/pokE6Yh0Xzyw8+lqLlkGS6u5uM9JIIsyXnaG8a0rYpseuLuur8ZwkW5TEpyUvvADIkFFMDMPA7t270dbWhqamJmRLfalRwTDlJE30eDw1bHu9YRjracPj8ewFkKs57xHDMLb3HfMIIl8WmwZ6MZGkOBmJkaRr167h8OHDWLBgQdKuV3T33YuxY8eSqHY+5AaYOUh04+PbdvA1vahaM9XNUX9CIZrJNdAN3m6/3XCSOmtLXZYDMGeR8YRmHjHywCoXJC6Gcnw8qDLk0bT5lH1qsUkiHmnSHcNFaPD09kYnZKv09AxuyTV1OE64fgzDwJ49e9Da2oqGhgbk5OS43SVhEAxDCYAWwzBut9tpGMbdsU72eDzfAXAfgC8ZxsCD8DLcFicjLZLU2tqKw4cPY+HChUkrSInLYCJFA7336n6ePzRY+NfFYBOQuTj52A8vEwDW7lWOox9/3w8/xsuuoTvH17/kCGAuP+L3W5da43Uf09LMskf0CESv5aaKdjAYKSzZn7RNRZnYENziH/1okL+75MEwDLz22mv44x//iJMnT2Ly5Mlud0kYBLGmfjj1cyN4PJ57APwUwFcMw+iM5xyJJMXJSJKkDz/8EJcuXUrsNdiGCXVZCrUYJT3S3xvq+m7RqDWA+q82wH5duxrh0R2jqzdkF0ECayd4NIn3U0UnSKooeZTnAyVec+IVff57JGLlOVEqaeSrLp7oUIKXFRvRVFVV4eOPP0Z9fT3y8/Pd7o5wHYzkEgAA1gJIBfCaJzLT9JBhGN+PdYJ8HcTJSBlua2hogMfjwW233eZ2V0YE7e1mQi3NrtYlc/NhNsAqRWphQOB6iyNzqdGJkN2wlq59IEFSCzWqQsTPV+WJ9sWSJTu4IOmOtZMdihrprhXrfN311KKTvhjHAoAfoZA5ZJqaGgnw0A+PIOnWcqMK7Wlp5jAcfY56eoCsLJuXFQZFVVUVLly4gBMnTmDatGlud0e4DkZ6nSTDMD4z2HNEkuLEbUmiGWz5+fkyRu8wsZbVGkiWzKiDt6+YJKFKTQDWtdrsjgNo3TH76JMP1iRwvs2FKFZuUqzIkW6qv/pcF1lSc5HouU9zDO+7bkhQPYagPC0/9NEkup7Bjg3DMLyO1nEkIadkblrWhNZ/8/t98Pt98KWkmNZF1UenTHGuIwnC73//e3z44Yeoq6vDzJkz3e6OcAOMZEm6HkSS4sTN4TaawVZaWor09HTX+jFa4QLk8UTuU3RTo320zSF50g2/8No4sVHXN1PbezRtJESqWKmRI2rj26oQkSip144lS3b5Rjpj5P1QBUqXb6R7VJ/TtrpfnVWnnsdrNQWgr58ES1SJcpLs3kd6/+2WCONrv/E2i1yzD+DiH/9Yf6Ek5o033sAHH3yA9957D5/5zKD/0BdGGIkmSZK4HSduRZI6Oztx6NAh3HHHHSJINtxzz2IA5kwzgguQDrV9oFwUXiw5dq48Txq2vCKiIyC648DadGuT8XM8SptHs49mmHmU49SlRgb6ITw21+P9VaNPXIz4a/uUfQN9JfHj1egRPwYwhxS9/Yna6mckFpTQ7fOZ9bS6u82gUFcXcO2atRZXZ2dkCLitzf66i5ZEz8ZMVt58802cPXsWtbW1mDVrltvdEW4Qit+OkjpJcSGSFCduRJI++eQTHD16FHfeeSe8soK4luPHF9nuU39lOrFRxYjPfIr3V07HRxZStTuJz8AiSeDCxM+zi6DYyYDarpMh6psqN35YpUeXN6T+qLPTYl1fFSTed7thNlWcdPJEfVfPp9fXm5D5XkXnJHF0w68eT/TsNrtHrzciTB2dHlwLBtCNVPSm3oSeiXnafiUjb731FpqamlBdXY1bb73V7e4IDpFokiTDbXEy3JL0hz/8AS0tLfjTP/3TYX3dRIDEJxRCf10jnndEhQFpmIVubuqNkSIJdAxNBff5rMMz+qEaSi6m/2K6hVp7YMqSHXzRV36ueoy6T23TLQpL1/Qj/sm1uoVuebtdhMuuTX3kJQpUQVIjdAas5QA4/v5j/f7oIbZQaODIIb2vVEwSiHyWqNBkMAiMHWseYwdPChciHDx4EI2NjTh06BBKSkrc7o7gEFQJLpEQSYqT4Rxuq6+vR0pKCj772c8O22uOZtLSBjdtm0sOlye+ujuXJy5LOijCELkBexEM8llXXFboLkltKTDXZqNITC/0s9oCMJO5ufioYqRKVCyBUu/asf5O0xWR5H1U21X5USNKuiE2evQrx6jnqOepx1DitlkNnEcIeY0kwHxfKek6JUUfTeTnAJHnnZ1mO5VEUqVowoTI4y9+sRgCcOjQIZw8eRIHDx7En/zJn7jdHcFhHJwfMSKQv23iZDgkKRwO4/Dhw8jJycEtt9wy5K+XSNx3n/0NiM9ECgTM2n4pKZEbG1+4neAFBvmNj86lxd3peppXhXmz9yNaAOgkNVoSgDk0p4u2eJX96nG6ITHeHmuoTT3H7ny/zT5qT9FcfyBBouNVQbL7XXiVa6hyGGn3+bzaKukctdAkRYn4um6GYS5ozAWIHmnYTsXrjeQntbUBzc3AD39oPzycDLz77rs4ceIE3nzzzaRaiDuZkOG2JGWoh9t6e3tRU1ODz372s0izm0ojaKmtXYTbbisDYM5CCoXM/BF1CRIabguHIzc3GkqhmxzdMHmNJUKNJlEyMM9xiUSqqCQA/RfjUSSa4s+3Car/wyVAV0CSXy/WEBwNpanX4fuB6xtuo/6pz+2iSbFERydRqiCpr0dCyffpc5jUKBLlp3HhoZlsXIi5+NBnhYbcAFO4PB7rcmwytBZNdXU13n//fbz++utYsGCB290RhoCRXifpehBJipOhlKSOjg4cOXIECxcuhMej3oSEeMjKsk7T5vID2OcdUSSIJIoiByRDdguYUn4SRRn48QBFr0iU1DumbpgM0MtOkLWHlOckUzQEZ5cNoAoTvZbueLtq4Dp0w2y8fbByRI/xyFNAc5xVqHw+b9TwWqx8JJ5/xj8TY8ZYo5H8OWAOtdHit/wYkrFkH2o7fPgwjh07hr179+KLX/yi290RhhCRpCQlJSUFHo8HcayHNyhaWlrQ2NiIL37xi45fO9n42tcWo6Iieno1VVkGTJmhGkl8pXdCTdjWPde9hscT2efx2BWZ5JGWoNJG8CiR5RUQ+e+qFo0keK6Sup8/5+foErbthEjti905sZ6r5QwGGkazG5rjQ5K6Y739ggToZzCS2PDooS6CxJP7IwsZR8Q6FIrIE2C9jhp5IpqbgcrK5BxqO3LkCI4cOYLdu3fjrrvucrs7whAikaQkJyUlBd2UmOAA586dw5UrV/CFL3xBBOkGqapahC99qQw33WS2qUNsfJYbFREkQiEzR4mWoSCR6ulBFBSdoKiT+rGgITgA8Hj8fWIVhHU2my5qmIrI10wv4ksZpOgSiRBFloBokaI2aNrjmZOiE6h4BEknR+qjLnpEEufXHDuwIPFZjmreEU+y5hKlG3qjdhIr2qb3nCf586gT8Q//kLxRpPfeew+HDx/GSy+9hL/4i79wuzvCMCCSlMSkpqY6IkmGYeDEiRPIyMiQ6a8O8+CDi/Hf/21Gk/jsNS5GlK+kChHH748IEq0Kz2e98fW96CYbCESOp2G4YNCMYPl8QHe3Wg5At9wHwWVJhQu1nQgN1KbbHiy6ZGkgOk9I90jP1WPVhHb1+eAEiaJGan0kNflaTdDX1U2i5H41WsSvQ0NuqiglYxSprq4ONTU12LJlC/76r//a7e4Iw0SiSZKkFw4CJ/KSwuEwamtrkZeXhxkzZtx4p4R+qqoiN6IHH4z85c5vXuPGRRJrb7op8hMIWG+WJFCUa0Qz2NLSIqKjJv56vdZZcTRtnE8fp9lvdL4pTGoOjV/zHDBzb2h4ycuO8SMiUj6Ys8l0P/zcgLIvZYBz7X7U83R9HKhfqTBn/QXYtt15dv8GvSDxPCRVmnj0iAsPLXRs9xMKRSptk1CH4gi+3X//YrS0DHxconH8+HG88847ePHFF/GVr3zF7e4Iw0QiVtyWSNIguFFJ6unpQU1NDW6//XZX14JLZJ55ZhEeeaQMWVnmcJsaIaKbIWDKUWamuf5oOBx5zuntjR5iUwtK8khEd7eZo0Q5LAHLUmK+vpusXaI+zz8CzHXIaBgujOiZcXZ5SOpzwBpFUv9WCsfYp2IXTeLPeZtfadMNs9G2LqrkVZ77o3KPuBSpUSR1CE2NHqkRJP45AaIjR5SDRqSmmtv33x+R9TfeSK4oUn19Pd5++208//zz+OpXv+p2d4RhJtEiSSJJg+BGaiW1t7fj6NGjMoNtmPjRjxZj9Wpz2I2LktcbyR3hM9pof28v+usp8aneOjEiaFiOjuPw5F3aR8JFN/tQSPffkAQoHlmia+nadKJkvrZ5bbvikHbEkiMgWob4czVHSRU9u2E23hZpt8s1AqyCFAhE5x/ZCVKsCtlqgrb6X5mPxre2Au+9l1yCdOrUKRw4cADPPvssvvnNb7rdHWGYuQDs+b/AxCF+mWGNzXoGmTCc1NnFjz76KE6dOjXo8y5fvozTp09LbZBh5JFHInWTVq9egnA4MsSmSpH6SM/pBkgFBSnCpIqSbrunx1pKALAWJQSsi6RSmzmzmfG4AAAgAElEQVQDLghTZkhgQpp9dvuhtAHRf9vFGiey2xdLnHSRInUfN46A0qaLOFGklSe5R577fN5+ObGTJLvoEs8/Aqyz29QoEy8UyR/tZrBx7r03EkVKJklqbGzEG2+8gaeeegrf+c533O5OsiN/iTuESNIgWLduHY4dOzaoc86ePYuOjg4UFxcPUa8EO8oefxwA8Kv//K1l6E0nSCkp0XWSeOXl3l5rQrYqSDySxKs1q220zWdG0dBeMAiE+hNdQrCXoFiiFIL533SgGWw3Ehj3ap77bPZbxhlhHTKLFUWiR/NaamK2LucIMPO/SIi4AKkRJLVopBpJUme18UcVjyc5BampqQn79u1DWVkZHnzwQbe7I4gkOYYMtw2CweQRGYaB48ePY9y4cSJILrHohz9E2eOPwwMDXq/1O4NKBahCxIdjaB0vWtOLjunqsuYmAWaRQg6dR/j95lpfdvj9vj5ZAswhMhpyU4fMCF5RO1b+kd02lHYddgKk2w7Y7IuVm6TLRzKH1PijLlrEa1OpS8Woy8vYDbkB1kT+/t747KVI5a/+ajGCQeD48eQRpLNnz2Lfvn1Yu3atCJKQcIgkDYJ4c5JoBltRURHGjRs3xL0SBmLxz3+OJf/5n/B1tsNHYYFg5O7o90duxCRIwaBZuZuiQZSvRMfQfjWa1N1t3mRTUvT1lcaMMeWrszMS8UhNNSNLZoI4lyUgIgxqAUo7cdLJkC4fye48Hbo/TO3ykHT71YgRb9NFj6xRId3wGs8/onaqb6SKUX8vYiRq2w3F8TISsWTpnnsiEaRkEqTm5mZUVVXhsccewz/90z+53R1BcByRpEEQTySpu7sbNTU1uOOOOxAIqMMMwnBD0aTF3/42lvzud1F3TA8iQhLwRoTB8PqiliWhyBHdhHUJ3Pyy6n4+K462uYzxdrpB9/ZSEUQfu5a6BpsHZqXtXpgRHF3ith/Rk2h1UqSKk7oOm4pHsy8eWbIKkc8Xme1Hf4focooAa/V0u7wj+v3aRZB0U/3pGC5D6nAbDbnpkveJZBKkDz74AHv37sWKFSvwL//yL253RxCGBMlJGgRbt27FK6+8Yru/ra0NdXV1WLhw4TD2SoiHsp/9DABMUYpUd7QmrfTdKUmUeATJLl+JIkBUQycUik7U5jlK6iw43maXp2TdR5LDZYfXK+AiFCt5Wz2PiGdcSSdGQLQc6aJHZrvPZ76WOgTGh8xITqjuFEWL6Fj1XF2OERclikoZhnV5ErWqNp/eryZo0/V5tHDq1AtRv5FE5Q9/+AP27NmD3/zmN/i3f/s3t7sjRCM5SQ4hkjQIdu3ahR07dmj3ffTRRzh37hw+//nPyxIjI5Syn/0MOH8eALDk2WetcqSO0fSNiRnwIByORJPUKBKXJhIkegSssqQmdgNAe7vZN2rr6DDbSJS4PPH2yIw4NUnbgFWO4l3EVkW3MK+dQMWSIyAiSJHvbBIjLjYUcOXDa7SUCE/ApmP4cJgqS3yNPXo7SXDspCgUss5gU6NIgLVuFhewL385MsRWW5s8EaQPP/wQu3fvxq9+9Sv88pe/dLs7gh6RJIcQSRoEr732GioqKqLaT58+je7ubsydO9eFXgmDoexb3+p/bhElGmvhYYe+ctqGP2BZhkSNJlEyNxAtS1yO1Of8ekDkGlyE+I2Z5yzROSRj5vCPKj/quND1ChNBdmA3Sm9t9ynhF55YzbeBgYfQ+nvQ9/bwkW9+LO2nKCANk8UbQaJlaIDoKBJfdgRITkG6ePEiXn75Zfz7v/87/uM//sPt7gj2iCQ5hEjSINi/fz82bdrUv20YBurq6jBx4kTk5eW52DNhsJAsLVm/PtJAd2NaZ4S26e7JhuJiRYhUyVHb1egRLyGgEyraBswbtFlbKVq0zOd8eE031BavHNl913rZozXCxOc3qGl56hR93kZlGEiAeCI2b9NFlXRDcB6PKURUTBIw31IaTuOz10iI6Hetq40EAN/4RmS5kWQSpEuXLmHXrl34yU9+gqVLl7rdHSE2IkkOIZI0CA4dOoSnn34aQKSeTU1NDebOnYvMzEyXeyZcD2Vf+hIAYMmWLfqhN8AUJgpJpKT0ixKgz1fS5STp8pcA6/Carv5SdE5S5JFHNFRBov/SugRjs2ilDt0+87uWR4bUStPqxE87OeLHcvFRj+PixKWIHrnUcAGivvE2GoYbKHqk1kPyeiMzEDnf+Mbi/ud79iSPIH388cd46aWX8K//+q9YtWqV290RBkYkySFEkgbBkSNH8OSTT6Krqws1NTVYsGAB/LGK3ggjHhIlAFiybVt0mELNV2KRJsPr0w65qbJDQsXzlXp7I8erQ2Z8yE1XqBIArl0z+8+liK5F1cE5djOyePtAq+Xw0TNVgmgfn4XGt/l0fTWXCIgWJvWRn6fbp85sozbKSVKTsUmWuHDR+6fWTaJHmuIPJJcgXb58GTt27MAPfvAD/O53v3O7O0J8iCQ5hEjSIDhx4gR+/etf4/3335cZbAlG2Ze+BLS3Y8nOnWZ4wkaO1O3esFlrSZerxCNDlAQOREuTXbRINxOOzlGjRjoZirdNh1pUUd2nzkADIr86vq0OkQH2OUV8H52jizjxCBPt43lHgYBZJZ2/bZRXpNZD4mLU2RktSQ8+GBGkp55KHjkCgD/+8Y/Yvn07HnzwQTzxxBNud0eIH5EkhxBJGgSPP/44nnzySdx5551ud0UYAso+//n+50tefjk6GYaP7dA8dZIprxehsKdfkCj3SJ0RR+1cmnj+EiUc6wSJ7wf0i+ryBVbVfeq23bpj/DgeMdJJEhA9Aw2wShBgdUveph4bK3FbFzni7VxsuJjp6iJxWVKrbdN2e7spR0DyCdInn3yCbdu24Tvf+Q42bNjgdneEwSGS5BAyVjQImpubUV9fj+bmZuTl5aG0tBTZ2dlud0twiEXvvAOgT5b4eBnPIKZMYK/XTCzquwv7/H74/F6Ewx6MGWNdMNfvj0Qoxowxq2pTpImGg3j0SY2mANahpL4KBZZjgkEgPd08vqfHKjY0rV5HMBgd/QGiI0m6/CFCFSMqlknHqtEkfo5dNMnni/zKB5IlVYh45Mjvt0aPqJ36R5EjLks//WlEjpqbk0+OAKC1tRXbt2/HAw88IIIkJDUSSRok3d3d2LhxI/7rv/4Lx48fRyAQQF5eHkpKSpCTk+N29wSHsESV+BBcWlp0dUK6w950kyWipEaVAOtwHCUFh0LmsBsfiqP/mmpUCdAXpeTEm5PE15vTRZbUWV18mArQCw/HTpRUOeLn0q+a90m3BImuJhJgbVejSpSkrf4AkffJ6wV+8pOIIP3yl8knRwBw5coVbNmyBV/72tfw/PPPu90d4fqQSJJDiCTdAMFgEJs2bcLatWtx9OhR+Hw+TJ48GfPmzUNubi48A2XCCiMekqUlu3dHGtjwmuXuPGaMdVqV349Q2IPOTnOIjOQoHDYFiWSIJ34D5nG6WWy68gCqBKnrxoU1E9fUNlWIdG2xEquBgaNJ9Mif068NsFbXVs/hkSj+nIJ8qhCRLPXPZguHgHAYvQiYbTBARrv45z/Hx+1jACSvILW1taGyshJ/8zd/g/Lycre7I1w/cvNxCJEkhwiFQqisrMTq1atRU1MDj8eD3NxcFBcXIz8/X4RplFP253/e/3zJ1q2mLPVFjwBYp1MFAgj5Uy0RJXrO85Xo5+rVSBv9dySB6ey0zloDrOLEi1xy6VGl6XolSZUg3WwzDpcitS1WnpFdOQBd9Ii7Ke3neUckQ/1Fl/ibEAqZv8i+MdHFP/95/2suevjh6H9AknD16lVUVlbiy1/+MrZu3ep2d4QbQ244DiGSNASEw2Hs3LkTjz32GA4ePIhwOIzc3FzMnTsX06dPF2EaxVhk6dVXrYkv9DwrK3JA3zYtbUKCpIoT1UrigkTJ3HaCpK4rp7apqG1er1WSdIIE2EuSXSRJlSS7XCJVnICIz+iuryseSX3uFyKeOxYOm2OY4XDkxUiO2C9+8Q9+AMyYASC55QgAOjo6UF5ejrvvvhu7du1yuzvCjSM3GYcQSRpiDMPAa6+9hlWrVmH//v0IBoPIycnBnDlzUFBQIMI0Sim7//7+50uee868m5Mg8TEkrxcdPQGLlNC9vK3N3KbHUMishcTbeQSJlw7g1+TXVtt10D67hG47SbKrmeTzRS8xQs9jRZLUHCK+j9o94ZC10zwyRLZIkSMeuqNfUnq6KUd9LFqzxuY3kzx0dHSgoqICf/Znf4Y9e/bId1JiIG+iQ4gkDSOGYeCtt97C8uXL8frrr6O7uxs333wzZs2ahcLCQnjt/pwXRiwWWaJilEpyTG+aWZGdD7FxQeKCQ8NxPKmaF5CkYynvKNYwm7rfjngjSWPGRB9jV9eIixTNuosVTdLlFVnEiKSIIkTUzn94JUkmUIsfeCDSPmUKAJEjorOzExUVFfjCF76AqqoqEaTEQd5IhxBJcpHq6mosW7YMe/bsQWdnJyZOnIiioiLMmjUranFQYWRTdv/9QG5u//aS9evNyFLfHZ8Pu9kJUqzcJA5f2oS26bx4o0gcu0iSmoitm8GmEyfeRtfWJXGrouT1Ap6gsopviIkSjxKFQmbtBJ0opaSYcgRgUWWl/h+ZpHR1deHFF1/E7bffjv3794sgJRbyZjqESNII4dixY1i6dClefvllXL16FdnZ2fjMZz6D2bNnI6CuASGMaMr++Z8jT/ryXZYsXx7Z7osyXWkzv7+4JJE4UTtgHXrj+/jQG8GlCTBFS4XuhXy/nSTpPnppadYoEYkOj0ZRpQR+fZ5zRMen+jVDaEAkTKaTIsOIFiI+nS0UwuKvfz2y3Tf0KXIUTVdXF8rLy1FaWoqDBw+KICUe8oY6hEjSCKShoQFLly7F9u3b0draivHjx+OWW27BrbfeKsI0yihbscKy/dP/9xiA6GiPLjcJsNZSIgzDWlk79oK20W26IKVOknQz1XTtaiSJR4lUUeJtHvo66eiwhs7URer4YnQ8asSlCcDiv//7/tdaVFWl77yA7u5ulJeXY+7cuXjnnXdkmD8xEUlyCJGkEU5zczOWLVuGyspKtLS0ICsrCzNnzkRxcTHS7O5iwoikbMUKfBIc27+9fPkShMNAa6v1OBIkXoSSS5UaReIjUiq64TbdPVE3jAbolyXRDa/ddFP09ceMiV4DLRDutnaMOn7tmlV+gIgJ6pK0w2Esvu++qD5QxXTBnp6eHpSXl6OwsBC1tbUiSImLSJJDiCSNIi5cuIAVK1Zg8+bNuHTpEsaNG4fp06ejpKQE6Xw9CmHE89vflvU/b26OPK5fvwSAVZJUyVFrJBGxFqxVr6GLJKWm6oWKeziXHw7V0uTHAMDYPh/sjxip9sfHGnnVTXU1YCr2+JWvWF5XpGhw9Pb2ory8HDNmzMB7770ngpTYiCQ5hEjSKKWlpQUrV67Epk2b8OGHHyIzMxPTpk1DaWkpMjIy3O6eMEgWLSqzbJ8/H3l84YUllnY1gRuIrq4dCz6sxqNPdkFJ3UcplhCppPvZ+naq/anRJCoYFQ5j8Ve/al6EhdREjK6P3t5eVFRUYMqUKTh27Bj8dkloQqIgkuQQIkkJQGtrK1avXo1nn30Wzc3NyMjIwNSpUzF//nxkZmYOfAFhxHHvvWVRbS0tkccdO6zidL2SRMQatbUbWtMFIcaOjW73dV41N3ioisYYw2Es/va3I8/pH9iH5BU5QzAYREVFBSZNmtS/3qSQ8IgkOYRIUoLR3t6OtWvX4n/+539w+vRppKenY8qUKSgtLUUWFToURi2f/3y0PFGg5ZVXlkTtUxmsJPFcI4JHjbgUjRur+Xr45BMAwOKHHrK2U6isj0WbN9t3QrhugsEgKisrkZ2djfr6eqTYJZ8JiYZIkkOIJCUw165dQ1lZGTZs2ICTJ08iLS0NeXl5KC0tRXZ2ttvdExzk1luj5UkHCdHOnaZQ6aJFhE6SyLV//OPFlva8iTYhrb6kq0WrVsXVR8EZaD3JcePGoaGhQQQpuRBJcgiRpCShu7sbGzduxBNPPIH3338fgUAAeXl5KCkpQU5OjtvdE4aR226zCtXEifbHsvqY/fSVf+pnyZJFN94pwVFCoRC2bNmCm266CY2NjUiltWKEZEEkySFEkpKQYDCITZs2Ye3atTh69Ch8Ph8mT56MefPmITc3VwrLCcIoJhQKYdu2bUhNTUVTU5PMfE1O5EvcIUSSkpxwOIyKigqsWbMG1dXV8Hg8yM3NRXFxMfLz80WYBGEUEQ6HsW3bNvh8Ppw+fVpmuiYv8sXtECJJQj+GYWDnzp149NFHcfDgQYTDYeTm5mLu3LmYPn26CJMgjGAMw8C2bdsAAKdPn5aZrcmNfFk7hEiSoMUwDOzduxcrV67E/v37EQwGkZOTgzlz5qCgoECESRBGEIZhYMeOHQgGgzhz5gzG2hWuEpIF+YJ2CJEkYUAMw8Bbb72F5cuX4/XXX0d3dzduvvlmzJo1C4WFhVK5VxBchCLAXV1dOH36NMaPH+92lwT3EUlyCJEkYdBUV1dj2bJlePXVV9HR0YGJEyeiqKgIRUVFUslXEIYRwzCwa9cudHZ2oqmpSUp7CIRIkkOIJAk3RF1dHZYtW4adO3fi6tWrmDBhAgoLCzF79myp7CsIQ4hhGNi9ezfa2trQ1NSEm2++2e0uCSMHkSSHEEkSHKOhoQFLly7F9u3b8emnn2LChAkoKChAcXGxCJMgOIhhGHjllVfQ2tqKhoYG5OoKWgnJjEiSQ4gkCUNCc3Mzli9fjoqKCrS0tCArKwszZ85EcXEx0mKtgyEIQkwMw8Crr76KlpYWnDp1Cvn5+W53SRh5iCQ5hEiSMORcuHABK1aswObNm3Hp0iWMGzcO06dPR0lJiRS6E4RB8tprr+Gjjz7CyZMnMXXqVLe7I4xMRJIcQiRJGFZaWlqwatUqbNq0CefPn0dmZiamTZuG0tJSKXwnCANQVVWFCxcu4MSJE5ihrg8jCCYiSQ4hkiS4RmtrK9asWYNnnnkGzc3NyMjIwNSpUzF//nwphCcICq+//jrOnz+P48ePo6CgwO3uCCMbkSSHEEkSRgTt7e1Yu3Ytnn766f71pqZMmYLS0lJk0bLzgpCk7Nu3D+fOncOxY8dQVFTkdneEkY9IkkOIJAkjjmvXrmH9+vVYv349Tp48ibS0NOTl5aG0tFTqwAhJx/79+3HmzBkcPXoUc+bMcbs7wuhAJMkhRJKEEU13dzc2btyIJ598EnV1dQgEAsjLy0NJSQlycnLc7p4gDClvvfUWGhsbUVtbi3nz5rndHWH0IJLkECJJwqghGAxi06ZNWLduHY4cOQKfz4fJkydj3rx5yM3NlfXkhITi4MGDOHXqFN59913Mnz/f7e4Iowv5MnQIkSRhVBIOh1FRUYE1a9aguroaHo8Hubm5KC4uRn5+vgiTMKp5++23UV9fj7fffhu33367290RRh/yBegQIknCqIcW+Hzsscdw4MABhMNh5ObmYu7cuZg+fboIkzCqeOedd3D8+HG8+eabWLBggdvdEUYn8qXnECJJQkJhGAaqqqqwYsUK7N+/H8FgEDk5OZgzZw4KCgpEmIQRTXV1Nerq6rBv3z4sXLjQ7e4Ioxf5onMIkSQhYTEMAwcOHMDy5ctRVVWF7u5u3HzzzZg1axYKCwvh9Xrd7qIg9FNbW4ujR49i7969uOuuu9zujjC6EUlyCJEkIWmorq7GsmXL8Oqrr6KjowMTJ05EUVERioqK4Pf73e6ekMQcOXIEhw8fxiuvvIK7777b7e4Iox+RJIcQSRKSkrq6Oixbtgy7du1CW1sbJkyYgMLCQsyePRuBQMDt7glJxHvvvYeamhrs3LkT99xzj9vdERIDkSSHEEkSkp6GhgYsXboU27dvx6effooJEyagoKAAxcXFIkzCkHLs2DFUV1dj27ZtuO+++9zujpA4iCQ5hEiSIDCam5uxfPlyVFZW4vLly8jKysLMmTNRXFyMtLQ0t7snJBDHjx/H22+/jcrKSvzt3/6t290REguRJIcQSRIEGy5cuICVK1fihRdewKVLlzBu3DhMnz4dJSUlSE9Pd7t7wijmxIkTOHjwIF544QV8/etfd7s7QuIhkuQQIkmCEActLS1YtWoVNm3ahPPnzyMzMxPTpk1DaWkpMjIy3O6eMIo4efIk3nrrLfzv//4vHnjgAbe7IyQmIkkOIZIkCIOktbUVa9aswTPPPIPm5mZkZGRg6tSpmD9/PjIzM93unjCCaWhowP79+/H000/j29/+ttvdERIXkSSHEEkShBugvb0da9euxdNPP42mpiakp6djypQpKC0tRVZWltvdE0YQTU1N2LdvHzZs2IDvfe97bndHSGxEkhxCJEkQHOLatWtYv349NmzYgPr6eqSmpiI/Px+lpaXIzs52u3uCi5w5cwavv/461q1bh+9///tud0dIfESSHEIkSRCGgJ6eHmzcuBFPPPEE6urqEAgEMHnyZJSWliInJ8ft7gnDyNmzZ1FVVYU1a9bgoYcecrs7QnIgkuQQIkmCMMQEg0E8//zzWLt2LY4cOQKfz4fJkydj3rx5yM3NlfXkEpgPPvgAr776KlauXImHH37Y7e4IyYN8qTiESJIgDCPhcBiVlZVYvXo1qqur4fF4MGnSJBQXF2PKlCkiTAkECdJvf/tb/PSnP3W7O0JyIV8kDiGSJAguYRgGdu7cicceewwHDhxAOBxGbm4u5s6di+nTp4swjWI+/PBD7N69G7/+9a/xyCOPuN0dIfmQLw+HEEkShBGAYRioqqrCypUr8cYbbyAYDCInJwdz5sxBQUGBCNMo4uLFi3j55Zfxi1/8Ar/61a/c7o6QnMgXhkOIJAnCCOTAgQNYtmwZqqqq0N3djZtvvhmzZs1CYWEhvF6v290TbLh06RJ27dqFn/3sZ/jNb37jdneE5EUkySFEkgRhhFNbW4ulS5diz5496OjowMSJE1FUVISioiL4/X63uyf08fHHH+Oll17Cww8/jBUrVrjdHSG5EUlyCJEkQRhF1NXVYdmyZdi1axfa2towYcIEFBYWYvbs2QgEAm53L2m5fPkyduzYgYceegirV692uzuCIJLkECJJgjBKaWxsxNKlS7Ft2zZ8+umnmDBhAgoKClBcXCzCNIy0tLRgx44d+Md//EesW7fO7e4IAiCS5BgiSYKQAJw7dw7Lly9HRUUFLl++jKysLMycORPFxcVIS0tzu3sJyyeffIJt27bhu9/9LtavX+92dwSBEElyCJEkQUgwLl68iBUrVmDz5s24ePEixo4dixkzZqCkpATp6eludy9h+PTTT7F161Z861vfwsaNG93ujiBwRJIcQiRJEBKYlpYWPProo3juuedw/vx5ZGZmYtq0aSgtLUVGRobb3Ru1tLa2YsuWLfjmN7+J5557zu3uCIKKSJJDiCQJQpJw5coVrF69Gs8++yzOnj2LjIwMTJ06FfPnz0dmZqbb3Rs1tLW1obKyEn/3d3+HzZs3u90dQdAhkuQQIkmCkIR0dHRg3bp1eOqpp9DU1IT09HTk5+dj/vz5yMrKcrt7I5arV6+isrIS9957L7Zs2eJ2dwTBDpEkhxBJEoQkp6urC2VlZdiwYQPq6+uRmpqK/Px8lJaWIjs72+3ujRja29tRUVGBv/zLv8RLL73kdncEIRYiSQ4hkiQIQj89PT3YuHEjnnjiCdTV1SEQCGDy5MkoLS1FTk6O291zjY6ODlRUVOCuu+7C7t27ZZkYYaQjH1CHEEkSBEFLMBjE888/j7Vr1+LIkSPw+XzIzc1FSUkJcnNzk0YUOjs7UV5ejoULF2Lv3r1J8+8WRjXyIXUIkSRBEAYkHA6jsrISa9aswbvvvgsAyM3NRXFxMaZMmZKw4tDV1YUXX3wRd9xxB/bt25ew/04h4ZAPqkOIJAmCMCgMw8CuXbvw6KOP4uDBgwiFQpg0aRJuvfVWTJ8+PWFEoqurC+Xl5Zg/fz4OHDiQMP8uISmQD6tDiCQJgnDdGIaBqqoqrFy5Em+88QZ6e3sxadIkzJ49GwUFBfB6vW538bro7u5GeXk5iouLcejQIREkYbQhH1iHEEkSBMExDhw4gGXLlqGqqgrd3d2YOHEiZs+ejcLCwlEjTCRIs2fPRnV19ajptyAwRJIcQiRJEIQhoba2FkuXLsWePXvQ0dGBiRMnoqioCEVFRfD7/W53T0tPTw/Ky8txyy234MiRIyJIwmhFJMkhRJIEQRhy3n//fSxduhS7du1CW1sbJkyYgMLCQsyePRuBQMDt7gEAent7UVFRgalTp+LYsWPw+Xxud0kQrheRJIcQSRIEYVhpbGzE0qVLsX37dnzyySeYMGECCgoKUFxc7JowBYNBVFRUIDc3F++///6IETdBuE5EkhxCJEkQBNc4d+4cli9fjoqKCly+fBlZWVmYOXMmiouLkZaWNix9CAaDqKysxMSJE1FfXy+CJCQCIkkOIZIkCMKI4OLFi1ixYgU2b96MixcvYuzYsZgxYwZKSkqQnp4+JK8ZCoVQWVmJ8ePH4+TJk0hJSRmS1xGEYUYkySFEkgRBGHG0tLTg0UcfxXPPPYfz588jMzMT06ZNQ2lpKTIyMhx5jVAohC1btiAzMxMNDQ1ITU115LqCMAIQSXIIkSRBEEY0V65cwZo1a/DMM8/g7NmzyMjIwNSpUzF//nxkZmZe1zVDoRC2bt2K9PR0NDU1DdvQniAMEyJJDiGSJAjCqKGjowPr1q3DU089haamJqSnpyM/Px/z589HVlZWXNcIh8PYunUrUlJS0NTUhDFjxgxxrwVh2BFJcgiRJEEQRiVdXV3YsGEDysrKUF9fj9TUVOTn56O0tBTZ2dnacwzDwLZt2+DxeHDmzBnHhu4EYYQhkuQQIkmCIIx6enp6sHHjRjz55JM4duwYAoEAJk+ejNLSUuTk5ACICDp00FcAAAHmSURBVNL27dsRDodx5syZ6x6qE4RRgEiSQ4gkCYKQUASDQbzwwgt4/PHHcfjwYfh8PuTm5qKjowPhcBinT5+Oe2hOEEYpIkkOIZIkCELCEg6HUVlZiVWrVuHUqVM4c+YMxo8f73a3BGGoEUlyCJEkQRAEQUgsRJIcQlZvFARBEARB0CCSJAiCIAiCoEEkSRAEQRAEQYNIkiAIgiAIggaRJEEQBEEQBA0iSYIgCIIgCBpEkgRBEARBEDSIJAmCIAiCIGgQSRIEQRAEQdAgkiQIgiAIgqBBJEkQBEEQBEGDSJIgCIIgCIIGkSRBEARBEAQNIkmCIAiCIAgaRJIEQRAEQRA0iCQJgiAIgiBoEEkSBEEQBEHQIJIkCIIgCIKgQSRJEARBEARBg0iSIAiCIAiCBpEkQRAEQRAEDSJJgiAIgiAIGkSSBEEQBEEQNIgkCYIgCIIgaBBJEgRBEARB0CCSJAiCIAiCoEEkSRAEQRAEQYNIkiAIgiAIggb/II/3DEkvBEEQBEEQRhgSSRIEQRAEQdAgkiQIgiAIgqBBJEkQBEEQBEGDSJIgCIIgCIIGkSRBEARBEAQNIkmCIAiCIAgaRJIEQRAEQRA0iCQJgiAIgiBoEEkSBEEQBEHQIJIkCIIgCIKg4f8DzssP8lQLzDwAAAAASUVORK5CYII=\n", + "image/png": "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//zz8Xd/93cTKgWf/exncemll07Y8Vqdl19+GYODg1i7di1Wr16NMAxT0nXggQeSdBHEjoPebC0KFb4THc/GjRtx3nnn4bHHHsMXv/hF7LfffhN+H5NNKPbYYw/sscceOOmkkwAAL730EgYHB/H9738fN954I6SUKek64IADJt1zRBAEQZJFdDSPPvooli1bhjlz5uDee+/dqt5XW0Oz+2Q1mz333BN77rkn3vWud0EpZaXr4Ycfxg033ACllJWuhQsXYr/99iPpIgii46F0IdGRRFGET37yk7j99ttx9dVXY8GCBQ29v06vydoejHStXr0ajz32GFavXg3GWEq6Xv/615N0EcS2Q2+eFoUiWUTH8dJLL2H58uUYHR3FypUrseuuuzb8Pid7JKsejDHMnDkTM2fOxMknnwylFNatW4fBwUF897vfxXXXXQchBBYsWGDTi/vuuy9JF0EQbQ9FsoiO4uGHH8Y555yD9773vTjrrLMghNgh9zvZCt8nEqUUXnzxRTt7cXBwEL7vp6Rrn332IekiiNrQm6NFIckiOoJSqYTLL78c3/3ud3HjjTdi1qxZO/T+SbImDqUUXnjhBaxevdo2Ry0Wi1i4cCEWLVpkpYsgCAtJVotC6UKi7Xn66aexZMkS7L777li1ahWmTJnS7CER2wFjDHvvvTf23ntvvPe974VSCn/84x+xevVqPPjgg7jiiivQ09ODBQsWWOnae++9mz1sgiCIKiiSRbQtSil85StfwT/8wz/ggx/8IN797nc3LaVEkawdh1IKzz//vO3TNTg4iN7eXitdCxcuxF577dXsYRLEjoQiWS0KSRbRlmzYsAErVqzAk08+iZtvvhn77rtvU8dDktU8lFL4wx/+kJKu/v7+lHTNnDmz2cMkiEZCktWikGQRbcf//M//4JRTTsEJJ5yAD33oQygWi80eEklWC6GUwu9///uUdA0MDKQK6ffcc89mD5MgJhKSrBaFJItoG6Iowsc//nHccccduOaaazB//vxmD8nymc98Bpdddlmzh0HkIKWskq5p06alpGuPPfZo9jAJYnsgyWpRSLKItmDdunU49dRTUS6XccMNN2CXXXZp9pBSUCSrfTDS5c5enDFjhp29+OY3v5mki2g3SLJaFJIsouX57ne/i3PPPRdLly7FGWecscN6X20NJFnti5QSv/vd71LStfPO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\n", "text/plain": [ - "" + "
        " ] }, + "execution_count": 16, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ @@ -643,18 +634,11 @@ "density_matrix[31][31] = 0.5\n", "plot_wigner_function(density_matrix, res=200)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -668,7 +652,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.7.2" } }, "nbformat": 4, diff --git a/community/terra/qis_intro/entanglement_introduction.ipynb b/community/terra/qis_intro/entanglement_introduction.ipynb index e26cab604..f5948f2bc 100644 --- a/community/terra/qis_intro/entanglement_introduction.ipynb +++ b/community/terra/qis_intro/entanglement_introduction.ipynb @@ -123,33 +123,34 @@ "source": [ "# Creating registers\n", "q2 = QuantumRegister(2)\n", + "c1 = ClassicalRegister(1)\n", "c2 = ClassicalRegister(2)\n", "\n", "# quantum circuit to make an entangled bell state \n", - "bell = QuantumCircuit(q2, c2)\n", + "bell = QuantumCircuit(q2)\n", "bell.h(q2[0])\n", "bell.cx(q2[0], q2[1])\n", "\n", "# quantum circuit to measure q0 in the standard basis\n", - "measureIZ = QuantumCircuit(q2, c2)\n", - "measureIZ.measure(q2[0], c2[0])\n", + "measureIZ = QuantumCircuit(q2, c1)\n", + "measureIZ.measure(q2[0], c1[0])\n", "bellIZ = bell+measureIZ\n", "\n", "# quantum circuit to measure q0 in the superposition basis \n", - "measureIX = QuantumCircuit(q2, c2)\n", + "measureIX = QuantumCircuit(q2, c1)\n", "measureIX.h(q2[0])\n", - "measureIX.measure(q2[0], c2[0])\n", + "measureIX.measure(q2[0], c1[0])\n", "bellIX = bell+measureIX\n", "\n", "# quantum circuit to measure q1 in the standard basis\n", - "measureZI = QuantumCircuit(q2, c2)\n", - "measureZI.measure(q2[1], c2[1])\n", + "measureZI = QuantumCircuit(q2, c1)\n", + "measureZI.measure(q2[1], c1[0])\n", "bellZI = bell+measureZI\n", "\n", "# quantum circuit to measure q1 in the superposition basis \n", - "measureXI = QuantumCircuit(q2, c2)\n", + "measureXI = QuantumCircuit(q2, c1)\n", "measureXI.h(q2[1])\n", - "measureXI.measure(q2[1], c2[1])\n", + "measureXI.measure(q2[1], c1[0])\n", "bellXI = bell+measureXI\n", "\n", "# quantum circuit to measure q in the standard basis \n", @@ -179,9 +180,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
        " ] }, "execution_count": 4, @@ -205,9 +206,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
        " ] }, "execution_count": 5, @@ -231,9 +232,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAR8AAACkCAYAAACuLSpPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAFEhJREFUeJzt3XtMVGfeB/DvjKhcZBgKKCKCEXC9tDgjIsWqY6sGjXShUtdtqy7xQrdk07BqA5vuumvt2kFtKrua7BIMdQN0YdMYdZuuppWSVnGCRXC3eytXlTWvShiGu9uZ5/3Dl3kdQZiRmfNw+X6SSfDMc87vB06+85zbjEoIIUBEpDC17AaIaGJi+BCRFAwfIpKC4UNEUjB8iEgKhg8RScHwISIpGD5EJAXDh4ikYPgQkRQMHyKSguFDRFIwfIhICoYPEUnB8CEiKRg+RCQFw4eIpGD4EJEUDB8ikoLhQ0RSMHyISAqGDxFJwfAhIikYPkQkBcOHiKRg+BCRFF6yGyC5srKyUFNTo3hdnU6HY8eOKV6XRg/OfCa4mpoaxcNHRk0afTjzIeh0OnzxxReK1Vu9erVitWj04syHiKRg+BCRFAwfIpKC4UNEUjB8iEgKhg8RScHwISIpJkz4fPjhhy5fXxIXF4fz5897piGSQggBIYTsNgiSw8dqteKtt95CSEgI/P39kZaWhnv37o2a2ikpKTh79qwi/YwlYWFhKCgocFgmhIBGo8Hp06cldfV4QgiUlZVh1apVmDx5MiZPnowVK1agtLSUQSSR1PAxGo04c+YMTCYTbt26BQDYtm3bqKnN8BmopaUFt2/fhk6nc1je0NCAjo4OLF26VFJng7PZbNi5cye2bNmCS5cuwWq1wmq1orKyEj/84Q+xY8cO2Gw22W1OTMLDSktLRVRUlPDz8xPr1q0Te/bsES+//LIQQoiIiAhRUFBgH1tXVycAiKamJrf3UVhYKAwGg/3fztaOjIwUV69edXs/o4XBYHD4uwzn9OnTYtKkSaKnp8dh+ccffyxmzJjhkZojcfz4cQFgyMdvfvMbRXohRx6d+Zw6dQp79+5FcXExOjo6kJycjLy8POj1epjNZty4cQNxcXH28VFRUdBoNKitrXWpjtFoRGxsrNPjXamdkpKCM2fOuNTPeFZVVYV58+bB29vbYXltbe2onPV88MEHUKlUjx2jUqlw7Ngxzn4k8Fj4dHd3Y8+ePcjPz0dCQgJUKhV27doFq9UKvV6Pjo4OAEBAQIDDelqtFhaLBQBQVFSExMREJCYmory8/LG1cnJycP36dad7c6Z2v40bN+KTTz5xetvjXVVVFerq6hAcHOzwyM3NRXx8vOz2HDQ2NqK+vn7I4zpCCDQ0NKChoUHBzgjw4F3tFRUVsNls2LBhg33Z3bt3AQB6vd7+ztne3u6wntlshkajgdlsxtGjR3HlyhV0dnZi7dq1qK6uhlo98rz09/cfsvbDmpubERERMeKawxnq3dnTDAaD02OvXr2KX/3qV9i+fbvD8meeecalmU9FRYXU3/lRMTExslsYl4YKfo/NfO7cuYPp06c7LCspKcGMGTMQGhoKrVaLiIgIVFdX259vaGiAxWJBbGwsTCYTDAYDvL29ERwcjLCwMDQ1Nbmlt+FqP+zs2bNISUlxS92hiP87Baz0w5XgqaurQ1tbG5KSkhAeHm5/9Pb2wmw2uzTzMRgMHv/dOjs74evrO2wvvr6+6OjokPZ/MJ4fQ/FY+CxcuBB1dXWoqKjA/fv3UVJSAqPRCL1ebx+TkZGB3NxcNDY2wmKxIDs7G0lJSZgzZw5aW1sRGBhoHxsYGIjW1la39TdU7X5dXV0oLy9HcnKy2+qOZVVVVfD19cXixYsdll++fBmzZ88e8GYjm5+fH9LT04ecYanVavzoRz/CtGnTFOyMAA+GT3x8PN5++21s2rQJ4eHhMJlMSEhIcAifnJwcvPjii4iPj8esWbNgtVpRVFQEAAgKCkJbW5t9rNlsRlBQ0KC1Dh06hEWLFrnU31C1+124cAF6vR7BwcEubXu8qqqqQnx8PLy8HPfWKysrR93B5n779+9HRETEoLvrarUa4eHh2L9/v4TOCEJBkZGRoqyszKmxbW1tQq/Xi97eXtHa2ioWL14srFbrE9d+9FS7M9LT08WRI0eeuOZYoORpb1k1W1paRGpqqlCr1fbT62q1WqSmpoqWlhbF+iBHin2MqsViQXNzs8PMZyharRZZWVn2WyLef/99txxsdkVkZCQ2b96saE1yv7CwMJw+fRo3b95EVVUV0tLS0NTUhNmzZ8tubUJTCTHMUSE3uXz5MtavX4/29nYpZzn6P7Q8PT1d8dqjWX+4y/gMZyVrPkylUg17MJQ8T7GZz/LlywdcQ6MknU434JYAIpJnwtzVTkSjC8OHiKRg+BCRFAwfIpKC4UNEUjB8iEgKflc7oaamRtHvT6+pqeFlD8TwmehkhACvuSJAwSuciUYLXuE8OvCYDxFJwfAhIikYPkQkBcOHiKRg+BCRFAwfIpKC4UNEUjB8iEgKhg8RScHwISIpGD5EJAXDh4ikYPgQkRT8SA0ihWRlZaGmpkbxujqdDseOHVO87nA48yFSSP8XV473ms7izIdIQTqdTsq3w45GnPkQkRSc+dC4Z7PZ8O9//xvV1dX4z3/+AwAoLi5GXFwc5s2bB7Wa78EyMHxo3Lp37x5+97vf4fe//z1u3brl8NzWrVsBAOHh4Xj99dfx4x//GMHBwTLanLAY+TQu/elPf8KCBQvwi1/8AvPnz0dBQQFqa2vR3t4OAKitrcXJkyftYxYsWICysjLJXU8snPnQuCKEQE5ODg4fPoylS5fi888/R2xs7IBxsbGxiI2NxY4dO/DXv/4VO3fuxJYtW1BVVYXDhw9DpVJJ6H5i4cyHxpWDBw/i8OHDeOONN1BZWTlo8DzqmWeeweXLl5GZmYmjR4/inXfeUaBT59lsNvT29sJmsw079ubNm7BarQp0NXIMHxo3rly5ggMHDmDr1q04ceIEvLycn9h7eXnh+PHj2L59Ow4cOIDKykoPdjo0m82G8+fPIz09HYsWLYKXlxd8fHwwZcoULF68GLt378aXX3454Ot//vWvf2HZsmXYu3evpM5dM2HC58MPP3T5moe4uDicP3/eMw2RWwkhsHv3boSHh+PEiRNPtNukUqnw29/+FrNnz8bu3bulfLfXhQsXMH/+fKxfvx5//vOfMXfuXPzsZz/DoUOHsG/fPsycORNlZWVYtWoV9Ho9rly5AuBB8KxevRo2mw0ZGRmK9/1EhETfffed2LdvnwgODhbTpk0TmzZtEnfv3vVIrcLCQmEwGFyqfeDAAZGZmemRfsi9Pv/8cwFAnDp1atixw73s//CHPwgA4rPPPnNXe0IIIQwGg8Nr8GH//e9/xU9+8hMBQMyfP1989NFHoq+vb9CxXV1doqCgQMyePVuo1WqRmZkpQkNDxfTp08U333zjdE3ZpIbPu+++K2JiYkR9fb0wm81i06ZNYv369R6p9Wj4OFO7pqZGhIeHe6Qfcq9t27aJp556SvT09Aw7drjw6enpEUFBQeK1115zV3tCiMcHwXfffSdeeeUVAUBkZWU59TsIIUR7e7tITU0VAISPj4/429/+5nTN0cDj4VNaWiqioqKEn5+fWLdundizZ494+eWXhRBCREREiIKCAvvYuro6AUA0NTW5vY9Hw8fZ2pGRkeLq1atu74fcKyYmRqSmpjo11pkJ/0svvSSio6NH2paDxwXBe++9JwCI9957z6Xt/fOf/xShoaHC19dXABCFhYVO1xwNPHrM59SpU9i7dy+Ki4vR0dGB5ORk5OXlQa/Xw2w248aNG4iLi7OPj4qKgkajQW1trUt1jEajU2c1+rlSOyUlBWfOnHGpH1JWT08Pvv32W+j1erdtc8mSJairq0NXV5fbtjmYf/zjH/jlL3+JtLQ0ZGdnO73ew8d4TCYTVq5ciaysLPsV3GOBx8Knu7sbe/bsQX5+PhISEqBSqbBr1y5YrVbo9Xp0dHQAAAICAhzW02q1sFgsAIC1a9ciJCQE77777pC1cnJycP36dad7c6Z2v40bN+KTTz5xetukvP6ACAwMdNs2+7fl6fAxGo2YMmWKSwfJHw6e8vJyPP300zh58iQ6OzuRl5fn0X7dyWMXGVZUVMBms2HDhg32ZXfv3gUA6PV6eHt7A4D9itN+ZrMZGo0GwIMzVJ999tmAS+NHyt/ff9ja/ZqbmxEREeHW+oPhRW0j9+abb+LNN990aqyzf+8ZM2aMpKUBDAaD/efW1laUlpZi586dTtd5NHgWLlwIAIiJiUFKSgpOnjyJd955B1OnTrWvU1FRIe31JYY4Y+ixmc+dO3cwffp0h2UlJSWYMWMGQkNDodVqERERgerqavvzDQ0NsFgs9l2o8PBwj/TmTO1+Z8+eRUpKikf6eJh4cPyNjyd8zJw5E9u2bXNqrDN/7+3btyM0NBQ2m81tPT4cPADw5Zdfoq+vD6+99ppTr5HHBU+/V199Fa2trbh27ZrDcoPBIO3/ZSgeC5+FCxeirq4OFRUVuH//PkpKSmA0Gh32yzMyMpCbm4vGxkZYLBZkZ2cjKSkJc+bM8VRbLtXu6upCeXk5kpOTPd4PjczSpUvx1VdfDfuCd4YQApcuXUJcXJxHZwxff/01Jk2a5NSxquGCBwCWLVtm3+5Y4LHwiY+Px9tvv41NmzYhPDwcJpMJCQkJDn/onJwcvPjii4iPj8esWbNgtVpRVFTkcq1Dhw5h0aJFLq3jTO0LFy5Ar9fzbucx4Ac/+AEaGxtx8eLFEW+rvLwc9fX12LJlixs6e7yWlhbMnDkTPj4+Q45zJniAB3sKkydPRktLiyfadT+hoMjISFFWVubSOoWFheLgwYMjrv3oqXZnpKeniyNHjoy4NnleT0+PCAkJEc8995ywWq1Djh3qZW+1WsWKFStEUFCQ09fbOOvR0969vb3CbDYPu15lZaWIiYkZcAHhYNra2hwuThzNp9oVu6vdYrGgubnZpdOhO3bsgMlkQl9fH0wmE86dO+fBDgeKjIzE5s2bFa1JT8bb2xtHjhxBeno6Pvjggye+vykvLw9fffUVCgsL7SdFPGXq1KkOB4Yf59lnn8Xf//53p+5V02q17mhNGUql3KVLl4S/v7+w2WxKlXRw7dq1QS/CovHDZrOJ1NRUoVarRXFx8WPHPe5l/9FHHwm1Wi2+//3ve+R1KmMWMppnPordWLp8+XJYLBZpp/x0Oh3S09Ol1CZlqFQqFBUVYeXKldi6dSuysrLQ3d097Hrd3d346U9/ildffRUrVqxASUkJL31QwIS5q50mBj8/P3z66afIzMxEXl4e5s2bh4MHD6K+vt7hTJgQAvX19fj1r3+N733vezh27BjeeOMNfPrpp/Dz85P4G0wcDB8ad3x8fHD8+HF88cUXWLhwIfbv34/o6GgEBQVhyZIlAICgoCBER0fj5z//ORYsWIDy8nKcOHECvr6+krufOPgxqjRuGQwGGAwG1NXV4eLFi/j6669x+/ZtXLt2DZs3b0ZcXByef/55xMTEyG51QmL40LgXHR2N6Oho2W3QI7jbRURScOZDpKCamhpFv8K4pqYGOp1OsXqu4MyHSCE6ne6JgqDhxu1Bf/ZkTSWohHDDnXhE5DE5ufkwZmcM+Hms48yHiKRg+BCRFAwfIpKC4UNEUjB8iEgKhg8RScHwISIpGD5EJAXDh4ikYPgQkRQMHyKSguFDRFIwfIhICoYPEUnB8CEiKRg+RCQFw4eIpGD4EJEU/AB5olHE0tGF/2ltG7D826Zbg/4cNj0Yfr7eivTmbvwMZ6JRpLO7B0fzS9Hbd3/YsQH+fti7ewumTB6bcwjudhGNItN8fbBm+RKnxm5YnTBmgwdg+BCNOolxixAUqBlyTETYdCxeEKVQR57B8CEaZbwmTcLG558dckzymuVQqVQKdeQZoy58rFYr3nrrLYSEhMDf3x9paWm4d+/euK9N9LAF0ZGIjpw16HP6RdGICJuucEfuN+rCx2g04syZMzCZTLh168FR/W3bto372kQPU6lUSF6TOGB2M9lrEtavWiapK/eSFj6XLl3CmjVroNFooNVqsXnzZgBAfn4+srOzMXfuXAQEBODw4cP4y1/+gubmZo/3JLM20aNCQ57CssXzHZYZEnQI0EyT1JF7SQmfjz/+GC+99BIyMzNx584d3Lx5E7t27YLZbMaNGzcQFxdnHxsVFQWNRoPa2lqXahiNRsTGxjo93p21idxl3cqlmDplMoAHp9ZXJSyW3JH7KB4+XV1deP3115Gfn4+0tDR4e3vD398fSUlJ6OjoAAAEBAQ4rKPVamGxWAAARUVFSExMRGJiIsrLyx9bJycnB9evX3e6L2dqEyltmq8P1jz34A1xrJ9af5Tiv0lFRQVUKhVSUlIGPOfv7w8AaG9vd1huNpuh0WhgNptx9OhRXLlyBZ2dnVi7di2qq6uhVo88Q4er7Wk5ufker0Fj2x/PXcQfz12U3YZLjNkZj31O8fC5d+8eAgMDBz1NqNVqERERgerqauh0OgBAQ0MDLBYLYmNjYTKZYDAY4O3tDW9vb4SFhaGpqQlz584dcV/D1fa0of6TiIQQY/7U+qMU3+1asmQJGhsbce7cOdhsNpjNZpw/f97+fEZGBnJzc9HY2AiLxYLs7GwkJSVhzpw5aG1tRWBgoH1sYGAgWltb3dbbULWJZBpvwQNImPk8/fTTKCgowL59+/DKK6/A398fO3bsQFJSEoAHx2ra2toQHx+Pvr4+rFu3DkVFRQCAoKAgtLX9/013ZrMZQUFBg9Y5dOgQiouL8c033zjd21C1PY27XTQeDTWjH1M3lprNZrzwwguorKxEV1cXXnjhBbcd8yEiZY2pQ+darRZZWVlYvXo1AOD9999n8BCNUWNq5kNE4wenDUQkBcOHiKRg+BCRFAwfIpKC4UNEUjB8iEgKhg8RScHwISIpGD5EJAXDh4ikYPgQkRQMHyKSguFDRFIwfIhICoYPEUnB8CEiKRg+RCQFw4eIpGD4EJEUDB8ikoLhQ0RSMHyISAqGDxFJwfAhIin+Fxo6DHR6rk1jAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "
        " ] }, "execution_count": 6, @@ -258,9 +259,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
        " ] }, "execution_count": 7, @@ -284,9 +285,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
        " ] }, "execution_count": 8, @@ -310,9 +311,9 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAa4AAADYCAYAAACz+QfyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAHKtJREFUeJzt3X1QU3e+BvAn8lohIQgIVQREx7sVwSAi6s4VRS1W6aKyrt1VvGqV+lZXqy4sddWySoNrt9rpy5Raxa3anXa7FlEHnQpSx5cMykLFufWNV7koxRKjrKLCuX/0mmsKSoJJTn74fGbOTDz5nfP9Bk94OC85UUiSJIGIiEgQPeRugIiIyBIMLiIiEgqDi4iIhMLgIiIioTC4iIhIKAwuIiISCoOLiIiEwuAiIiKhMLiIiEgoDC4iIhIKg4uIiITC4CIiIqEwuIiISCgMLiIiEgqDi4iIhMLgIiIioTC4iIhIKAwuIiISCoOLiIiEwuAiIiKhMLiIiEgoDC4iIhIKg4uIiITC4CIiIqEwuIiISCgMLiIiEgqDi4iIhMLgIiIioTC4iIhIKM5yN0COY8WKFSgtLZWltkajwdatW2WpTd2bqNu1XH2L8F7kHhcZlZaWyvJGkasuPRtE3a7l6FuU9yL3uMiERqPBsWPH7Fpz7Nixdq1Hzx5Rt2t79y3Ke5F7XEREJBQGFxERCYXBRUREQmFwERGRUBhcREQkFAYXEREJhZfDExF1A01NTTh79iwuXbqE+/fvQ6VSQaPRICwsDC4uLu3Gt7W1QavVIiUlBb6+vjJ03HUMLiIiQbW1tWHfvn348MMPUVBQ0OEYpVKJ5ORkLFu2DC+88IJxucWLFyM7OxsqlQrLli2zZ9tP7Zk9VJiTk2Pxh+2ioqJw+PBh2zREdnPt2jVs2LAB/fv3h6enJ0JCQrB+/Xpcu3ZN7taIzHb58mXExsbi17/+Na5cuYINGzbgyJEjqKurQ2NjIy5cuIDPP/8cU6dOxaefforw8HD86U9/wt27d42hlZ6ejqVLl8r9UizmUMHV2tqKNWvWwM/PD0qlEklJSWhsbHSY2omJidi/f79d+hFFnz59sH37dpN5kiRBpVJh3759MnX1eOXl5YiIiMBbb72FqqoqNDc3o7q6GhkZGQgPD8e5c+fkbpEcgKNv14WFhYiMjMS5c+ewY8cOXLlyBevXr8fEiRPRp08f+Pj4YNCgQXjllVfwt7/9DbW1tZg1axY2btyI/v37G0Nr48aNUCgUcr8cizlUcGm1WuTm5kKn0+Hq1asAgOTkZIepzeAyVVdXh/r6emg0GpP5FRUVuHXrFoYPHy5TZx27f/8+Jk+ejBs3bnT4/I8//ojJkyfj3r17du6MHImjb9fFxcVISEhAcHAwysvLMW/ePDg5OT1xGT8/P+zcuRPjx4/HtWvX0K9fP6xbt07I0AJkCK4vvvgCAwcOhKenJ1588UWsWrUKM2bMAABkZ2cjNTUVoaGh8PLywubNm5Gfn4/q6mqb92VO7aFDh8LJyQlnz561eT8iKC4uhpOTE4YMGWIyv6ysDP7+/ujXr59MnXXs66+/Rm1tLdra2jp8vq2tDVevXsXXX39t587IkTjydn3nzh3Mnj0bvr6+OHr0KAIDA81a7uE5raNHjyIxMRG1tbXQarU27tZ27Bpcu3btwqpVq7Bnzx7cunULCQkJ2LZtGyIjI6HX61FTU4OoqCjj+AEDBkClUqGsrMyiOlqtFhEREWaPt6R2YmIicnNzLeqnuyouLsagQYPg7u5uMr+srEz2v0o7cuDAgU7/MnVyckJeXp6dOiJH5MjbtVarxcWLF7Fjxw74+/ubtcyjF2Kkp6dj3759+N3vfoeNGzfi0qVLNu7YRiQ7aW5ulnr16iUdOnTIZB4A6dChQ1JNTY0EQKqoqDBZLigoSPrss88kSZKkzz77TBo5cqQ0cuRIqaCg4Kn62blzpxQbGytJkmRW7YcOHz4sDRs27KlqmwOALNPDn4k5Jk6cKLm4uEg+Pj4mk5ubm7Rhwwaz1xMbGyvb6+X0bEyibteP9n337l3J19dXSkxMNLuH1tZWKSUlRQIgpaenS21tbZIkSVJ9fb3k7OwsrVy50uo9P81kLrvtcRUVFaGtrQ0vvfSScd4PP/wAAIiMjIRSqQQA3Lx502Q5vV4PlUoFvV6PLVu2oLCwEHl5eVi5cuVjD/lYqrPaj6qurkZQUJBV6j6JJEl2n2JjYy3q8cyZM9iwYYPxO3weTs8995zFf5nGxsba/PWtW7fOrF7Wrl0ry8+fk20mUbfrn/d98OBBNDY2YsmSJWbV/vme1qMXYgQEBGD69OnIyclp93vUHu/Fx03msltwNTQ0oHfv3ibz9u7dC39/fwQEBECtViMoKAglJSXG5ysqKmAwGBAREQGdTofY2Fi4u7vD19cXffr0QVVVlVV666z2o/bv34/ExESr1BXZ5cuX0dTUhPj4eAQGBhqnu3fvQq/XIzo6Wu4W23n11VfRo8eTN/kePXpgwYIFduqIHI0jb9enT5+Gq6urWR/jeVJoPTRp0iQ0NTUJebjQbsE1ePBgXL58GUVFRbh37x727t0LrVaLyMhI45iUlBRkZWWhsrISBoMBqampiI+PR0hICG7cuAFvb2/jWG9v78deHdYVT6r9UHNzMwoLC5GQkGC1uqIqLi5Gz549MXToUJP5J0+eRL9+/dr9keIIgoKCOt3rWrt2LYKDg+3UETkaR96uy8rKMGTIELi6uj5xnDmhBQDDhg0DACG+8fjn7BZc0dHRePPNNzF9+nQEBgZCp9MhJibGJLjS0tLw8ssvIzo6Gn379kVrayt2794NAPDx8UFTU5NxrF6vh4+PT4e1MjMzERYWZlF/T6r90JEjRxAZGSnc7VFsobi4GNHR0XB2Nr35yqlTp2Q/gf0k69atw9atW9GrVy+T+b169cK7776LDRs2yNMYOQRH3q5Hjx6NqVOndjouMzPTrM9p9e3bF7/5zW8QEBBg7VZtTiFZcmDRykJCQvCXv/zFeDn8k+j1esTFxeHUqVNobm5GXFwcSkpKOj308zg5OTnIycmx6Gux582bh7CwMKxevbpLNR3dw0MQcn3FuT3rtrS04PDhw2hoaMDChQtx9+5duLm52a0+2Y+o23VXl29oaMDf//53vP766xZ/Tkuun5WlZLtXocFgQHV1tcke15Oo1WqsWLHC+IN95513uhxaXRUcHGxWyJLjc3Nzw69+9SsAwMKFCxla1G307t0by5cvl7sNm5ItuMrLy6FUKjFgwACzl5kzZw7mzJljlfoajQZz5861aBkeRiIikp9swTV69GgYDAa5ykOj0bS7pQsRETk+h7pXIRERUWcYXEREJBQGFxERCYXBRUREQmFwERGRUGS7qpAcU2lpqVn3QrN2TV7hSbYk6nZt775FeS8yuMhIrg2WH00gWxJ1u+7qshU19QgNer7dY3NrivBelPWWT0SOQKFQWPSVCkSOLC0rG9rUlHaPuxOe4yIiIqEwuIiISCgMLiIiEgqDi4iIhMLgIiIioTC4iIhIKAwuIiISCoOLiIiEwuAiIiKhMLiIiEgoDC4iIhIKg4uIiITC4CIiIqHwa02IZLBixQqUlpbKUluj0WDr1q1dWlauvp+mZ+p+uMdFJIPS0lJZAuBp68rRt1w/K3Jc3OMikolGo8GxY8fsWtMa36Zr777t/c3F5Pi4x0VERELhHhc9c1paWvDdd9/h/PnzuHPnDgCguLgY4eHhcHd3l7k7IuoMg4ueGadPn8b777+PL7/8Evfu3TN5bsSIEXB1dcWMGTOwdOlSjBo1SqYuiagzPFRI3Z5er8f8+fMxatQo5OXlYcGCBfjyyy9x8eJFXLt2DQDwj3/8AwsXLkReXh5Gjx6NefPmQa/Xy9w5EXWEe1zUrVVVVWHChAmoqqrCH//4R6Snp8PT07PduKSkJCQlJSErKwtvv/02tFotvv32W3zzzTfo37+/DJ0T0eNwj4u6rYaGBsTFxeHHH39EUVERMjMzOwytR3l4eGDjxo04fvw49Ho94uLicP36dTt1TABw/fp1SJIkdxvkwBhc1C1JkoTFixejrq4O+fn5+OUvf2nR8qNGjcLhw4dRX1+PxYsX8xephSRJwrFjx7Bo0SIMHz4cnp6ecHFxgbe3N8aMGYM1a9agvLy83XIXLlyARqPBxo0bZeiaRPHMBldOTo7Fnw+JiorC4cOHbdMQWdWBAwfwz3/+ExkZGRgxYkSX1jF8+HBkZGRg3759yMvLs3KH3VdhYSHCw8Mxbtw47N27FyqVCq+++ipWr16NV155Bffv38d7772H8PBwjB8/Ht9//z2An0Jr7NixaGtrQ1JSksyvghyZQwVXa2sr1qxZAz8/PyiVSiQlJaGxsdFhaicmJmL//v126YeeztatWxEUFIRVq1Y91XreeOMNBAcHO8Tthvr06YPt27ebzJMkCSqVCvv27ZOpq//34MEDrFixAnFxcWhpacHOnTtx/fp1FBQUYNu2bXj77bfx0Ucf4dSpU6irq0NWVhZKS0uh0Wiwfv16Y2gVFhZi8ODBcr8ccmAOFVxarRa5ubnQ6XS4evUqACA5OdlhajO4xFBdXY2CggK89tprcHZ+uuuPnJ2dsWjRIhQWFqKystJKHVqurq4O9fX10Gg0JvMrKipw69YtDB8+XKbOftLa2oo5c+Zg27ZteP3111FWVoa5c+fiueee63C8r68v/vCHP+D8+fOIiYlBRkYGbt++zdAis9g9uL744gsMHDgQnp6eePHFF7Fq1SrMmDEDAJCdnY3U1FSEhobCy8sLmzdvRn5+Pqqrq23elzm1hw4dCicnJ5w9e9bm/VDXnT59GgDw0ksvWWV9kyZNAgDodDqrrK8riouL4eTkhCFDhpjMLysrg7+/P/r16ydTZz/RarX4/PPPodVq8d5776Fnz55mLXfz5k1cvHgR7u7uuH37tqx/HJA47Bpcu3btwqpVq7Bnzx7cunULCQkJ2LZtGyIjI6HX61FTU4OoqCjj+AEDBkClUqGsrMyiOlqtFhEREWaPt6R2YmIicnNzLeqH7KusrAwuLi4ICwuzyvrCwsLg6uoq641ei4uLMWjQoHZ39igrK5N9b+vcuXN46623MHPmTKSmppq93KPntE6dOoUhQ4Zg4cKF/PwcdcpuwfXvf/8bb7zxBrKzsxETEwOFQoEFCxagtbUVkZGRuHXrFgDAy8vLZDm1Wg2DwQAAmDBhAvz8/Dq94igtLQ3fffed2b2ZU/uhKVOm4ODBg2avm+zPYDBAqVTC1dXVKutzcXGBSqVqty3YU3FxMS5fvgxfX1+TKSsrC9HR0bL1BQCbNm2Ch4cH3n//fbOXeTS0CgsLodFosHPnTtTX1+Pjjz+2YbfULUh2cujQIUmtVpvMq6qqkgBI9fX1UlNTkwRA+te//mUyRqVSSbm5uZIkSVJtba20c+dO6c9//vNT97Nz504pNjZWkiTJrNoPZWdnS1OnTn3q+p0BwKmbTw+3P3N4e3tLmzZtkmpra00mtVotHThwwOz1xMbGWrXv+vp6ydnZWVq5cqXZPXz//fdSQECA1Lt3b+n8+fMmz40dO1YKDg6WWltbrdozJzEmc9ltj6uhoQG9e/c2mbd37174+/sjICAAarUaQUFBKCkpMT5fUVEBg8FgPOwXGBhok97Mqf3Q/v37kZiYaJM+HiVJEqcuTh9++CEAoLKy0qzxnf28H57n/OCDD6zWY2xsrNnbwuXLl9HU1IT4+HgEBgYap7t370Kv11u8xxUbG2u1vgsKCvDgwQOzL6L6+Z7Wzy/ESE5ORnV1NS5cuGC1np+1KVX7cYePRZjMZbfgGjx4MC5fvoyioiLcu3cPe/fuhVarRWRkpHFMSkoKsrKyUFlZCYPBgNTUVMTHxyMkJMTm/ZlTu7m5GYWFhUhISLB5P9R1D8/5nDhxwirre7ieR8+B2lNxcTF69uyJoUOHmsw/efIk+vXr1+4PQns6c+YM3N3dER4e3unYzkILgPEzd2fOnLF6r9R92C24oqOj8eabb2L69OkIDAyETqdDTEyMSXClpaXh5ZdfRnR0NPr27YvW1lbs3r3b4lqZmZkWn5g3p/aRI0cQGRkJX19fi3si+xk2bBhCQkLw6aefWmV927dvR3BwsGwXQRQXFyM6Orrdpf2nTp2S/cKM2tpahISEdPqxA3NCCwAGDhxoXC/R49j1JrsZGRnIyMgw/jskJAQLFy40/tvJyQlbtmzBli1bnqpOeno60tPTLVrGnNr2OkxIT8fJyQmLFi1CWloavv32W4wZM6bL6zp+/DgKCgqQmZkJJycnK3Zpvr/+9a8dzv/oo4/s3El7n3zyCe7evdvpuMrKSri4uCA/P/+Jn9Nyc3NDbW0tvL29rdkmdTOy3R3eYDCgurraZI+rM/Pnz4dOp0NLSwt0Op3db8MTHBxs/MwZObZly5bhk08+wbx581BaWgqlUmnxOm7fvo158+YhNDQUy5cvt0GX4lOr1WaNmzRpEi5dugQ3N7cnjlMoFDY7l03dh2zBVV5eDqVSiQEDBpi9zI4dO6xWX6PRYO7cuRYts2HDBqvVJ9vy8PDAjh07EBcXZ7zjSWd3hn/U7du3kZiYiKqqKhw9ehQeHh427PbZ0FloEZlLtls+jR49GgaDAQqFQpb6XQkuEsuYMWOwa9cuFBUVYeTIkWbf8aSkpASjRo3CsWPHkJOTY9EVgERkew51r0Iia5s1axYOHjyIpqYmxMTEYNasWTh+/Dju379vMu7+/fs4fvw4Zs+ejZiYGNy4cQMHDhzA7NmzZeqciB6H34BM3d6kSZNQXl6OjIwM7NixA3v37oWbmxvCwsKM576USiVaWlqgUqmwdOlSrF+/nhcIEDkoBhc9E7y9vfHuu+9i48aNOHDgAIqLi1FeXo47d+4A+OlijujoaCQkJPB8FpGDY3DRM8XDwwMzZ87EzJkz5W6FiLqI57iIiEgo3OMikklpaSnGjh1r95o//zLKrqzDnn1bo2fqXhhcRDKQ6xexRqN5qtpdXbaiph6hQc+3e2xuTQYXPYrBRSSDrVu3yt1Cl3S177SsbGhTU9o9JuoKnuMiIiKhMLiIiEgoDC4iIhIKg4uIiITC4CIiIqEwuIiISCgMLiIiEgqDi4iIhMLgIiIioTC4iIhIKAwuIiISCoOLiIiEwuAiIiKhMLiIiEgoDC4iIhIKg4uIiITC4CIiIqEwuIiISCjOcjdARERdozfchuH2v9vNr/mfhg4fP+/XCy4u4v/aF/8VEBE9o24338GHn33dbv6j8x4+7uvvi6X/Nc1uvdkSDxUSEQkq8Hk/DBsyyKyxCeNHoYdCYeOO7IPBRUQksEljouHayeG/8P8IRf9+z9upI9tjcBERCUyl9MDYkZrHPu/s5ISXxsXYsSPbY3AREQnuP6MjoFZ5dvzciHD08lLauSPbcujgam1txZo1a+Dn5welUomkpCQ0NjZ2+9pERJZwcXHG5LHt96qUHs9hbMzj98ZE5dDBpdVqkZubC51Oh6tXrwIAkpOTu31tIiJLhf8iFMF9/U3mxY8ZATc3V5k6sh2HCK4TJ05g/PjxUKlUUKvVmDFjBgAgOzsbqampCA0NhZeXFzZv3oz8/HxUV1fbvCc5axMRWUqhUODl8aON/+7r74th4eZdcSga2YPrq6++wrRp07BkyRI0NDSgtrYWCxYsgF6vR01NDaKiooxjBwwYAJVKhbKyMotqaLVaREREmD3emrWJiOwl8Hk/RP3f5fHd6fL3n1NIkiTJVby5uRnBwcHYvn07pk6davJcbW0tgoKCUFFRgf79+xvnBwcHY9OmTZg9ezZ2796NDz74AACQmZmJcePGWaUvc2rbWlpWts1rEBE5Em1qilnjZL1zRlFRERQKBRITE9s9p1T+dBXMzZs3Tebr9XqoVCro9Xps2bIFp0+fxu3btzFhwgSUlJSgR4+n34nsrLY9mPsfSCSCtKxs4zb96GOyjba2Nqv8LnRUsr6yxsZGeHt7Q9HB7qxarUZQUBBKSkqM8yoqKmAwGBAREQGdTofY2Fi4u7vD19cXffr0QVVVlVX66qw2EZEj686hBci8xzVs2DBUVlYiLy8PU6ZMgcFggE6nQ3x8PAAgJSUFWVlZGDduHHx8fJCamor4+HiEhITg5MmT8Pb2Nq7L29sbN27cQGhoqFV6e1Jte+ChQupuHt2muX1TR8zeE5dklpOTIw0aNEjy8PCQAgICpPT0dONzDx48kFatWiX5+PhInp6e0rRp06QffvhBkiRJys/Pl5YvX24cO3nyZOnKlSsd1ti0aZM0ePBgi/p6Um0iskyq9uMOHxN1hawXZzwNvV6PuLg4nDp1Cs3NzYiLi7PaOS4isi6e4yJrEvZrTdRqNVasWIGxY8cCAN555x2GFhHRM0DY4AKAOXPmYM6cOXK3QUREdsRdFCIiEgqDi4iIhMLgIiIioTC4iIhIKAwuIiISCoOLiIiEwuAiIiKhMLiIiEgoDC4iIhIKg4uIiITC4CIiIqEwuIiISCgMLiIiEgqDi4iIhMLgIiIioTC4iIhIKAwuIiISCoOLiIiEwuAiIiKhMLiIiEgoDC4iIhIKg4uIiITC4CIiIqEwuIiISCgMLiIiEgqDi4iIhMLgIiIioTC4iIhIKApJkiS5myCi7qOm7joOFp42mVdddx3Bff3bPe7Rowd+lzgeSo+edu+TxOUsdwNE1L3069MbkiSh5n8aTOZX111v9zhG8wJDiyzGQ4VEZFUKhQIJcaM6Hefm6oKJ/zncDh1Rd8PgIiKrC+rrD83ggU8cM/6XUfDs+ZydOqLuhMFFRDbxUuwIuDg7dficj7cKo6PC7NwRdRcOHVytra1Ys2YN/Pz8oFQqkZSUhMbGxm5fm6g78FJ5IjZG0+FzU8aNhLNTx6FG1BmHDi6tVovc3FzodDpcvXoVAJCcnNztaxN1F2NihsJL6WEyb2BwX7wwMFimjqg7cIjgOnHiBMaPHw+VSgW1Wo0ZM2YAALKzs5GamorQ0FB4eXlh8+bNyM/PR3V1tc17krM2UXfh6uKMSbEjjP9WKBRIGD8KCoVCxq5IdLIH11dffYVp06ZhyZIlaGhoQG1tLRYsWAC9Xo+amhpERUUZxw4YMAAqlQplZWUW1dBqtYiIiDB7vDVrEz3rNIMHIqhPbwDAiKG/QIBfL5k7ItHJ+jmu5uZmvPbaa9i+fTumTp0KAHB3d0d8fDxqa2sBAF5eXibLqNVqGAwGAMCECRNQVlaG3//+91i7du1j66SlpSEtLc3svm7dutVpbVtLy8q2Sx0ie9KV/jd0pf8tdxvkoLSpKWaNkzW4ioqKoFAokJiY2O45pVIJALh586bJfL1eD5VKBQDIycnBN998YzwHZS3m1LY1c/8DiURRd70Rff195W6DugFZDxU2NjbC29u7w+PdarUaQUFBKCkpMc6rqKiAwWAwHvYLDAy0SV/m1CYiyzC0yFpk3eMaNmwYKisrkZeXhylTpsBgMECn0yE+Ph4AkJKSgqysLIwbNw4+Pj5ITU1FfHw8QkJCbN6bnLUBHiokomePEIcKhwwZgu3bt2P16tX47W9/C6VSifnz5xuDKy0tDU1NTYiOjkZLSwsmTpyI3bt3W1wnMzMTe/bswfnz581exlq1u4qHComIOib83eFzcnJw9erVJ16cQURE3YfQwTV//nzodDq0tLTghRdeQF5entwtERGRjQkdXERE9OyR/QPIRERElmBwERGRUBhcREQkFAYXEREJhcFFRERCYXAREZFQGFxERCQUBhcREQmFwUVEREJhcBERkVAYXEREJBQGFxERCYXBRUREQmFwERGRUBhcREQkFAYXEREJhcFFRERCYXAREZFQGFxERCQUBhcREQmFwUVEREJhcBERkVAYXEREJBQGFxERCYXBRUREQmFwERGRUBhcREQklP8FwZmCBVEcx8sAAAAASUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ - "" + "
        " ] }, "execution_count": 9, @@ -343,9 +344,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdAAAAE3CAYAAAAaHBA6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAH0ZJREFUeJzt3X2c1nWd7/HXx+HeRBlkcSZFQ4gQXBqlNkvRLLtx132keXI7prat6+lmtc1u1jqW2rp0DmVH69RJ3XW9yVzT6MZaTkRwYr0pVxxJlFgMgQVGQkQ0uRkYPueP64LGcWaY68c11wzM6/l4XI+5ru/v+/vO58c8fryv331kJpIkqTIH9XUBkiTtjwxQSZIKMEAlSSrAAJUkqQADVJKkAgxQSZIKMEAlSSqg5gEaER+NiKcjYltELIqIU/bSf0hEfLE8z/aIWB0Rl3Xo896IeLI8/cmIOLt3l0KSNNDVNEAj4jzgBmAm0AQ8CMyJiHHdzPYvwLuAS4BJwH8Bft1uzJOAu4E7gdeXf94TEX/SG8sgSRJA1PJORBHxK+DXmfnX7dqWA/dm5mc76f8O4B7g2Mx8tosx7wbqM/OMdm3zgA2Z+f5qL4MkSVDDLdCIGAKcCMztMGku8OYuZnsP8O/A5RGxJiKWR8TXIuJV7fqc1MmYP+1mTEmS9tmgGv6uw4E6YH2H9vXA27uYZzxwMrAdeC9wGPB1oBE4t9zniC7GPKKzASPiEkq7gxk+fPiJRx11FACDBw/moIMOYvv27QDU1dUxZMgQtm7dumfeESNGsG3bNnbt2gXAsGHD2LlzJzt37twzRkTQ2tra6RgRwfDhw9m6dSu7t/w7jjFkyBCAl40xePBgtm3b1u0YO3bsoK2trdMxBg0axKBBg7odY/jw4bS2tr5sjMxkx44dnY5x0EEHMWzYMLZs2bLn36fjGEOHDmXXrl17xuj4b9zZGB3/jfc2hn8n/07+nfw7Vfvv9MQTTzybmWPYi1oGaBEHAQn818zcDBARfwP8NCLGZmbH4NyrzLwJuAmgqakp58+fX816JUn7ufr6+lU96VfLk4ieBdqAsR3axwLPdDFPC7B2d3iWLS3/3H3i0TMVjilJ0j6rWYBmZiuwCDijw6QzKJ2N25kHgMYOxzxfW/65+xvCQxWOKUnSPqv1daBfBT4YERdHxOSIuIHS8cxvAUTE7RFxe7v+3wE2Av8cEVMi4i2ULoO5NzN/V+5zA3B6RFwREa+LiM8CbwWur9VCSZIGnpoeA83MuyNiNHAl0AAsAc7MzN1bk+M69P99RLyd0olD/w5sAn4AXNGuz4MR8RfAtcAXgd8C52Xmr3p7eSRJA1dNrwPtbzyJSJLUUX19/aLMnL63ft4LV5KkAgxQSZIKMEAlSSrAAJUkqQADVJKkAgxQSZIKMEAlSSrAAJUkqQADVJKkAgxQSZIKMEAlSSrAAJUkqQADVJKkAgxQSZIKMEAlSSrAAJUkqQADVJKkAgzQAW7evHm88Y1v5MQTT+T6669/xfTvfOc7TJw4kRkzZjBjxgxuv/32PdPuuusupk+fzvTp07nrrrv2tF977bVMnTqVo446qibLIEl9wQAdwNra2vjMZz7Dd7/7XR566CG+973v8Zvf/OYV/c4++2wWLlzIwoULufDCCwHYtGkTs2bN4mc/+xnz5s1j1qxZPP/88wC8853vZN68eTVdFmkg2NsX3t1+9KMfUV9fT3NzMwCtra187GMf4y1veQunnHIK999//56+s2fP5uSTT+akk07i6quv7u1FOKAYoAPYokWLeM1rXsMxxxzDkCFDOOecc5gzZ06P5p0/fz6nnXYao0aN4rDDDuO0007j5z//OQBveMMbOOKII3qzdGnA6ekX3hdffJEbb7yRE088cU/b7j1HDzzwALNnz+bzn/88u3bt4rnnnuOqq67iBz/4AQ899BC/+93v+MUvflGzZdrfGaADWEtLC69+9av3fG5sbKSlpeUV/e677z5OPvlkLrroItasWQPAunXrXjHvunXrer9oaYDq6RfemTNn8vGPf5xhw4btaVu2bBkzZswAYMyYMRx66KE0NzezcuVKjj32WA4//HAATj31VO67777aLNABwABVt971rnfx2GOPcf/99/PWt76Vj33sY31dkjQg9eQL7+LFi1m7di3veMc7XtY+ZcoU5syZw86dO1m1ahWPPfYYa9euZfz48SxfvpzVq1ezc+dOfvKTn7B27dqaLM+BwAAdwBoaGl62sqxbt46GhoaX9amvr2fo0KEAXHDBBTz22GNAaeXtOG9jY2MNqpbUmV27dnHllVdy7bXXvmLaBz7wARobGzn99NP53Oc+xxvf+Ebq6uo47LDDuO666/jQhz7EmWee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\n", "text/plain": [ - "" + "
        " ] }, "execution_count": 10, @@ -374,7 +375,7 @@ { "data": { "text/plain": [ - "{'00': 508, '01': 516}" + "{'0': 513, '1': 511}" ] }, "execution_count": 11, @@ -405,9 +406,9 @@ "outputs": [ { "data": { - "image/png": "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P57zzjuPlStXArB69erXjNs+KDds2MB9993HiSeeuJfmoHczQPcDXVlI5s+fz6pVqzj11FN/p33KlCnMmjWL7du3s3z5cp5++mlWrVrFgAEDuPbaaznuuOOYPHkyzc3NnHPOOVWZH0nV8+53v5unn36ahx9+mHe84x189KMf7dJ427dv5/zzz+eCCy5g3Lhxe7fIXsoA7QNeeeUVrrjiCr74xS++ZtiHPvQh6urqOPnkk7n88st5y1veQr9+/di2bRu33norDz30EIsWLWLKlCl85Stf6YHqJRVVW1vLqlWrXv28evVqamtrf6dPTU0NgwYNAuCcc87h6aefBkp/iLcft66u7tXPn/jEJzjiiCO48MIL9+Ys9GoG6H5gdwvJb37zG5qamjj99NOZPn06Tz75JGeffTaNjY3079+fmTNnMnfuXL773e+yYcMGjjjiCBYsWADA4YcfTkTw3ve+lyeeeKLq8yapuDe/+c0sXbqU5cuX09rayj333MO73/3u3+nz3HPPvfp+1qxZvPGNbwTg5JNPZs6cObz44ou8+OKLzJkzh5NPPhmAL33pS2zcuJGZM2dWb2Z6of49XYD2XNuFpLa2lnvuuYebb7751eHDhw9nyZIlr34+/fTTufrqq2loaHj1GOfQoUOZM2cO/fv358gjj6SlpYXm5maef/55Dj74YObMmfPqgiVp39C/f3+uueYazjzzTHbs2MHZZ5/NpEmTmDlzJg0NDbznPe/h5ptvZtasWfTv358RI0Zw4403AjBixAg+/elP8853vhOAz3zmM4wYMYJVq1Zx3XXXMXHiRE466SQAzj///FfP3u1LIjN7uoYe09DQkLNnz+7pMirigQce4PLLL391IfnUpz71OwtJW20DdMWKFZx55plEBHV1dXz1q1/lsMMOA+DWW2/lG9/4BgMGDOCwww7jxhtvpKampidmT5KqpqamZl5mHrO7fgbofhKgkqTK6GqAegxUkqQCDFBJkgowQCVJKsAAlSSpAANUkqQCDFBJkgowQCVJKsAAlSSpAANUkqQCDFBJkgrwZvKStJd89lsjerqEPuWa89ZX9fvcApUkqQC3QCvAvzKrq9p/ZUpSR9wClSSpAANUkqQCDFBJkgowQCVJKsAAlSSpAANUkqQCDFBJkgowQCVJKsAAlSSpAANUkqQCDFBJkgowQCVJKsAAlSSp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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdAAAAE1CAYAAABX1LExAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAH5NJREFUeJzt3XuYXXV97/H319xIMAmZOA0zYhJD4ji5NA6hVgWCF0Clx1aRI/iAYC1yBIpWjqV46gVtG0/xUtBTD0IvgGhFFO/myKGhRUBFwmSakHFMDIQmGUJuJ4QkZMLwPX/sHRyGmcnslT2XTN6v59nP7P3bv/Wb72Jc+bhuvxWZiSRJqsyLhroASZIORwaoJEkFGKCSJBVggEqSVIABKklSAQaoJEkFGKCSJBVggEqSVIABKklSAaOHuoChNHXq1Jw+ffpQlyFJGkZWrFixNTNrD9Zv0AM0Ii4F/hyoAx4G/iwzf9pH/7HAx4D3APXAZuBzmfnFLn3eCfwVcDzwG+AvM/M7B6tl+vTpLFu27BDWRpI00tTU1KzvT79BPYQbEecA1wFLgCbgfmBpRPS1G/gN4C3AxUAD8F+B/+gy5muB24CvAa8q/7w9In5/INZBkiSAGMzJ5CPiF8B/ZOb7u7StAb6VmR/tof8ZwO3A8Zm5tZcxbwNqMvP0Lm13AVsy89191dPU1JTugUqSuqqpqVmemScerN+g7YGWD8UuAu7s9tWdwOt6WeztwC+BKyJiQ0SsiYgvRsSLu/R5bQ9j/qSPMSVJOmSDeQ70JcAoSucwu9oMnNbLMrOAk4F9wDuBY4AvUToXena5z7G9jHlsTwNGxMWUDgdTV1fHQw89BEB9fT0TJkxg7dq1AEyePJlZs2bR3NwMwKhRo1i4cCFtbW3s3r0bgMbGRrZv387mzaVff9xxxzF27FjWrVsHwJQpU5g+fTotLS0AjBkzhgULFtDa2srevXsBmDt3Llu2bGHLli0AzJgxg4jg0UcfBWDq1KnU1dWxatUqAMaNG8e8efN4+OGH2bdvHwDz58+nvb2dbdu2ATBz5kwyk/XrS4fxa2trqa2tZfXq1QCMHz+exsZGVq5cyf79+wFYuHAhjz32GDt27Cj9h581i46ODjZs2ADAtGnTqKmpobW1FYCjjz6ahoYGWlpa6OzsBKCpqYl169axc+dOAGbPns2ePXvYtGkTB/57T5o0iba2NgAmTpzInDlzaG5uJjOJCJqamlizZg27du0CoKGhgSeffJL29nb/Tv6d/Dv5dxqUv1N/Ddoh3IioBzYCp2bmPV3aPwGcl5kNPSxzJ3AKcGxm7iy3nUFpD/PYzNwcER3ARZl5S5flLgBuzMxxfdXkIVxJUnfD7hAusBXoBKZ1a58GPN7LMu3AxgPhWdZa/nngwqPHKxxTkqRDNmgBmpkdwHLg9G5fnU7patye3AfUdzvn+YryzwOXGf+swjElSTpkgz0T0ReA90bERRHRGBHXUTqfeT1ARNwSEbd06f91YBvwzxExLyJOonQbzLcy84lyn+uAN0bEVRHxyoj4KPAG4NrBWilJ0pFnUCdSyMzbImIqpYkR6oBVwJmZeWBvcnq3/k9FxGmULhz6JbAD+C5wVZc+90fEucBfA5+mNJHCOZn5i4FeH0nSkWtQ7wMdbryISJLU3XC8iEiSpBHDAJUkqQADVJKkAgxQSZIKMEAlSSrAAJUkqQADVJKkAgxQSZIKMEAlSSrAAJUkqQADVJKkAgxQSZIKMEAlSSrAAD3C3XXXXbz61a9m0aJFXHvtCx+h+vWvf505c+awePFiFi9ezC23/PZxrWeffTYzZ87k3HPPfd4y69ev57TTTmPRokW8733vo6OjY8DXQ5IGmwF6BOvs7OTKK6/km9/8Jj/72c/49re/za9+9asX9HvHO97BPffcwz333MMFF1zwXPvll1/O9ddf/4L+V199NZdccgnLly/nmGOO4dZbbx3Q9ZCkoWCAHsGWL1/Oy1/+cmbOnMnYsWM566yzWLp0ab+XP/XUU3nxi1/8vLbM5Kc//Sl/9Ed/BMC5557Lj370o6rWLUnDgQF6BGtvb+elL33pc5/r6+tpb29/Qb8f/OAHnHzyyVx44YVs2LChzzG3b9/O5MmTGT16dJ9jStLhzgBVn97ylrewYsUK7r33Xt7whjdw2WWXDXVJkjQsGKBHsLq6OjZu3Pjc502bNlFXV/e8PjU1NYwbNw6A97znPaxYsaLPMWtqati5cyfPPPNMr2NK0khggB7BTjjhBNatW8f69evp6Ojgjjvu4C1vecvz+jz++OPPvV+6dCmveMUr+hwzIjj55JP53ve+B8A3vvENzjzzzOoXL0lDbPRQF6ChM3r0aK655hrOPvtsOjs7Oe+882hsbGTJkiU0NTXx1re+lRtuuIGlS5cyevRopkyZwt///d8/t/yZZ57JmjVr2L17N/PmzeOLX/wib3rTm7j66qu56KKLWLJkCQsWLOD8888fwrWUpIERmTnUNQyZpqamXLZs2VCXIUkaRmpqapZn5okH6+chXEk6TBxs4pMDvv/971NTU0NzczMAHR0dXHbZZZx00kmccsop3Hvvvc/1XbFiBSeddBKLFi3iqquu4kjeqaqUASpJh4H+Tnyya9cuvvKVr7Bo0aLn2g7MIHbfffdxxx138PGPf5xnn30WgI985CNce+21PPjgg/zmN7/hrrvuGpwVGgEMUEk6DPR34pMlS5bwoQ99iKOOOuq5tra2NhYvXgxAbW0tkydPprm5mccff5xdu3bxe7/3e0QE5557Lj/+8Y8HbZ0OdwaoJB0G+jPxSUtLCxs3buSMM854Xvu8efNYunQpzzzzDOvXr2fFihVs3LiR9vZ26uvr+xxTvfMqXEkaAZ599lk+9rGPPe9K+QPOP/98fv3rX/PGN76Rl73sZbz61a9m1KhRQ1DlyGKAStJh4GATnzz11FO0trbytre9DYAnnniC8847j6997Ws0NTWxZMmS5/q++c1v5vjjj+eYY45h06ZNvY6pvnkIV5IOAweb+GTSpEmsXbuWlpYWWlpaOPHEE58Lzz179rB7924A7r77bkaPHs0rX/lKjj32WCZOnMgvf/lLMtOJTyrkHqgkHQb6M/FJb7Zu3crZZ59NRFBfX/+8xxB+9rOf5bLLLuPpp5/mtNNO47TTThuM1RkRnEjBiRQkSV04kYIkSQPIAJUkqQDPgVbBlTdPGeoSNACuuXDHUJcgaRhzD1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAJ1KQdMRx8pORabAnP3EPVJKkAgxQSZIKMEAlSSrAAJUkqQADVJKkAgxQSZIKMEAlSSrAAJUkqQADVJKkAgxQSZIKMEAlSSrAAJUkqQADVJKkAgY9QCPi0oh4JCKejojlEXFKP5c7OSKeiYhV3drfGxHZw+uogVkDSZIGOUAj4hzgOmAJ0ATcDyyNiOkHWW4KcAvwr7102QPUdX1l5tPVqluSpO4Gew/0CuCmzLwxM1sz83KgHbjkIMv9I3Az8LNevs/MfLzrq4o1S5L0AoMWoBExFlgE3NntqzuB1/Wx3KXANOCv+xh+fESsj4gNEfHDiGg65IIlSerD6EH8XS8BRgGbu7VvBk7raYGIWAB8EnhNZnZGRE/d2oD3AS3AROBDwH0RsTAz1/Qw5sXAxQB1dXU89NBDANTX1zNhwgTWrl0LwOTJk5k1axbNzc0AjBo1ioULF9LW1sbu3bsBaGxsZPv27YBPtx+JWltb2bt3LwBz585ly5YtbNmyBYAZM2YQETz66KMATJ06lbq6OlatKp2iHzduHPPmzePhhx9m3759AMyfP5/29na2bdsGwMyZM8lM1q9fD0BtbS21tbWsXr0agPHjx9PY2MjKlSvZv38/AAsXLuSxxx5jx44dAMyaNYuOjg42bNgAwLRp06ipqaG1tRWAo48+moaGBlpaWujs7ASgqamJdevWsXPnTgBmz57Nnj172LRpE1DaLiZNmkRbWxsAEydOZM6cOTQ3N5OZRARNTU2sWbOGXbt2AdDQ0MCTTz5Je3s7cGjb0+bNpX8ijjvuOMaOHcu6desAmDJlCtOnT6elpQWAMWPGsGDBgkJ/J41M27Ztq8r21F+RmVVehV5+UUQ9sBE4NTPv6dL+CeC8zGzo1n8c0Ax8JjO/Wm67Gjg7M+f38XtGASuAuzPzg33V1NTUlMuWLSu4Rr915c0G6Eh0zYU7hroEDRC32ZGpWttsTU3N8sw88WD9BnMPdCvQSelwbFfTgJ7OWdYBjcA/R8Q/l9teBEREPAOcmZndDwdT3lN9EJhTtcolSepm0M6BZmYHsBw4vdtXp1O6Gre7jcAC4FVdXtcDa8vve1qGKB3n/V1KFydJkjQgBnMPFOALwFcj4gHgPuADQD2lYCQibgHIzAsycz/Q/Z7PJ4B9mbmqS9sngZ8Da4BJwAcpBejBruyVJKmwQQ3QzLwtIqYCH6N0iHYVpUOx68td+rwftBfHADcAxwI7KZ03XZyZD1ShZEmSejTYe6Bk5peBL/fy3esPsuzVwNXd2j4MfLg61UmS1D/OhStJUgEGqCRJBRigkiQVYIBKklSAASpJUgEGqCRJBRigkiQVYIBKklSAASpJUgEGqCRJBRigkiQVYIBKklSAASpJUgEGqCRJBRigkiQVYIBKklSAASpJUgEGqCRJBVQUoBHxrog4o8vnT0TEhoj4SUTUVb88SZKGp0r3QK8+8CYiTgD+B/BFYAzw+eqVJUnS8Da6wv4zgLby+3cA383MayLiTuAnVa1MkqRhrNI90KeBieX3bwLuKr/f2aVdkqQRr9I90J8Cn4+Ie4ETgbPL7a8A/rOahUmSNJxVugf6p0AHpeD8QGZuKre/FQ/hSpKOIBXtgWbmBuBtPbT/WdUqkiTpMFDxfaARcVREnB0RfxERx5Tbjo+ImuqXJ0nS8FTRHmhEzKZ04dCLgWOA24H/B1xS/nxRtQuUJGk4qnQP9FrgTmAasLdL+/eBN1SrKEmShrtKr8J9HfCazOyMiK7tjwH1VatKkqRhrshcuGN6aJtO6V5QSZKOCJUG6J3AFV0+Z0RMAj4F/KhqVUmSNMxVegj3CuDuiGgDjgJuA2YDm4F3Vbk2SZKGrUrvA90UEa8C3g2cQGkP9gbga5m5t8+FJUkaQSrdA6UclP9UfkmSdEQ6aIBGxFnADzJzf/l9rzLzjqpVJknSMNafPdBvAccCT5Tf9yaBUdUoSpKk4e6gAZqZL+rpvSRJR7KKAjEiFkfEC0I3IkZFxOLqlSVJ0vBW6R7l3UBPk8YfU/5OkqQjQqUBGpTOdXY3Fdh96OVIknR46NdtLBHx/fLbBG6NiH1dvh4FzAfur3JtkiQNW/29D3Rb+WcAO3j+k1g6gHuBG6tYlyRJw1q/AjQz/xggIh4FPpeZHq6VJB3RKp3K71MDVYgkSYeT/sxE9B/AqZm5IyJW0vNFRABk5u9WszhJkoar/uyBfhs4cNFQXzMRSZJ0xOjPTESf6um9JElHMqfmkySpgP6cA+3zvGdXngOVJB0p+vs0FkmS1EVF50AlSVKJ50AlSSrA+0AlSSrA+0AlSSrA+0AlSSqgorlwD4iI44HG8sfWzPxN9UqSJGn4q+giooiYGhHfBdYA3y2/fh0R34uIqf0c49KIeCQino6I5RFxSh99T42I+yNiW0TsjYhfRcRHeuj3zohYHRH7yj/fUcl6SZJUqUqvwv0HYDZwCnBU+bUYeDn9eB5oRJwDXAcsAZooPYR7aURM72WRp4Avln/HXOCvgU9FxKVdxnwtcBvwNeBV5Z+3R8TvV7hukiT1W6UB+mbg/Zl5X2Y+U37dB/y38ncHcwVwU2bemJmtmXk50A5c0lPnzFyemd/IzIcz85HMvBX4CaUAP+DPgLsz82/KY/4N8G/ldkmSBkSl50C3AD09THsPsK2vBSNiLLAI+Fy3r+4EXtefXx4RTeW+V3dpfi3wpW5dfwL8aS9jXAxcDFBXV8dDDz0EQH19PRMmTGDt2rUATJ48mVmzZtHc3AzAqFGjWLhwIW1tbezeXfpP0NjYyPbt24Ep/Slfh5nW1lb27t0LwNy5c9myZQtbtmwBYMaMGUQEjz76KABTp06lrq6OVatWATBu3DjmzZvHww8/zL59pYvY58+fT3t7O9u2lTaVmTNnkpmsX78egNraWmpra1m9ejUA48ePp7GxkZUrV7J//34AFi5cyGOPPcaOHTsAmDVrFh0dHWzYsAGAadOmUVNTQ2trKwBHH300DQ0NtLS00NnZCUBTUxPr1q1j586dAMyePZs9e/awadMmoLRdTJo0iba2NgAmTpzInDlzaG5uJjOJCJqamlizZg27du0CoKGhgSeffJL29nbg0LanzZs3A3DccccxduxY1q1bB8CUKVOYPn06LS0tAIwZM4YFCxYU+jtpZNq2bVtVtqf+isx+TXNb6hzxJ8B5wHsyc2O57aXAzcA3MvMf+li2HthI6Z7Se7q0fwI4LzMb+lh2A1BLKfA/lZmf7vJdB3BRZt7Spe0C4MbMHNfX+jQ1NeWyZcv66tIvV95sgI5E11y4Y6hL0ABxmx2ZqrXN1tTULM/MEw/Wr8hk8i8HHo2IjeXPLwWeBn6H0jnSgXAK8GLgNcDfRsQjmfnVAfpdkiQd1GBOJr8V6ASmdWufBjze14KZ+Uj57cqImEbpEO6BAH28yJiSJB2KQZtMPjM7ImI5cDpwe5evTqc021F/vQjoemj2Z+UxPtttzPsLlipJ0kEVmkjhEHwB+GpEPADcB3wAqAeuB4iIWwAy84Ly58uBR4C28vKLgY8AX+4y5nXAPRFxFaX7Ut8BvAE4eaBXRpJ05KooQMtX0v4l8G5gOjCm6/eZOaqv5TPztvKECx8D6oBVwJmZub7cpfv9oKOAvwVmAs8AvwGuohy45THvj4hzKd0j+ulyn3My8xeVrJskSZWodA/0r4BzgM8Afwf8OaVwOxf4eH8GyMwv8/w9yK7fvb7b52uBa/sx5rdwontJ0iCqdCKFdwEfyMyvULog6HuZ+UHgk5TOO0qSdESoNECnAavL758Cjim//z/AGdUqSpKk4a7SAH2M0kU/AGv57fR9rwX2VqsoSZKGu0oD9DvAm8rvr6M0sfsjwE0M3CQKkiQNOxVdRJSZH+3y/lvlKfZeB/w6M39Y7eIkSRquDuk+0Mz8OfDzKtUiSdJho9JDuETECRFxS0Q8WH59NSJOGIjiJEkarioK0Ig4D/glpUkQflx+TQMeiIjzq1+eJEnDU6WHcP8G+HhmLunaGBEfpTQT0K3VKkySpOGs0kO4tcA3e2i/ndLjzCRJOiJUGqB3A6/vof31wL8fajGSJB0u+vNA7bO6fFwKfCYiTuS3V9++BjiL0jM6JUk6IhR9oPbF5VdXX6KXSeIlSRpp+vNA7YpvdZEkaaQzHCVJKqDIRAp/EBH3RMTWiNgSEf8eEWcORHGSJA1XlU6kcBGlCeV/A/wFcBXwCPCdiHhf9cuTJGl4qnQihb8ArsjM/9Wl7R8jYjmlMP2nqlUmSdIwVukh3OmUHp7d3VJgxqGXI0nS4aHIA7VP76H9DGD9oZcjSdLhodJDuJ8DvlR++sr95baTgPcAl1ezMEmShrNKH6j9lYh4AvjvlGYfAmgF3pWZ36t2cZIkDVf9DtCIGE3pUO09mfmdgStJkqThr9/nQDPzGeAOYOLAlSNJ0uGh0ouIWoDZA1GIJEmHk0oD9Grg8xHx9oh4WUTUdH0NQH2SJA1LlV6F+6PyzzuA7NIe5c+jqlGUJEnDXaUB+oYBqUKSpMNMvwI0IiYAnwXeDowB7gI+mJlbB7A2SZKGrf6eA/0U8F5Kh3D/hdJsRP97gGqSJGnY6+8h3LOAP8nMbwBExNeA+yJiVGZ2Dlh1kiQNU/3dA30Z8NMDHzLzAeAZoH4gipIkabjrb4COAjq6tT1D5RchSZI0IvQ3AAO4NSL2dWk7CrgxIvYcaMjMP6xmcZIkDVf9DdCbe2i7tZqFSJJ0OOlXgGbmHw90IZIkHU4qncpPkiRhgEqSVIgBKklSAQaoJEkFGKCSJBVggEqSVIABKklSAQaoJEkFGKCSJBVggEqSVIABKklSAQaoJEkFGKCSJBVggEqSVIABKklSAQaoJEkFGKCSJBVggEqSVIABKklSAYMeoBFxaUQ8EhFPR8TyiDilj751EfH1iPhVRHRGxE099HlvRGQPr6MGdEUkSUe0QQ3QiDgHuA5YAjQB9wNLI2J6L4uMA7YC/xP4RR9D7wHqur4y8+lq1S1JUneDvQd6BXBTZt6Yma2ZeTnQDlzSU+fMfDQzP5iZNwHb+xg3M/Pxrq/qly5J0m8NWoBGxFhgEXBnt6/uBF53iMOPj4j1EbEhIn4YEU2HOJ4kSX0aPYi/6yXAKGBzt/bNwGmHMG4b8D6gBZgIfAi4LyIWZuaa7p0j4mLgYoC6ujoeeughAOrr65kwYQJr164FYPLkycyaNYvm5mYARo0axcKFC2lra2P37t0ANDY2sn37dmDKIZSv4aq1tZW9e/cCMHfuXLZs2cKWLVsAmDFjBhHBo48+CsDUqVOpq6tj1apVAIwbN4558+bx8MMPs2/fPgDmz59Pe3s727ZtA2DmzJlkJuvXrwegtraW2tpaVq9eDcD48eNpbGxk5cqV7N+/H4CFCxfy2GOPsWPHDgBmzZpFR0cHGzZsAGDatGnU1NTQ2toKwNFHH01DQwMtLS10dnYC0NTUxLp169i5cycAs2fPZs+ePWzatAkobReTJk2ira0NgIkTJzJnzhyam5vJTCKCpqYm1qxZw65duwBoaGjgySefpL29HTi07Wnz5tI/Eccddxxjx45l3bp1AEyZMoXp06fT0tICwJgxY1iwYEGhv5NGpm3btlVle+qvyMwqr0IvvyiiHtgInJqZ93Rp/wRwXmY2HGT5HwJbM/O9B+k3ClgB3J2ZH+yrb1NTUy5btqyfa9C7K282QEeiay7cMdQlaIC4zY5M1dpma2pqlmfmiQfrN5jnQLcCncC0bu3TgKqds8zMTuBBYE61xpQkqbtBC9DM7ACWA6d3++p0SlfjVkVEBPC7lC5OkiRpQAzmOVCALwBfjYgHgPuADwD1wPUAEXELQGZecGCBiHhV+e0k4Nny547MXF3+/pPAz4E15T4fpBSgPV7ZK0lSNQxqgGbmbRExFfgYpfs1VwFnZub6cpee7gdt7vb5bcB6YGb58zHADcCxwM5y/8WZ+UB1q5ck6bcGew+UzPwy8OVevnt9D21xkPE+DHy4KsVJktRPzoUrSVIBBqgkSQUYoJIkFWCASpJUgAEqSVIBBqgkSQUYoJIkFWCASpJUgAEqSVIBBqgkSQUYoJIkFWCASpJUgAEqSVIBBqgkSQUYoJIkFWCASpJUgAEqSVIBBqgkSQUYoJIkFWCASpJUgAEqSVIBBqgkSQUYoJIkFWCASpJUgAEqSVIBBqgkSQUYoJIkFWCASpJUgAEqSVIBBqgkSQUYoJIkFWCASpJUgAEqSVIBBqgkSQUYoJIkFWCASpJUgAEqSVIBBqgkSQUYoJIkFWCASpJUgAEqSVIBBqgkSQUYoJIkFWCASpJUgAEqSVIBBqgkSQUYoJIkFWCASpJUgAEqSVIBBqgkSQUYoJIkFWCASpJUgAEqSVIBBqgkSQUYoJIkFWCASpJUwKAHaERcGhGPRMTTEbE8Ik45SP9Ty/2ejoh1EfGBQx1TkqRDNagBGhHnANcBS4Am4H5gaURM76X/y4Efl/s1AZ8BvhQR7yw6piRJ1TDYe6BXADdl5o2Z2ZqZlwPtwCW99P8AsCkzLy/3vxG4GfjIIYwpSdIhG7QAjYixwCLgzm5f3Qm8rpfFXttD/58AJ0bEmIJjSpJ0yEYP4u96CTAK2NytfTNwWi/LHAvc1UP/0eXxotIxI+Ji4OLyx6dqamra+lO8nvMSYOtQFzEY/uHDQ12BVBVus5Wb0Z9Ogxmgw0Jm3gDcMNR1HK4i4sHMPHGo65DUP26zA2cwA3Qr0AlM69Y+DXi8l2Ue76X/M+XxosCYkiQdskE7B5qZHcBy4PRuX51O6crZnvysl/4PZub+gmNKknTIBvsQ7heAr0bEA8B9lK6yrQeuB4iIWwAy84Jy/+uBP42Ia4GvACcB7wXe3d8xVXUe/pYOL26zAyQyc3B/YcSlwJVAHbAK+HBm3lP+7t8AMvP1XfqfCvwdMA/YBPxtZl7f3zElSRoIgx6gkiSNBM6FK0lSAQaoJEkFGKA6qIiYExHdbxWSpCOa50DVo4j4HeA9wIeBLZTuvW0HvgV8OzN3D2F5kjTkDFD1KCJuAuYCPwS2AVOBVwGNwAbgmsz8v0NWoCQNMQNULxARAewCzuxyi1EAxwGvAd5Paa7IczJzxZAVKul5ImISsCv9h31QeA5UPZkLPAJ0HGjIkv/MzNuB/0IpYM8Zovok9eyzwPsiYkE5TF8gIqYOck0jlgGqnqwDngD+rnwB0fP+d1KeQvFm4K1DUZykF4qId1M6OvR54HvAZyPiHRFxfESML/cZD/xjRCwYwlJHDA/hqkcR8RpK0yHupTSN4r8COzLzqYiYANwCPJ2Z5w9hmZLKIuJGSg/XuAY4C7gQOB5oA35MaRtuAK7LzLFDVedIYoCqVxExH/g48IfAbkqT+2+h9KzVduCizFw5dBVKAoiI0ZSmM52UmVd1aZ9Haa/0bOAo4Bjg5sz8kyEpdIQxQHVQ5Vta/gB4O/A0pfmGb8/MXw1pYZKeExFTgGmZ+auIGAvs73oxUUScA/wLcIIX/1WHAaqKRMSLMvPZoa5D0sGVr1+IzOyMiPdTOnw7YajrGikG+3FmOswZntLho9v2OhH45FDVMhK5BypJR4CIGAN0+n+Cq8cAlSSpAO8DlSSpAANUkqQCDFBJkgowQCVJKsAAlSSpgP8PkZpHfc3OFHsAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "
        " ] }, "execution_count": 12, @@ -438,9 +439,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
        " ] }, "execution_count": 13, @@ -449,7 +450,27 @@ } ], "source": [ - "plot_histogram(result.get_counts(bellZI))\n", + "plot_histogram(result.get_counts(bellZI))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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gw8+yIIFC/jEJz7Biy++yIgRI7j//vsPvE466STe+ta39tg2He0M0GNYTU0NTz755IHPGzdupKam5qA+1dXVDBkyBIB3vetdLF++HCgdcbZdt7a29qB1jzvuOC644IJOnxaW1LHOXnK58cYb+dCHPsRxxx13oK2xsZG5c+cCMGbMGEaNGnXg6HS/1atX09zczOmnn969G9KPGKDHsFNPPZU1a9awbt069uzZw4IFCzj//PMP6vPUU08deL9w4UJOOeUUAM4++2yWLFnCc889x3PPPceSJUs4++yzef755w+ss2/fPhYtWsTkyZN7bqOkfqozl1zq6+t58sknOe+88w5qnz59OgsXLmTfvn2sW7eO5cuXH/QfYIAFCxZw4YUXes9CF3gX7jFs4MCBzJs3j0suuYSWlhYuu+wypk6dyo033khdXR1vectbuPXWW1m4cCEDBw6kqqqKr3zlKwBUVVXx4Q9/mHPOOQeAj3zkI1RVVfH0009z2WWXsXv3bl588UXmzJnDlVde2ZubKR0TXnzxRa6//voD+2hr73znO/ntb3/L2WefzUknncRrX/taBgwYcFCfBQsWcMstt/RUuf1CZGZv19Br6urqcvHixb1dhiQd1iOPPMJnP/tZ5s+fD8CXvvQlAK699loAtm3bxqmnnsrw4cMBePrpp6mqquJb3/oWdXV1B4315je/mZtvvvnAI2srVqzgyiuv5Fe/+lVPbU6fVl1dvTQzZx+un6dwJekocLhLLiNHjmT16tXU19dTX1/P7NmzD4Tnzp072bFjBwBLlixh4MCBBz3vPX/+fC666KIe36ajnadwJeko0JlLLh155plnuOSSS4gIamtrX3Kq9r777uOee+7p7k3odzyF6ylcSVIrnsKVJKkbGaCSJBVggEqSVIABKklSAQaoJEkFGKCSJBVggEqSVIABKklSAQaoJEkFOJVfBXz0jqreLkHdYN4VW3q7BEl9mEegkiQVYIBKklSAp3AlHXO87NI/9fRlF49AJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCujxAI2I90fEExHxQkQsjYg5nVzvjRGxLyJWtGl/d0RkO6/jumcLJEnq4QCNiEuBm4EbgTrgIWBh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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ "plot_histogram(result.get_counts(bellXI))" ] }, @@ -464,7 +485,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2018-09-29T01:22:47.590775Z", @@ -474,12 +495,12 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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efM45ZRTdp/q1b4ZoJJ0ADj++ONpaGhg1apVNDU1MWfOHM4999w9+jz//PO738+dO5fXvrb07I2mpiYuvfRSLrzwQt797nfvsc6uR4rt2LGDb37zm1x22WXdvCf9R19/HqgkCTj44IO5/vrrueCCC2hububiiy+murqa2bNnU1NTwzve8Q5uv/125s6dy8EHH8yoUaO4+eabAbj//vtZuHAhGzdu5Ac/+AEAN998MzNmzOCmm27ioYceIjO57LLLmDVrVm/u5gHF21i8jUWS1IK3sUiS1I0MUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAA1SSpAIMUEmSCjBAJUkqwACVJKkAn8YiacD57J2jersEdYPrP7ipR3+fR6CSJBVggEqSVIABKklSAQaoJEkFGKAD3Lx58zj55JM54YQTuOGGG9rt99Of/pSKigoWL14MwH333cesWbN2v0aPHs2SJUsA+NKXvsT06dM55phjemQfJKk3GKADWHNzM5/97Gf54Q9/yGOPPcaPf/xjfvOb37yq39atW7nttts44YQTdre9733vY8GCBSxYsIBbb72V8ePHM2PGDADe/va3M2/evB7bD0nqDQboALZo0SKOPfZYJkyYwJAhQzjvvPOYO3fuq/rNnj2bT37ykxxyyCFtbufHP/4x55133u7PJ510EkceeWS31S1JfYEBOoA1NjZy1FFH7f5cVVVFY2PjHn1qa2t57rnnOOecc9rdzk9+8pM9AlSSBgInUlC7XnnlFa699lpuvvnmdvs8+eSTDBs2jKlTp/ZgZZLU+zwCHcAqKyt57rnndn9eu3YtlZWVuz//4Q9/oK6ujne9613MnDmTJ598kosvvnj3QCKAOXPmcP755/do3ZLUFxigA9jxxx9PQ0MDq1atoqmpiTlz5nDuuefuXj5y5EhWrFhBbW0ttbW1nHjiiXz/+9+npqYGKB2hPvDAA56+lTQgGaAD2MEHH8z111/PBRdcwJve9Cbe8573UF1dzezZs9scTNTawoULqaqqYsKECXu0X3fddUybNo1t27Yxbdo0vvKVr3TTHkhS74nM7O0aek1NTU3Onz+/t8uQ1MOcTL5/6qrJ5CsqKhZl5on76ucRqCRJBRigkiQVYIBKklSAASpJUgEGqCRJBRigkiQVYIBKklSAASpJUgEGqCRJBRig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\n", "text/plain": [ - "" + "
        " ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -499,7 +520,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2018-09-29T01:22:47.802764Z", @@ -509,12 +530,12 @@ "outputs": [ { "data": { - "image/png": "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q6tf06eqqorBg0sDM33oQx/i6aef7nA9RxxxBI8++ihVVVUMHTqU0047DYD3vve9O4bmkiQZoH3CkUceyZIlS1i2bBktLS3Mnj2bmTNnvqbPc8/9fmCmOXPm8OY3l8ajWLly5Y7xKX/3u9/x+OOPM3HiRCKCd73rXTz00EMAPPjgg0ya9LrRFiWp3/Ikoj5g33335eqrr+ass86itbWVc845h9raWmbNmkV9fT3vfve7ufnmm5kzZw777rsvI0aM4Prrrwfg17/+NZ///OeJCDKTiy++mMmTJwNw1VVXceGFF/K5z32Ogw46iG9961s9+TYlqVep6P1AexsHk5cktdcbB5OXJKnPMEAlSSrAAJUkqQADVJKkAgxQSZIKMEAlSSrAAJUkqQADVJKkAgxQSZIKMEAlSSrAAJUkqQADVJKkArwbSze44tYRPV1Cv3L1uet7ugRJcgtUkqQiDFBJkgowQCVJKsAAlSSpAANUkqQCDFBJkgowQCVJKsAAlSSpAANUkqQCDFBJkgowQCWpD7vvvvs45phjOOqoo7j22mt32u+uu+6iqqqKefPm7WhbsGABp556KsceeyzHH388r7zyymuW+eAHP8hxxx2312rv7RwLV5L6qNbWVq644gpmz55NTU0Np5xyCjNnzuSII454Tb+NGzdy0003cdRRR+1o27ZtGx/72Me48cYbmTp1KuvWrWPgwIE75t99993sv//+FXsvvZFboJLUR82dO5fDDjuMcePGMWjQIM444wzmzJnzun6zZs3i0ksvZb/99tvR9sADDzBlyhSmTp0KQFVVFQMGDADgpZde4oYbbuBTn/pUZd5IL2WASlIf1dzczCGHHLJjuqamhubm5tf0aWhoYOXKlZx66qmvaV+8eDERwZlnnsn06dP5xje+sWPerFmzuPjiixk6dOjefQO9nLtwJamfevXVV7nyyiu5/vrrXzdv27ZtPPbYY/ziF79gyJAhvO9976Ouro6qqiqWLl3KrFmzWL58eQ9U3XsYoJLUR1VXV7Ny5cod06tWraK6unrH9EsvvURjYyOnnXYaAM8//zznnHMOd9xxBzU1NRx33HGMHDkSgBkzZtDQ0MCb3vQmnn76aerq6ti2bRsvvPACp512GnfffXdl31wv4C5cSeqjjjzySJYsWcKyZctoaWlh9uzZzJw5c8f84cOHs3jxYhoa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\n", + "image/png": "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\n", "text/plain": [ - "" + "
        " ] }, - "execution_count": 15, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -534,7 +555,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2018-09-29T01:22:49.085422Z", @@ -544,12 +565,12 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
        " ] }, - "execution_count": 16, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -569,7 +590,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": { "ExecuteTime": { "end_time": "2018-09-29T01:22:50.238478Z", @@ -579,12 +600,12 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAR8AAADRCAYAAAD1wrY9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAF85JREFUeJzt3X9Q0/f9B/BnRMUKCUFArbLggLPf+oMkMqWy1aiIzApFS7V6m5Rxlu7Q7bwhB7O91WLrAv447eZuo71KCzqL2isyKfptK+67tpddRXR2W79tQZCtlh8DQymgJO/vH35JpSgmmHzeBJ6PuxzwyfuT1ysfw9P350eCSgghQESksDGyGyCi0YnhQ0RSMHyISAqGDxFJwfAhIikYPkQkBcOHiKRg+BCRFAwfIpKC4UNEUjB8iEgKhg8RScHwISIpGD5EJAXDh4ikYPgQkRQMHyKSguFDRFIwfIhICoYPEUnB8CEiKRg+RCQFw4eIpGD4EJEUDB8ikoLhQ0RSjJXdAMm1ZcsW1NTUKF7XYDBg3759Q1pXVs/AvfVN/XHmM8rV1NQo/ot8rzVl9Cyz7kjFmQ/BYDCgqqpKsXqLFy++58dQumfAPX3TNzjzISIpGD5EJAXDh4ikYPgQkRQMHyKSguFDdAft7e2yWxjRGD40onV3d6O4uBhpaWmYO3cugoODERQUhDlz5uDJJ59EcXExuru7B6z3u9/9DjNnzsSnn34qoevRYdSET1FRkcvXaURHR+PUqVOeaYg8qre3F/n5+QgNDUVqairefvtt6HQ6PPHEE1i3bh3CwsJQWVmJ1NRUhIaGwmw2o7e3F8DN4Nm0aRMeeugh6HQ6yc9k5JIaPjabDdnZ2QgJCYFarUZKSgpaWlqGTe3k5GScOHFCkX68xVdffYWQkBAcO3bMsayrqwuxsbF4/PHHYbfbJXZ3U319PWJjY5Gbm4uHHnoI7777Lq5evYqTJ0/iwIEDOHDgAE6ePImrV6/ivffew8KFC/HLX/4SCxcuxI4dO7Bp0yYkJSXh6NGj8PX1lf10Riyp4WM2m1FWVgaLxYLGxkYAwIYNG4ZNbYbPQP7+/ti6dSvy8vIghIDNZsPatWvh6+uLQ4cOYcwYuZPpuro6/OAHP8Cnn36KN954A3/605+wdOlSqFSqAWNVKhWWLFmC8vJylJaW4uOPP8avfvUrxMXFMXgU4PFXSmlpKSIjI+Hv74/ly5cjKysLa9asAQAUFhYiJycH4eHhCAgIQEFBASorK1FfX+/ptpyqrdfr4ePjg3Pnznm8H2+yefNmXL16FcePH0dGRgYaGxtRVlYm/Ze1p6cHjz76KDo7O1FVVYW1a9c6vW5zczO6urowbtw4/Pvf//Zgl9THo+Hz2muvISsrC4cOHUJHRwcSExOxf/9+GI1GtLe3o6GhAdHR0Y7xERER0Gg0uHDhgkt1zGYzoqKinB7vSu3k5GSUlZW51M9I5+fnh+zsbKSlpaGqqgqVlZXQaDSy28KOHTtw6dIlFBcXQ6/XO71e3zGepKQkHDt2DP/4xz/w/PPPe7BTAjwYPl9//TV+8YtfoLCwEDExMVCpVNi4cSNsNhuMRiM6OjoAAAEBAf3W02q1sFqtAICSkhIsXLgQCxcuxJkzZ+5YKzc3FxcvXnS6N2dq91m5ciVOnjzp9GOPJp2dncjNzcWUKVNkt4LW1lbs3r0bP/rRj7By5Uqn17s1eI4ePYpHH30UGzZswN69exU7/jhqCQ+pqKgQWq2237LLly8LAOKLL74QbW1tAoA4f/58vzEajUaUlZWJtrY2odfrRVdXl2hubhZ6vV7YbLYh93Pw4EFhMpmEEOKutW9VWFgoVq1aNeS6zgIg7da3XZxVXFwsAgMDRXp6upg9e7aw2+0urW8ymdze865duwQAcfHiRaf7OHDggAAgkpKSRHd3t2P53/72NwFAFBQUuL3v0XYbjMdmPk1NTZg8eXK/ZYcPH8aUKVMwdepUaLVa6HQ6VFdXO+6vra2F1WpFVFQULBYLTCYTJkyYgODgYEybNg2XL192S293q32rEydOIDk52S11ByOEkHIzmUwu9VlRUYHMzEy89dZbeOmll9DU1ISjR4+6/HxNJpNbez558iSMRiPmzp3rVP1vz3huPV41Z84cREdH33bGey99j8bbYDwWPrNmzcJnn32Gs2fP4vr16zh8+DDMZjOMRqNjTEZGBvLz81FXVwer1YqcnBwkJCRgxowZaG1tRWBgoGNsYGAgWltb3dbfYLX7dHZ24syZM0hMTHRbXW/2wQcfYN26dXj99dexaNEix7GfvLw8qafY7XY7qqurERMT49T4wYKnT0xMDKqrq4fFpQMjlcfCZ/78+XjmmWfw2GOPITQ0FBaLBTExMf3CJzc3F0lJSZg/fz6mT58Om82GkpISAEBQUBDa2tocY9vb2xEUFHTbWjt37sTs2bNd6m+w2n1Onz4No9GI4OBglx57JLp06RISExOxd+9erFq1yrF806ZNaG5uHtLsx12uXbsGq9WKmTNn3nWsM8EDADNnzkRHR0e/1yC5mVBQWFiYKC0tdWpsW1ubMBqNoru7W7S2trr1mI+z0tLSxK5du4Zc0xuYTCaXt4vsmt9ev7e3V3zyySeipaVl0PXsdrtITk4ecIzndlpaWsQnn3wient73dY39afYx6harVbU19f3m/kMRqvVYsuWLY63ROzZs0fxC9jCwsIc1yTR8OXj4+PUrEelUqG0tBRCiLtekxQUFHTHmTa5h2Lhc+nSJajVakRERDi9TmpqKlJTU91S32AwIC0tzaV1tm/f7pbaNHyMHz9edgv0/xQLn9jY2AHX0CjJYDDAYDBIq09E/Y2ad7UT0fDC8CEiKRg+RCQFw4eIpGD4EJEU/HPJhJqaGkX/FHBNTc09n3lUuue+mjxj6j4Mn1FOxi/TvV72cC/r1jZ8gXDd/Y6vrtZl+LiPSoi7vPWUaATJzS+EOSfD8ZXk4TEfIpKC4UNEUjB8iEgKhg8RScHwISIpGD5EJAXDh4ikYPgQkRQMHyKSguFDRFIwfIhICoYPEUnB8CEiKfiRGqPcli1bUFNTo3hdg8GAffv2KV5XJm7r/jjzGeVqamoU/4WQUXM44LbujzMfgsFgQFVVlWL1lP4EwuGE2/obnPkQkRQMHyKSguFDRFIwfIhICoYPEUnB8CEiKXiqnWiYampqwrlz5/D3v/8d3d3d8PPzw5w5czBv3jxMmjTptusUFBRgxYoVmDt3rsLduo7hQzSMCCFw4sQJ/Pa3v8U777xz2zFjxoxBYmIifvazn2HZsmWO5du3b8fzzz+PL7/8Env27FGq5SEbNbtdRUVFLl9wFR0djVOnTnmmIaJvaWxsxCOPPIJVq1bhn//8J7Zv344zZ86gtbUVPT09aGpqwunTp5GdnY0PP/wQ8fHxWL9+PVpaWhzBk56ejl27dsl+Kk6RGj42mw3Z2dkICQmBWq1GSkoKWlpahk3t5ORknDhxQpF+vMVXX32FkJAQHDt2zLGsq6sLsbGxePzxx2G32yV2573Onz8Po9GIP//5z/jNb36Duro6PPfcc1i8eDEmTZqE8ePHIyQkBPHx8TCbzbhy5Qp27NiB48ePIzIy0hE8L7/8MsaM8Y45hdQuzWYzysrKYLFY0NjYCADYsGHDsKnN8BnI398fW7duRV5eHoQQsNlsWLt2LXx9fXHo0CGveeEPJ59//jni4+MxceJEVFdXY/PmzRg7dvAjIr6+vnj22WeRlpaGa9euwc/PDy+88IJXbX+Pd1paWorIyEj4+/tj+fLlyMrKwpo1awAAhYWFyMnJQXh4OAICAlBQUIDKykrU19d7ui2nauv1evj4+ODcuXMe78ebbN68GVevXsXx48eRkZGBxsZGlJWVwdfXV3ZrXsdutyMtLQ29vb1499138cADDzi97vbt2/Hyyy8jOTkZN27cwObNmyGE8GC37uXR8HnttdeQlZWFQ4cOoaOjA4mJidi/fz+MRiPa29vR0NCA6Ohox/iIiAhoNBpcuHDBpTpmsxlRUVFOj3eldnJyMsrKylzqZ6Tz8/NDdnY20tLSUFVVhcrKSmg0GtlteaWDBw/iL3/5C/bv34/IyEin17v1GM+bb76JvLw8vPnmm6ioqPBgt24mPKSzs1NMmjRJVFRU9FsGQFRUVIiGhgYBQNTW1vZbT6fTieLiYiGEEHFxcSI4OFjs2LHjnvs5ePCgMJlMQgjhVO0+p06dEvPmzbvn+ncDQNqtb7u4oqCgQAAQhYWFLq9rMpmkPt/hsq3tdruIiooSer1e2O12p7ffc889JwCI9PR0YbPZhBBC3LhxQ0yfPl0sX758WG3rwXhs5nP27FnY7XasWLHCsay5uRkAYDQaoVarAQDXrl3rt157e7vjf9GioiKPHLl3pnaf+vp66HQ6t/fwbUIIKTeTyeRyryUlJfj1r3+N9PR07N+/f0hTfZPJJOX55pj/0O+rzG1dU1ODixcvIjMzEyqVyqntduuM59aDy2PHjsVTTz2F06dP41//+tew2NZ3e114LHyampowefLkfssOHz6MKVOmYOrUqdBqtdDpdKiurnbcX1tbC6vV6tiFCg0N9UhvztTuc+LECSQnJ3ukD29UUVGBzMxMvPXWW3jppZfQ1NSEo0ePym7LK/31r38FAMTHxzs1/k7B06fvcT766CP3NuohHgufWbNm4bPPPsPZs2dx/fp1HD58GGazGUaj0TEmIyMD+fn5qKurg9VqRU5ODhISEjBjxgxPteVS7c7OTpw5cwaJiYke78cbfPDBB1i3bh1ef/11LFq0yHHsJy8vj6fYh+DixYsICAhw6vV+t+ABbn5QWd/jegOPhc/8+fPxzDPP4LHHHkNoaCgsFgtiYmL6hU9ubi6SkpIwf/58TJ8+HTabDSUlJS7X2rlzJ2bPnu3SOs7UPn36NIxGI4KDg13uaaS5dOkSEhMTsXfvXqxatcqxfNOmTWhububsZwgWLFiAjIyMu+5y/fGPf3TqOp6JEyfi6aef9oq3VgAefntFXl4e8vLyHD/PmDEDTz31lONnHx8f7N69G7t3776nOtu2bcO2bdtcWseZ2tzl+sacOXPwn//8Z8DyiRMn4ssvv5TQkfd78sknnRqXkpKCAwcO4Kc//eldr+P5/e9/747WFKHYe7usVivq6+v7zXzuJj09HRaLBT09PbBYLCgvL/dghwOFhYU5rkkikmX8+PHIzMyU3YbbKRY+ly5dglqtRkREhNPrvPrqq26rbzAYkJaW5tI627dvd1t9IupPsfCJjY2F1WpVqtwABoPBcUCOiOTznjeCENGIwvAhIikYPkQkBcOHiKRg+BCRFPwMZ0JNTY2if9O7pqZm1J555Lb+BsNnlJPxwhytlz0M9TnXNnyBcN39A753tuZw3dYMn1Fu3759slsYNYa6rXPzC2HOyRjwvbfjMR8ikoLhQ0RSMHyISAqGDxFJwfAhIikYPkQkBcOHiKRg+BCRFAwfIpKC4UNEUjB8iEgKhg8RScHwISIpGD5EJAXDh4ikYPgQkRQMHyKSguFDRFLwY1RpxPrv//kIV75oHrD81dK3+30FgND7Q7D84e8p1hsxfGgEeyD8O3j3g+oBy/+37kq/rwAQ9/15ivVFN3G3i0Ys3fQpMMyKvOs4/YMRCJs+RYGO6FYMHxrRfmhagHFjfe54/7ixPlixOEbBjqgPw4dGNK3GH4ti9He8f9ECPbQafwU7oj7DLnyOHDmChx9+GBqNBmPHKntIymazITs7GyEhIVCr1UhJSUFLS4uiPZD7mRboofH3G7Bc4+8H0yDBRJ417MInMDAQmZmZUv6YndlsRllZGSwWCxobGwEAGzZsULwPcq/x48dhxeIFA5avWLwA48ePk9ARARLD5/3330dcXBw0Gg20Wi3WrFkDAEhISMD69esRHh6ueE+FhYXIyclBeHg4AgICUFBQgMrKStTX1yveC7mXflYkvnP/ZMfP37k/BHonDkaT50gJn+PHj2P16tXIzMxEU1MTrly5go0bN7q1htlsRlRUlNPj29vb0dDQgOjoaMeyiIgIaDQaXLhwwa29kfLGqFRIilvo+DkxLhZjVCqJHZFKCCGULNjZ2YmwsDC88sorWLVq1R3HVVVVYdmyZejt7e23vKSkBAcOHAAA7Ny5E0uWLHFLX1euXIFOp0NtbS2++93vOpaHhYXhxRdfxI9//GO31LmT3PxCjz4+kQyD/l15obCTJ0+K4OBgYbfbBx135swZ4ePj029ZW1ub0Ov1oqurSzQ3Nwu9Xi9sNptb+mpraxMAxPnz5/st12g0oqyszC01SL62ax2i7VqH7DZckmP+w22/93aK73a1tLQgMDAQqiFMeS0WC0wmEyZMmIDg4GBMmzYNly9fdktfWq0WOp0O1dXfXBFbW1sLq9Xq0u4bDW9ajT9PrQ8Tir+9Yt68eairq0N5eTlWrlwJq9UKi8WChIQEADdPd9+4cQPXr18HAHR3dwMAfH190draisDAQMdjBQYGorW11W0HpzMyMpCfn48lS5YgKCgIOTk5SEhIwIwZM9zy+IPhbhcN5tbXhze9VobVbpcQQhQVFYmZM2cKPz8/MXXqVLFt2zbHfQcPHhQABtzq6upEZWWl+PnPf+4Y+8gjj4jPP//8tjVefPFFMWvWLJf66u3tFVlZWSIoKEj4+/uL1atXi+bm5qE9SSI3Gam7XYofcL4X7e3tWLp0KT788EN0dnZi6dKlqK6uxpgxw+5yJSK3yc0vdMwgbv3e23nVu9q1Wi22bNmCxYsXAwD27NnD4CHyUl4VPgCQmpqK1NRU2W0Q0T3itIGIpGD4EJEUDB8ikoLhQ0RSMHyISAqGDxFJwfAhIikYPkQkBcOHiKRg+BCRFAwfIpKC4UNEUjB8iEgKhg8RScHwISIpGD5EJAXDh4ikYPgQkRQMHyKSguFDRFIwfIhICoYPEUnB8CEiKRg+RCQFw4eIpGD4EJEUDB8ikoLhQ0RSjJXdABF9w9rRiS9b2wYs//Ry422/nzY5GH4TJyjSm7uphBBCdhNEdNNXX3dhd+Eb6O65ftexAWo/ZD31BMaP8845BHe7iIYR/4n3IS52nlNjVyyO8drgARg+RMPOwujZCArUDDpGN20y9A9GKNSRZzB8iIaZsT4+WLnkoUHHJMbFQqVSKdSRZwy78Dly5AgefvhhaDQajB2r7JTSZrMhOzsbISEhUKvVSElJQUtLi6I9EAHAg5FhiAybftv7jLMjoZs2WeGO3G/YhU9gYCAyMzOxb98+xWubzWaUlZXBYrGgsfHmGYUNGzYo3geRSqVCYtzCAbObcWN98MNFCyR15V7Swuf9999HXFwcNBoNtFot1qxZAwBISEjA+vXrER4ernhPhYWFyMnJQXh4OAICAlBQUIDKykrU19cr3gvR1JBJWKD/r37LTDEGBGj8JXXkXlLC5/jx41i9ejUyMzPR1NSEK1euYOPGjW6tYTabERUV5fT49vZ2NDQ0IDo62rEsIiICGo0GFy5ccGtvRM6Kf/h78B0/DsDNU+uLYvSSO3IfxcOns7MTTz/9NAoLC5GSkoIJEyZArVYjISHBqfWXLVuGkJAQvPDCC4OOy83NxcWLF53uq6OjAwAQEBDQb7lWq4XVanX6cYjcyX/ifYj7/s3/EL391Pq3Kf5Mzp49C5VKheTk5CGtX1RUhHfeecdxTMZd1Go1AODatWv9lre3t0OjGfy0pzvk5hd6vAZ5tyPl7+FI+Xuy23CJOSfjjvcpHj4tLS0IDAwc8mnC0NBQN3d0k1arhU6nQ3V1NQwGAwCgtrYWVqvVpd23oRrsH4lICOH1p9a/TfHdrnnz5qGurg7l5eWw2+1ob2/HqVOnHPfbbDZ0d3fj+vWbl5d3d3eju7sbSrwLJCMjA/n5+airq4PVakVOTg4SEhIwY8YMj9cmGsxICx5Awsxnzpw5eOWVV7B161asX78earUa6enpjmM+xcXF+MlPfuIYf9999wEA6urqXAqBnTt34tChQ/j444+dXic3NxdtbW2YP38+enp6EB8fj5KSEqfXvxfc7aKRaLAZvVe+sbSoqAiNjY149tlnZbdCREPkdeGTnp4Oi8WCnp4ePPjggygvL5fdEhENgdeFDxGNDMPu7RVENDowfIhICoYPEUnB8CEiKRg+RCQFw4eIpGD4EJEUDB8ikoLhQ0RSMHyISAqGDxFJwfAhIikYPkQkBcOHiKRg+BCRFAwfIpKC4UNEUjB8iEgKhg8RScHwISIpGD5EJAXDh4ikYPgQkRQMHyKS4v8Arn5JpTs26e4AAAAASUVORK5CYII=\n", "text/plain": [ - "" + "
        " ] }, - "execution_count": 17, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -595,7 +616,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2018-09-29T01:22:50.594107Z", @@ -605,12 +626,12 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
        " ] }, - "execution_count": 18, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -649,7 +670,7 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -663,7 +684,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.7.2" } }, "nbformat": 4, diff --git a/community/terra/qis_intro/entanglement_testing.ipynb b/community/terra/qis_intro/entanglement_testing.ipynb index bada089d6..e6d3559c3 100644 --- a/community/terra/qis_intro/entanglement_testing.ipynb +++ b/community/terra/qis_intro/entanglement_testing.ipynb @@ -110,7 +110,7 @@ ], "source": [ "from qiskit import IBMQ, BasicAer\n", - "from qiskit.backends.ibmq import least_busy\n", + "from qiskit.providers.ibmq import least_busy\n", "IBMQ.load_accounts()\n", "\n", "# use simulator to learn more about entangled quantum states where possible\n", diff --git a/environment.yml b/environment.yml index de6b9d5ee..9c89d07cc 100644 --- a/environment.yml +++ b/environment.yml @@ -1,7 +1,7 @@ name: Qiskitenv dependencies: -- python=3 -- pip +- python==3.6 +- pip=18 - matplotlib - notebook - ipywidgets diff --git a/index.ipynb b/index.ipynb index 2f4711936..d03034999 100644 --- a/index.ipynb +++ b/index.ipynb @@ -16,11 +16,11 @@ "***\n", "\n", "\n", - "Welcome Qiskitters to the Quantum Information Science Kit ([Qiskit](https://www.qiskit.org/) for short)! \n", + "Welcome Qiskitters.\n", "\n", - "The easiest way to get started is to use [the Binder image](https://mybinder.org/v2/gh/Qiskit/qiskit-tutorial/master?filepath=index.ipynb), which lets you use the notebooks via the web. This means that you don't need to download or install anything, but is also means that you should not insert any private information into the notebooks (such as your API key). We recommend that after you are done using mybinder that you regenerate your token. \n", + "The easiest way to get started is to use [the Binder image](https://mybinder.org/v2/gh/qiskit/qiskit-tutorials/master?filepath=index.ipynb), which lets you use the notebooks via the web. This means that you don't need to download or install anything, but is also means that you should not insert any private information into the notebooks (such as your API key). We recommend that after you are done using mybinder that you regenerate your token. \n", "\n", - "The tutorials can be downloaded by clicking [here](https://github.com/Qiskit/qiskit-tutorial/archive/master.zip) and to set them up follow the installation instructions [here](https://github.com/Qiskit/qiskit-tutorial/blob/master/INSTALL.md).\n", + "The tutorials can be downloaded by clicking [here](https://github.com/Qiskit/qiskit-tutorials/archive/master.zip) and to set them up follow the installation instructions [here](https://github.com/Qiskit/qiskit-tutorial/blob/master/INSTALL.md).\n", "\n", "***\n", "\n", @@ -40,10 +40,10 @@ "\n", "#### 1.1 Getting started with Qiskit\n", "\n", - "A central goal of Qiskit Terra is to build a software stack that makes it easy for anyone to use quantum computers. To get developers and researchers going we have a set of tutorials on the basics. \n", + "A central goal of Qiskit is to build a software stack that makes it easy for anyone to use quantum computers. To get developers and researchers going we have a set of tutorials on the basics. \n", "\n", - " * [Getting started with Qiskit Terra](qiskit/basics/getting_started_with_qiskit_terra.ipynb) - how to use Qiskit Terra\n", - " * [The IBM Q provider](qiskit/basics/the_ibmq_provider.ipynb) - working with the IBM Q provider\n", + " * [Getting started with Qiskit](qiskit/basics/getting_started_with_qiskit.ipynb) - how to use Qiskit\n", + " * [The IBM Q provider](qiskit/basics/the_ibmq_provider.ipynb) - working with the IBM Q devices\n", " * [Plotting data in Qiskit](qiskit/basics/plotting_data_in_qiskit.ipynb) - illustrates the different ways of plotting data in Qiskit\n", " \n", "#### 1.2 Qiskit Terra\n", @@ -52,20 +52,21 @@ " * [Quantum circuits](qiskit/terra/quantum_circuits.ipynb) - gives a summary of the `QuantumCircuit` object\n", " * [Visualizing a quantum circuit](qiskit/terra/visualizing_a_quantum_circuit.ipynb) - details on drawing your quantum circuits\n", " * [Summary of quantum operations](qiskit/terra/summary_of_quantum_operations.ipynb) - list of quantum operations (gates, reset, measurements) in Qiskit Terra\n", - " * [Monitoring jobs and backends](qiskit/terra/backend_monitoring_tools.ipynb) - Tools for monitoring jobs and backends.\n", - " * [Parallel tools](qiskit/terra/terra_parallel_tools.ipynb) - Executing tasks in parallel using `parallel_map` and tracking progress.\n", + " * [Monitoring jobs and backends](qiskit/terra/backend_monitoring_tools.ipynb) - tools for monitoring jobs and backends\n", + " * [Parallel tools](qiskit/terra/terra_parallel_tools.ipynb) - executing tasks in parallel using `parallel_map` and tracking progress\n", + " * [Creating a new provider](qiskit/terra/creating_a_provider.ipynb) - a guide to integration of a new provider with Qiskit structures and interfaces\n", " \n", "#### 1.3 Qiskit Interacitve Plotting and Jupyter Tools\n", "\n", "To improve the Qiskit user experience we have made many of the visualizations interactive and developed some very cool new job monitoring tools in Jupyter.\n", "\n", - " * [Jupyter tools for Monitoring jobs and backends](qiskit/jupyter/jupyter_backend_tools.ipynb) - Jupyter tools for monitoring jobs and backends.\n", + " * [Jupyter tools for Monitoring jobs and backends](qiskit/jupyter/jupyter_backend_tools.ipynb) - Jupyter tools for monitoring jobs and backends\n", "\n", "#### 1.4 Qiskit Aer\n", "\n", "Aer, the ‘air’ element, permeates all Qiskit elements. To really speed up development of quantum computers we need better simulators with the ability to model realistic noise processes that occur during computation on actual devices. Aer provides a high-performance simulator framework for studying quantum computing algorithms and applications in the noisy intermediate scale quantum regime. \n", - " * [Aer provider](qiskit/aer/aer_provider.ipynb) - gives a summary of the Qiskit Aer provider containing the Qasm, statevector, and unitary simulator.\n", - " * [Device noise simulation](qiskit/aer/device_noise_simulation.ipynb) - shows how to use the Qiskit Aer noise module to automatically generate a basic noise model for simulating hardware backends.\n", + " * [Aer provider](qiskit/aer/aer_provider.ipynb) - gives a summary of the Qiskit Aer provider containing the Qasm, statevector, and unitary simulator\n", + " * [Device noise simulation](qiskit/aer/device_noise_simulation.ipynb) - shows how to use the Qiskit Aer noise module to automatically generate a basic noise model for simulating hardware backends\n", " \n", "#### 1.5 Qiskit Ignis\n", "Ignis, the ‘fire’ element, is dedicated to fighting noise and errors and to forging a new path. This includes better characterization of errors, improving gates, and computing in the presence of noise. Ignis is meant for those who want to design quantum error correction codes, or who wish to study ways to characterize errors through methods such as tomography, or even to find a better way for using gates by exploring dynamical decoupling and optimal control. While we have already released parts of this element as part of libraries in Terra, an official stand-alone release will come soon. For now we have some tutorials for you to explore.\n", @@ -99,14 +100,124 @@ "#### 2.5 [Developing Quantum Applications with Qiskit Aqua](community/aqua/index.ipynb)\n", "Learn how to develop and the fundamentals of quantum applications using Qiskit Aqua\n", "\n", - "#### 2.6 [Teach Me Qiskit 2018](community/teach_me_qiskit_2018/index.ipynb)\n", - "Learn from the great contributions to the [Teach Me Qiskit Award](https://qe-awards.mybluemix.net/).\n", - "\n", + "#### 2.6 Awards\n", + "Learn from the great contributions to the [IBM Q Awards](https://qe-awards.mybluemix.net/)\n", + "* [Teach Me Qiskit 2018](community/awards/teach_me_qiskit_2018/index.ipynb)\n", + "* [Teach Me Quantum 2018](community/awards/teach_me_quantum_2018/index.ipynb)\n", "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "The following lists show notebooks in the Qiskit tutorials that are relevant for various keywords. Note that these lists only include notebooks for which these keywords have been added.\n", + "\n", + "\n", + "## Index by Commands\n", + "\n", + "### Custom gates\n", + "* [quantum tic tac toe](community/games/quantum_tic_tac_toe.ipynb)\n", + "\n", + "### `basic_device_noise_model`\n", + "* [random terrain generation](community/games/random_terrain_generation.ipynb)\n", + "\n", + "### `cx`\n", + "* [Hello Qiskit](community/games/Hello_Qiskit.ipynb)\n", + "* [quantum awesomeness](community/games/quantum_awesomeness.ipynb)\n", + "\n", + "### `h`\n", + "* [Hello Qiskit](community/games/Hello_Qiskit.ipynb)\n", + "* [quantum counterfeit coin problem](community/games/quantum_counterfeit_coin_problem.ipynb)\n", + "* [quantum slot machine](community/games/quantum_slot_machine.ipynb)\n", + "\n", + "### `noise_model`\n", + "* [random terrain generation](community/games/random_terrain_generation.ipynb)\n", + "\n", + "### `rx`\n", + "* [quantum awesomeness](community/games/quantum_awesomeness.ipynb)\n", + "\n", + "### `ry`\n", + "* [random terrain generation](community/games/random_terrain_generation.ipynb)\n", + "\n", + "### `shots=1`\n", + "* [quantum slot machine](community/games/quantum_slot_machine.ipynb)\n", + "\n", + "### `u3`\n", + "* [battleships with partial NOT gates](community/games/battleships_with_partial_NOT_gates.ipynb)\n", + "\n", + "### `x`\n", + "* [Hello Qiskit](community/games/Hello_Qiskit.ipynb)\n", + "\n", + "### `z`\n", + "* [Hello Qiskit](community/games/Hello_Qiskit.ipynb)\n", + "\n", + "\n", + "## Index by Topics\n", + "\n", + "### Bell inequality\n", + "* [Hello Qiskit](community/games/Hello_Qiskit.ipynb)\n", + "\n", + "### Counterfeit coin problem\n", + "* [quantum counterfeit coin problem](community/games/quantum_counterfeit_coin_problem.ipynb)\n", + "\n", + "### Entanglement\n", + "* [quantum awesomeness](community/games/quantum_awesomeness.ipynb)\n", + "* [quantum tic tac toe](community/games/quantum_tic_tac_toe.ipynb)\n", + "* [random terrain generation](community/games/random_terrain_generation.ipynb)\n", + "\n", + "### Games\n", + "* [Hello Qiskit](community/games/Hello_Qiskit.ipynb)\n", + "* [battleships with partial NOT gates](community/games/battleships_with_partial_NOT_gates.ipynb)\n", + "* [quantum awesomeness](community/games/quantum_awesomeness.ipynb)\n", + "* [quantum slot machine](community/games/quantum_slot_machine.ipynb)\n", + "* [quantum tic tac toe](community/games/quantum_tic_tac_toe.ipynb)\n", + "* [random terrain generation](community/games/random_terrain_generation.ipynb)\n", + "\n", + "### Hardware\n", + "* [quantum awesomeness](community/games/quantum_awesomeness.ipynb)\n", + "\n", + "### NOT gates\n", + "* [battleships with partial NOT gates](community/games/battleships_with_partial_NOT_gates.ipynb)\n", + "\n", + "### Procedural generation\n", + "* [random terrain generation](community/games/random_terrain_generation.ipynb)\n", + "\n", + "### Random number generation\n", + "* [quantum slot machine](community/games/quantum_slot_machine.ipynb)\n", + "\n", + "### Superposition\n", + "* [quantum tic tac toe](community/games/quantum_tic_tac_toe.ipynb)\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import display, Markdown\n", + "with open('index.md', 'r') as readme: content = readme.read(); display(Markdown(content))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "*** \n", "\n", "## License\n", - "This project is licensed under the Apache License 2.0 - see the [LICENSE](https://github.com/Qiskit/qiskit-tutorial/blob/master/LICENSE) file for details." + "This project is licensed under the Apache License 2.0 - see the [LICENSE](https://github.com/Qiskit/qiskit-tutorials/blob/master/LICENSE) file for details." ] }, { @@ -134,7 +245,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.1" + "version": "3.7.0" } }, "nbformat": 4, diff --git a/index.md b/index.md new file mode 100644 index 000000000..15f493256 --- /dev/null +++ b/index.md @@ -0,0 +1,78 @@ +The following lists show notebooks in the Qiskit tutorials that are relevant for various keywords. Note that these lists only include notebooks for which these keywords have been added. + + +## Index by Commands + +### Custom gates +* [quantum tic tac toe](community/games/quantum_tic_tac_toe.ipynb) + +### `basic_device_noise_model` +* [random terrain generation](community/games/random_terrain_generation.ipynb) + +### `cx` +* [Hello Qiskit](community/games/Hello_Qiskit.ipynb) +* [quantum awesomeness](community/games/quantum_awesomeness.ipynb) + +### `h` +* [Hello Qiskit](community/games/Hello_Qiskit.ipynb) +* [quantum counterfeit coin problem](community/games/quantum_counterfeit_coin_problem.ipynb) +* [quantum slot machine](community/games/quantum_slot_machine.ipynb) + +### `noise_model` +* [random terrain generation](community/games/random_terrain_generation.ipynb) + +### `rx` +* [quantum awesomeness](community/games/quantum_awesomeness.ipynb) + +### `ry` +* [random terrain generation](community/games/random_terrain_generation.ipynb) + +### `shots=1` +* [quantum slot machine](community/games/quantum_slot_machine.ipynb) + +### `u3` +* [battleships with partial NOT gates](community/games/battleships_with_partial_NOT_gates.ipynb) + +### `x` +* [Hello Qiskit](community/games/Hello_Qiskit.ipynb) + +### `z` +* [Hello Qiskit](community/games/Hello_Qiskit.ipynb) + + +## Index by Topics + +### Bell inequality +* [Hello Qiskit](community/games/Hello_Qiskit.ipynb) + +### Counterfeit coin problem +* [quantum counterfeit coin problem](community/games/quantum_counterfeit_coin_problem.ipynb) + +### Entanglement +* [quantum awesomeness](community/games/quantum_awesomeness.ipynb) +* [quantum tic tac toe](community/games/quantum_tic_tac_toe.ipynb) +* [random terrain generation](community/games/random_terrain_generation.ipynb) + +### Games +* [Hello Qiskit](community/games/Hello_Qiskit.ipynb) +* [battleships with partial NOT gates](community/games/battleships_with_partial_NOT_gates.ipynb) +* [quantum awesomeness](community/games/quantum_awesomeness.ipynb) +* [quantum slot machine](community/games/quantum_slot_machine.ipynb) +* [quantum tic tac toe](community/games/quantum_tic_tac_toe.ipynb) +* [random terrain generation](community/games/random_terrain_generation.ipynb) + +### Hardware +* [quantum awesomeness](community/games/quantum_awesomeness.ipynb) + +### NOT gates +* [battleships with partial NOT gates](community/games/battleships_with_partial_NOT_gates.ipynb) + +### Procedural generation +* [random terrain generation](community/games/random_terrain_generation.ipynb) + +### Random number generation +* [quantum slot machine](community/games/quantum_slot_machine.ipynb) + +### Superposition +* [quantum tic tac toe](community/games/quantum_tic_tac_toe.ipynb) + diff --git a/indexer.py b/indexer.py new file mode 100644 index 000000000..9110e9aa0 --- /dev/null +++ b/indexer.py @@ -0,0 +1,34 @@ +import os +import json + +index = {'Topics':{},'Commands':{}} +for path, dirs, files in os.walk(os.getcwd()): + for file in files: + if file[-6:]=='.ipynb': + with open(path+'/'+file) as json_file: + data = str(json.load(json_file)) + start = data.find('keywords = ') + if (file!='indexer.ipynb') and('checkpoint' not in file) and start!=-1: + data = data[(start+11):] + end = data.find("}") + data = data[:(end+1)] + keywords = eval(data) + rpath = (path+'/'+file).split('qiskit-tutorials/')[1] + for kw_type in index: + for topic in keywords[kw_type]: + try: + index[kw_type][topic].append(rpath) + except: + index[kw_type][topic] = [rpath] + +md = 'The following lists show notebooks in the Qiskit tutorials that are relevant for various keywords. Note that these lists only include notebooks for which these keywords have been added.\n\n' +for kw_type in ['Commands','Topics']: + md += '\n## Index by '+kw_type+'\n\n' + for kw in sorted(index[kw_type]): + entry = '### ' + kw + for rpath in sorted(index[kw_type][kw]): + entry += '\n* [' + rpath.split('/')[-1].split('.')[0].replace('_',' ') + '](' + rpath + ')' + md += entry+'\n\n' + +with open('index.md','w') as file: + file.write(md) diff --git a/qiskit/aer/device_noise_simulation.ipynb b/qiskit/aer/device_noise_simulation.ipynb index fbbb902ad..7b39dcaac 100644 --- a/qiskit/aer/device_noise_simulation.ipynb +++ b/qiskit/aer/device_noise_simulation.ipynb @@ -299,6 +299,356 @@ "You might notice that the counts returned in the above histogram don't look exactly like our simulation. This is because the real errors that happen on a device can be very complicated, and characterizing them to create acurate models is an active area of quantum computing research. The *basic device noise model* we used for our simulation is a simplified error model that only takes into account *local* errors occuring on the qubits participating in each individual gate, and treats the erors as a relaxation process combined with an error operation which acts to randomize the state of the qubit with some probability *p* (the depolarizing probability). While this model is an approximation, due to its simplicity it is a useful starting point for studying the effects of noise on quantum computations." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For those who'd like to know what these noise model look like, here is one printed as a dictionary." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'errors': [{'type': 'qerror', 'operations': ['u2'], 'instructions': [[{'name': 'id', 'qubits': [0]}], [{'name': 'z', 'qubits': [0]}], [{'name': 'reset', 'qubits': [0]}]], 'probabilities': [0.9969396316915222, 0.0015878972318940962, 0.001472471076583659], 'gate_qubits': [[0]]}, {'type': 'qerror', 'operations': ['u2'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99990007, 0. ],\n", + " [0. , 0.99894197]]), array([[-0.01413701, 0. ],\n", + " [ 0. , 0.01415057]]), array([[0. , 0.04375727],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[1]]}, {'type': 'qerror', 'operations': ['u2'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99994709, 0. ],\n", + " [0. , 0.99925542]]), array([[-0.01028703, 0. ],\n", + " [ 0. , 0.01029415]]), array([[0. , 0.03718377],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[2]]}, {'type': 'qerror', 'operations': ['u2'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99986217, 0. ],\n", + " [0. , 0.99913969]]), array([[-0.0166022, 0. ],\n", + " [ 0. , 0.0166142]]), array([[0. , 0.03799813],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[3]]}, {'type': 'qerror', 'operations': ['u2'], 'instructions': [[{'name': 'id', 'qubits': [0]}], [{'name': 'z', 'qubits': [0]}], [{'name': 'reset', 'qubits': [0]}]], 'probabilities': [0.9979199991897366, 0.000530684168841692, 0.0015493166414216608], 'gate_qubits': [[4]]}, {'type': 'qerror', 'operations': ['u2'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.99785794]]), array([[0. , 0.06541808],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[5]]}, {'type': 'qerror', 'operations': ['u2'], 'instructions': [[{'name': 'id', 'qubits': [0]}], [{'name': 'z', 'qubits': [0]}], [{'name': 'reset', 'qubits': [0]}]], 'probabilities': [0.9982046687483329, 0.000339407670128993, 0.001455923581538121], 'gate_qubits': [[6]]}, {'type': 'qerror', 'operations': ['u2'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.99884553]]), array([[0. , 0.04803762],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[7]]}, {'type': 'qerror', 'operations': ['u2'], 'instructions': [[{'name': 'id', 'qubits': [0]}], [{'name': 'z', 'qubits': [0]}], [{'name': 'reset', 'qubits': [0]}]], 'probabilities': [0.9982498630343064, 0.00013334675861594622, 0.001616790207077612], 'gate_qubits': [[8]]}, {'type': 'qerror', 'operations': ['u2'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.99872734]]), array([[0. , 0.05043514],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[9]]}, {'type': 'qerror', 'operations': ['u2'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99986623, 0. ],\n", + " [0. , 0.99908843]]), array([[-0.01635625, 0. ],\n", + " [ 0. , 0.01636898]]), array([[0. , 0.03942552],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[10]]}, {'type': 'qerror', 'operations': ['u2'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99990561, 0. ],\n", + " [0. , 0.99911444]]), array([[-0.01373927, 0. ],\n", + " [ 0. , 0.01375015]]), array([[0. , 0.03976508],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[11]]}, {'type': 'qerror', 'operations': ['u2'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99997475, 0. ],\n", + " [0. , 0.99925175]]), array([[-0.00710566, 0. ],\n", + " [ 0. , 0.00711081]]), array([[0. , 0.03801801],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[12]]}, {'type': 'qerror', 'operations': ['u2'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99992623, 0. ],\n", + " [0. , 0.99812104]]), array([[-0.01214615, 0. ],\n", + " [ 0. , 0.01216811]]), array([[0. , 0.0600527],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[13]]}, {'type': 'qerror', 'operations': ['u3'], 'instructions': [[{'name': 'id', 'qubits': [0]}], [{'name': 'z', 'qubits': [0]}], [{'name': 'reset', 'qubits': [0]}]], 'probabilities': [0.993891150654847, 0.003166075363056994, 0.0029427739820959697], 'gate_qubits': [[0]]}, {'type': 'qerror', 'operations': ['u3'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99980055, 0. ],\n", + " [0. , 0.9978847 ]]), array([[-0.01997156, 0. ],\n", + " [ 0. , 0.02000991]]), array([[0. , 0.0618525],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[1]]}, {'type': 'qerror', 'operations': ['u3'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99989433, 0. ],\n", + " [0. , 0.99851126]]), array([[-0.01453721, 0. ],\n", + " [ 0. , 0.01455735]]), array([[0. , 0.05256761],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[2]]}, {'type': 'qerror', 'operations': ['u3'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[0.9997248 , 0. ],\n", + " [0. , 0.99827975]]), array([[-0.02345883, 0. ],\n", + " [ 0. , 0.02349279]]), array([[0. , 0.05371807],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[3]]}, {'type': 'qerror', 'operations': ['u3'], 'instructions': [[{'name': 'id', 'qubits': [0]}], [{'name': 'z', 'qubits': [0]}], [{'name': 'reset', 'qubits': [0]}]], 'probabilities': [0.995844606408531, 0.0010591606906810173, 0.0030962329007879763], 'gate_qubits': [[4]]}, {'type': 'qerror', 'operations': ['u3'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.99572047]]), array([[0. , 0.0924161],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[5]]}, {'type': 'qerror', 'operations': ['u3'], 'instructions': [[{'name': 'id', 'qubits': [0]}], [{'name': 'z', 'qubits': [0]}], [{'name': 'reset', 'qubits': [0]}]], 'probabilities': [0.9964126759085354, 0.0006775966418634875, 0.0029097274496010517], 'gate_qubits': [[6]]}, {'type': 'qerror', 'operations': ['u3'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.99769239]]), array([[0. , 0.06789625],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[7]]}, {'type': 'qerror', 'operations': ['u3'], 'instructions': [[{'name': 'id', 'qubits': [0]}], [{'name': 'z', 'qubits': [0]}], [{'name': 'reset', 'qubits': [0]}]], 'probabilities': [0.9965028068293694, 0.00026622676704887835, 0.00323096640358167], 'gate_qubits': [[8]]}, {'type': 'qerror', 'operations': ['u3'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.9974563]]), array([[0. , 0.07128069],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[9]]}, {'type': 'qerror', 'operations': ['u3'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99973293, 0. ],\n", + " [0. , 0.9981773 ]]), array([[-0.02311011, 0. ],\n", + " [ 0. , 0.02314613]]), array([[0. , 0.05573443],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[10]]}, {'type': 'qerror', 'operations': ['u3'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99981155, 0. ],\n", + " [0. , 0.99822939]]), array([[-0.01941303, 0. ],\n", + " [ 0. , 0.0194438 ]]), array([[0. , 0.05621408],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[11]]}, {'type': 'qerror', 'operations': ['u3'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99994958, 0. ],\n", + " [0. , 0.998504 ]]), array([[-0.0100414 , 0. ],\n", + " [ 0. , 0.01005594]]), array([[0. , 0.05374615],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[12]]}, {'type': 'qerror', 'operations': ['u3'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99985302, 0. ],\n", + " [0. , 0.99624509]]), array([[-0.01714487, 0. ],\n", + " [ 0. , 0.01720697]]), array([[0. , 0.08485074],\n", + " [0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[13]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99933055, 0. ],\n", + " [0. , 0.99284135]]), array([[-0.03658498, 0. ],\n", + " [ 0. , 0.0368241 ]]), array([[0. , 0.11362238],\n", + " [0. , 0. ]])]}, {'name': 'id', 'qubits': [1]}], [{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99933055, 0. ],\n", + " [0. , 0.99284135]]), array([[-0.03658498, 0. ],\n", + " [ 0. , 0.0368241 ]]), array([[0. , 0.11362238],\n", + " [0. , 0. ]])]}, {'name': 'z', 'qubits': [1]}], [{'name': 'kraus', 'qubits': [0], 'params': [array([[0.99933055, 0. ],\n", + " [0. , 0.99284135]]), array([[-0.03658498, 0. ],\n", + " [ 0. , 0.0368241 ]]), array([[0. , 0.11362238],\n", + " [0. , 0. ]])]}, {'name': 'reset', 'qubits': [1]}]], 'probabilities': [0.9794820138009688, 0.01057701634367594, 0.009940969855355308], 'gate_qubits': [[1, 0]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'kraus', 'qubits': [0, 1], 'params': [array([[0.99917103, 0. , 0. , 0. ],\n", + " [0. , 0.99393593, 0. , 0. ],\n", + " [0. , 0. , 0.99539283, 0. ],\n", + " [0. , 0. , 0. , 0.99017752]]), array([[-0.02396617, -0. , 0. , 0. ],\n", + " [-0. , -0.0238406 , 0. , 0. ],\n", + " [ 0. , 0. , 0.02405714, 0. ],\n", + " [ 0. , 0. , 0. , 0.02393109]]), array([[0. , 0. , 0.08678423, 0. ],\n", + " [0. , 0. , 0. , 0.08632953],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]]), array([[-0.03289754, 0. , -0. , 0. ],\n", + " [ 0. , 0.03307082, 0. , 0. ],\n", + " [-0. , 0. , -0.03277315, 0. ],\n", + " [ 0. , 0. , 0. , 0.03294576]]), array([[ 0.00078908, -0. , -0. , 0. ],\n", + " [-0. , -0.00079324, 0. , 0. ],\n", + " [-0. , 0. , -0.00079208, 0. ],\n", + " [ 0. , 0. , 0. , 0.00079625]]), array([[-0. , 0. , -0.00285736, 0. ],\n", + " [ 0. , 0. , 0. , 0.00287241],\n", + " [-0. , 0. , -0. , 0. ],\n", + " [ 0. , 0. , 0. , 0. ]]), array([[0. , 0.10209156, 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0.10170552],\n", + " [0. , 0. , 0. , 0. ]]), array([[-0. , -0.00244877, 0. , 0. ],\n", + " [-0. , -0. , 0. , 0. ],\n", + " [ 0. , 0. , 0. , 0.00245807],\n", + " [ 0. , 0. , 0. , 0. ]]), array([[0. , 0. , 0. , 0.00886729],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[1, 2]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'kraus', 'qubits': [0, 1], 'params': [array([[0.9986388 , 0. , 0. , 0. ],\n", + " [0. , 0.99366257, 0. , 0. ],\n", + " [0. , 0. , 0.9934299 , 0. ],\n", + " [0. , 0. , 0. , 0.98847963]]), array([[-0.04432392, -0. , 0. , 0. ],\n", + " [-0. , -0.04410305, 0. , 0. ],\n", + " [ 0. , 0. , 0.04455633, 0. ],\n", + " [ 0. , 0. , 0. , 0.0443343 ]]), array([[0. , 0. , 0.10176358, 0. ],\n", + " [0. , 0. , 0. , 0.10125649],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]]), array([[-0.02746722, 0. , -0. , 0. ],\n", + " [ 0. , 0.02760477, 0. , 0. ],\n", + " [-0. , 0. , -0.02732395, 0. ],\n", + " [ 0. , 0. , 0. , 0.02746079]]), array([[ 0.00121911, -0. , -0. , 0. ],\n", + " [-0. , -0.00122522, 0. , 0. ],\n", + " [-0. , 0. , -0.00122551, 0. ],\n", + " [ 0. , 0. , 0. , 0.00123164]]), array([[-0. , 0. , -0.00279897, 0. ],\n", + " [ 0. , 0. , 0. , 0.00281299],\n", + " [-0. , 0. , -0. , 0. ],\n", + " [ 0. , 0. , 0. , 0. ]]), array([[0. , 0.09953176, 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0.09901261],\n", + " [0. , 0. , 0. , 0. ]]), array([[-0. , -0.00441765, 0. , 0. ],\n", + " [-0. , -0. , 0. , 0. ],\n", + " [ 0. , 0. , 0. , 0.00444081],\n", + " [ 0. , 0. , 0. , 0. ]]), array([[0. , 0. , 0. , 0.01014251],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[2, 3]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'id', 'qubits': [0]}, {'name': 'kraus', 'qubits': [1], 'params': [array([[0.9990003 , 0. ],\n", + " [0. , 0.99370267]]), array([[-0.0447035 , 0. ],\n", + " [ 0. , 0.04494183]]), array([[0. , 0.1026413],\n", + " [0. , 0. ]])]}], [{'name': 'z', 'qubits': [0]}, {'name': 'kraus', 'qubits': [1], 'params': [array([[0.9990003 , 0. ],\n", + " [0. , 0.99370267]]), array([[-0.0447035 , 0. ],\n", + " [ 0. , 0.04494183]]), array([[0. , 0.1026413],\n", + " [0. , 0. ]])]}], [{'name': 'reset', 'qubits': [0]}, {'name': 'kraus', 'qubits': [1], 'params': [array([[0.9990003 , 0. ],\n", + " [0. , 0.99370267]]), array([[-0.0447035 , 0. ],\n", + " [ 0. , 0.04494183]]), array([[0. , 0.1026413],\n", + " [0. , 0. ]])]}]], 'probabilities': [0.9848600556149415, 0.0038389879171262945, 0.011300956467932166], 'gate_qubits': [[4, 3]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'id', 'qubits': [0]}, {'name': 'kraus', 'qubits': [1], 'params': [array([[0.99904602, 0. ],\n", + " [0. , 0.99343761]]), array([[-0.04366978, 0. ],\n", + " [ 0. , 0.04391631]]), array([[0. , 0.10560812],\n", + " [0. , 0. ]])]}], [{'name': 'z', 'qubits': [0]}, {'name': 'kraus', 'qubits': [1], 'params': [array([[0.99904602, 0. ],\n", + " [0. , 0.99343761]]), array([[-0.04366978, 0. ],\n", + " [ 0. , 0.04391631]]), array([[0. , 0.10560812],\n", + " [0. , 0. ]])]}], [{'name': 'reset', 'qubits': [0]}, {'name': 'kraus', 'qubits': [1], 'params': [array([[0.99904602, 0. ],\n", + " [0. , 0.99343761]]), array([[-0.04366978, 0. ],\n", + " [ 0. , 0.04391631]]), array([[0. , 0.10560812],\n", + " [0. , 0. ]])]}]], 'probabilities': [0.9851059372102934, 0.0037770829251414346, 0.011116979864565169], 'gate_qubits': [[4, 10]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.98299147]]), array([[0. , 0.18365121],\n", + " [0. , 0. ]])]}, {'name': 'id', 'qubits': [1]}], [{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.98299147]]), array([[0. , 0.18365121],\n", + " [0. , 0. ]])]}, {'name': 'z', 'qubits': [1]}], [{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.98299147]]), array([[0. , 0.18365121],\n", + " [0. , 0. ]])]}, {'name': 'reset', 'qubits': [1]}]], 'probabilities': [0.9834884178044242, 0.004184051903277553, 0.012327530292298272], 'gate_qubits': [[5, 4]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.98299147]]), array([[0. , 0.18365121],\n", + " [0. , 0. ]])]}, {'name': 'id', 'qubits': [1]}], [{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.98299147]]), array([[0. , 0.18365121],\n", + " [0. , 0. ]])]}, {'name': 'z', 'qubits': [1]}], [{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.98299147]]), array([[0. , 0.18365121],\n", + " [0. , 0. ]])]}, {'name': 'reset', 'qubits': [1]}]], 'probabilities': [0.9857304675990267, 0.002681323216245956, 0.01158820918472736], 'gate_qubits': [[5, 6]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'kraus', 'qubits': [0, 1], 'params': [array([[1. , 0. , 0. , 0. ],\n", + " [0. , 0.98099102, 0. , 0. ],\n", + " [0. , 0. , 0.98866713, 0. ],\n", + " [0. , 0. , 0. , 0.96987358]]), array([[0. , 0. , 0.1501243 , 0. ],\n", + " [0. , 0. , 0. , 0.14727059],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]]), array([[0. , 0.19405312, 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0.19185394],\n", + " [0. , 0. , 0. , 0. ]]), array([[0. , 0. , 0. , 0.02913209],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[5, 9]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'id', 'qubits': [0]}, {'name': 'id', 'qubits': [1]}], [{'name': 'z', 'qubits': [0]}, {'name': 'id', 'qubits': [1]}], [{'name': 'reset', 'qubits': [0]}, {'name': 'id', 'qubits': [1]}], [{'name': 'id', 'qubits': [0]}, {'name': 'z', 'qubits': [1]}], [{'name': 'z', 'qubits': [0]}, {'name': 'z', 'qubits': [1]}], [{'name': 'reset', 'qubits': [0]}, {'name': 'z', 'qubits': [1]}], [{'name': 'id', 'qubits': [0]}, {'name': 'reset', 'qubits': [1]}], [{'name': 'z', 'qubits': [0]}, {'name': 'reset', 'qubits': [1]}], [{'name': 'reset', 'qubits': [0]}, {'name': 'reset', 'qubits': [1]}]], 'probabilities': [0.9687435497077612, 0.0029480346990249165, 0.012753843344418692, 0.0011581767939954882, 3.5245090172049454e-06, 1.5247797417815618e-05, 0.014148300446601583, 4.30554408970193e-05, 0.00018626726086605702], 'gate_qubits': [[6, 8]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.99263437]]), array([[0. , 0.12114873],\n", + " [0. , 0. ]])]}, {'name': 'id', 'qubits': [1]}], [{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.99263437]]), array([[0. , 0.12114873],\n", + " [0. , 0. ]])]}, {'name': 'z', 'qubits': [1]}], [{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.99263437]]), array([[0. , 0.12114873],\n", + " [0. , 0. ]])]}, {'name': 'reset', 'qubits': [1]}]], 'probabilities': [0.9888522209484151, 0.0008453848645706519, 0.010302394187014285], 'gate_qubits': [[7, 8]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.98866713]]), array([[0. , 0.1501243],\n", + " [0. , 0. ]])]}, {'name': 'id', 'qubits': [1]}], [{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.98866713]]), array([[0. , 0.1501243],\n", + " [0. , 0. ]])]}, {'name': 'z', 'qubits': [1]}], [{'name': 'kraus', 'qubits': [0], 'params': [array([[1. , 0. ],\n", + " [0. , 0.98866713]]), array([[0. , 0.1501243],\n", + " [0. , 0. ]])]}, {'name': 'reset', 'qubits': [1]}]], 'probabilities': [0.9844454277512048, 0.0011769491004305088, 0.01437762314836466], 'gate_qubits': [[9, 8]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'kraus', 'qubits': [0, 1], 'params': [array([[0.99894297, 0. , 0. , 0. ],\n", + " [0. , 0.98881763, 0. , 0. ],\n", + " [0. , 0. , 0.99271998, 0. ],\n", + " [0. , 0. , 0. , 0.98265771]]), array([[-0.04596665, -0. , 0. , 0. ],\n", + " [-0. , -0.04550073, 0. , 0. ],\n", + " [ 0. , 0. , 0.0462548 , 0. ],\n", + " [ 0. , 0. , 0. , 0.04578596]]), array([[0. , 0. , 0.1112094 , 0. ],\n", + " [0. , 0. , 0. , 0.11008218],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]]), array([[0. , 0.14186881, 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0.14098503],\n", + " [0. , 0. , 0. , 0. ]]), array([[-0. , -0.00652813, 0. , 0. ],\n", + " [-0. , -0. , 0. , 0. ],\n", + " [ 0. , 0. , 0. , 0.00656906],\n", + " [ 0. , 0. , 0. , 0. ]]), array([[0. , 0. , 0. , 0.01579384],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[9, 10]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'kraus', 'qubits': [0, 1], 'params': [array([[0.99854149, 0. , 0. , 0. ],\n", + " [0. , 0.99353282, 0. , 0. ],\n", + " [0. , 0. , 0.99396233, 0. ],\n", + " [0. , 0. , 0. , 0.98897663]]), array([[-0.0415862 , -0. , 0. , 0. ],\n", + " [-0. , -0.04137761, 0. , 0. ],\n", + " [ 0. , 0. , 0.04177779, 0. ],\n", + " [ 0. , 0. , 0. , 0.04156823]]), array([[0. , 0. , 0.09543601, 0. ],\n", + " [0. , 0. , 0. , 0.0949573 ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]]), array([[-0.0344009 , 0. , -0. , 0. ],\n", + " [ 0. , 0.03457432, 0. , 0. ],\n", + " [-0. , 0. , -0.03424314, 0. ],\n", + " [ 0. , 0. , 0. , 0.03441577]]), array([[ 0.00143269, -0. , -0. , 0. ],\n", + " [-0. , -0.00143991, 0. , 0. ],\n", + " [-0. , 0. , -0.00143929, 0. ],\n", + " [ 0. , 0. , 0. , 0.00144655]]), array([[-0. , 0. , -0.00328788, 0. ],\n", + " [ 0. , 0. , 0. , 0.00330445],\n", + " [-0. , 0. , -0. , 0. ],\n", + " [ 0. , 0. , 0. , 0. ]]), array([[0. , 0.09982828, 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0.09937048],\n", + " [0. , 0. , 0. , 0. ]]), array([[-0. , -0.00415754, 0. , 0. ],\n", + " [-0. , -0. , 0. , 0. ],\n", + " [ 0. , 0. , 0. , 0.0041767 ],\n", + " [ 0. , 0. , 0. , 0. ]]), array([[0. , 0. , 0. , 0.00954113],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[11, 3]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'kraus', 'qubits': [0, 1], 'params': [array([[0.99837341, 0. , 0. , 0. ],\n", + " [0. , 0.99267848, 0. , 0. ],\n", + " [0. , 0. , 0.99276877, 0. ],\n", + " [0. , 0. , 0. , 0.98710581]]), array([[-0.04364038, -0. , 0. , 0. ],\n", + " [-0. , -0.04339144, 0. , 0. ],\n", + " [ 0. , 0. , 0.04388675, 0. ],\n", + " [ 0. , 0. , 0. , 0.04363641]]), array([[0. , 0. , 0.10553702, 0. ],\n", + " [0. , 0. , 0. , 0.10493501],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]]), array([[-0.03665367, 0. , -0. , 0. ],\n", + " [ 0. , 0.03686395, 0. , 0. ],\n", + " [-0. , 0. , -0.03644791, 0. ],\n", + " [ 0. , 0. , 0. , 0.03665701]]), array([[ 0.00160219, -0. , -0. , 0. ],\n", + " [-0. , -0.00161138, 0. , 0. ],\n", + " [-0. , 0. , -0.00161123, 0. ],\n", + " [ 0. , 0. , 0. , 0.00162047]]), array([[-0. , 0. , -0.00387462, 0. ],\n", + " [ 0. , 0. , 0. , 0.00389685],\n", + " [-0. , 0. , -0. , 0. ],\n", + " [ 0. , 0. , 0. , 0. ]]), array([[0. , 0.10641165, 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0.10581428],\n", + " [0. , 0. , 0. , 0. ]]), array([[-0. , -0.00465141, 0. , 0. ],\n", + " [-0. , -0. , 0. , 0. ],\n", + " [ 0. , 0. , 0. , 0.00467767],\n", + " [ 0. , 0. , 0. , 0. ]]), array([[0. , 0. , 0. , 0.01124867],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[11, 10]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'x', 'qubits': [0]}], [{'name': 'y', 'qubits': [0]}], [{'name': 'z', 'qubits': [0]}], [{'name': 'x', 'qubits': [1]}], [{'name': 'x', 'qubits': [0]}, {'name': 'x', 'qubits': [1]}], [{'name': 'y', 'qubits': [0]}, {'name': 'x', 'qubits': [1]}], [{'name': 'z', 'qubits': [0]}, {'name': 'x', 'qubits': [1]}], [{'name': 'y', 'qubits': [1]}], [{'name': 'x', 'qubits': [0]}, {'name': 'y', 'qubits': [1]}], [{'name': 'y', 'qubits': [0]}, {'name': 'y', 'qubits': [1]}], [{'name': 'z', 'qubits': [0]}, {'name': 'y', 'qubits': [1]}], [{'name': 'z', 'qubits': [1]}], [{'name': 'x', 'qubits': [0]}, {'name': 'z', 'qubits': [1]}], [{'name': 'y', 'qubits': [0]}, {'name': 'z', 'qubits': [1]}], [{'name': 'z', 'qubits': [0]}, {'name': 'z', 'qubits': [1]}], [{'name': 'id', 'qubits': [0]}]], 'probabilities': [0.008364173324451293, 0.008364173324451293, 0.008364173324451293, 0.008364173324451293, 0.008364173324451293, 0.008364173324451293, 0.008364173324451293, 0.008364173324451293, 0.008364173324451293, 0.008364173324451293, 0.008364173324451293, 0.008364173324451293, 0.008364173324451293, 0.008364173324451293, 0.008364173324451293, 0.8745374001332307], 'gate_qubits': [[11, 12]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'kraus', 'qubits': [0, 1], 'params': [array([[0.99940188, 0. , 0. , 0. ],\n", + " [0. , 0.99382608, 0. , 0. ],\n", + " [0. , 0. , 0.99406306, 0. ],\n", + " [0. , 0. , 0. , 0.98851704]]), array([[-0.02845188, -0. , 0. , 0. ],\n", + " [-0. , -0.02829314, 0. , 0. ],\n", + " [ 0. , 0. , 0.02860469, 0. ],\n", + " [ 0. , 0. , 0. , 0.0284451 ]]), array([[0. , 0. , 0.10312151, 0. ],\n", + " [0. , 0. , 0. , 0.10254618],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]]), array([[-0.01964822, 0. , -0. , 0. ],\n", + " [ 0. , 0.01975845, 0. , 0. ],\n", + " [-0. , 0. , -0.01954326, 0. ],\n", + " [ 0. , 0. , 0. , 0.0196529 ]]), array([[ 0.00055936, -0. , -0. , 0. ],\n", + " [-0. , -0.0005625 , 0. , 0. ],\n", + " [-0. , 0. , -0.00056237, 0. ],\n", + " [ 0. , 0. , 0. , 0.00056552]]), array([[-0. , 0. , -0.00202737, 0. ],\n", + " [ 0. , 0. , 0. , 0.00203874],\n", + " [-0. , 0. , -0. , 0. ],\n", + " [ 0. , 0. , 0. , 0. ]]), array([[0. , 0.10540164, 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0.10483858],\n", + " [0. , 0. , 0. , 0. ]]), array([[-0. , -0.00300067, 0. , 0. ],\n", + " [-0. , -0. , 0. , 0. ],\n", + " [ 0. , 0. , 0. , 0.00301679],\n", + " [ 0. , 0. , 0. , 0. ]]), array([[0. , 0. , 0. , 0.01087568],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[12, 2]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'kraus', 'qubits': [0, 1], 'params': [array([[0.99627018, 0. , 0. , 0. ],\n", + " [0. , 0.95569927, 0. , 0. ],\n", + " [0. , 0. , 0.97448684, 0. ],\n", + " [0. , 0. , 0. , 0.93480301]]), array([[-0.06592117, -0. , 0. , 0. ],\n", + " [-0. , -0.06323668, 0. , 0. ],\n", + " [ 0. , 0. , 0.06739475, 0. ],\n", + " [ 0. , 0. , 0. , 0.06465025]]), array([[0. , 0. , 0.20672011, 0. ],\n", + " [0. , 0. , 0. , 0.19830189],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]]), array([[-0.05555739, 0. , -0. , 0. ],\n", + " [ 0. , 0.05791588, 0. , 0. ],\n", + " [-0. , 0. , -0.05434263, 0. ],\n", + " [ 0. , 0. , 0. , 0.05664956]]), array([[ 0.00367612, -0. , -0. , 0. ],\n", + " [-0. , -0.00383218, 0. , 0. ],\n", + " [-0. , 0. , -0.00375829, 0. ],\n", + " [ 0. , 0. , 0. , 0.00391784]]), array([[-0. , 0. , -0.01152783, 0. ],\n", + " [ 0. , 0. , 0. , 0.0120172 ],\n", + " [-0. , 0. , -0. , 0. ],\n", + " [ 0. , 0. , 0. , 0. ]]), array([[0. , 0.28093691, 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0.27479426],\n", + " [0. , 0. , 0. , 0. ]]), array([[-0. , -0.01858902, 0. , 0. ],\n", + " [-0. , -0. , 0. , 0. ],\n", + " [ 0. , 0. , 0. , 0.01900456],\n", + " [ 0. , 0. , 0. , 0. ]]), array([[0. , 0. , 0. , 0.05829273],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[13, 1]]}, {'type': 'qerror', 'operations': ['cx'], 'instructions': [[{'name': 'kraus', 'qubits': [0, 1], 'params': [array([[0.99857658, 0. , 0. , 0. ],\n", + " [0. , 0.97169404, 0. , 0. ],\n", + " [0. , 0. , 0.98775753, 0. ],\n", + " [0. , 0. , 0. , 0.96116625]]), array([[-0.0272382 , -0. , 0. , 0. ],\n", + " [-0. , -0.02650492, 0. , 0. ],\n", + " [ 0. , 0. , 0.02753654, 0. ],\n", + " [ 0. , 0. , 0. , 0.02679523]]), array([[0. , 0. , 0.14653977, 0. ],\n", + " [0. , 0. , 0. , 0.1425948 ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]]), array([[-0.04584037, 0. , -0. , 0. ],\n", + " [ 0. , 0.04710857, 0. , 0. ],\n", + " [-0. , 0. , -0.04534371, 0. ],\n", + " [ 0. , 0. , 0. , 0.04659817]]), array([[ 0.00125039, -0. , -0. , 0. ],\n", + " [-0. , -0.00128498, 0. , 0. ],\n", + " [-0. , 0. , -0.00126408, 0. ],\n", + " [ 0. , 0. , 0. , 0.00129906]]), array([[-0. , 0. , -0.00672701, 0. ],\n", + " [ 0. , 0. , 0. , 0.00691312],\n", + " [-0. , 0. , -0. , 0. ],\n", + " [ 0. , 0. , 0. , 0. ]]), array([[0. , 0.22988689, 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0.22739619],\n", + " [0. , 0. , 0. , 0. ]]), array([[-0. , -0.00627063, 0. , 0. ],\n", + " [-0. , -0. , 0. , 0. ],\n", + " [ 0. , 0. , 0. , 0.00633931],\n", + " [ 0. , 0. , 0. , 0. ]]), array([[0. , 0. , 0. , 0.03373559],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ],\n", + " [0. , 0. , 0. , 0. ]])]}]], 'probabilities': [1], 'gate_qubits': [[13, 12]]}, {'type': 'roerror', 'operations': ['measure'], 'probabilities': [[0.9763999999999999, 0.023600000000000065], [0.023600000000000065, 0.9763999999999999]], 'gate_qubits': [[0]]}, {'type': 'roerror', 'operations': ['measure'], 'probabilities': [[0.9139, 0.08609999999999995], [0.08609999999999995, 0.9139]], 'gate_qubits': [[1]]}, {'type': 'roerror', 'operations': ['measure'], 'probabilities': [[0.9596, 0.04039999999999999], [0.04039999999999999, 0.9596]], 'gate_qubits': [[2]]}, {'type': 'roerror', 'operations': ['measure'], 'probabilities': [[0.7713, 0.22870000000000001], [0.22870000000000001, 0.7713]], 'gate_qubits': [[3]]}, {'type': 'roerror', 'operations': ['measure'], 'probabilities': [[0.9734, 0.026599999999999957], [0.026599999999999957, 0.9734]], 'gate_qubits': [[4]]}, {'type': 'roerror', 'operations': ['measure'], 'probabilities': [[0.9521999999999999, 0.047800000000000065], [0.047800000000000065, 0.9521999999999999]], 'gate_qubits': [[5]]}, {'type': 'roerror', 'operations': ['measure'], 'probabilities': [[0.9131, 0.08689999999999998], [0.08689999999999998, 0.9131]], 'gate_qubits': [[6]]}, {'type': 'roerror', 'operations': ['measure'], 'probabilities': [[0.9225, 0.07750000000000001], [0.07750000000000001, 0.9225]], 'gate_qubits': [[7]]}, {'type': 'roerror', 'operations': ['measure'], 'probabilities': [[0.9525, 0.04749999999999999], [0.04749999999999999, 0.9525]], 'gate_qubits': [[8]]}, {'type': 'roerror', 'operations': ['measure'], 'probabilities': [[0.9005, 0.09950000000000003], [0.09950000000000003, 0.9005]], 'gate_qubits': [[9]]}, {'type': 'roerror', 'operations': ['measure'], 'probabilities': [[0.9477, 0.05230000000000001], [0.05230000000000001, 0.9477]], 'gate_qubits': [[10]]}, {'type': 'roerror', 'operations': ['measure'], 'probabilities': [[0.8865000000000001, 0.11349999999999993], [0.11349999999999993, 0.8865000000000001]], 'gate_qubits': [[11]]}, {'type': 'roerror', 'operations': ['measure'], 'probabilities': [[0.9609, 0.039100000000000024], [0.039100000000000024, 0.9609]], 'gate_qubits': [[12]]}, {'type': 'roerror', 'operations': ['measure'], 'probabilities': [[0.9542999999999999, 0.045700000000000074], [0.045700000000000074, 0.9542999999999999]], 'gate_qubits': [[13]]}], 'x90_gates': []}\n" + ] + } + ], + "source": [ + "print(noise_model.as_dict())" + ] + }, { "cell_type": "code", "execution_count": null, @@ -309,7 +659,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -323,7 +673,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.7.0" } }, "nbformat": 4, diff --git a/qiskit/aqua/artificial_intelligence/qsvm_kernel_classification.ipynb b/qiskit/aqua/artificial_intelligence/qsvm_kernel_classification.ipynb index 2f859c378..2cc61161b 100644 --- a/qiskit/aqua/artificial_intelligence/qsvm_kernel_classification.ipynb +++ b/qiskit/aqua/artificial_intelligence/qsvm_kernel_classification.ipynb @@ -95,7 +95,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
        " ] @@ -107,7 +107,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
        " ] @@ -127,9 +127,13 @@ ], "source": [ "feature_dim=2 # we support feature_dim 2 or 3\n", - "sample_Total, training_input, test_input, class_labels = ad_hoc_data(training_size=20, test_size=10, n=feature_dim, gap=0.3, PLOT_DATA=True)\n", - "\n", - "datapoints, class_to_label = split_dataset_to_data_and_labels(test_input)\n", + "sample_Total, training_input, test_input, class_labels = ad_hoc_data(training_size=20, \n", + " test_size=10, \n", + " n=feature_dim, \n", + " gap=0.3, \n", + " PLOT_DATA=True)\n", + "extra_test_data = sample_ad_hoc_data(sample_Total, 10, n=feature_dim)\n", + "datapoints, class_to_label = split_dataset_to_data_and_labels(extra_test_data)\n", "print(class_to_label)" ] }, @@ -157,8 +161,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "testing success ratio: 1.0\n", - "predicted classes: ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B']\n" + "testing success ratio: 1.0\n", + "preduction of datapoints:\n", + "ground truth: ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B']\n", + "prediction: ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B']\n" ] } ], @@ -186,8 +192,10 @@ "result = run_algorithm(params, algo_input)\n", "\"\"\"\n", "\n", - "print(\"testing success ratio: \", result['testing_accuracy'])\n", - "print(\"predicted classes:\", result['predicted_classes'])" + "print(\"testing success ratio: {}\".format(result['testing_accuracy']))\n", + "print(\"preduction of datapoints:\")\n", + "print(\"ground truth: {}\".format(map_label_to_class_name(datapoints[1], qsvm.label_to_class)))\n", + "print(\"prediction: {}\".format(result['predicted_classes']))" ] }, { @@ -204,7 +212,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJztnXlYVfX2/98fEcQRUVFRcApywAk155xujlmaaaV105vlbbbh1vVamWbeX926adO3ruV407ScMtNyzMoZEgfECadEBFER0VSQz+8PjvfhsN5bCRTFvV7P4wPn7dqcvfc5i81Z+/1Zy1hroSiK+yh2vXdAUZTrgya/orgUTX5FcSma/IriUjT5FcWlaPIrikvR5FcUl6LJrygupUDJb4zpYYzZZYzZa4wZcbV2SlGUa4/Jr8PPGOMDYDeArgAOA9gEYKC1dsdlthFPFhxSk8YW9/MVWuKhQzQ2omEDoZ08nU5jTyafFFpWViaNZeemdlgtoaWm8edKO35KaNVrBtPYpCMpQqsWUpnGHtqfILTAyoEO+3BaaBkZ52hsRsYFoYXVDRPamXN8ez9f+ZoVM4bG+vr4SK14cRqbevas0MqXKkVjz5w/LzQfsg/+fn50+8yLF+X2xfg18mJWltB+vyDPodPPcNoHdsaMw3k8mnzc63HqieM4e+Y0D84FP9t5oyWAvdbafZ6dmwWgDwDH5Gc8+sIoqlcODRLauGeeo7FLV/8otDkr19DY+R/PFlp6ukxSALhw4Xehzfh2itC+Xcqfa9nMxUJ785NXaez4UZ8LbfS7z9LYZwaPFNo9T91HY5dPXy60hITdNPbYsd+ENnPRQqFt2sG3D6kmf1mV9fensVUCAoRWPZD/AlsQHS203pGRNDZq37487UNESAjdPjktTWjlSpaksWm/y/fHtt/kOQSAwNKlhVY3mF8IipNfjE6/gP718Qyvx5MmjKVxjIL82V8dQM4jPezRFEUpAhTkyp8njDHDAAy71s+jKMofoyDJnwAgNMfjEI/mhbV2IoCJAP/MryjK9aEgyb8JQLgxpjayk/4BAIMut0FwSE3xGX/sC0NpLPvs9tATL9DYT6d/I7RHH7yLxh7df1RoO9bE0thyQfJzaXny2S16qfxMCgB+fvKz5phn36Gxbe5sL7cvLj/7AcCdj/QV2urZq2nshg2L8rRfAPD4a68IrQI53pohVen24VWqCI0V6wCgTmVZH9gUH09jG4eGCm1hFD/nvSKbCu18pizoHj5xgm7PCobVHGoR7LN5gEMhMqRCBaEdOn6cRAL1SC1g37FkGjv2Re/8WfLlJzSOke/kt9ZmGmOeBvADAB8Ak621PIsURbnhKNBnfmvtYgCypK0oyg2POvwUxaVo8iuKS9HkVxSXcs3v83s9mZ+vcO6xqj4AtKhTR2gfzvmWxu7ftl9oWx2cVnVvqyu0EiW5zTKgkqz2d27dQ2hhYc3p9o+OeVRo6WelKwzg9s0/tepKY/+zcIbQnrn/bhobnyRdkSfPnKGxazduE9rhk9IO3dDBHXc8XVqJ/Rwsu6fIXYCmNbnVe8J/5wnt6Qf70Fjm0KtWXlbrnd53oRUrCu3AsWM0NiVd2rqb1eLHkJgqXaSNyF0MAIhPShJalXLyvQgAq+PivB6fdrBeM/TKryguRZNfUVyKJr+iuBRNfkVxKflez58ffH1L2EqVvItFTpbdmhGycPJMf27ZPUEKL88/x220MZt+ElpYeDMa+2v0MqHNWSmtxNFxe+j2rw99QmjvfDWNxo4b9pLQ5q+YS2M7NG0jtO69H6axJ5OljfXAAVnYA4DY2F+Etv032UPhx01b6Pbd2sjCZwmHgh8rcDILLADsOSot2U5FS2a5rRss7cjFDL/upZOCWVC5cjT2ArENO1l22dr/kArcNswsxpUdCn6LY2K8Hg8fNAh7duzI03p+vfIrikvR5FcUl6LJryguRZNfUVyKJr+iuJRCtfdGNGwgmm2yRhwAt+yyqj4AVChTRmjbSJUaAKoGvCi072N49Xp6y3FCe+yxMULLzJAdXwFg8boVQlv+40Yau3r990J75EHZqBMAonbIRhaf/1c22gSAlqEtheZfWjYDAYD7O8mGIhmkot2/Szu6PXstnxx8D41lNlynBhsjh/9baHc9ye/83H1bC6GV9CshtElL5J0cAKhbp4bQjju871ZHy7smj97JLdlj3p8qtNeHD6Gx8zdGCa1Lwwgam9siXNKhIzBDr/yK4lI0+RXFpWjyK4pL0eRXFJdSIHuvMeYAgNMALgLItNbKaksOaoaF27+/+76X1rejtKoCfD3+rA/lum4A+NvrsgNwo1BZuAGAsR//V2gPDehOY79atEpoZSuUFdpQhyLPy69/KLQRLz9CY1/5xwdCG/zsABo74pF/CK3bA3x9e7P2jYWW/jtf8z33PWknHj7uMaF9N0+eFwB49BFZ3GMWWACIjpfr6XuSzrsA74j77ebNNPYsObb29WUPh0pluWX3h61bhRZUVr7mANAmPFxomw8coLHsGH5zKHCmnJZ9EQa24XmSnObdJ6Bbx06I2bz5mo/rukRna60cNKcoyg2N/tmvKC6loMlvASw1xkR7xnIJjDHDjDFRxpio9DQ+EFNRlMKnoH/2t7fWJhhjKgNYZozZaa31WjObc1xXzbBwHdelKDcIBbryW2sTPF+TAcxH9thuRVGKAPm+8htjSgMoZq097fm+G4A3LrfNyeSTmP/xbC+Nzc4DeJdd1ogD4JZdVtUHgNee+rPQ1i7iQ4RXrpA/Y/3uOKGtiOVTyhZ/PVNo9z7ci8bai7LZA5tnBwCR7doKbcOStTT2UBy3OTMSEnYLjTXdqFanGt2+SoBsOOFkyX7wdmklZg0vAOAI6SB8OP4I34ea8pz5++bd8lqdNBSp7NDMw6eYvHbeQuYVAryLcWhF3rzE10fGZjnclVu6xdtinPY77w7NKMif/VUAzPe8OYoDmGmtlQZ1RVFuSAoyqHMfgCZXcV8URSlE9FaforgUTX5FcSmFup4/KysT6ene9/p3rOHFMjZCy6nLLluP72TZZcW9JUsm0ti2baVdtbiP/H356ahJdPsmkZ2EtmzxGhrr4ytfihMOHWqrhcmCW3DtYBqbsOew0OJjd9HYug3l+WX273u73U63n7lstdAeuKMDjd2XnCy08sQCCwDTZskp8K06RtJYZsVlRccKpUvT7SOqVxcaKzgCwJZDspjKbLwAsGKjtCP3bsdvjrH3WJkS/jR2d5R3kfbcGR3XpSjKFdDkVxSXosmvKC5Fk19RXIomv6K4lEKt9ltrceGCt/2wXBCfQRZQSepsdh7Au+x+NJN3BWaWXVbVB4C1a+cLrZiRDTq6/6UH3f6fTz8ntHuf60djd2+S1trSJWTXWYDfIXHqyZJ4+KDQsrJ4t+Eo0m34zaBnhTZ36c90+2H9egqNzb4DgPCqcn5exkW+XwP63SG0raTSDgDlSpYUGrPR/hEbbBl/Xmm/NVjeYXG6MzCkx5+ExuzBALfysi7KABDRpoHX45Jl5PE7oVd+RXEpmvyK4lI0+RXFpWjyK4pLKdSCX+2wWpjx7RQvrbyDzbJza1lEm7OSF/HYCK3293ILKluPz+yUAC/uRYSECO2lNz6m2++Kl51g1++Np7HPjJZdfRuE1qSx0fGyOFi+FD+PzO7qS9aWA7xz7fSvlwitdy9u2T2XkSG01LNnaexFUtRyWjcfn5wktDsjub13YZQcZdaQvGZ7jvI+EnNmLxXaC08OpLFJp2RbOifbMLNq+/n40Nj9x44JrQGxHQNAlwbeBb+yDsVJhl75FcWlaPIrikvR5FcUl6LJrygu5YoFP2PMZAC9ASRbaxt6tAoAZgOoBeAAgPustdzalIPUtHR8u9R7PXv0UlmgAYCwsOZCi47bQ2MzM6QzzGmEFmu26bQenzn3WHHvnVFP0e1LBci13UtmzKGxA54aIrR77h1OY/cmybXwaWm8UWbsuh1CO5fOXXe39bxNaM3bynFfrIAGAGt2y0Jki9q1aaw/mSPv5AbcuUUWSc9ncMdbxwb1qZ6b+tV4E9Le/ToLraLDuK74JFmIdCpa7tonx5Mxl6PTvhV3KA4eTPEeluU0Ho2Rlyv/VAC5s2AEgBXW2nAAKzyPFUUpQlwx+T1DOHJPFOwDYJrn+2kA+l7l/VIU5RqT38/8Vay1iZ7vjyK7jTcl57iuM6fT8vl0iqJcbQpc8LPZTd4cx3BZaydaa1tYa1uUdhiLrChK4ZPf5E8yxgQDgOerrEApinJDk19770IAgwG85fnKfbe5SDt+Cstmendi9fPjdsRHxzwqtCfvup/GLibr0F9+XVpzAT5Ci3XZBfh6fGbZZVV9ABgz/C9Ce+3fn9PYmRNkB+HVaxfS2HYt5V0INlYLAHyKyZf4zFk+LXnR7GlCi4ldL7QpS1fS7Xu1kndoWFUfAFKJ3bWkQ+xDfeWdm+nzfqCxbcPDhcbW46c4fARldyfOnD9PY9k4NaeRY2yMV6CDFfjoqVShOd1FqBYY6PXYybrNuOKV3xjzJYB1AOoaYw4bY4YiO+m7GmP2ALjD81hRlCLEFX9NWGv5qgZAtiZRFKXIoA4/RXEpmvyK4lIMG8d0rajfqJGdtmCBlzbm2Xdo7MARDwnNqaiVSGa1P9S3G41l67idRmg1aC2tokGk8DLykb/T7bvfLxuDjn1RFjIBYPjI94TW8PZGNLZUWVlgjFkZQ2Orh8t14KdSeMGvXWdZsNt3MEFofdq3otuviJVW4va33kpj2Ws5f8UvNLZxQ1nEm/0ZL4Y+9IRskJqYKgtorNEnwIt7udfMX2L1Ttkbok2Y3Nfs2J1Ci9vEx6bdTl6H3Qfk2DUAqFPD2wr85H33YVdsLE+UXOiVX1Fciia/orgUTX5FcSma/IriUjT5FcWlFGr33qQjKRg/ytve2ubO9jSWVYPHDXuJxq5e/73QRox4n8bai9J+6ePLTwMbocW67LJGHAC37LKqPgC8/88XhBaXICvtANCjrbyT0aXnfTQ2+BY5UmrLqi009osPpCX6hXfHCs2AF5PPnZHNOKqWL09j527cKLRWzSJoLLMIR3ZtRmNZ91xmjT174QLdPoDcBWBdegGgRsVKQnO6i5B2SjZbada2IY2N/lXeRfjT7S1o7PHTp6meF/TKryguRZNfUVyKJr+iuBRNfkVxKYVq723YpImd+713cc6vOO9K+qdWcg33kjWysAcAfxs2TmgvvfM0jWVrsNkoJQAoXaKE0NgILacuu59NHi202T9yC2v7xtJCWt9hRFPCidwtFQE/h3XcTC/hELv9sLSQRsfKomfPNrz4xHAqlrHXIaAU74swfeVqoXVuwotlubvZAkD7unWF9l0Mt0Pv3/2b0P7cmy9gPZ4ui3jsPQMAWSTPqgQE0Fh2zpzW86fkKvj17NIFWzZvVnuvoijOaPIrikvR5FcUl6LJryguJS89/CYbY5KNMdtzaKONMQnGmBjPv17XdjcVRbna5MXeOxXARwCm59LHW2vf/SNPdmh/Ap4ZPNJLu/MRPuznPwtnCK1D0zY0NmqHnPd3/128aUZku7ZCqxbG57btWCPn+kXHy+o3m50H8C67Iz75J41lll1W1QeA6hUqCG3IY6NpbKUQaUHduUkeFwCsX/+t0H7ZKm24P5KmHQAQWLaM0ELIvgLAl0tlBf/xvj1pLKvsJ5zkoyFvDZZ2ZtZRt1N9PtOvM2ncsf/YMRobRu5YbD54kMam/f670Eo5dCv+ZZds8tHvNjlHEQBSct1xyLwo51Y6kd9xXYqiFHEK8pn/aWPMVs/HgsArhyuKciOR3+T/BMAtAJoCSATwb6fAnLP6MjL4CGZFUQqffCW/tTbJWnvRWpsF4DMALS8T+79Zfb6+fDqPoiiFT77W8xtjgnNM6b0HwPbLxV8isHIg7nnKe9356tmy8AMAz9x/t9C6936Yxn7+X9nJtdsDfWjshiVrhRZcWxaJAIA5n8uXkuvF09KkzRPgPQmcuuyy9fhOll1W3Jv6mdQA4K67pM25fKWKNPaegU8ILZQU7OJKcxsu218nW+qQO6VlltmLAd59953nedfnL+bKngRsv9bsloVbAKhXTRZ/61atSmNjSb+FyJrS/g0AK3bIIqtTTwHWIZqdAwCol6vA6e/rS+MYV0x+z7iuTgAqGWMOA3gdQCdjTFNkT+c9AOCveX5GRVFuCPI7rmvSNdgXRVEKEXX4KYpL0eRXFJeiya8oLqVQu/emHT+N5dOXe2kbNiyisfFJzwntZDI3GrYMlXcaa9Tmlt1DcYeElrDHocp8WFo1g8qWFVrsOm539SkmTy+bnQfwLrtO1X5m2WVVfQD49tuPhFa5Mq9I9xv0ONVz8+tqfsfib08MEpqT3bSkn2x64dTcgv2M0f/3Ko09RrrZMmtt89q16fbR+/cLrdUtt9DYJjVqCG3bb7IZCMBn+PkU49deZjGOT0qisYeOH/d6fCEzk8Yx9MqvKC5Fk19RXIomv6K4FE1+RXEphVrwy8g4h4QEb1ulnx/3+58kHXUPHNhGY/1Ly54A6b/nfRFRfKxcPw0AWVmy0ORLinDn0vlznTkru7CeSuHdbNkIrScH9KaxbD2+k2WXFfeSk/ma811bpEubHW+DNrIgBfDxYhVJgRQAzmVkCC2gFB91lX5Ont+yDmOxIhw6Hsvn59baFnXqCK2Eg2WWFezY+xbgPQUia9WisankZ1QL5GPPktPSvAViKXdCr/yK4lI0+RXFpWjyK4pL0eRXFJeiya8oLqWQq/0XcOyYt/3x8ddeobFrN8rKfmwsn3N3f6f2QhvyIP+5ue82AEDdhs1obNS6FUL7YetWod3Wk3dWXTR7mtDadW5OY7/4QDahcGpuwbrsskYcALfssqo+AKxaJTsmr9sjbbTnfz9Pt2eVfZ9ivPrMLLfVAnkrSNaRl9l4AWBDfLzQGoWGCo1V3wHgWO7qOYAaFfmdFIZT8xJm1T519iyNPUpm9TVwuIsRezjO6/E5hwYhDL3yK4pL0eRXFJeiya8oLiUv47pCjTGrjDE7jDGxxpjhHr2CMWaZMWaP56v27leUIoSxrEVtzgBjggEEW2t/NcaUBRANoC+AIQBOWGvfMsaMABBorf375X5WROPGduYi7/X7FUrLbrgAcJiMYwpwsHRWJevAnYplrKOu0zmoHRQktOlfLxFa87aN6fbtbr1VaLNW/kRjL2bKAlQxh2JZx+by+ViXXSeYZRcA1u3ZI5+LjLV66Y2P6faNO8n96teSF0PX7d0rtKXf8HMz7NF7hRbssPa/ScN2MjZYWnbHfDqabj+gQ1ehfbeed5iOiZPFxYe7d6ax8zdFyZ878Tsa++DzA4S2ftWvNDb5oPeouLlffoRjSYfz5PHNy7iuRGvtr57vTwOIA1AdQB8Al8rZ05D9C0FRlCLCH/rMb4ypBSASwAYAVXL07j8KoMpV3TNFUa4peU5+Y0wZAHMBPGet9boZarP/bqZ/O+cc13XSYeqsoiiFT56S3xjji+zEn2GtneeRkzz1gEt1ATqnOue4rsA/8LlUUZRrS14m9hhkD+mIs9a+l+O/FgIYDOAtz9dvrvSzzpw7h007vB12NUP4KKSGISFCm/+jHLUFAP27yCLPd/NW0dhqdWRjz3u73U5j5y79WWi9e3UQGttXAJiydKXQ+rRvRWMNZI2GrXkHgB9jZcNQpxFarNmm03p85txjxb13Rj1Ft08mzrTzDg0lW4fJppi7I2RzVYCv58906BPA+kMEBMiGpxkOjUWbNpVjxMr4854TJcvJAnQCKVQDQIf69YS2p4UssAJAizqyuejWqJ00tlQ579e9mE/eP8nnxd7bDsCfAWwzxlx6J41EdtJ/ZYwZCuAgADlsTlGUG5a8jOv6BSCXpWzkr0lFUYoE6vBTFJeiya8oLkWTX1FcyhXtvVeTWyMi7Adffuml1SNrtQEg/bys8Pr7+tHYmV//ILSB/bvRWDYSauYybt8c3KOL0FgF3mlEU1gV6XtavZNXbc+dkcd7RyS3DW85JKviTqO9WoeFCY112QX4evz1u2VFunsTvl+Vybl1Wjd/34C/Ca1uS1kRB4AF02RfhBmLZe8BgHSzBbBgymKh7SfWXAB4e+JrQnt39Gc0ds8O2dth3boFNJbZyt+fzW+QvffySKG163A3jT129KjX4/XrFyItLeXq2HsVRbk50eRXFJeiya8oLkWTX1FcSqEW/Oo1bGgnzZvnpZUuIee0A7yAVdbJZuknC4FJxGrq9HzlHXoKZBBraippuljdofGkP9mvBIfFTVXLy3FMWw7ysVrFfXyE5tQ40p+MmjrhMFKKNdusUk4W8ZwsuwGlpMXYaQb91xs2CC1uEx+b9tB93YX2xiuf0NgPPpAtJU6kpwttebQcjwYAf+kmi7yrdkg7NQAkJKcIbViPnjT23Hn5vvnw64U09pkBsri3bDtvutopV7+F1q1aIToqSgt+iqI4o8mvKC5Fk19RXIomv6K4FE1+RXEphTquy9fHR9hr61SuTGPZKKMz5/mYKGbpjI7fR2MfvF2O9tqXTJsQIbyqbDRykdwdYVV9AEglVXVm8wSAuRs3Cq1bo0Y09sul0o485E6+urqkn7y74dQkhI3QYl12WSMOgFt2WVUfAAa0kk1NElNTaezijdFCG/vWMzSW3eXZeeSI0IKC+B2a+KQkofVtzZu9zP5ZNmv5zxJpJQaABwaNENrESa/T2MhI+Vq+OvEtGvuvz7zt8keP5b1Vnl75FcWlaPIrikvR5FcUl1KQcV2jjTEJxpgYz79e1353FUW5WuSl4JcJ4MWc47qMMcs8/zfeWvtuXp/Mt3hxYYXdROapA0DTmjWFFug02otYZntGNqWxbH15eWJLBXiHV2ajZd1lAW47nrFEFokAoFWzCKExuywAPN5XWkidxpOx/gUBpfjYs2rEpjxlqlxz7tRll63Hd7LssuJeMLE4A8Co8ZOFNnWPLOIBwOkTsvi7ePZsoRVzsB0PfeV5oW3fv5tEAh1bdBLasJFyLT4AhNYLlVoVqQHAS29NENpj3fl6/r+99W+q54W8NPBMBJDo+f60MebSuC5FUYowBRnXBQBPG2O2GmMm65ReRSlaFGRc1ycAbgHQFNl/GdC/P3KO60pJkaugFEW5PuR7XJe1Nslae9FamwXgMwAt2bY5x3VVqiQnpyiKcn3IS7Wfjuu6NKfPwz0A+IJjRVFuSK7YzMMY0x7AzwC2AbhUKh8JYCCy/+S3AA4A+GuOkd2UOvXr23GTvSu3jUN5xXPR0jVC69erI40dOVx+4pgx4//R2CNkltq0WdySOaDfHUKLT5b2z51b+B2Lh/p2FdruRH6KAsuUEVr0LmmtBYDOTRrKfXD4uUGkI6/T3YlbSSflsxcu5Hn7QT0HCW3Rj/NIJLAqRl4rDsby5iVvPP+I0OYQOzTA71isWiljNy7mtuOJ098Q2txVfEbkxNHyRtfaDUtobGRjaRF+7l9jaOxPX/8ktHIVebOW3F2fFy2YiJRjR/LUzKMg47p4xiiKUiRQh5+iuBRNfkVxKZr8iuJSCrV7b7Pmze3qNd6FvIVRcq02APS9rbnQYg/zMVM7iV7awcJ6OF7aQus2qE1j2Xr8OyMjhfbDVjm2CQDit+8X2sHtB2hsZNdmQuvagluUE0jRctQTY2ns6P97VWhOHZNZV+Aw0m8h02EEF+uL8P64qTSWrcef6lB4rX9bXaH1b0nvLOP46dNCY0XLJRv4++6R7nIt/f5jx2jsgu9lYe54Il9Pf3d/+XM3bOI3yHp0lMfm1I26fV3vc9OqZUtEafdeRVEuhya/orgUTX5FcSma/IriUjT5FcWlFGr33jPnzyNqn3dX3V4OTTdYR15WjQaAu29rIbRvHe4iVKkpq9fMAgsA5UrKOwbs7kTHBvWFBgBtw8OFduB2vrKxAmlUctBhFSSz4X4x90Mae4xUvyOq83YMG0hjlSYN2wnNz4/PTBw/S87PY7PzAF69Zo04AG7ZZVV9AKhIXsuICNmxefI3U+n2wVXlnZ85P/1AY31LyGYt/xj+MI1ds1s2BPl5zs80tkt7eadr+WJuMX77Re/GH3v2cIs0Q6/8iuJSNPkVxaVo8iuKS9HkVxSXUqgFPx9jUNbfu1h0PjOTxlYrL4s8rHMuwEdSta8vLaEA4O8rizQn0tNpbGjFCkJrGBJCYxll/GVhjI2/Avix5bZuXoJ1IPYrzl9KNoLLiUakt0JwcB2hBQTwjkwLpkh7bt2RQ2ksG6HFuuwCQEBl2dU3tH8PGsuKe7Gxvwjt/TGT6PZNm0obbvxh3ivh64+mC61XJzmGDAAWz1wutG3bpD0YABZ800RoUyfwJtmVKlXzepyRwUfaMfTKryguRZNfUVyKJr+iuJS8NPD0N8ZsNMZs8YzrGuPRaxtjNhhj9hpjZhtj+JxqRVFuSPJS8DsPoIu1Nt3TwvsXY8wSAC8ge1zXLGPMpwCGIruXvyP+fn6IyFUwY6O2AAgnIAD8KUKOtAKASUuWCe2BLh0utyteMHcdwItle44eFVr9atWEBgApp6VjjbkGAb7m/LuYGBrbqb50FDIHGQA0ry0da+cy5HMBvJA45tPRQmNjzABg/MvSZbg8eguNDQqSBV2nEVqs2WZQaBCNZc49Vtyb+V/e4HUfadC6fi9v0Lp9u3To7UzkY8T2bpVjy9p04OMto5ZuElpWFi+MD3z2r16PPxhzgMYxrnjlt9lcKof7ev5ZAF0AzPHo0wD0zfOzKopy3cnr0A4fY0wMgGQAywDEA0i11l76dXQYOr9PUYoUeUp+z2SepgBCkD2ZR45jdUDHdSnKjckfqvZba1MBrALQBkB5Y8ylmkEIANpgT8d1KcqNSV6q/UHGmPKe70sC6AogDtm/BPp7wgYDkIPcFUW5YclLtT8YwDRjjA+yf1l8Za1dZIzZAWCWMeZNAJuRPc/vsmRevCjW6Z85z+2IoRUrCs1pTFTdOjWE5tRRt3oFadl1Wt/OmDN7qdB69+tMY1uQSrvT8QaQuwD7d/9GYzs3aCC0eg53HKL3yw7CLepIyy4AHCM9FAZ0kCPHmAUWAN6bMk5oTnbo+CT6MkbbAAAKeElEQVRZVR/6yvM09oEeckxbxTK8BwNbj8/2l1X1AaBO5SpC23zgAI2dv/ZHoTlZskM/fUVon3/8NY199c0nhDZvsbQtA8DJJO9Ozhcd7PKMvIzr2gpA9Ku21u6Dw2ReRVFufNThpyguRZNfUVyKJr+iuJRCHdcV2ayZXfmztyWSrXkHgANkRFJ41ao0lq0NdxpvFEIKiRkORRK2byXIunnWNBLgxT2n8832t2KZMjT2MBnXVdfh3DDLbglfXxqbSWy7MQdlQ0in1+zt1ycKbfAL99PYvq3lvPrt+7lFefEaaXft2lqONwOAI+TcsPX4/qX5MTCrdmStWjR2zsaNQsvdr+ISsz6aJ7QJE16msd06y3P29Ds8Nm5dnNfjyR+MQ+LhAzquS1EUZzT5FcWlaPIrikvR5FcUl6LJrygupVC7917MyhINMpxGcKWQjro1Haryq6O3Ce0vPbkF1Yc0jNhy6BCNZWOxWFWeWVUBoE5lORps8RbeoKNGRbLoyaGrcBj5ubEJdF0VmtSQ1md2DpyIiZONLEqW4w1J9uyQluqEZP46zP55pdA6tuhEYwMDpeX2zHOP01g2Qot12WWNOABu2WVVfQDo31IaXJ1s5XFbNwut5x0P0thb6jYS2vP9BtLYbj3/7PX4wu/avVdRlCugya8oLkWTX1Fciia/oriUQrX3hjdoYMfPmOGlBZQqRWOb1aoptMRUbtmtHSQ7ubLuvwBwSxVZPDrlMNKKWXlZp18nuyyz1jqNz2JdfVMcZtDvJ9bnyJryfAHAbtJt+OSZMzSWjQxjRcsEYqEFgDBybv1L8Nf3P0vkaK+Evbzz7fND+gvtjfem0Nh/DH9YaKxI69Rlt0djOSpr1Y4dNJbRvXFjqrM8+3jedzR2WB85iuynnTtp7O25+ge0adUK0dHRau9VFMUZTX5FcSma/IriUjT5FcWlFGRW31RjzH5jTIznX9Nrv7uKolwtCjKrDwBestbOucy2XvgUK4bAXNXyENJNF+CVfVY9B4Ax708V2qD7ZcUUAPxIBX/FRmm9BIAhPaQ19QSplO/6A3cWNsTzuW9pp6SVt2szWXkG+B2DFTtiaWybsHChOZ1Hdm7mb4oSWof6fGaLMbLI7HQ36YFBI4QWWi+UxkY2lo0/piyaQSL5zMLFM5cLjc3OA3iXXdaIA+CWXafjZefm/dm8233tmrI7c4sW/P38fq7XMj6ed3xm5KV7rwXAZvUpilKEydesPmvtpbGp44wxW40x440xJRy2/d+4rlSH+8OKohQ++ZrVZ4xpCOAfyJ7ZdxuACgD+7rDt/8Z1lQ+UY5kVRbk+5HdWXw9rbaJnfPd5AFOgAzwUpUhxRXuvMSYIQIa1NtUzq28pgLcBRFtrE012JWM8gHPWWlnFyUHTZs3s8tWrvbRDx4/T2EahsvhzITODxvr7yjXcKx0smW3Dw4R26iy33FYJCCCxZ4V2LoPvV+7iJgD8+/OvaGyztg2F1rWRXNcNAKdJwe/shQs0tnQJ+WnMyVLNju3pJ/8ptFtb3Eq3D6wi/7IjdS4AwODecgxYaBVe8Hv7iy+Edu4MH9328xy5Tn/btp+E1qZDL7p92QqyE/M/xzxFY9l6/EEvDqWxFzNlZ+Th9/ehsRO/+0FoH46QrwMA9BnsvZ5/0oSxOPJb3rr3FmRW30rPLwYDIAYA766gKMoNSUFm9XW5JnukKEqhoA4/RXEpmvyK4lI0+RXFpRRq914D2a23HumQC/COuBXKyOo5AMzfKC2oPsV5V2BfH3nIxX3478AscieENdJg890A4OipVKHd3rk5jY3+NU5ojUnnXQD4ZZe0pgaRRhwA0LmBtIqmOjTzOEqaXjz4/AChtahTm27fsnE7oR04sJ3GRkZK6/RLb02gsT99Lav1o95+msZ2aS/P74JvpE06aqmc/wcAr775hNDY7DyAd9lljTgAbtllVX0AGHZnd6Hd9wCf1Xf+rHe33qysvJtv9cqvKC5Fk19RXIomv6K4FE1+RXEphdq9t1nz5nb1mjVe2sEUWUADgCrlpLXWqah1hKwWrOawiIgV8c45WGMZbF2208gxZkeeuZKPiWoZUVdoToVERmKqLC5m74MccVYtsDyNLV3CX2ijxk8WWqmy3B687Sc5qmrIy4NoLOtJ8Fj3u2nsfQ8PF9rAv3Jr7PLFa4U2dcK7QsvK4qPfnh37ptCqh1ensWyE1qwfv6exH74yUWj79m2hsfUjWgntq1n/orGPPPGG1+Nv5nyKlOQE7d6rKIozmvyK4lI0+RXFpWjyK4pL0eRXFJdSqNX+aqG17NDnXvPSxjo0P1gdJ+2uZ86fJ5G88UcJX+5cXrplm9B2R8mOrwAQ0UZaMrsQu+zBlBS6PbvjEHeEz4hj5dl6DtX+lHTZ6dfJJs2apfgU48Xg2MMJQls0TVpQS5Xj1f7t62OE9t2Sz2jsvz77UmimGL8W7d4kX59J/xlFY+/qLe25iYl7hTbw2b/S7U8myTtHxRz268D2/UKbMvkNEgn07/e80Jp05N3uc1t2AeB4Im96M/kTeR6stVrtVxTFGU1+RXEpmvyK4lI0+RXFpRRqwc8YcwzAQc/DSgB4paxoo8dV9LiZjq2mtTYoL4GFmvxeT2xMlLW2xXV58muIHlfR42Y+tsuhf/YrikvR5FcUl3I9k1+ucbw50OMqetzMx+bIdfvMryjK9UX/7FcUl1LoyW+M6WGM2WWM2WuMuexgzxsdY8xkY0yyMWZ7Dq2CMWaZMWaP52uRm0tujAk1xqwyxuwwxsQaY4Z79CJ9bMYYf2PMRmPMFs9xjfHotY0xGzzvydnGGDn59SakUJPfM+zzYwA9ATQAMNAYI1fKFB2mAsjdqH0EgBXW2nAAKzyPixqZAF601jYA0BrAU57Xqagf23kAXay1TQA0BdDDGNMa2VOnx1trwwCcBMBXm91kFPaVvyWAvdbafdbaCwBmAeDN2IoA1tqfAJzIJfcBMM3z/TQAfQt1p64C1tpEa+2vnu9PA4gDUB1F/NhsNpeWRPp6/lkAXQDM8ehF7rjyS2Enf3UAv+V4fNij3UxUsdYmer4/CqDK9dyZgmKMqYXsKc0bcBMcmzHGxxgTAyAZwDIA8QBSrbWXOnrejO9Jihb8riE2+1ZKkb2dYowpA2AugOestWk5/6+oHpu19qK1timAEGT/JVrvOu/SdaOwkz8BQM7OGyEe7WYiyRgTDACer8nXeX/yhTHGF9mJP8NaO88j3xTHBgDW2lQAqwC0AVDeGHOp+8vN+J6kFHbybwIQ7qmu+gF4AMDCQt6Ha81CAIM93w8G8M113Jd8YbKHE0wCEGetfS/HfxXpYzPGBBljynu+LwmgK7LrGasA9PeEFbnjyi+FbvIxxvQCMAGAD4DJ1tpxhboDVxFjzJcAOiF7VVgSgNcBLADwFYAayF7BeJ+1NndR8IbGGNMewM8AtgHI8sgjkf25v8gemzGmMbILej7IvvB9Za19wxhTB9nF5woANgN4yFrLe8bdRKjDT1Fcihb8FMWlaPIrikvR5FcUl6LJryguRZNfUVyKJr+iuBRNfkVxKZr8iuJS/j+FVnnKS/HWXAAAAABJRU5ErkJggg==\n", "text/plain": [ "
        " ] @@ -246,22 +254,13 @@ "needs_background": "light" }, "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'A': 0, 'B': 1} {0: 'A', 1: 'B'}\n" - ] } ], "source": [ - "sample_Total, training_input, test_input, class_labels = Breast_cancer(training_size=20, test_size=10, n=2, PLOT_DATA=True)\n", - "# n =2 is the dimension of each data point\n", - "\n", - "datapoints, class_to_label = split_dataset_to_data_and_labels(test_input)\n", - "label_to_class = {label:class_name for class_name, label in class_to_label.items()}\n", - "print(class_to_label, label_to_class)" + "sample_Total, training_input, test_input, class_labels = Breast_cancer(training_size=20,\n", + " test_size=10,\n", + " n=2,\n", + " PLOT_DATA=True)" ] }, { @@ -273,9 +272,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "testing success ratio: 0.8\n", - "ground truth: ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B']\n", - "predicted: ['A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'A', 'B', 'B']\n" + "testing success ratio: 0.9\n" ] } ], @@ -283,7 +280,7 @@ "seed = 10598\n", "\n", "feature_map = SecondOrderExpansion(num_qubits=feature_dim, depth=2, entanglement='linear')\n", - "qsvm = QSVMKernel(feature_map, training_input, test_input, datapoints[0])\n", + "qsvm = QSVMKernel(feature_map, training_input, test_input)\n", "\n", "backend = Aer.get_backend('qasm_simulator')\n", "quantum_instance = QuantumInstance(backend, shots=1024, seed=seed, seed_mapper=seed)\n", @@ -291,12 +288,10 @@ "result = qsvm.run(quantum_instance)\n", "\n", "\"\"\"declarative approach, re-use the params above\n", - "algo_input = SVMInput(training_input, test_input, datapoints[0])\n", + "algo_input = SVMInput(training_input, test_input)\n", "result = run_algorithm(params, algo_input)\n", "\"\"\"\n", - "print(\"testing success ratio: \", result['testing_accuracy'])\n", - "print(\"ground truth: {}\".format(map_label_to_class_name(datapoints[1], label_to_class)))\n", - "print(\"predicted: {}\".format(result['predicted_classes']))" + "print(\"testing success ratio: \", result['testing_accuracy'])" ] }, { @@ -313,7 +308,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
        " ] diff --git a/qiskit/aqua/chemistry/declarative_approach.ipynb b/qiskit/aqua/chemistry/declarative_approach.ipynb index 7de42f192..0011b3998 100644 --- a/qiskit/aqua/chemistry/declarative_approach.ipynb +++ b/qiskit/aqua/chemistry/declarative_approach.ipynb @@ -11,9 +11,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# _*Qiskit Aqua: Chemistry, writing in declarative approach*_ \n", + "# _*Qiskit Chemistry, Declarative Approach*_ \n", "\n", - "The latest version of this notebook is available on https://github.com/Qiskit/qiskit-tutorial.\n", + "The latest version of this notebook is available at https://github.com/Qiskit/qiskit-tutorials.\n", "\n", "***\n", "### Contributors\n", @@ -22,17 +22,24 @@ "- [1]IBMQ" ] }, + { + "cell_type": "raw", + "metadata": {}, + "source": [] + }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Introduction\n", "\n", - "This notebook demonstrates how to use Qiskit Aqua Chemistry to compute the ground state energy of a Hydrogen (H2) molecule using VQE and UCCSD.\n", + "This notebook demonstrates how to use Qiskit Chemistry to compute the ground state energy of molecular Hydrogen (H$_2$) using the Variational Quantum Eigensolver (VQE) algorithm and the Unitary Coupled Cluster Singles and Doubles (UCCSD) variational form. This notebook uses the so called *declarative approach*: a Python dictionary automatically generated via the Qiskit Chemistry GUI wizard summarizes the entire experiment declaratively. That dictionary is simply then passed as a paramter to the `run` method of the `AquaChemistry` solver to get the result of the experiment, also in the form of a Python dictionary.\n", "\n", - "This notebook has been written to use the HDF5 chemistry driver. This driver uses molecular data that has been saved from a prior computation so that this notebook can be run with no additional driver installation requirements. See the HDF5 chemistry driver readme for more detail.\n", + "Users who are more interested in learning the Qiskit Aqua and Qiskit Chemistry APIs and/or in contributing new algorithmic components can look at the same experiment executed [programmatically](https://github.com/Qiskit/qiskit-tutorials/blob/master/qiskit/aqua/chemistry/programmatic_approach.ipynb).\n", "\n", - "First we import AquaChemistry, which is the object that will carry out the computation for us" + "This notebook has been written to use the HDF5 chemistry driver. This driver uses molecular data that has been serialized from a prior computation. This allows this notebook to be executed with no additional driver installation requirements. See the Qiskit Chemistry driver documentation for more detail.\n", + "\n", + "First, we import `QiskitChemistry`, which is the object that will carry out the computation for us" ] }, { @@ -41,7 +48,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "from qiskit import Aer" ] }, @@ -49,9 +56,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we create a Python dictionary to specify the problem we want to solve. There are defaults for many additional values that are not show here for simpicity. Indeed we take advantage of using sensisble defaults that the qischem stack provides to help us here. Please notice that the Qiskit Aqua Chemistry GUI allows for automatic extraction of the Python dictionary reflecting the current configuration. Once the Python dictionary has been extracted, it can be pasted into a Python program or a Jupyter Notebook and, if necessary, edited.\n", + "Next, we create a Python dictionary to specify the problem we want to solve. There are defaults for many additional values that are not shown here for simpicity. Indeed, we take advantage of using sensisble defaults that the Qiskit Chemistry stack provides. As mentioned above, the Qiskit Chemistry GUI wizard allows for automatic extraction of the Python dictionary, reflecting the current configuration. Once the Python dictionary has been extracted, it can be pasted into a Python program or a Jupyter Notebook and, if necessary, edited.\n", "\n", - "The first entry names a chemistry driver. This example uses HDF5 and the next line configures the driver for an hdf5 file that contains data from a prior computation for an H2 molecule with basis set sto-3g. The operator line would default but I have added it here to show it and to say that this is where the problem is converted into a quantum qubit form. We then have a VQE algorithm, using the COBYLA optimizer with a UCCSD variatonal form and initial state of HartreeFock. VQE is Variational Quantum Eigensolver and as its name suggests uses a variational method to find the mimimum eigenvalue of the problem, which in this case is the ground state energy of the molecule." + "The first entry names a chemistry driver. This example uses HDF5 and the next line configures the driver for an `hdf5` file that contains data from a prior computation for an H$_2$ molecule with basis set `sto-3g`. The operator line would be automatically set by default, but we have added it here to show it and to emphasize where the problem input is converted into a quantum qubit form. We then indicate to the `QiskitChemistry` solver that the VQE algorithm should be used in this experiment, using the COBYLA optimizer with a UCCSD variatonal form and initial state of HartreeFock. VQE uses the variational method to find the mimimum eigenvalue of a problem, which in this case is the ground state energy of the molecule." ] }, { @@ -61,7 +68,7 @@ "### [Optional] Setup token to run the experiment on a real device\n", "If you would like to run the experiement on a real device, you need to setup your account first.\n", "\n", - "Note: If you do not store your token yet, use `IBMQ.save_accounts()` to store it first." + "Note: If you have not stored your token yet, use `IBMQ.save_accounts()` to store it first." ] }, { @@ -70,8 +77,8 @@ "metadata": {}, "outputs": [], "source": [ - "from qiskit import IBMQ\n", - "IBMQ.load_accounts()\n", + "# from qiskit import IBMQ\n", + "# IBMQ.load_accounts()\n", "# backend = IBMQ.get_backend('ibmq_16_melbourne')" ] }, @@ -81,6 +88,7 @@ "metadata": {}, "outputs": [], "source": [ + "from qiskit import Aer\n", "backend = Aer.get_backend('statevector_simulator')" ] }, @@ -94,7 +102,7 @@ "source": [ "# Input dictionary to configure Qiskit AQUA Chemistry for the chemistry problem.\n", "\n", - "aqua_chemistry_dict = {\n", + "qiskit_chemistry_dict = {\n", " 'driver': {'name': 'HDF5'},\n", " 'HDF5': {'hdf5_input': 'H2/0.7_sto-3g.hdf5'},\n", " 'operator': {'name': 'hamiltonian'},\n", @@ -109,7 +117,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can now create a AquaChemistry object and call run on it passing in the problem dictionary to get a result. This may take a short time and it will use a local quantum simulator to carry out the quantum computation that the VQE algorithm uses." + "We can now create an `QiskitChemistry` object and call `run` on it passing in the problem dictionary to get a result. This may take a short time and it will use a local quantum simulator to carry out the quantum computation that the VQE algorithm uses." ] }, { @@ -118,15 +126,15 @@ "metadata": {}, "outputs": [], "source": [ - "solver = AquaChemistry()\n", - "result = solver.run(aqua_chemistry_dict, backend=backend)" + "solver = QiskitChemistry()\n", + "result = solver.run(qiskit_chemistry_dict, backend=backend)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The run method returns a result dictionary. Some notable fields include 'energy' which is the computed ground state energy. We can print it." + "The `run` method returns a result dictionary. Some notable fields include `energy`, which is the computed ground state energy. We can print it." ] }, { @@ -138,7 +146,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Ground state energy: -1.1361894321408132\n" + "Ground state energy: -1.1361894423809882\n" ] } ], @@ -150,7 +158,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "There is also a 'printable' field containing a complete ready to print readable result" + "There is also a `printable` field containing a complete ready to print readable result." ] }, { @@ -164,23 +172,23 @@ "text": [ "=== GROUND STATE ENERGY ===\n", " \n", - "* Electronic ground state energy (Hartree): -1.892156876312\n", - " - computed part: -1.892156876312\n", + "* Electronic ground state energy (Hartree): -1.892156886552\n", + " - computed part: -1.892156886552\n", " - frozen energy part: 0.0\n", " - particle hole part: 0.0\n", "~ Nuclear repulsion energy (Hartree): 0.755967444171\n", - "> Total ground state energy (Hartree): -1.136189432141\n", + "> Total ground state energy (Hartree): -1.136189442381\n", " Measured:: Num particles: 2.000, S: 0.000, M: 0.00000\n", " \n", "=== DIPOLE MOMENT ===\n", " \n", - "* Electronic dipole moment (a.u.): [0.0 0.0 0.00029555]\n", - " - computed part: [0.0 0.0 0.00029555]\n", + "* Electronic dipole moment (a.u.): [0.0 0.0 -0.00006376]\n", + " - computed part: [0.0 0.0 -0.00006376]\n", " - frozen energy part: [0.0 0.0 0.0]\n", " - particle hole part: [0.0 0.0 0.0]\n", "~ Nuclear dipole moment (a.u.): [0.0 0.0 0.0]\n", - "> Dipole moment (a.u.): [0.0 0.0 -0.00029555] Total: 0.00029555\n", - " (debye): [0.0 0.0 -0.00075122] Total: 0.00075122\n" + "> Dipole moment (a.u.): [0.0 0.0 0.00006376] Total: 0.00006376\n", + " (debye): [0.0 0.0 0.00016206] Total: 0.00016206\n" ] } ], @@ -195,13 +203,20 @@ "source": [ "This was a very simple example showing how to get started. There are more elaborate notebooks here as well documentation describing the various components and their configurations to help you to experiment with quantum computing and its application to solving chemistry problems." ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Quantum py37", + "display_name": "Python 3", "language": "python", - "name": "quantum-dev-37" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -213,7 +228,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.1" + "version": "3.6.4" } }, "nbformat": 4, diff --git a/qiskit/aqua/chemistry/dissociation_profile_of_molecule.ipynb b/qiskit/aqua/chemistry/dissociation_profile_of_molecule.ipynb index f60a1e9b6..af14e6663 100644 --- a/qiskit/aqua/chemistry/dissociation_profile_of_molecule.ipynb +++ b/qiskit/aqua/chemistry/dissociation_profile_of_molecule.ipynb @@ -11,9 +11,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# _*Qiskit Aqua Chemistry: Experimenting with molecular ground state energy with variational quantum eigensolver*_ \n", + "# _*Qiskit Chemistry: Computing a Molecule's Dissociation Profile Using the Variational Quantum Eigensolver (VQE) Algorithm*_ \n", "\n", - "The latest version of this notebook is available on https://github.com/qiskit/qiskit-tutorial.\n", + "The latest version of this notebook is available on https://github.com/qiskit/qiskit-tutorials.\n", "\n", "***\n", "### Contributors\n", @@ -116,14 +116,14 @@ "%matplotlib inline\n", "import numpy as np\n", "from qiskit import Aer\n", - "from qiskit_aqua_chemistry import AquaChemistry\n", + "from qiskit_chemistry import QiskitChemistry\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", - "# setup aqua_chemistry logging\n", + "# setup qiskit_chemistry logging\n", "import logging\n", - "from qiskit_aqua_chemistry import set_aqua_chemistry_logging\n", - "set_aqua_chemistry_logging(logging.INFO) # choose INFO, DEBUG to see the log" + "from qiskit_chemistry import set_qiskit_chemistry_logging\n", + "set_qiskit_chemistry_logging(logging.ERROR) # choose among DEBUG, INFO, WARNING, ERROR, CRITICAL and NOTSET" ] }, { @@ -142,8 +142,8 @@ "metadata": {}, "outputs": [], "source": [ - "from qiskit import IBMQ\n", - "IBMQ.load_accounts()" + "# from qiskit import IBMQ\n", + "# IBMQ.load_accounts()" ] }, { @@ -152,9 +152,9 @@ "source": [ "## Optimization of H$_2$ at bond length\n", "\n", - "In this first part of the notebook we show the optimization of the H$_2$ Hamiltonian in the STO-3G basis at the bond length of 0.735 Angstrom. After mapping it to a four-qubit system with a parity transformation, two spin-parity symmetries are modded out, leading to a two-qubit Hamiltonian. The energy of the mapped Hamiltonian obtained is then minimized using the variational ansatz described in the introduction, and a stochastic perturbation simultaneous approximation (SPSA) gradient descent method. We stored the precomputed one- and two-body integrals and other molecular information in the hdf5 file.\n", + "In this first part of the notebook, we show the optimization of the H$_2$ Hamiltonian in the `STO-3G` basis at the bond length of 0.735 Angstrom. After mapping it to a four-qubit system with a parity transformation, two spin-parity symmetries are modded out, leading to a two-qubit Hamiltonian. The energy of the mapped Hamiltonian obtained is then minimized using the variational ansatz described in the introduction, and a stochastic perturbation simultaneous approximation (SPSA) gradient descent method. We stored the precomputed one- and two-body integrals and other molecular information in the `hdf5` file.\n", "\n", - "Here we use the declarative approach to run our experiement but it is doable via programatice approach, please see this [tutorial](programatic_approach.ipynb)." + "Here we use the [*declarative approach*](https://github.com/Qiskit/qiskit-tutorials/blob/master/qiskit/aqua/chemistry/declarative_approach.ipynb) to run our experiement, but the same is doable in a [fully programmatic way](https://github.com/Qiskit/qiskit-tutorials/blob/master/qiskit/aqua/chemistry/programmatic_approach.ipynb), especially for those users who are interested in learning the Qiskit Aqua and Qiskit Chemistry APIs as well as contributing new algorithmic components." ] }, { @@ -167,33 +167,33 @@ "output_type": "stream", "text": [ "Ground state energy (classical): -1.137306035753\n", - "Ground state energy (quantum) : -1.137160612416\n", + "Ground state energy (quantum) : -1.137287121511\n", "====================================================\n", "=== GROUND STATE ENERGY ===\n", " \n", - "* Electronic ground state energy (Hartree): -1.857129603695\n", - " - computed part: -1.857129603695\n", + "* Electronic ground state energy (Hartree): -1.85725611279\n", + " - computed part: -1.85725611279\n", " - frozen energy part: 0.0\n", " - particle hole part: 0.0\n", "~ Nuclear repulsion energy (Hartree): 0.719968991279\n", - "> Total ground state energy (Hartree): -1.137160612416\n", + "> Total ground state energy (Hartree): -1.137287121511\n", " Measured:: Num particles: 2.000, S: 0.000, M: 0.00000\n", " \n", "=== DIPOLE MOMENT ===\n", " \n", - "* Electronic dipole moment (a.u.): [0.0 0.0 -0.01520674]\n", - " - computed part: [0.0 0.0 -0.01520674]\n", + "* Electronic dipole moment (a.u.): [0.0 0.0 -0.00514828]\n", + " - computed part: [0.0 0.0 -0.00514828]\n", " - frozen energy part: [0.0 0.0 0.0]\n", " - particle hole part: [0.0 0.0 0.0]\n", "~ Nuclear dipole moment (a.u.): [0.0 0.0 0.0]\n", - "> Dipole moment (a.u.): [0.0 0.0 -0.01520674] Total: 0.01520674\n", - " (debye): [0.0 0.0 -0.03865167] Total: 0.03865167\n" + "> Dipole moment (a.u.): [0.0 0.0 -0.00514828] Total: 0.00514828\n", + " (debye): [0.0 0.0 -0.01308562] Total: 0.01308562\n" ] } ], "source": [ "# First, we use classical eigendecomposition to get ground state energy (including nuclear repulsion energy) as reference.\n", - "aqua_chemistry_dict = {\n", + "qiskit_chemistry_dict = {\n", " 'driver': {'name': 'HDF5'},\n", " 'HDF5': {'hdf5_input': 'H2/H2_equilibrium_0.735_sto-3g.hdf5'},\n", " 'operator': {'name':'hamiltonian', \n", @@ -201,18 +201,18 @@ " 'two_qubit_reduction': True},\n", " 'algorithm': {'name': 'ExactEigensolver'}\n", "}\n", - "solver = AquaChemistry()\n", - "result = solver.run(aqua_chemistry_dict)\n", + "solver = QiskitChemistry()\n", + "result = solver.run(qiskit_chemistry_dict)\n", "print('Ground state energy (classical): {:.12f}'.format(result['energy']))\n", "\n", "# Second, we use variational quantum eigensolver (VQE)\n", - "aqua_chemistry_dict['algorithm']['name'] = 'VQE'\n", - "aqua_chemistry_dict['optimizer'] = {'name': 'SPSA', 'max_trials': 350}\n", - "aqua_chemistry_dict['variational_form'] = {'name': 'RYRZ', 'depth': 3, 'entanglement':'full'}\n", + "qiskit_chemistry_dict['algorithm']['name'] = 'VQE'\n", + "qiskit_chemistry_dict['optimizer'] = {'name': 'SPSA', 'max_trials': 350}\n", + "qiskit_chemistry_dict['variational_form'] = {'name': 'RYRZ', 'depth': 3, 'entanglement':'full'}\n", "backend = Aer.get_backend('statevector_simulator')\n", "\n", - "solver = AquaChemistry()\n", - "result = solver.run(aqua_chemistry_dict, backend=backend)\n", + "solver = QiskitChemistry()\n", + "result = solver.run(qiskit_chemistry_dict, backend=backend)\n", "print('Ground state energy (quantum) : {:.12f}'.format(result['energy']))\n", "print(\"====================================================\")\n", "# You can also print out other info in the field 'printable'\n", @@ -251,7 +251,7 @@ "# select H2 or LiH to experiment with\n", "molecule='H2'\n", "\n", - "aqua_chemistry_dict = {\n", + "qiskit_chemistry_dict = {\n", " 'driver': {'name': 'HDF5'},\n", " 'HDF5': {'hdf5_input': ''},\n", " 'operator': {'name':'hamiltonian', \n", @@ -270,26 +270,26 @@ "\n", "if molecule == 'LiH':\n", " mol_distances = np.arange(0.6, 5.1, 0.1)\n", - " aqua_chemistry_dict['operator']['freeze_core'] = True\n", - " aqua_chemistry_dict['operator']['orbital_reduction'] = [-3, -2]\n", - " aqua_chemistry_dict['optimizer']['max_trials'] = 2500\n", - " aqua_chemistry_dict['variational_form']['depth'] = 5\n", + " qiskit_chemistry_dict['operator']['freeze_core'] = True\n", + " qiskit_chemistry_dict['operator']['orbital_reduction'] = [-3, -2]\n", + " qiskit_chemistry_dict['optimizer']['max_trials'] = 2500\n", + " qiskit_chemistry_dict['variational_form']['depth'] = 5\n", "else:\n", " mol_distances = np.arange(0.2, 4.1, 0.1)\n", "\n", "energy = np.zeros((len(algos), len(mol_distances)))\n", "\n", "for j, algo in enumerate(algos):\n", - " aqua_chemistry_dict['algorithm']['name'] = algo\n", + " qiskit_chemistry_dict['algorithm']['name'] = algo\n", " if algo == 'ExactEigensolver':\n", - " aqua_chemistry_dict.pop('backend', None)\n", + " qiskit_chemistry_dict.pop('backend', None)\n", " elif algo == 'VQE':\n", - " aqua_chemistry_dict['backend'] = backend_cfg\n", + " qiskit_chemistry_dict['backend'] = backend_cfg\n", " print(\"Using {}\".format(algo))\n", " for i, dis in enumerate(mol_distances):\n", " print(\"Processing atomic distance: {:1.1f} Angstrom\".format(dis), end='\\r')\n", - " aqua_chemistry_dict['HDF5']['hdf5_input'] = \"{}/{:1.1f}_sto-3g.hdf5\".format(molecule, dis)\n", - " result = solver.run(aqua_chemistry_dict, backend=backend if algo == 'VQE' else None)\n", + " qiskit_chemistry_dict['HDF5']['hdf5_input'] = \"{}/{:1.1f}_sto-3g.hdf5\".format(molecule, dis)\n", + " result = solver.run(qiskit_chemistry_dict, backend=backend if algo == 'VQE' else None)\n", " energy[j][i] = result['energy']\n", " print(\"\\n\")" ] @@ -301,9 +301,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEKCAYAAAAFJbKyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3XmcFPWd//HXp6/puYdjuE9BQQ5FGVDEC0SjJhEPFNFkJcawq0nUuMmuJr9ocM3vR6KbaDzWRUw0mgh4E48oGI+gqKByHwoICgz3NfdMd39+f1TN2Iw9J9NdDfN5Ph796Krqb1d9pnqm31PXt0RVMcYYY5rL53UBxhhjjiwWHMYYY1rEgsMYY0yLWHAYY4xpEQsOY4wxLWLBYYwxpkUsOIwxxrSIBYcxxpgWseAwxhjTIgGvC0iGzp07a79+/bwuwxhjjhgfffTRblUtbE5bT4NDRM4H7gP8wCxVnVHv9VuA64AIsAu4VlU3NzXffv36sWTJkiRUbIwxRycRafK7tZZnu6pExA88CFwADAGmiMiQes0+AYpU9QTgGeC3qa3SGGNMfV4e4xgNrFfVjapaDcwGJsY3UNU3VbXcHX0f6JXiGo0xxtTjZXD0BL6MG9/iTmvI94FXk1qRMcaYJh0RB8dF5DtAEXBWI22mAdMA+vTpk6LKjDn61NTUsGXLFiorK70uxSRBOBymV69eBIPBVs/Dy+DYCvSOG+/lTjuEiEwAfgGcpapVDc1MVWcCMwGKiorsJiPGtNKWLVvIzc2lX79+iIjX5Zg2pKrs2bOHLVu20L9//1bPx8tdVYuBY0Wkv4iEgCuBefENROQk4H+Bi1R1pwc1GtPuVFZW0qlTJwuNo5CI0KlTp8PemvQsOFQ1AvwIeA1YA8xV1VUicqeIXOQ2uxvIAZ4WkaUiMq+B2Rlj2pCFxtGrLT5bT49xqOorwCv1pt0eNzwhhcXAO3dDz5Ew8JyULdYYY4401uWIS4Hqd+5l25K/eV2KMe2e3+9nxIgRdY8ZM2Y0/aZmWrp0Ka+88tX/q4899hiFhYWHLG/16tVs27aNSZMmtdlyW2PTpk0MGzbM0xoSOSLOqkoFEWFXJIvdO7fTw+tijGnnMjMzWbp0aVLmvXTpUpYsWcKFF15YN23y5Mk88MADX2v7zDPPJKWGVItEIgQCbfd1b1sccUp9uQSqD3hdhjEmgQMHDjBo0CDWrVsHwJQpU3jkkUcAuP766ykqKmLo0KHccccdde9ZvHgxp512GieeeCKjR4/mwIED3H777cyZM4cRI0YwZ86cBpcX/99+eXk5V1xxBUOGDOGSSy7hlFNOqevW6PXXX2fMmDGcfPLJXH755ZSWlgJO10d33HEHJ598MsOHD2ft2rUAvP3223VbNieddBIlJSWoKj/72c8YNmwYw4cPT1jXqaeeyqpVq+rGzz77bJYsWUJZWRnXXnsto0eP5qSTTuLFF18EnC2piy66iPHjx3POOW27+922OOKU+3PJrbHgMKbW9L+tYvW2g206zyE98rjj20MbbVNRUcGIESPqxm+77ba6rYKpU6dy0003sW/fPn7wgx8A8Otf/5qOHTsSjUY555xzWL58OYMHD2by5MnMmTOHUaNGcfDgQbKysrjzzjtZsmRJ3RbGY489xpw5c1i4cGHd8hYtWnRIPQ899BAdOnRg9erVrFy5sq623bt3c9ddd7FgwQKys7P5zW9+w+9+9ztuv905VNu5c2c+/vhjHnroIe655x5mzZrFPffcw4MPPsjYsWMpLS0lHA7z3HPPsXTpUpYtW8bu3bsZNWoUZ5555iE1TJ48mblz5zJ9+nSKi4spLi6mqKiIn//854wfP54//vGP7N+/n9GjRzNhgnN4+OOPP2b58uV07NixNR9Vgyw44lQH8sio2eR1Gca0ew3tqjr33HN5+umn+eEPf8iyZcvqps+dO5eZM2cSiUQoLi5m9erViAjdu3dn1KhRAOTl5TW4vIZ2VdVauHAhN910EwDDhg3jhBNOAOD9999n9erVjB07FoDq6mrGjBlT975LL70UgJEjR/Lcc88BMHbsWG655RauvvpqLr30Unr16sXChQuZMmUKfr+frl27ctZZZ7F48eK65QBcccUVnHfeeUyfPp25c+fWHX95/fXXmTdvHvfccw/gnE79xRdf1K2vtg4NsOA4RHUon+yqEq/LMCZtNLVlkGqxWIw1a9aQlZXFvn376NWrF59//jn33HMPixcvpkOHDkydOjVlV72rKueeey5PPfVUwtczMjIA52B/JBIB4NZbb+Wb3/wmr7zyCmPHjuW1115r1rJ69uxJp06dWL58OXPmzOHhhx+uq+HZZ59l0KBBh7T/4IMPyM7Obu2P1ig7xhEnmlFArpY6p+YaY9LO73//e44//nj++te/8r3vfY+amhoOHjxIdnY2+fn57Nixg1dfdbq0GzRoEMXFxSxevBiAkpISIpEIubm5lJS07B/EsWPHMnfuXABWr17NihUrAOe4w7vvvsv69esBKCsr49NPP210Xhs2bGD48OH853/+J6NGjWLt2rWcccYZzJkzh2g0yq5du3jnnXcYPXr01947efJkfvvb33LgwIG6rZFvfOMb3H///aj7vfXJJ5+06GdrDdviiBMLFxAkglaXIhm5XpdjTLtV/xjH+eefz/e+9z1mzZrFhx9+SG5uLmeeeSZ33XUX06dP56STTmLw4MH07t27brdRKBRizpw5/PjHP6aiooLMzEwWLFjAuHHjmDFjBiNGjOC2224D+NoxjoceeogePb46v/KGG27gmmuuYciQIQwePJihQ4eSn59PYWEhjz32GFOmTKGqyukR6a677uK4445r8Ge79957efPNN/H5fAwdOpQLLriAUCjEokWLOPHEExERfvvb39KtWzc2bdp0yHsnTZrETTfdxC9/+cu6ab/85S+5+eabOeGEE4jFYvTv35+XXnqp9Su/GUSPwv+ui4qKtDU3cnrrqXs4e91/UfGj5WR27puEyoxJf2vWrOH444/3uoy0Eo1GqampIRwOs2HDBiZMmMC6desIhUJel9YqiT5jEflIVYua837b4ogTyHYOIpXs22XBYYypU15ezrhx46ipqUFVeeihh47Y0GgLFhxxQjlOcJQf2O1xJcaYdJKbm2u3o45jB8fjZOR1BqDyoAWHMcY0xIIjTqYbHJHSPR5XYowx6cuCI05uBzc4yvZ5XIkxxqQvC444+Xn5VGkArbDgMMaYhlhwxMkMBThADmLBYYxnxo0b97Wrqe+9916uv/56Vq1axfjx4xk0aBADBgzgjjvuIBaLAQ13j27angVHHBGhVHLwV+/3uhRj2q0pU6Ywe/bsQ6bNnj2bK6+8kosuuohbb72VdevWsWLFCj788EPuu+++unaTJ09m6dKldY8hQ4akuvx2wYKjnnJ/LsHqtu0N1BjTfJMmTeLll1+muroacLo337ZtG+vXr2fs2LGcd955AGRlZfHAAw9w9913e1luu2TXcdRT4c+jMGKn4xoDwKu3wvYVbTvPbsPhgobv6NexY0dGjx7Nq6++ysSJE5k9ezZXXHEFq1at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\n", "text/plain": [ - "" + "
        " ] }, "metadata": {}, @@ -318,14 +318,21 @@ "plt.legend()\n", "plt.show()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Quantum py37", + "display_name": "Python 3", "language": "python", - "name": "quantum-dev-37" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -337,7 +344,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.1" + "version": "3.6.4" } }, "nbformat": 4, diff --git a/qiskit/aqua/chemistry/index.ipynb b/qiskit/aqua/chemistry/index.ipynb index 40730ea7c..efff5974b 100644 --- a/qiskit/aqua/chemistry/index.ipynb +++ b/qiskit/aqua/chemistry/index.ipynb @@ -11,7 +11,7 @@ "## Contents\n", "\n", "* [Howto: declarative approach](declarative_approach.ipynb)\n", - "* [Howto: programatic approach](programatic_approach.ipynb)\n", + "* [Howto: programmatic approach](programmatic_approach.ipynb)\n", "* [Quantum Chemistry with VQE](dissociation_profile_of_molecule.ipynb) dissociation curve of H2 and LiH\n", "* More examples can be found in [commuity/aqua/chemistry](../../../community/aqua/chemistry)" ] @@ -28,9 +28,9 @@ ], "metadata": { "kernelspec": { - "display_name": "quantum-dev", + "display_name": "Python 3", "language": "python", - "name": "quantum-dev" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -42,7 +42,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.6.4" } }, "nbformat": 4, diff --git a/qiskit/aqua/chemistry/programatic_approach.ipynb b/qiskit/aqua/chemistry/programmatic_approach.ipynb similarity index 58% rename from qiskit/aqua/chemistry/programatic_approach.ipynb rename to qiskit/aqua/chemistry/programmatic_approach.ipynb index fe01be111..3e3ce1f4f 100644 --- a/qiskit/aqua/chemistry/programatic_approach.ipynb +++ b/qiskit/aqua/chemistry/programmatic_approach.ipynb @@ -11,7 +11,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# _*Qiskit Aqua: Chemistry, programatic approach*_ \n", + "# _*Qiskit Chemistry, Programmatic Approach*_ \n", "\n", "The latest version of this notebook is available on https://github.com/Qiskit/qiskit-tutorial.\n", "\n", @@ -27,13 +27,13 @@ "metadata": {}, "source": [ "### Introduction\n", - "In the [declarative_approach](declarative_approach.ipynb) example, we show how to configure different parameters in an input dictionary for different experiments in Aqua Chemistry. Nonetheless, for the users who intersted in experimenting with their new algorithm or new components in the algorithm, which is outside of the bounds of the high-level APIs, the users may want to break down the computation into smaller steps.\n", + "In the [declarative_approach](declarative_approach.ipynb) example, we show how to configure different parameters in an input dictionary for different experiments in Qiskit Chemistry. However, many users might be intersted in experimenting with new algorithms or algorithm components, or in programming an experiment step by step using the Qiskit Chemistry APIs. This notebook illustrates how to use Qiskit Chemistry's programmatic APIs.\n", "\n", - "In this notebook, we decompose the steps to compute the ground state energy of a molecule into 4 steps:\n", - " 1. define a molecule and get integrals from a driver (PySCF)\n", - " 2. define how to map Fermionic Hamiltonian into qubit Hamiltonian\n", - " 3. initiate and config dynamically-loaded instances, such as algorithm, optimizer, variational_form, and initial_state\n", - " 4. run the algorithm and retrieve the results" + "In this notebook, we decompose the computation of the ground state energy of a molecule into 4 steps:\n", + " 1. Define a molecule and get integrals from a computational chemistry driver (PySCF in this case)\n", + " 2. Construct a Fermionic Hamiltonian and map it onto a qubit Hamiltonian\n", + " 3. Instantiated and initialize dynamically-loaded algorithmic components, such as the quantum algorithm VQE, the optimizer and variational form it will use, and the initial_state to initialize the variational form\n", + " 4. Run the algorithm on a quantum backend and retrieve the results" ] }, { @@ -44,7 +44,7 @@ "source": [ "# import common packages\n", "import numpy as np\n", - "from collections import OrderedDict\n", + "\n", "from qiskit import Aer\n", "\n", "# lib from Qiskit Aqua\n", @@ -53,10 +53,10 @@ "from qiskit_aqua.components.optimizers import COBYLA\n", "\n", "# lib from Qiskit Aqua Chemistry\n", - "from qiskit_aqua_chemistry import FermionicOperator\n", - "from qiskit_aqua_chemistry.drivers import ConfigurationManager\n", - "from qiskit_aqua_chemistry.aqua_extensions.components.variational_forms import UCCSD\n", - "from qiskit_aqua_chemistry.aqua_extensions.components.initial_states import HartreeFock" + "from qiskit_chemistry import FermionicOperator\n", + "from qiskit_chemistry.drivers import PySCFDriver, UnitsType\n", + "from qiskit_chemistry.aqua_extensions.components.variational_forms import UCCSD\n", + "from qiskit_chemistry.aqua_extensions.components.initial_states import HartreeFock" ] }, { @@ -76,16 +76,9 @@ "source": [ "# using driver to get fermionic Hamiltonian\n", "# PySCF example\n", - "cfg_mgr = ConfigurationManager()\n", - "pyscf_cfg = OrderedDict([('atom', 'Li .0 .0 .0; H .0 .0 1.6'), \n", - " ('unit', 'Angstrom'), \n", - " ('charge', 0), \n", - " ('spin', 0), \n", - " ('basis', 'sto3g')])\n", - "section = {}\n", - "section['properties'] = pyscf_cfg\n", - "driver = cfg_mgr.get_driver_instance('PYSCF')\n", - "molecule = driver.run(section)" + "driver = PySCFDriver(atom='Li .0 .0 .0; H .0 .0 1.6', unit=UnitsType.ANGSTROM,\n", + " charge=0, spin=0, basis='sto3g')\n", + "molecule = driver.run()" ] }, { @@ -106,7 +99,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "HF energy: -8.854072040283645\n", + "HF energy: -8.854072040283643\n", "# of electrons: 4\n", "# of spin orbitals: 12\n" ] @@ -138,106 +131,106 @@ "name": "stdout", "output_type": "stream", "text": [ - "IIII\t(-0.20765933501970818+0j)\n", - "IIIZ\t(-0.09376337484626399+0j)\n", - "IIZX\t(-0.0031775814548705844+0j)\n", - "IIIX\t(0.0031775814548705844+0j)\n", - "IIXX\t(-0.0012513965999570598+0j)\n", - "IIYY\t(0.0012513965999570598+0j)\n", - "IIZZ\t(-0.21162509515109731+0j)\n", - "IIXZ\t(0.01920053386310309+0j)\n", - "IIXI\t(0.01920053386310309+0j)\n", - "IIZI\t(0.3581026994577042+0j)\n", - "IZII\t(0.09376337484626399+0j)\n", - "ZXII\t(0.0031775814548705918+0j)\n", - "IXII\t(0.0031775814548705918+0j)\n", - "XXII\t(-0.001251396599957065+0j)\n", - "YYII\t(0.001251396599957065+0j)\n", - "ZZII\t(-0.21162509515109737+0j)\n", - "XZII\t(-0.01920053386310308+0j)\n", - "XIII\t(0.01920053386310308+0j)\n", - "ZIII\t(-0.3581026994577042+0j)\n", - "IZIZ\t(-0.12182774215820587+0j)\n", - "IZZX\t(0.01214489722808203+0j)\n", - "IZIX\t(-0.01214489722808203+0j)\n", - "IZXX\t(0.03169874598733765+0j)\n", - "IZYY\t(-0.03169874598733765+0j)\n", - "IXIZ\t(0.012144897228082029+0j)\n", - "ZXIZ\t(0.012144897228082029+0j)\n", - "IXZX\t(-0.003265995499666326+0j)\n", - "ZXZX\t(-0.003265995499666326+0j)\n", - "IXIX\t(0.003265995499666326+0j)\n", - "ZXIX\t(0.003265995499666326+0j)\n", - "IXXX\t(-0.00865015686061975+0j)\n", - "ZXXX\t(-0.00865015686061975+0j)\n", - "IXYY\t(0.00865015686061975+0j)\n", - "ZXYY\t(0.00865015686061975+0j)\n", - "YYIZ\t(0.03169874598733764+0j)\n", - "XXIZ\t(-0.03169874598733764+0j)\n", - "YYZX\t(-0.008650156860619748+0j)\n", - "XXZX\t(0.008650156860619748+0j)\n", - "YYIX\t(0.008650156860619748+0j)\n", - "XXIX\t(-0.008650156860619748+0j)\n", - "YYXX\t(-0.03098161334462468+0j)\n", - "XXXX\t(0.03098161334462468+0j)\n", - "YYYY\t(0.03098161334462468+0j)\n", - "XXYY\t(-0.03098161334462468+0j)\n", - "ZZIZ\t(0.055902510785167156+0j)\n", - "ZZZX\t(0.001871042751421938+0j)\n", - "ZZIX\t(-0.001871042751421938+0j)\n", - "ZZXX\t(0.0031040041160655197+0j)\n", - "ZZYY\t(-0.0031040041160655197+0j)\n", - "XIIZ\t(0.012841723180766738+0j)\n", - "XZIZ\t(-0.012841723180766738+0j)\n", - "XIZX\t(-0.0023521521732534313+0j)\n", - "XZZX\t(0.0023521521732534313+0j)\n", - "XIIX\t(0.0023521521732534313+0j)\n", - "XZIX\t(-0.0023521521732534313+0j)\n", - "XIXX\t(-0.00797590875057197+0j)\n", - "XZXX\t(0.00797590875057197+0j)\n", - "XIYY\t(0.00797590875057197+0j)\n", - "XZYY\t(-0.00797590875057197+0j)\n", - "ZIIZ\t(0.11346110712684758+0j)\n", - "ZIZX\t(-0.010838363828755228+0j)\n", - "ZIIX\t(0.010838363828755228+0j)\n", - "ZIXX\t(-0.033551353111232474+0j)\n", - "ZIYY\t(0.033551353111232474+0j)\n", - "IZZZ\t(-0.055902510785167156+0j)\n", - "IZXZ\t(-0.012841723180766738+0j)\n", - "IZXI\t(-0.012841723180766738+0j)\n", - "IXZZ\t(-0.001871042751421938+0j)\n", - "ZXZZ\t(-0.001871042751421938+0j)\n", - "IXXZ\t(0.002352152173253431+0j)\n", - "ZXXZ\t(0.002352152173253431+0j)\n", - "IXXI\t(0.002352152173253431+0j)\n", - "ZXXI\t(0.002352152173253431+0j)\n", - "YYZZ\t(-0.0031040041160655197+0j)\n", - "XXZZ\t(0.0031040041160655197+0j)\n", - "YYXZ\t(0.00797590875057197+0j)\n", - "XXXZ\t(-0.00797590875057197+0j)\n", - "YYXI\t(0.00797590875057197+0j)\n", - "XXXI\t(-0.00797590875057197+0j)\n", - "ZZZZ\t(0.08447056807294218+0j)\n", - "ZZXZ\t(-0.008994911953942267+0j)\n", - "ZZXI\t(-0.008994911953942267+0j)\n", - "XIZZ\t(-0.008994911953942267+0j)\n", - "XZZZ\t(0.008994911953942267+0j)\n", - "XIXZ\t(0.006612047066157872+0j)\n", - "XZXZ\t(-0.006612047066157872+0j)\n", - "XIXI\t(0.006612047066157872+0j)\n", - "XZXI\t(-0.006612047066157872+0j)\n", - "ZIZZ\t(0.060358912810788715+0j)\n", - "ZIXZ\t(0.011019231644722084+0j)\n", - "ZIXI\t(0.011019231644722084+0j)\n", - "IZZI\t(0.11346110712684758+0j)\n", - "IXZI\t(-0.010838363828755228+0j)\n", - "ZXZI\t(-0.010838363828755228+0j)\n", - "YYZI\t(-0.033551353111232474+0j)\n", - "XXZI\t(0.033551353111232474+0j)\n", - "ZZZI\t(-0.060358912810788715+0j)\n", - "XIZI\t(-0.011019231644722086+0j)\n", - "XZZI\t(0.011019231644722086+0j)\n", - "ZIZI\t(-0.11344680300366616+0j)\n", + "IIII\t(-0.20765933501970843+0j)\n", + "IIIZ\t(-0.0937633748462618+0j)\n", + "IIZX\t(-0.003177581454819807+0j)\n", + "IIIX\t(0.003177581454819807+0j)\n", + "IIXX\t(-0.0012513965999782634+0j)\n", + "IIYY\t(0.0012513965999782634+0j)\n", + "IIZZ\t(-0.21162509515110325+0j)\n", + "IIXZ\t(0.019200533863114204+0j)\n", + "IIXI\t(0.019200533863114204+0j)\n", + "IIZI\t(0.35810269945770123+0j)\n", + "IZII\t(0.09376337484626177+0j)\n", + "ZXII\t(0.0031775814548198056+0j)\n", + "IXII\t(0.0031775814548198056+0j)\n", + "XXII\t(-0.0012513965999782738+0j)\n", + "YYII\t(0.0012513965999782738+0j)\n", + "ZZII\t(-0.21162509515110328+0j)\n", + "XZII\t(-0.01920053386311419+0j)\n", + "XIII\t(0.01920053386311419+0j)\n", + "ZIII\t(-0.3581026994577012+0j)\n", + "IZIZ\t(-0.12182774215822034+0j)\n", + "IZZX\t(0.012144897228053009+0j)\n", + "IZIX\t(-0.012144897228053009+0j)\n", + "IZXX\t(0.0316987459873487+0j)\n", + "IZYY\t(-0.0316987459873487+0j)\n", + "IXIZ\t(0.012144897228053009+0j)\n", + "ZXIZ\t(0.012144897228053009+0j)\n", + "IXZX\t(-0.003265995499652904+0j)\n", + "ZXZX\t(-0.003265995499652904+0j)\n", + "IXIX\t(0.003265995499652904+0j)\n", + "ZXIX\t(0.003265995499652904+0j)\n", + "IXXX\t(-0.008650156860603548+0j)\n", + "ZXXX\t(-0.008650156860603548+0j)\n", + "IXYY\t(0.008650156860603548+0j)\n", + "ZXYY\t(0.008650156860603548+0j)\n", + "YYIZ\t(0.0316987459873487+0j)\n", + "XXIZ\t(-0.0316987459873487+0j)\n", + "YYZX\t(-0.00865015686060355+0j)\n", + "XXZX\t(0.00865015686060355+0j)\n", + "YYIX\t(0.00865015686060355+0j)\n", + "XXIX\t(-0.00865015686060355+0j)\n", + "YYXX\t(-0.030981613344632574+0j)\n", + "XXXX\t(0.030981613344632574+0j)\n", + "YYYY\t(0.030981613344632574+0j)\n", + "XXYY\t(-0.030981613344632574+0j)\n", + "ZZIZ\t(0.05590251078515368+0j)\n", + "ZZZX\t(0.0018710427514123198+0j)\n", + "ZZIX\t(-0.0018710427514123198+0j)\n", + "ZZXX\t(0.003104004116078267+0j)\n", + "ZZYY\t(-0.003104004116078267+0j)\n", + "XIIZ\t(0.012841723180750613+0j)\n", + "XZIZ\t(-0.012841723180750613+0j)\n", + "XIZX\t(-0.002352152173238769+0j)\n", + "XZZX\t(0.002352152173238769+0j)\n", + "XIIX\t(0.002352152173238769+0j)\n", + "XZIX\t(-0.002352152173238769+0j)\n", + "XIXX\t(-0.007975908750559497+0j)\n", + "XZXX\t(0.007975908750559497+0j)\n", + "XIYY\t(0.007975908750559497+0j)\n", + "XZYY\t(-0.007975908750559497+0j)\n", + "ZIIZ\t(0.11346110712685867+0j)\n", + "ZIZX\t(-0.010838363828730848+0j)\n", + "ZIIX\t(0.010838363828730848+0j)\n", + "ZIXX\t(-0.03355135311124219+0j)\n", + "ZIYY\t(0.03355135311124219+0j)\n", + "IZZZ\t(-0.05590251078515368+0j)\n", + "IZXZ\t(-0.012841723180750615+0j)\n", + "IZXI\t(-0.012841723180750615+0j)\n", + "IXZZ\t(-0.0018710427514123196+0j)\n", + "ZXZZ\t(-0.0018710427514123196+0j)\n", + "IXXZ\t(0.0023521521732387685+0j)\n", + "ZXXZ\t(0.0023521521732387685+0j)\n", + "IXXI\t(0.0023521521732387685+0j)\n", + "ZXXI\t(0.0023521521732387685+0j)\n", + "YYZZ\t(-0.0031040041160782664+0j)\n", + "XXZZ\t(0.0031040041160782664+0j)\n", + "YYXZ\t(0.007975908750559497+0j)\n", + "XXXZ\t(-0.007975908750559497+0j)\n", + "YYXI\t(0.007975908750559497+0j)\n", + "XXXI\t(-0.007975908750559497+0j)\n", + "ZZZZ\t(0.08447056807294816+0j)\n", + "ZZXZ\t(-0.008994911953942152+0j)\n", + "ZZXI\t(-0.008994911953942152+0j)\n", + "XIZZ\t(-0.008994911953942152+0j)\n", + "XZZZ\t(0.008994911953942152+0j)\n", + "XIXZ\t(0.006612047066148212+0j)\n", + "XZXZ\t(-0.006612047066148212+0j)\n", + "XIXI\t(0.006612047066148212+0j)\n", + "XZXI\t(-0.006612047066148212+0j)\n", + "ZIZZ\t(0.06035891281077614+0j)\n", + "ZIXZ\t(0.011019231644706083+0j)\n", + "ZIXI\t(0.011019231644706083+0j)\n", + "IZZI\t(0.11346110712685867+0j)\n", + "IXZI\t(-0.01083836382873085+0j)\n", + "ZXZI\t(-0.01083836382873085+0j)\n", + "YYZI\t(-0.03355135311124219+0j)\n", + "XXZI\t(0.03355135311124219+0j)\n", + "ZZZI\t(-0.06035891281077614+0j)\n", + "XIZI\t(-0.011019231644706081+0j)\n", + "XZZI\t(0.011019231644706081+0j)\n", + "ZIZI\t(-0.11344680300367628+0j)\n", "\n", "Representation: paulis, qubits: 4, size: 100\n" ] @@ -332,8 +325,8 @@ "metadata": {}, "outputs": [], "source": [ - "from qiskit import IBMQ\n", - "IBMQ.load_accounts()" + "# from qiskit import IBMQ\n", + "# IBMQ.load_accounts()" ] }, { @@ -355,8 +348,7 @@ "source": [ "# setup COBYLA optimizer\n", "max_eval = 200\n", - "cobyla = COBYLA()\n", - "cobyla.set_options(maxiter=max_eval)\n", + "cobyla = COBYLA(maxiter=max_eval)\n", "\n", "# setup HartreeFock state\n", "HF_state = HartreeFock(qubitOp.num_qubits, num_spin_orbitals, num_particles, map_type, \n", @@ -391,10 +383,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "The computed ground state energy is: -1.077059737908\n", - "The total ground state energy is: -7.881072036205\n", - "Parameters: [ 0.03425824 0.0052999 0.03442233 0.00533808 -0.03878529 0.06029099\n", - " 0.06050635 -0.11631612]\n" + "The computed ground state energy is: -1.077059715882\n", + "The total ground state energy is: -7.881072014178\n", + "Parameters: [ 0.03406673 0.00540282 0.0345916 0.00525172 -0.03877438 0.06030781\n", + " 0.06050618 -0.11645761]\n" ] } ], @@ -415,9 +407,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Quantum py37", + "display_name": "Python 3", "language": "python", - "name": "quantum-dev-37" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -429,7 +421,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.1" + "version": "3.6.1" } }, "nbformat": 4, diff --git a/qiskit/basics/getting_started_with_qiskit.ipynb b/qiskit/basics/getting_started_with_qiskit.ipynb new file mode 100644 index 000000000..cb2d521b9 --- /dev/null +++ b/qiskit/basics/getting_started_with_qiskit.ipynb @@ -0,0 +1,969 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Getting Started with Qiskit\n", + "\n", + "Here, we provide an overview of working with Qiskit. Qiskit provides the basic building blocks necessary to program quantum computers. The basic concept of Qiskit is an array of quantum circuits. A workflow using Qiskit consists of two stages: **Build** and **Execute**. **Build** allows you to make different quantum circuits that represent the problem you are solving, and **Execute** allows you to run them on different backends. After the jobs have been run, the data is collected. There are methods for putting this data together, depending on the program. This either gives you the answer you wanted, or allows you to make a better program for the next instance.\n", + "\n", + "\n", + "**Contents**\n", + "\n", + "[Circuit basics](#circuit_basics)\n", + "\n", + "[Simulating circuits with Qiskit Aer](#aer_simulation)\n", + "\n", + "[Running circuits using the IBMQ provider](#ibmq_provider)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Code imports**" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-29T00:04:16.313210Z", + "start_time": "2018-09-29T00:04:14.460647Z" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", + "from qiskit import execute" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Circuit Basics \n", + "\n", + "\n", + "### Building the circuit\n", + "\n", + "The basic elements needed for your first program are the QuantumCircuit, and QuantumRegister." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-29T00:04:20.069592Z", + "start_time": "2018-09-29T00:04:20.065489Z" + } + }, + "outputs": [], + "source": [ + "# Create a Quantum Register with 3 qubits.\n", + "q = QuantumRegister(3, 'q')\n", + "\n", + "# Create a Quantum Circuit acting on the q register\n", + "circ = QuantumCircuit(q)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
        \n", + "Note: Naming the QuantumRegister is optional and not required.\n", + "
        \n", + "\n", + "After you create the circuit with its registers, you can add gates (\"operations\") to manipulate the registers. As you proceed through the documentation you will find more gates and circuits; the below is an example of a quantum circuit that makes a three-qubit GHZ state\n", + "\n", + "$$|\\psi\\rangle = \\left(|000\\rangle+|111\\rangle\\right)/\\sqrt{2}.$$\n", + "\n", + "To create such a state, we start with a 3-qubit quantum register. By default, each qubit in the register is initialized to $|0\\rangle$. To make the GHZ state, we apply the following gates:\n", + "* A Hadamard gate $H$ on qubit 0, which puts it into a superposition state.\n", + "* A controlled-Not operation ($C_{X}$) between qubit 0 and qubit 1.\n", + "* A controlled-Not operation between qubit 0 and qubit 2.\n", + "\n", + "On an ideal quantum computer, the state produced by running this circuit would be the GHZ state above.\n", + "\n", + "In Qiskit, operations can be added to the circuit one-by-one, as shown below." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-29T00:04:20.807281Z", + "start_time": "2018-09-29T00:04:20.796420Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Add a H gate on qubit 0, putting this qubit in superposition.\n", + "circ.h(q[0])\n", + "# Add a CX (CNOT) gate on control qubit 0 and target qubit 1, putting\n", + "# the qubits in a Bell state.\n", + "circ.cx(q[0], q[1])\n", + "# Add a CX (CNOT) gate on control qubit 0 and target qubit 2, putting\n", + "# the qubits in a GHZ state.\n", + "circ.cx(q[0], q[2])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualize Circuit\n", + "\n", + "You can visualize your circuit using Qiskit `QuantumCircuit.draw()`, which plots circuit in the form found in many textbooks." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-29T00:04:26.904758Z", + "start_time": "2018-09-29T00:04:25.509141Z" + }, + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
                ┌───┐          \n",
        +       "q_0: |0>┤ H ├──■────■──\n",
        +       "        └───┘┌─┴─┐  │  \n",
        +       "q_1: |0>─────┤ X ├──┼──\n",
        +       "             └───┘┌─┴─┐\n",
        +       "q_2: |0>──────────┤ X ├\n",
        +       "                  └───┘
        " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circ.draw()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this circuit, the qubits are put in order with qubit zero at the top and qubit two at the bottom. The circuit is read left-to-right (meaning that gates which are applied earlier in the circuit show up further to the left)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simulating circuits using Qiskit Aer \n", + "\n", + "Qiskit Aer is our package for simulating quantum circuits. It provides many different backends for doing a simulation. Here we use the basic python version.\n", + "\n", + "### Statevector backend\n", + "\n", + "The most common backend in Qiskit Aer is the `statevector_simulator`. This simulator returns the quantum \n", + "state which is a complex vector of dimensions $2^n$ where $n$ is the number of qubits \n", + "(so be careful using this as it will quickly get too large to run on your machine)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
        \n", + "\n", + "\n", + "When representing the state of a multi-qubit system, the tensor order used in qiskit is different than that use in most physics textbooks. Suppose there are $n$ qubits, and qubit $j$ is labeled as $Q_{j}$. In most textbooks (such as Nielsen and Chuang's \"Quantum Computation and Information\"), the basis vectors for the $n$-qubit state space would be labeled as $Q_{0}\\otimes Q_{1} \\otimes \\cdots \\otimes Q_{n}$. **This is not the ordering used by qiskit!** Instead, qiskit uses an ordering in which the $n^{\\mathrm{th}}$ qubit is on the left side of the tensor product, so that the basis vectors are labeled as $Q_n\\otimes \\cdots \\otimes Q_1\\otimes Q_0$.\n", + "\n", + "For example, if qubit zero is in state 0, qubit 1 is in state 0, and qubit 2 is in state 1, qiskit would represent this state as $|100\\rangle$, whereas most physics textbooks would represent it as $|001\\rangle$.\n", + "\n", + "This difference in labeling affects the way multi-qubit operations are represented as matrices. For example, qiskit represents a controlled-X ($C_{X}$) operation with qubit 0 being the control and qubit 1 being the target as\n", + "\n", + "$$C_X = \\begin{pmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 0 \\\\\\end{pmatrix}.$$\n", + "\n", + "
        \n", + "\n", + "To run the above circuit using the statevector simulator, first you need to import Aer and then set the backend to `statevector_simulator`." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Import Aer\n", + "from qiskit import BasicAer\n", + "\n", + "# Run the quantum circuit on a statevector simulator backend\n", + "backend = BasicAer.get_backend('statevector_simulator')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we have chosen the backend it's time to compile and run the quantum circuit. In Qiskit we provide the `execute` function for this. ``execute`` returns a ``job`` object that encapsulates information about the job submitted to the backend.\n", + "\n", + "\n", + "
        \n", + "Tip: You can obtain the above parameters in Jupyter. Simply place the text cursor on a function and press Shift+Tab.\n", + "
        " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a Quantum Program for execution \n", + "job = execute(circ, backend)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you run a program, a job object is made that has the following two useful methods: \n", + "`job.status()` and `job.result()` which return the status of the job and a result object respectively.\n", + "\n", + "
        \n", + "Note: Jobs run asynchronously but when the result method is called it switches to synchronous and waits for it to finish before moving on to another task.\n", + "
        " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "result = job.result()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The results object contains the data and Qiskit provides the method \n", + "`result.get_statevector(circ)` to return the state vector for the quantum circuit." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.707+0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j\n", + " 0.707+0.j]\n" + ] + } + ], + "source": [ + "outputstate = result.get_statevector(circ, decimals=3)\n", + "print(outputstate)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Qiskit also provides a visualization toolbox to allow you to view these results.\n", + "\n", + "Below, we use the visualization function to plot the real and imaginary components of the state vector." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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dUopkeKSkhJaunQpjRo1im7dusX3xL5KaJw8eZKsra2VVnlBRLRs2TJ6++235bbt2LGD2rVrR5999hk9fvxYacd+07l48SJ98cUXVFhYKLddKpVSSkoKnTx5khYtWkQDBgwgZ2dnevfdd2nlypV09uxZSktLq5fwKCoqooMHD5KLiwsdOnSoQfuTL1y4QJqamrRz505+2/Hjx8nAwEDOX0MmAupKamoqTZs2jaZPn04pKSlERPT333+Tvr6+3BcJiURCbdu2pXnz5lF+fn69jslotrAABqNGNCVdQdQ0tQXTFY3LrFmz6Lfffntpu0gkonv37tG2bdto2rRp5OXlRd7e3jR9+nTaunUrhYSE1LsCND09nT799FN6++23G/x1bghtwXQFo5awAAaj7sTHx5OxsTFNnjz5JeOs1NRU4jiOTp48qfR1HDx4kDf5yszMJF9f31cKjaysLEpOTlbqmubPn0/9+vUjqVRK5eXl/PY9e/aQoaEhBQQEEFHVhmCMhkMsFtOjR49oz549NHPmTOratSu5u7vThx9+SBs2bKAbN25Qbm5ujQRGYmIijRkzht577z16/vx5g59Lz549adSoUXLlxLKMXXh4OEmlUjp+/DiNHz+e3NzcaN68eS8ZZtWVwsJC6tOnD58djY6OphkzZpClpSWFh4cr5BiMZgkLYDBqRVPRFURNT1swXdE8kEqlVFBQQJcvX6aAgAAaO3Ysde7cmfr06UNz586lwMBAio2NrVGypKioiE6fPk2urq60bdu2RnltG0tbMF3BeAUsgMGoH43hUE5EVF5eTqWlpVX+Lj09nRcaERERRFQRIQ8LC3spK68sNm7cSDo6OvTs2TMietG7R0QUEBBAmpqaFB8f3yBrYdSOkpISun37Nm3YsIEmTZpEbm5u1K1bN/rss89o165ddP/+fSosLJQTGPv27SMXFxc6duxYo7jCx8bGEsdxdP78ebntR48eJXd3d7p8+TJt3bqVjIyMaOjQobRv3z7q1q0bDR8+XGFlqPv27SMDAwNydnYmBwcH6tChA505c0Yh+2Y0W1gAg1FrGktXEDVtbcF0RfNFKpVSeno6nTp1ir7++msaOHAgOTs707Bhw+ibb76h06dPU0pKilxQIzU1lT7++GN65513lD4przoaW1swXcGoBhbAYNSfU6dOkbq6Oo0YMYL2799PDx48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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit.tools.visualization import plot_state_city\n", + "plot_state_city(outputstate)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Unitary backend" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Qiskit Aer also includes a `unitary_simulator` that works _provided all the elements in the circuit are unitary operations_. This backend calculates the $2^n \\times 2^n$ matrix representing the gates in the quantum circuit. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 0.707+0.j 0.707+0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j\n", + " 0. +0.j 0. +0.j]\n", + " [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j\n", + " 0.707+0.j -0.707+0.j]\n", + " [ 0. +0.j 0. +0.j 0.707+0.j 0.707+0.j 0. +0.j 0. +0.j\n", + " 0. +0.j 0. +0.j]\n", + " [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0.707+0.j -0.707+0.j\n", + " 0. +0.j 0. +0.j]\n", + " [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0.707+0.j 0.707+0.j\n", + " 0. +0.j 0. +0.j]\n", + " [ 0. +0.j 0. +0.j 0.707+0.j -0.707+0.j 0. +0.j 0. +0.j\n", + " 0. +0.j 0. +0.j]\n", + " [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j\n", + " 0.707+0.j 0.707+0.j]\n", + " [ 0.707+0.j -0.707+0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j\n", + " 0. +0.j 0. +0.j]]\n" + ] + } + ], + "source": [ + "# Run the quantum circuit on a unitary simulator backend\n", + "backend = BasicAer.get_backend('unitary_simulator')\n", + "job = execute(circ, backend)\n", + "result = job.result()\n", + "\n", + "# Show the results\n", + "print(result.get_unitary(circ, decimals=3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### OpenQASM backend" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The simulators above are useful because they provide information about the state output by the ideal circuit and the matrix representation of the circuit. However, a real experiment terminates by _measuring_ each qubit (usually in the computational $|0\\rangle, |1\\rangle$ basis). Without measurement, we cannot gain information about the state. Measurements cause the quantum system to collapse into classical bits. \n", + "\n", + "For example, suppose we make independent measurements on each qubit of the three-qubit GHZ state\n", + "$$|\\psi\\rangle = |000\\rangle +|111\\rangle)/\\sqrt{2},$$\n", + "and let $xyz$ denote the bitstring that results. Recall that, under the qubit labeling used by Qiskit, $x$ would correspond to the outcome on qubit 2, $y$ to the outcome on qubit 1, and $z$ to the outcome on qubit 0. This representation of the bitstring puts the most significant bit (MSB) on the left, and the least significant bit (LSB) on the right. This is the standard ordering of binary bitstrings. We order the qubits in the same way, which is why Qiskit uses a non-standard tensor product order.\n", + "\n", + "The probability of obtaining outcome $xyz$ is given by\n", + "$$\\mathrm{Pr}(xyz) = |\\langle xyz | \\psi \\rangle |^{2}.$$\n", + "By explicit computation, we see there are only two bitstrings that will occur: $000$ and $111$. If the bitstring $000$ is obtained, the state of the qubits is $|000\\rangle$, and if the bitstring is $111$, the qubits are left in the state $|111\\rangle$. The probability of obtaining 000 or 111 is the same; namely, 1/2:\n", + "$$\\begin{align}\n", + "\\mathrm{Pr}(000) &= |\\langle 000 | \\psi \\rangle |^{2} = \\frac{1}{2}\\\\\n", + "\\mathrm{Pr}(111) &= |\\langle 111 | \\psi \\rangle |^{2} = \\frac{1}{2}.\n", + "\\end{align}$$\n", + "\n", + "To simulate a circuit that includes measurement, we need to add measurements to the original circuit above, and use a different Aer backend." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
                ┌───┐           ░ ┌─┐      \n",
        +       "q_0: |0>┤ H ├──■────■───░─┤M├──────\n",
        +       "        └───┘┌─┴─┐  │   ░ └╥┘┌─┐   \n",
        +       "q_1: |0>─────┤ X ├──┼───░──╫─┤M├───\n",
        +       "             └───┘┌─┴─┐ ░  ║ └╥┘┌─┐\n",
        +       "q_2: |0>──────────┤ X ├─░──╫──╫─┤M├\n",
        +       "                  └───┘ ░  ║  ║ └╥┘\n",
        +       " c_0: 0 ═══════════════════╩══╬══╬═\n",
        +       "                              ║  ║ \n",
        +       " c_1: 0 ══════════════════════╩══╬═\n",
        +       "                                 ║ \n",
        +       " c_2: 0 ═════════════════════════╩═\n",
        +       "                                   
        " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Create a Classical Register with 3 bits.\n", + "c = ClassicalRegister(3, 'c')\n", + "# Create a Quantum Circuit\n", + "meas = QuantumCircuit(q, c)\n", + "meas.barrier(q)\n", + "# map the quantum measurement to the classical bits\n", + "meas.measure(q,c)\n", + "\n", + "# The Qiskit circuit object supports composition using\n", + "# the addition operator.\n", + "qc = circ+meas\n", + "\n", + "#drawing the circuit\n", + "qc.draw()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This circuit adds a classical register, and three measurements that are used to map the outcome of qubits to the classical bits. \n", + "\n", + "To simulate this circuit, we use the ``qasm_simulator`` in Qiskit Aer. Each run of this circuit will yield either the bitstring 000 or 111. To build up statistics about the distribution of the bitstrings (to, e.g., estimate $\\mathrm{Pr}(000)$), we need to repeat the circuit many times. The number of times the circuit is repeated can be specified in the ``execute`` function, via the ``shots`` keyword." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-29T00:04:28.595093Z", + "start_time": "2018-09-29T00:04:28.589162Z" + } + }, + "outputs": [], + "source": [ + "# Use Aer's qasm_simulator\n", + "backend_sim = BasicAer.get_backend('qasm_simulator')\n", + "\n", + "# Execute the circuit on the qasm simulator.\n", + "# We've set the number of repeats of the circuit\n", + "# to be 1024, which is the default.\n", + "job_sim = execute(qc, backend_sim, shots=1024)\n", + "\n", + "# Grab the results from the job.\n", + "result_sim = job_sim.result()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once you have a result object, you can access the counts via the function `get_counts(circuit)`. This gives you the _aggregated_ binary outcomes of the circuit you submitted." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-29T00:04:30.559484Z", + "start_time": "2018-09-29T00:04:30.513862Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'000': 526, '111': 498}\n" + ] + } + ], + "source": [ + "counts = result_sim.get_counts(qc)\n", + "print(counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Approximately 50 percent of the time the output bitstring is 000. Qiskit also provides a function `plot_histogram` which allows you to view the outcomes. " + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit.tools.visualization import plot_histogram\n", + "plot_histogram(counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The estimated outcome probabilities $\\mathrm{Pr}(000)$ and $\\mathrm{Pr}(111)$ are computed by taking the aggregate counts and dividing by the number of shots (times the circuit was repeated). Try changing the ``shots`` keyword in the ``execute`` function and see how the estimated probabilities change." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Running circuits using the IBMQ provider \n", + "\n", + "To faciliate access to real quantum computing hardware, we have provided a simple API interface.\n", + "To access IBMQ devices, you'll need an API token. For the public IBM Q devices, you can generate an API token [here](https://quantumexperience.ng.bluemix.net/qx/account/advanced) (create an account if you don't already have one). For Q Network devices, login to the q-console, click your hub, group, and project, and expand \"Get Access\" to generate your API token and access url.\n", + "\n", + "Our IBMQ provider lets you run your circuit on real devices or on our HPC simulator. Currently, this provider exists within Qiskit, and can be imported as shown below. For details on the provider, see [The IBMQ Provider](the_ibmq_provider.ipynb)." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-29T00:04:37.950277Z", + "start_time": "2018-09-29T00:04:37.947819Z" + } + }, + "outputs": [], + "source": [ + "from qiskit import IBMQ" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After generating your API token, call: `IBMQ.save_account('MY_TOKEN')`. For Q Network users, you'll also need to include your access url: `IBMQ.save_account('MY_TOKEN', 'URL')`\n", + "\n", + "This will store your IBMQ credentials in a local file. Unless your registration information has changed, you only need to do this once. You may now load your accounts by calling," + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-29T00:04:41.166242Z", + "start_time": "2018-09-29T00:04:40.072340Z" + } + }, + "outputs": [], + "source": [ + "IBMQ.load_accounts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once your account has been loaded, you can view the list of backends available to you." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Available backends:\n" + ] + }, + { + "data": { + "text/plain": [ + "[,\n", + " ,\n", + " ,\n", + " ,\n", + " ]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(\"Available backends:\")\n", + "IBMQ.backends()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Running circuits on real devices\n", + "\n", + "Today's quantum information processors are small and noisy, but are advancing at a fast pace. They provide a great opportunity to explore what [noisy, intermediate-scale quantum (NISQ)](https://arxiv.org/abs/1801.00862) computers can do." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The IBMQ provider uses a queue to allocate the devices to users. We now choose a device with the least busy queue which can support our program (has at least 3 qubits)." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-29T00:04:50.410670Z", + "start_time": "2018-09-29T00:04:41.860767Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The best backend is ibmqx4\n" + ] + } + ], + "source": [ + "from qiskit.providers.ibmq import least_busy\n", + "\n", + "large_enough_devices = IBMQ.backends(filters=lambda x: x.configuration().n_qubits > 4 and\n", + " not x.configuration().simulator)\n", + "backend = least_busy(large_enough_devices)\n", + "print(\"The best backend is \" + backend.name())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To run the circuit on the backend, we need to specify the number of shots and the number of credits we are willing to spend to run the circuit. Then, we execute the circuit on the backend using the ``execute`` function." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-29T00:04:52.336262Z", + "start_time": "2018-09-29T00:04:51.755588Z" + }, + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "fd73a122e3a24bb78be372442cfca7e6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HTML(value=\"

        Job Status: job is being initialized

        \")" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from qiskit.tools.monitor import job_monitor\n", + "shots = 1024 # Number of shots to run the program (experiment); maximum is 8192 shots.\n", + "max_credits = 3 # Maximum number of credits to spend on executions. \n", + "\n", + "job_exp = execute(qc, backend=backend, shots=shots, max_credits=max_credits)\n", + "job_monitor(job_exp)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``job_exp`` has a ``.result()`` method that lets us get the results from running our circuit.\n", + "\n", + "
        \n", + "Note: When the .result() method is called, the code block will wait until the job has finished before releasing the cell.\n", + "
        " + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-29T00:05:42.718830Z", + "start_time": "2018-09-29T00:05:42.296069Z" + } + }, + "outputs": [], + "source": [ + "result_exp = job_exp.result()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Like before, the counts from the execution can be obtained using ```get_counts(qc)``` " + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-29T00:05:44.604801Z", + "start_time": "2018-09-29T00:05:44.599850Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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LbfUXL3lpz/9Kb17947bc5TEogIqIkeMkSNHMnLk/qOF3nrrrTX3BwwYwKJFi+pc96KLLuKiiy46YPrjjz8e3ZByxNAhXBERkQiogIqIiERABVRERCQCOgcqIke0iX9Ij3jdKZdsiGISOdJoD1RERCQCKqAiIiIRUAEVERGJgAqoiIhIBFRARUREIqACKiIiEgEVUBERkQiogIqIiERABVRERCQCKqAiIiIRUAEVERGJgAqoiIhIBFRARUREIqACKiIiEgEVUBERkQiogIqIiERABVRERCQCKqAiInFWVFTEoEGDyM/PZ+rUqQfM37VrF5dddhn5+fl8/etfZ8WKFfvNX7lyJccffzy//e1va6Zt2rSJSy65hFNPPZVTTz2V999/v8mfx9FGBVREJI6qq6uZOHEiL7zwAnPnzuWll17ik08+2W+ZZ555hg4dOlBcXMzVV1/NpEmT9pv/P//zP4wYMWK/abfccgsjRozgvffe45133iEnJ6epn8pRRwVURCSOiouL6dGjB927dyctLY2xY8cyffr0/Zb561//yne+8x0AvvWtbzF79mzcHYA33niDbt26ceKJJ9Ysv3nzZubMmcOECRMASEtLo3379jF6RkcPFVARkTiqrKykc+fONY+zs7OprKw86DKpqam0a9eO9evXs3XrVh544AEmTpy43/Ll5eUce+yxXHfddZx55pnccMMNbNu2remfzFFGBVREJEndfffdXH311RxzzDH7Td+zZw8lJSVceumlzJo1i9atW9d5blUaJzXeAUREjmZZWVmsWrWq5nFFRQVZWVl1LtO5c2f27NnD5s2bycjIoLi4mFdffZVJkyaxadMmmjVrRsuWLfnmN79JdnY2AwcOBILDviqg0acCKiISRwMGDKCsrIzy8nKysrIoLCzkscce22+ZMWPG8Kc//YlBgwbxyiuvMHToUMyMv/71rzXL/OpXv6JNmzZcccUVAHTu3JmlS5fSp08fZs2apUZETUCHcEWaSKRdE4qLiykoKKCgoIChQ4fy+uuv16xz3XXXccIJJ3DaaaclTe6VK1fyzW9+k8GDBzNkyBAeeeSRJsuejFJTU5kyZQrjxo1j8ODBnHfeeeTm5jJ58uSaxkQXXXQR69evJz8/n4cffpg77rjjsNu9++67+cEPfsAZZ5zBwoULuemmm5r6qRx1bF9LrqNRXl6e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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "counts_exp = result_exp.get_counts(qc)\n", + "plot_histogram([counts_exp,counts])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Simulating circuits using a HPC simulator\n", + "\n", + "The IBMQ provider also comes with a remote optimized simulator called ``ibmq_qasm_simulator``. This remote simulator is capable of simulating up to 32 qubits. It can be used the \n", + "same way as the remote real backends. " + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "backend = IBMQ.get_backend('ibmq_qasm_simulator', hub=None)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "shots = 1024 # Number of shots to run the program (experiment); maximum is 8192 shots.\n", + "max_credits = 3 # Maximum number of credits to spend on executions. \n", + "\n", + "job_hpc = execute(qc, backend=backend, shots=shots, max_credits=max_credits)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "result_hpc = job_hpc.result()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "counts_hpc = result_hpc.get_counts(qc)\n", + "plot_histogram(counts_hpc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieving a previously ran job\n", + "\n", + "If your experiment takes longer to run then you have time to wait around, or if you simply want to retrieve old jobs back, the IBMQ backends allow you to do that.\n", + "First you would need to note your job's ID:" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "ExecuteTime": { + "end_time": "2018-09-29T00:05:57.842131Z", + "start_time": "2018-09-29T00:05:57.839227Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JOB ID: 5c56667159faae0051bceb52\n" + ] + } + ], + "source": [ + "jobID = job_exp.job_id()\n", + "\n", + "print('JOB ID: {}'.format(jobID)) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Given a job ID, that job object can be later reconstructed from the backend using retrieve_job:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "job_get=backend.retrieve_job(jobID)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and then the results can be obtained from the new job object. " + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'100': 33,\n", + " '110': 47,\n", + " '010': 21,\n", + " '111': 346,\n", + " '001': 21,\n", + " '101': 112,\n", + " '011': 32,\n", + " '000': 412}" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "job_get.result().get_counts(qc)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/qiskit/basics/getting_started_with_qiskit_terra.ipynb b/qiskit/basics/getting_started_with_qiskit_terra.ipynb deleted file mode 100644 index 6facd8b16..000000000 --- a/qiskit/basics/getting_started_with_qiskit_terra.ipynb +++ /dev/null @@ -1,975 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Getting Started with Qiskit\n", - "\n", - "Here, we provide an overview of working with Qiskit. Qiskit provides the basic building blocks necessary to program quantum computers. The foundation of Qiskit is the Terra element. The basic concept of Qiskit Terra is an array of quantum circuits. A workflow using Terra consists of two stages: **Build** and **Execute**. **Build** allows you to make different quantum circuits that represent the problem you are solving, and **Execute** allows you to run them on different backends. After the jobs have been run, the data is collected. There are methods for putting this data together, depending on the program. This either gives you the answer you wanted, or allows you to make a better program for the next instance.\n", - "\n", - "\n", - "**Contents**\n", - "\n", - "[Circuit basics](#circuit_basics)\n", - "\n", - "[Simulating circuits with Qiskit Aer](#aer_simulation)\n", - "\n", - "[Running circuits using the IBMQ provider](#ibmq_provider)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Code imports**" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "ExecuteTime": { - "end_time": "2018-09-29T00:04:16.313210Z", - "start_time": "2018-09-29T00:04:14.460647Z" - } - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n", - "from qiskit import execute" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Circuit Basics \n", - "\n", - "\n", - "### Building the circuit\n", - "\n", - "The basic elements needed for your first program are the QuantumCircuit, and QuantumRegister." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "ExecuteTime": { - "end_time": "2018-09-29T00:04:20.069592Z", - "start_time": "2018-09-29T00:04:20.065489Z" - } - }, - "outputs": [], - "source": [ - "# Create a Quantum Register with 3 qubits.\n", - "q = QuantumRegister(3, 'q')\n", - "\n", - "# Create a Quantum Circuit acting on the q register\n", - "circ = QuantumCircuit(q)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
        \n", - "Note: Naming the QuantumRegister is optional and not required.\n", - "
        \n", - "\n", - "After you create the circuit with its registers, you can add gates (\"operations\") to manipulate the registers. As you proceed through the documentation you will find more gates and circuits; the below is an example of a quantum circuit that makes a three-qubit GHZ state\n", - "\n", - "$$|\\psi\\rangle = \\left(|000\\rangle+|111\\rangle\\right)/\\sqrt{2}.$$\n", - "\n", - "To create such a state, we start with a 3-qubit quantum register. By default, each qubit in the register is initialized to $|0\\rangle$. To make the GHZ state, we apply the following gates:\n", - "* A Hadamard gate $H$ on qubit 0, which puts it into a superposition state.\n", - "* A controlled-Not operation ($C_{X}$) between qubit 0 and qubit 1.\n", - "* A controlled-Not operation between qubit 0 and qubit 2.\n", - "\n", - "On an ideal quantum computer, the state produced by running this circuit would be the GHZ state above.\n", - "\n", - "In Qiskit Terra, operations can be added to the circuit one-by-one, as shown below." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "ExecuteTime": { - "end_time": "2018-09-29T00:04:20.807281Z", - "start_time": "2018-09-29T00:04:20.796420Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Add a H gate on qubit 0, putting this qubit in superposition.\n", - "circ.h(q[0])\n", - "# Add a CX (CNOT) gate on control qubit 0 and target qubit 1, putting\n", - "# the qubits in a Bell state.\n", - "circ.cx(q[0], q[1])\n", - "# Add a CX (CNOT) gate on control qubit 0 and target qubit 2, putting\n", - "# the qubits in a GHZ state.\n", - "circ.cx(q[0], q[2])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Visualize Circuit\n", - "\n", - "You can visualize your circuit using Qiskit Terra `QuantumCircuit.draw()`, which plots circuit in the form found in many textbooks." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "ExecuteTime": { - "end_time": "2018-09-29T00:04:26.904758Z", - "start_time": "2018-09-29T00:04:25.509141Z" - }, - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/html": [ - "
                ┌───┐          \n",
        -       "q_0: |0>┤ H ├──■────■──\n",
        -       "        └───┘┌─┴─┐  │  \n",
        -       "q_1: |0>─────┤ X ├──┼──\n",
        -       "             └───┘┌─┴─┐\n",
        -       "q_2: |0>──────────┤ X ├\n",
        -       "                  └───┘
        " - ], - "text/plain": [ - "" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "circ.draw()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this circuit, the qubits are put in order with qubit zero at the top and qubit two at the bottom. The circuit is read left-to-right (meaning that gates which are applied earlier in the circuit show up further to the left)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simulating circuits using Qiskit Aer \n", - "\n", - "Qiskit Aer is our package for simulating quantum circuits. It provides many different backends for doing a simulation. Here we use the basic python version.\n", - "\n", - "### Statevector backend\n", - "\n", - "The most common backend in Qiskit Aer is the `statevector_simulator`. This simulator returns the quantum \n", - "state which is a complex vector of dimensions $2^n$ where $n$ is the number of qubits \n", - "(so be careful using this as it will quickly get too large to run on your machine)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
        \n", - "\n", - "\n", - "When representing the state of a multi-qubit system, the tensor order used in qiskit is different than that use in most physics textbooks. Suppose there are $n$ qubits, and qubit $j$ is labeled as $Q_{j}$. In most textbooks (such as Nielsen and Chuang's \"Quantum Computation and Information\"), the basis vectors for the $n$-qubit state space would be labeled as $Q_{0}\\otimes Q_{1} \\otimes \\cdots \\otimes Q_{n}$. **This is not the ordering used by qiskit!** Instead, qiskit uses an ordering in which the $n^{\\mathrm{th}}$ qubit is on the _left_ side of the tesnsor product, so that the basis vectors are labeled as $Q_n\\otimes \\cdots \\otimes Q_1\\otimes Q_0$.\n", - "\n", - "For example, if qubit zero is in state 0, qubit 1 is in state 0, and qubit 2 is in state 1, qiskit would represent this state as $|100\\rangle$, whereas most physics textbooks would represent it as $|001\\rangle$.\n", - "\n", - "This difference in labeling affects the way multi-qubit operations are represented as matrices. For example, qiskit represents a controlled-X ($C_{X}$) operation with qubit 0 being the control and qubit 1 being the target as\n", - "\n", - "$$C_X = \\begin{pmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 0 \\\\\\end{pmatrix}.$$\n", - "\n", - "
        \n", - "\n", - "To run the above circuit using the statevector simulator, first you need to import Aer and then set the backend to `statevector_simulator`." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# Import Aer\n", - "from qiskit import BasicAer\n", - "\n", - "# Run the quantum circuit on a statevector simulator backend\n", - "backend = BasicAer.get_backend('statevector_simulator')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we have chosen the backend it's time to compile and run the quantum circuit. In Qiskit Terra we provide the `execute` function for this. ``execute`` returns a ``job`` object that encapsulates information about the job submitted to the backend.\n", - "\n", - "\n", - "
        \n", - "Tip: You can obtain the above parameters in Jupyter. Simply place the text cursor on a function and press Shift+Tab.\n", - "
        " - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# Create a Quantum Program for execution \n", - "job = execute(circ, backend)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When you run a program, a job object is made that has the following two useful methods: \n", - "`job.status()` and `job.result()` which return the status of the job and a result object respectively.\n", - "\n", - "
        \n", - "Note: Jobs run asynchronously but when the result method is called it switches to synchronous and waits for it to finish before moving on to another task.\n", - "
        " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "result = job.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The results object contains the data and Qiskit Terra provides the method \n", - "`result.get_statevector(circ)` to return the state vector for the quantum circuit." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0.707+0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j\n", - " 0.707+0.j]\n" - ] - } - ], - "source": [ - "outputstate = result.get_statevector(circ, decimals=3)\n", - "print(outputstate)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Qiskit Terra also provides a visualization toolbox to allow you to view these results.\n", - "\n", - "Below, we use the visualization function to plot the real and imaginary components of the state vector." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABDAAAAFgCAYAAABNIolGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzsvXmsJGd5//utpfezL7Od2c+sHo+38TYYbviBYkLgnwiQUQQOKDYhlgUISBBKAkZYOBKJQQENTrhcAgECspMI7r0EMSTXYTH+2Z7xbmPP2ebse5/et1ruH8fVp7tPL7W81fWerucjjcbu6a6qrq5636e+7/d5HkHXdRAEQRAEQRAEQRAEQfCM6PUBEARBEARBEARBEARBtIIEDIIgCIIgCIIgCIIguIcEDIIgCIIgCIIgCIIguIcEDIIgCIIgCIIgCIIguIcEDIIgCIIgCIIgCIIguEdu8e/UooQgCIIgiFYIFt5LsQVBEARBEK2oG1uQA4MgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO4hAYMgCIIgCIIgCIIgCO6RvT4AgvAbuq5D13UUi0Xk83nIsgxJkiBJEkRRhCiKEAQBgiB4fagEQRAEQewAdF2HqqrI5/NQVbVhbEEQBLHTEXRdb/bvTf+RIAjz6LoOTdOgKAo0TYOmaSiVShAEAbX3oSAIEEURkiRBlmUSNgiC4B0rAxPFFgTBCF3XoSgKFEUBgHKMYfxbJUZcQcIGQRA7hLqDEwkYBOEyxqqIoijQdb0cKBguDFHcnslluDTq3Z+VwYcRgJCwQRCEx5CAQRBtpFa4MOKAUqkETdO2xQRGPFEZXxjvEQRh24KJ8YcgCMJD6sYWlEJCEC5RT7ioDAaaiYeNBAnDxaGqalXwAWyurBjBB62sEARBEETnYTg5VVUF0DheqKVSrKjEiEWMeKX2M40cGxRbEAThFSRgEARjjFWRSpGh0SqG1QCgmbBhODp0Xcfs7CwGBgYQi8XIMkoQBEEQOxhjjjfcFYB54aIVVoSN3/3udzh16hSluRIE4SkkYBAEI+rZOdtlv6wNGgqFAnRdhyiK5eMqlUpVnyFhgyAIgiD4pbZ2FsBOuGhFPWEjm81CkqQqN2ixWKz6XG1cIUkSCRsEQTCFBAyCcIiqqiiVSuXVCh4m6srAo5FjA0BDYaMyHaUyACEIgiAIwl0a1bfgZR6mNFeCILyEBAyCsIFh5zQCjCeffBJvetObuJqIW9XYqPy79jOUC0sQBEEQ7aWydtb09DQEQcCBAwcszbGiKJbdGu3GbJprrbBBblCCIKxAAgZBWKBeHqrdh3g3J+d6rVnNfq7yb4NWwoYRMIXDYeqMQhAEQRAWqFf0W5IkqKpqeR61M/e7jV03qPG5UChEwgZBEGVIwCAIE3iZh8oDjYQNYOvcXLp0CTfccENV3Q9q+UoQBEEQ9WlWO8vuQsROotWiSTKZxMzMDE6dOlX1GWr5ShD+hgQMgmhCvVWRdjyAX13IYt9wCAFZsvX5dgY+lefEECmA5rmwtQW+aGWFIAiC8AuNalxU4iQVpHbO3WkYx27EBZK0GQtRmitBEAAJGARRl3rCRTvU/Z9fUvGf/zuHdKYAXUsDagaxYBHDvQIO7Q3imiPduPZEH0KB5sIGD5O13SJflAtLEARBdCLG3NdMuDDwgwPDKk7SXKnlK0F0DiRgEEQFxqpI5cO128KFpun4v59U8V+Xcsjlt9qRCaIEiD3I6sDVjc0/v3wV0P+fNUDNIhIoYKgXOLQniNOHu3HdyT5EQlu3NK+BT6siX6VSCcVikYQNgiAIYsdTWfRbVVUA5lJQvSzGudMwk+baquUrpbkSxM6BBAyCQPM8VLdQFB0/fFzBr1/IoVgstf7AG2wKG93IoxuzCWA2AfzmNSD/b2MIFl7Ft/72j3bkyo2dIl/JZBI9PT0Ih8PU8pUgCILghnpFv608HO/EeZxHrLpBNU1DKpXC8PAwpbkSBKeQgEH4Git2TlYUijr+5WIev30pvc3qaIdcagnr8y8gm5xHNBJkcIR80cwyOjs7i6NHj9b9DOXCEgRBEO2GVdFvEjDcpdFvoqoqrl69it7eXkpzJQhOIQGD8CVGcDE7OwtRFLFnz562TUAvTUt49moPgtEIZLUIVS1BU0vQ1CJ0TTW9nWxiHusLLyCXWiq/ZgQ7fgh8jO9oBBIGlAtLEARBtJvK2lnPPvssbrzxRkdzi90UEprLnFNZONSgVctXEjYIon2QgEH4hnp2TlVVoWlaWyeZgAQIgghJDkGSQwhUHaMGTS1BVBNYW5kFAIhyCHIgWj7GdHwG6wsvoJBZ3bbtzpYs6lP721EuLEEQBNEu6hX9zufzAJyJCX5YiOCRRh1cWhUQrSdsUMtXgnAHEjCIjqeZnVMUxXJRLRb7MROsSGLjgMQQNiDvwtD+XeXXlVIehcwq5l7/BdLxq80O4o3t+CPwsfodzeTC1lJvVYVWVgiCIPxNs6LfxhzsZJ6gIp47A7udUSjNlSDsQwIG0bHUWxWpnRxEUdymmNvBSrASkK0LC3IgDLlvP3S9udhiPM/7aQJk8V2tFPnKZrPIZrPYtWsXWUYJgiB8hpmi34b44GSl3S8LEbzhVHgysCpsLC4uYnBwEOFwmNJcCaIFJGAQHUc94aJREMFqhcNKsCJLLd/SbE9N/7Uy2PFD4OP2d6wXNBSLxXKFcmr5ShAE4Q+sFP1mEVuQA8Mb2hFXVP5tsL6+jv7+fkpzJQgTkIBBdAzN7JyNYBUgWFkpcSJgUPu1alitlFjdZ6Mc1lZFvkRRhCzL5Vav1PKVIAiCX4zaWUZsAZjrKMIitvDLPM4jXszLrWKLei1fAZTjCmr5SvgJEjCIHY8ZO2cjvBAwAg5qNwlCKwfG1vEQ7tBMNDFrGa3cBuXCEgRB8EW9ot9WxmQSMHYuXiyMAGjq4m2W5qrrOorFIrV8JXwFCRjEjsWKnbMRoigyCRCsBCuBQOv3NKTF99PhvxQSLxwYVvdpt8gXtXwlCIJoH82KflvByxQSmh92JnZji2bCBrV8JToVEjCIHYemachms1hbW8OuXbscPdAJgtD+FBIXHRiocGD4QcDwAqeF2Sqx0vJ1fn4ePT096OrqolxYgiAIhhi1sxYXFxGNRhGNRh3HFk7nYJrHvcErBwbL/TYTNoDqNNcrV67g+PHjVWmuxn9TmivBKyRgEDuCWjtnoVDA4uIi9uzZ42i7rIt4mkF2cte1dGD4i53iwLBDbQCSy+XQ3d1dvtYqW74ax0QtXwmCIMxTW/R7bW0NoigiFos52i4V8SSs0o7Yot6iSSqVKi/KUMtXYqdAAgbBNY3snLIst114aIaVlZKgkyKeLbqQGEUw/LJy08kCRi2G88NKy1cDsowSBEFs0ajotyRJVeKwXagGxs6lExwYVvYJUJorsfMgAYPgknqtUCsHRVEUuQkyrG7HUReSFqkLFOq4j9cCRiNa5cJSy1eCIPxOq6LfXsQEbm7DDbyaAzsdHhdkrKS5VkJproTbkIBBcEU94aLeQxvLIIPFCoeVlZLNr6MDsDOQm2+jymPgwxov26i2G7u1N6zkwhrUtnwlYYMgiJ2M2aLfPAkYvDowOl3A8PL7tXu/Tmp62XGDVgoaFFsQTiABg+CCRnbORrBM/eAlWDGD2TaqhHt46cBguV+zltGZmRn09PSgp6enqWODAhCCIHjDSEE1HJutxipJktqeVtpsG7zB4zGxhkfRyC1YFiU3MCtsvPrqq7jmmmsAkBuUsA4JGISntLJzNsKL9qfNaNdKSevB3F81MABvViy8yo9th/OjVtgw0k4kaTP3iXJhCYLgmdqi34D5Vqi8pafaxa1x1y+xhV/mrXY6SmvvwXw+D0mSqu5XavlKmIUEDMITzNo53WanCRho1UbVeBsN7q6x01JIWOy3spUa5cISBMEjjYp+WxlrRFHc9hBlB68FDMI+nZ4iU4mXCzIGTtNcqeWrPyEBg2grVu2cbsNTvqsZWp6rCg3FD6skXsBrEU+3UFW15X7NWEZroZavBEGwoFXRbyvstJig3fjFgeEXvFwYMRNXVP5t0KozCqW5+gMSMAjXqbSHxeNxzM3N4cyZM1wMJqwmY6vbEWCzY0irGhg2j4cwT6fUwLCyXyN9xCrU8pUgCLeoFC5efvllHDhwAL29vY622SkChp9cBKzx07njWcBoBLV8JQASMAgXqWfnNApk8TJgsDoOy8GKTQVDsNCFhHAHL4ObnRZoNMJMy9d4PI6lpSWMjo4CIGGDIIhNGhX9ZiEYsCriySoVxQ5uPpT5YXGk079fJV6nprLEbJrr7373O+zatQtdXV0AKM11p0ICBsGcZnZOVsEBb/DiwKjET5NwO/FKwPDq9zSTQsKKyqDB+L5GkS+AWr4ShJ9pVvRbkiRmxTdZbMcPD/qdjF/mD55TU1lSGVsUi8WyWGEmzZVavvIJCRgEM8zkobIKMir3ycNgYrkril0HhoUinhQ8uQNPDqJ24MZKiRlUVS3v16xl1BgPjEKrlAtLEDsfM0W/eUv98DqFxC38EFvwEle2A7/V9AK2xxaU5rozIQGDcEwjO2c9WAoYRoDgxcNVLYIgmApWisUipqamAP0MYDIdpHY/hLd41YXEq9/eK8GmMshoBOXCEkTnYqXoN0sHRicIGG49mPpBwPATnZRCYhazsUWrNFejxbwBCRvthQQMwjbN7JyNYDmp7yQBo1AoYHJyEuvr6zh06BBEUYBmJ9YiB4bn+Gl1xoBXAaMR1PKVIHYmlQ8IVlqhskr94FHAsDPn0JhlHy/meK/iNb+kkNTu243C5AC1fG0nJGAQljFj52yEGwIGDzQKnvL5PCYnJxGPx3H48GGcPHly83zZ3I+Z8zw1NQVN01AqlXz5sO02fjunXn1XJ0FGM8xYRq9evYre3l709fUBoJavBOE29Yp+W4ktWNXXYlnEk8V2jMUIXsYaWhzpLHZiFxIe923WDfrCCy/guuuuK7+X0lztQwIGYRords5GsLwpeSoIWjup53I5TExMIJlM4siRIzh16lTVd7d7GszUwAiHw1hdXUUqlcLTTz8NURQRjUbR1dWFWCyGWCyGUChEA6RNeAomOxlVVREIBNq2v8rxrFQqlYuCUi4sQbiHmdpZZpAkCYVCwfHxsHRyeNGi3W14Ox438GKO9ypV06t4xq0FCrO06ztXChuGa72yMDmludqHBAyiKYadc21tDaFQCIFAgJubiFWgATgfxI3Vlmw2i4mJCaTTaRw9ehTXXHNN3e3a3pWJDw4MDSEYDCIej2N0dBSqqiKbzSKTyWBjYwOzs7MoFAqQJGmbsBEMBrn4bXnGT/ZSL/EywFEUBbK8OT1SLixBsMcI5peXlzEwMGAqBbUZvKV+mK2LZfZ4eEiVJdzDq9pafnRgeEXld6Y0V+eQgEHUpdbOOTMzg3379qG/v9/rQyvDOmBxEiAUCgUsLCxgZWUFR48exZkzZ5oOKLYdGGg94GvK5jmpbEPZ3d2N7u7uqvcpilIWNtbX1zEzM1MWNgxBwxA3gsGgvQPuQLxYKfGydauX7Vu9LPJlCBiNcJoL+/TTT+Mtb3kLu4MmiB1AZdFvTdPw2muv4Y477nC83U4t4smb44G343EDrxYpvOoG0mquc2u/fhMwKhdGmmEmzbUWQ9BIJpNYX1/HNddcw+SYeYYEDKIKw85pBBfGjcRTuoYBDwJGKpXC+Pg40uk0uru7cd1115mahNx0YJQUzVSQIcsyenp60NPTU/W6oijIZDLIZDJYXV3F1NRU2VJvCBuGuNFOiz8veLFS4sdVEq8dGKwLiNZaRu+//34899xzvlw5IfxHvaLfLAvZ8Zb6wZsQQpjHC4HGy0UKr1JIvBBOvEwBdvqdzQgbTzzxBH7961/j4YcfdnKoOwISMAgArfNQWbY/NfbndBBhGSBYnbCSySTGx8ehKEo5TSMej5svZupiDQzV4TmRZRm9vb3o7e2ter1UKpWFjZWVFUxOTkJRFAQCAcRiMRSLRSQSCXR3d3syMbULr/JjqdXZzt53bS4sQfgBJ0W/rcDbIgs5MHY2fnJg+GlxxMtFGScLI82oHFNTqRRXTnk36dynDMIUlXZOYwCtd3PLssxMwGBVVduLtmmJRALj4+PQdR1Hjx4tDxSrq6uWJnX7BozWA6+iaJBF9kFGIBBAX19fuTODQbFYLLs1lpaWysJGMBiscmzEYrGOEDb8JmD40YEBuBvAVrrbCKITYVH02wqsF1mc0qlFPP2A31JIvGqj6sX87rWz0+0YOJFIbFt87FR2/tMEYYt6ds5mgxjL4MDYltNBk9WKi5liW/F4HOPj4xBFEaOjo9sGCKurLXYdGGZSSFRNQ0Bq30QYDAbLf06cOFEO3AxhI5PJYGFhAZlMBqqqIhQKbRM2dlKBMj9VKN9pvdrzRR3f/lkJL1zZgFpMoTuiYG+/iCMjYZw91osTh3tab6QNGClnBNFJVBa2tdIKlSdHJitYF/HkBRJU3MGrOd5viyOd5uysJZFI4PDhw67ugxdIwPAZdu2coihua/VjF0PAcFo/we0cU13Xsb6+jomJCQQCAZw8ebLhQ4fVSd2EkaLBfsw4MFQgwGb1xy6CICAUCiEUCmFgYKD8uiFspNNpZDIZzM3NIZPJQNM0hMPhKlEjGo1yKWx4tTpDKSTNeexXCv7rmcwb45QEyH1IloDkMvDaMvCzZ0vQ1EWIegbdYQW7+wUc3RfGmWM9OHW4p63nd2NjwzerJETnU1v0G7AWW7AYZ3h0YFAKyc7ET3M8OT/aR7scGLUu6U6FBAyf4NTOKcvytnY+duGtuFXtdoy2sRMTEwiFQjh9+jS6urqYHoso6LCVSGLGgaF6V6SoFZXCxuDgYPl1XdeRz+fLjo319XVks1lomoZIJLJN2PCyerUXKyV+WyUBzAd0v35JxaOPZ5HNtR6fRCkAoA8pBUitAGMrwM+fV6GpyxD1LLpCJRwayuHN17j7+/rJ5kl0Lq1qZ5nBEB5IwHB3O4R5/FTE029Cgh8cGCRgEDseu3bOeriRQuIU1kU8dV0vF6eMRqM4c+YMYrGYqW1YdmC42EZV1TaPYyetkgiCgEgkgkgkgqGhofLruq4jl8tVdUXJZrMAgEgkgkKhgOXlZcRiMUQikbZMxH7qQuJ1HYpmvD6r4f/6zxzWNvKOtyVKAZQKEsZefx4vX5rG7539PxgcYWM2NjZ8E2QQnQcL4cKAt3jAwOkDJSunAm+OB96Oxy2oBkZn7tdrB0Y0GnV1HyRgEDsaw865sbGBQqGA/v5+xwW0JElilkLCKtCQJAmlUsnxdgRBwOrqKl555RV0d3fj7NmzlgeZdtXAMPMbqqoKQQh2RJAhCAKi0Sii0SiGh4fLr2uahnw+j+eeew6ZTAbLy8vI5XIAgGg0WuXYiEQi3DpSzOK3/NhWPPorCf/fswWoioZNJ5P9a11TS1hfeBEbi69A11VEI0GyeRJEHYzaWdPT09i9ezdkWWZSy4o3AYNFWgvL9rB2vtdOn/O8hIp4du5+vRYw2hFbUBcSYsdhrIqoqgpN05DJZJBMJqus+nbpRAeGrutYXFzE4uIi+vr6cMMNNyASidjaltVVCdvjtpkaGGrn201FUUQ0GkUgEMCRI0fKr2uaVnZspFIpLC4uIp/fXKGPRqPo6uoqCxvhcNh2wOCX/FheBYzJlRDCsU2RUdd16JoCTS1BU0tQ1RJK2WXoQuCNlJH66LqG5OoY1mafhapsuTgCsuh6kJFMJknAIHYMtUW/l5aWMDQ05LiOFcAuHmA5JrOqy8EC3hwPvB1Pp+A3AYNSSNyBBAxiR9HIzsmy9SnLHuteCxiapmFxcRFTU1Po7+/Hnj17MDw8bFu8AGwIGK46MDTfBhmiKJYFil27dpVf1zQN2WwW6XQaiUQC8/PzyOfzZSGkUtgIhULcrV75Lchode2WlK3fRxAECFK1WBHpGoKmaSjmNlDIrkMpZqDrKgRBghSMIJ9exerMMyjm4tu2HQxIrn/njY2NqlQpguCRRkW/WccWPNWuAPiqO2G3m4lbD8S8zY1u4KdOY35bHOl0B0Y+n3f0LLOTIAFjB2OsiqiqWh5wKwcEWZaZdw5hgVfFrTRNw/z8PKanpzE4OIhz584hFAphbGzM8fFw1UbVJwKGNceLiK6urm3FWFVVRTabRSaTQTwex+zsLAqFAiRJ2iZsBINBz4I3snlWo5gYikRRRDg2gHBsoOp1VSlg4vK/NvxcMCi3xYExOjrq6j4Iwi6tin6zTCnlUcBguWDjFKNGF0/wdjydgJdCgt+cH8FgsO37NfbtZmxh3Jd+EBkBEjB2JLV2zlrhwoB12gdvAYtZ0UDTNMzOzmJmZga7du3CzTffXDWAsRBU2pVCYq6NKh+Bl9uwWCWRJAnd3d3b2uMqilIWNtbX1zE9PY1isQhJkpDP5zEzM1MWN9oxGXoVZPBq8yw5GD5UpdD038NBqS0Chl9snsTOwErRbx5TSlkiiiI3x8TbYgRvx+MGXogJfksh8Uqw8dqB4fa+ndY73EmQgLGDqCdcNLtQeXVgsNpWq1USVVUxOzuL2dlZ7N69G7feemvdnF0WKxxWRRDJRQHDeNj1qhVYJyDLMnp6etDT01P1uqIoeOaZZyBJElZXVzE1NYVSqQRZlqsKh3Z1dTHJDzfwcnXGi9WKVkGGqtmfoLVWAkZIplZnhG8win4rimK6WxmvsQXA5kGQpxQSJ8fi1UMxYR2/CRhe0ck1MNohkPAECRg7gFZ2zkbwmPZhbIuVA6PedhRFwczMDObn57F3717cdtttTVdUPXFguJhCUvKoiKcfqnbL8ubD7b59+6peL5VK5VavRiteRVEQCASqRI1YLGZrdZ9SSGr+3cElrqrFpv8eDrmfQkICBuE1tUW/rbRC5bUGhjEPd5KAYWcxwvgd3VhQ8IsDww/xjJf79QqvW8O7ea4TicS2RbdOhgQMTrFi52wEy7QPljedJEkoFps/RJihNsgw2rvNz89jZGSkpXBhYLdIVrNjaf1+e/sRYMaBofsiyOCJQCCAvr6+bQ+lxWKxLGwsLi4ik8lAURQEg8EqYSMajTa9VjVNc/2huh6qqnomnDQLMpzcrq1SSCJhcmAQnUujot9exRaSJKFQaH5PWtkWizGLpYDh9AGRJzHFL3jlXvVKSCABozPwW1xBAgZn2LFzNoJXWxjrGhilUglXr17F0tIS9u/fj/Pnz1saoERRRKlUcnQsVgUDSbA3QZrtQuIHdsLKQTAYRDAYrKp3oOt6lbAxPz+PTCYDVVURCoWqUlFisVg5Vcore6kXk30rK6ST+LJVCkk03J4inr29va7ugyAqaVX02wqSJDmeMyu3xdrN4TR9j6VL1OkYyttiBG/H4xZ+6ULiNzpdwPBTXEECBicYwsXa2ho0TUNfX1/HFmNhtaKgqipSqRSeeuopHDhwAOfPn7cVkLFKIbG2T7s7av1Bv3Qh2akIgoBQKIRQKISBga0OGbquo1AolIWNubk5ZDIZaJoGTdMQjUYBALFYDNFotC2TMK+pK06ubFVp7v5qh4DhlaOG8B+GcDE5OYn9+/dDFEXH97Qsy8jn80yOj8dUV1ZdSFgIGDwVFAX8IWB4lULC66Ija7y8frwSMNohUG1sbJADg2gftXbOVCoFRVE6ukK904ClUChgamoKq6urEATBtnBh4EWbMvtFPFsPgH5JIdkJDgwrCIKAcDiMcDiMwcHB8uu6ruPKlSuQZRmFQgHr6+vIZrPQNA2RSKTKrRGNRpkGQV5N9s36pTttsqO1qIERdTmFpNPvS4IPNE0rxxYAsLCwgP379zMZM3nsSsZyW161eq+HH+ZyovPimWZ4WTiUx5iGFYlEoqOfHWshAcMj6uWhiqKIQCDALB+0cl8sBkajVoRX+aX5fB6Tk5OIx+M4fPgwjh49ikuXLnGV72p+nzY/aKaNKkerNZ2GF4GkMTb09fVtc2zkcrmyY2N1dRXZbBYAtgkbkUjE1n3CYxHPTA4A7I9nrWpgRMPutlH1W692or00KvptdA5hEbzzWsSTtXOCh+3wJmDwdjxu4Kcinl7gpYDBY0zDCkohIVylXivUypuJZXsygI2F0YBVgSyrAUsul8Pk5CQSiQQOHz6MU6dOlSdRXoIMq5ADwzl+CjLq2Q8FQUA0GkU0GsXw8HDVeyuFjeXlZeRyOQBANBrdJmw0+z5eppA0EhHSeWfHY0bAcDPQSKfT6O7udm37hP8wU/SbtejAowODde0KFttpd4t2wjleFfH0SwqJl3UovIrh2uXAOHjwoKv74AkSMNpEPeGi3k3EMjAwtsdqsGBZIMvMhJzNZjExMYFUKoWjR4/i9OnTVeeM1SDEoguJVewLGGYcGP4oBuUnAcNKcCOKYlmgqMQQNtLpNFKpFBYXF5HL5SAIwrbCoeFwGIIgeGq3NGp+1JLOOdt2qxSS7q6Aq4HkxsaGr1ZJCPewUvSbV9GBx22xKlLKIrbgbTGCt+NxC7/EFl7gpQPDK9olYFANDIIZtXmorQpzsnZgGNsLBoOOt8UyOGi2nUwmg4mJCWQyGRw9ehRnzpxxdWD3xoFhNwAw0Ub1jS4kfggy2o2XDgwWqVKNhI1sNot0Oo1EIoH5+Xnk83mIoohcLofZ2Vl0d3cjFoshFAq15fs3+74Zlx0Y3VFnAm0r/GbzJNhjpKCqqlp2Z7UztmC5LUohcWcbfhEa3MAviyOhDAk0AAAgAElEQVReOXv8KGC0K4WEBAzCEYads14eaitYCxi8rm7U2046ncb4+Djy+TxGR0cxODjYlgG941JIdEoh6aR9Au5O+KIooqurC11dXVWvq6qKp556CqFQCPF4HLOzsygUCpAkCdFoFF1dXWVBJBgMMj0vqqo2XK3IFJztp1UbVbcDK79VCifYUa92lhexBa81MHhMISEHBmEGLx7qvUpb8crZ6eV1Sw4M9pCAwRAzeaitcMuBwQK3KnynUimMj4+jVCrh6NGjGBgYaOtD4k7qQmKuiCfly7oFTzUw3EaSNmtB7N27t+p1RVGQzWaRyWSwtraG6elpFItFSJKEWCy2TdiwQ7NaO1mHNY7VJikkouh+6+pkMumrIINwTuWCSGXRbyuwjAVYpl2ynH87tQsJTzUw/CBg+GVxhNc26W7u16vaG+1yYFAXEsIStXmoVlZFamG5GsF6eyyDA13XkUgkMD4+Dk3TMDo66tmNt5O6kFARzy381Kvdq/3WO7+yLKOnpwc9PT1VryuKUtURZWpqCqVSCbIslwUNQ9xoVUen2WSfK7qXQiKJItk8CW5oVfTbCqwFDB7pRAeGFwssRPvxk4DhlQPDy+KhiqIgHA67ug8SMAjTGHbOhYUFDA0NORIuDFgPYDxaPTc2NpDNZjE2NobR0VHPg3mWKxxmJqGNjQ2srSgARixv30wRT9UnDgyvJvxOSyFhhSzL6O3t3VbfoVQqVXVESafTUBQFgUBgm7BhWCybpZDkmtfgbEmzFBJJEsnmSXiOruvle6anp8dxXAFs3p9GN6JORZIkFIsOBwiwraXBogsJTwIGLY50zj795sDwWsBwO7bI5XKIRCKu7oMnSMCwQW0e6tjYGIaHh7lcleCp8vj6+jrGx8chyzJCoRDOnTvn+JgM8cHJYMhqtcWY2BtdB4lEAmNjYxAEAUOD1wFLtnbS8i2qTxwYXtCJNTDcJhAIoK+vb9tDe7FYLD+kLS4uIpPJlAsOp9NpLC0toaenB9FotGrizxednf9mDoyA7L6AkUwmceTIEVf3QexMDCenqqpIpVJYWFhgJnaxTk/lEZYuURbbYdWFhFJIOh+/iCaAPwUMt/dt3JM7NU60AwkYFmhk5zQmTbcDXzt4nUKi63pZuAgGgzh16hS6u7vxxBNPMDkmQ3zgScCopVK4OHbsGHp7e7HwtL2BTDDRhWQ9Hkc8Hucq6HEDmvDdxe0gNRgMIhgMVlkedV1HsVjE5cuXoWka5ufnkclkoKoqQqEQYrEYkukTAOx3CmlWAyMYkNqSQkJdSAiDRrWzgsEgt/WwADaLB5WwGFt5Sv1gtR0SDNqPX2ILvwkJne7AAPhN73MD/p64OaSecFF5kRiBAauLk2VgwNI2aqU3uq7rWF1dxcTEBCKRCK655pptXQ5Y4GWbskbbMQbIZDKJsbEx6LpeFi4MbLdRNTM46cDa2hpyuRyeeuopBAKBskXf+NurQXyn45WA4ZfgRhAEhEIhyLKMgwcPll/XdR2FQgGZTAZFxb0uJMGgRCkkRFuorZ0FVMcWgUCAawHDWNBgMUbUzp1Oj4nV8fCwHSdtVN3AD4KKF9/PizpXXqaQeLHg28kODEVRfBfXk4DRBE3TyqkiQOOOIoFAAKVSiVmBFlmWMbOUx/pGFtefHHA0wLB2YOTz+abv0XUdKysrmJiYQFdXF86ePYtoNNrwvTysuLDKMTUm9lQqhbGxMaiqimPHjtV9WJFtjjNmamBEozGcOHECiUQCt9xyC4rFItLpNDKZDObm5pDJZKBpGiKRSJWoEYlEdpT9zC+rJAZ+EDAaIQgCwuHw5hgrhWxvR1Wa58eHgjJVCidcxWzRb1mWTS8YmIF1gXCjvlargrxmMI7N6b3Hk/DAajt+EAx4xA/1tbxso2q3Q5nT/XaqAyOZTG4rrN7pkIBRg2HnNPJQgdatUFmubEwsqHj06UNY+nkSgA5NnYWkZ9ETVbB/SMLpI1245dpB7BmqLwq4eWzNAiBd17G0tITJyUn09PTg+uuvb1pMhlXaDU8BgqZpePHFF6HresuuKrLtLiStP6jVfJdgMIiBgQEMDAyUX9N1HblcDplMBul0GsvLy2WnTm1hxVAo5CtbWjO8mvC9gCcBo5KSAweGpjbvwRoOyeTAIFyhtnZWq6LfrLtjueHA4KW+Fq/bYVFLw4suac3grSaHG/hlccTLouR+TCFxc99+jCtIwHiDRnmoZm5uFoHBS1Mqvn8xg/nlTNXrohSAjl4kikBiHnh5HnjsNwloygJCUh7DvTqO7A3huhO9uPH0IEKB6hvE7RoYuq5jYWEBU1NT6O/vx4033mjKicJqUma9qmSHdDqNsbExpNNpnDlzBnv27Gn5GbsODDMpJJraWowRBAHRaBTRaBTDw8Nbn9W0cmHFeDyO2dlZFAoFSJK0LQ2FxcqbE/w04XuBV5N9KzGx5GCobeXAkAQNuVwO2WwWkUjEld86mUxSDQwfUU+4MCMMutGRzI0UEp62xZNzAmCzOEIODH/glzRRL/frpYABuFtgc2NjgwQMP6Jpmi3hwsBIIbHD068p+NF/pbESt1anQpSjKCGK+SQwnwR+85oK/ccLgJpCrzSNr/3NOwC4t0qiaRoWFhZw9epVDAwM4Ny5cwiFzFu7eQtY7JBOpzE+Po5CoYBjx45B13XTFi7JRQeG6uB8iKKI7u5udHd3V72uKEo5DWVpaancMcIorBiLxaCqqmfKervwMoWk3fAa3CgOho1mHUgAIBoJoFAoYHx8HLlcDoIglK9v4084HHZ0DbCy3RP8oyhKOTYwK1y4Bet2nO1yd3qxHZ6EECcChhvzlR8EFT85MLya471yYHiRutIO/FgcnAQMbLkv7PZatzOR/8/zJfz7L9PYSDavKWEWTVOQXBlDfPElKMUMgHeUj43lKomiKJiZmcH09DSGh4dx88032xoQWLUp80LAyGQyGB8fRz6fx+joKAYHBwEAMzMzpo/FTQeGqrEPLmRZ3tYK0+gYYQgbhUIBzz33HHRdRzQa3VZfg/Xk7JcgwytYFeizs99mwY2iuZdC0t0VxsjISDn9S9M0ZLNZpNNpJBIJzM/PI5/PQxRFRKPR8vVtNtWq0wN/oprKGhd24XXM4dGBwWo7rM43T0XGWdLp45hfYguvHKW8xhY7GUoh8SmiKDq6ia12+vj8dzXMLuWgOVlKfANNLSGx8jriCy9BVbaLIaxWSVRVxeLiIlZXVxGLxXDLLbc4UjIlSeJmhcMs2WwWY2NjyOVyZeGi8rqxsjLhZhHPdp0Po2NEKBTC4OAgVlZWcMMNN0AUReRyOaTTaaRSKSwuLiKXy0EUxW31NYLBoO17zy9Bhlfwmqfq5PJulUISqamBIYoiurq6tnVQUlW1LGzUplrVChuV17gxPvjlGvI7Tl0PRicSHh07PDoweHvY56nIOCto7HIHr+IZHl2WbsFrWiwLSMAgbGG1WniqEEaka7PApa5r0NQSNLUIVdn8W1OL0PXmk56qFLGx/Co2Fl+tu6qYzubRFQ07DgxUVcXMzAzm5uYwPDyM7u5uHD9+3Pb2DFiuuLgdsGSzWYyPjyObzdYVLgysBCsByd6AJsBEDQwXHBhWqKyvsWvXrvLrlQ99a2trmJ6eRrFYhCzL2+preNFiywx+EzB4DDJMlHhpSLMWqgAQi5jrQiJJUsNUq3rX+MrKCh577DGMjo4iGAxiZWWlqvYMQdTDiC1YChisxjAeHRi8PeyzSiHhSZShFBJ38GK+5XWO77T9ut2BBNisgXHgwAFX98EbfD4l7DCs9msPyEDxjbcLgghJDkGSQwhUlJDQNAVaYRWJ9SXomgpBkhEIxqCqJWwsvYLE0u+gaY1Fk3g8i66o/VxtI1Vkbm4OIyMjuO222yAIAp5++mlb26uFZY6pW0U8c7kcxsfHkU6nMTo6iqGhoabn08rEbnsMNVUDg8/gotFDX6lUKqehLCwsIJPJQFVVhEKhKmEjGo1WTbZ+cWB4FbzyavNsoe0233YLB0Y07KwLiSzL6Onp2VYLJ51OIxKJ4Mknn0QymcQf//EfY2VlBf39/bj++uvxla98peF1deHCBXz5y1/GwsICzpw5g69+9at4y1ve0vJYfv3rX+Otb30rTp06hZdeesn2dyLs43SscKvwJotgWpZlFIvN7yezsKzVxRMsBBW715BfhPZOwS+iiZf77WThJJlMkgPDj7Q7yAiYuI5FUYYY2YPBka2OFqqq4LX//X8in1pq+fn1jTQOjAy0fF8tiqLg6tWrWFxcxMjICM6fP1++8Yz+9Szg0TJqTCC5XA4TExNIpVI4evQozpw5Y+oasXIssl0HhpkuJJwKGI0IBALo7++vajur6zoKhUJZ2FhbW0M2mwUARCKRsqW/srJ/O/BTr3ZeU0icXN2tamCYdWBYpaurC29729uwe/duXL16FT/4wQ8AAOvr6xgfH294Tf3oRz/Cxz/+cVy4cAFvfvObceHCBbzzne/EK6+8goMHDzbcXzwex9133423v/3tmJubY/59iPbAWsAwtsdCwGBdIJwnlwEreHNPsIAcGJ2zT03TPHG7+k3AaIcDg4p4+hgng7LVFJKgrAMmUgFqkSQZsmyu00c8aa2rSalUwtTUFJaXl3HgwAHcfvvt2250loMrbzUwDOFiamoKiUQCo6OjuOaaayx9ZyvXkBkRq/4+TNTAUHd+wCQIAsLhMMLhMIaGhsqva5pWrq+xurqKZDKJp59+ulxfw6hXYNQeYI0XYgKtkmzh9FZv1YWkKyq73uqsMsgYGBjAwEBjofnhhx/Ghz70Idx7770AgK997Wv42c9+hm984xt46KGHGn7uT//0T/Enf/In0HUdjz32GLsvQFjC6ZzppMNZPVgKIqwLhBcKze/NnQhvNTlY4AcBwwv85MDoZCdEo/22Q8AgBwZhGaspJEEH6ayiZE7A2KgRMBoNjsViEVNTU1hZWcHBgwdx/vz5tgxoPHUhyefzyOfzeO655zA6OorTp0/bmkisrLYE7N55ZgSMDg4uKguBBgIBhEIhHDt2rKr2wOrqKqampsq547X1NZxMYH4LMrxYnWkWZKTzgB3xt7ztFikkPd2tO4k4wUqQUSwWcenSJXz605+uev3OO+/EE0880fBzFy5cwNLSEv76r/8aX/ziFx0dL+EtbjkwWMDSgSHLMjKZDJNtscKYz52MvZ0oYPgBvzgwvKzp5VX3E68cGO1IIal0MfsBEjDewImqbHWSigTtP2BKsrlV5VR6S8Awjq/yBioUCpicnMT6+joOHTqEY8eOtfUhiWURT7t5uIVCARMTE4jH4wgEArZbwhpYyXeVbZ7qTkwhYUGj2gOVbV7n5uaQyWSgaRrC4XCVsBGJRExd/34SMHhcnUnlnB1PqxSSoN0b0yRWBIzV1VWoqordu3dXvb5792784he/qPuZF198EV/4whfw5JNPdmy7uJ0EbzUweOwcwnpbAJtx2oibSMCoxg8ODC++nxfpqV7N8V7RyYtBiUSCBAzCOlYHnbADZ7toMoUkkdoSMAyrpyRJyOfzmJycRDwex+HDh3Hy5EnLx88qOGBhjbXj5KgUb44cOYJTp07h8uXLTIptud1G9Y0dAU32o3ZYwNQIM9dhMBjcZtPXdR35fL4sbKysrJTbIBstMA1xIxSqXpH30yqJl0U8GwmJaYcu82YpJO04xW7mqRYKBdx11134u7/7Oxw5csSVfRDtJRAIIJ/f3h7dLqxTSHisgcGqUCmrFqidJmD4BT/M834TMABvnB/tcGBkMhnEYjFX98EbJGC8QTsv6ljIgQPDZApJOrsVqEuShHQ6jYWFBSSTyfJDu900CRYDrSGmOMVKgFAsFjE5OYm1tbVt4g2LYluW2qg6uPMEiNDRWLTRfejAsIIgCIhEIohEIlWtLDVNK6ehbGxsYHZ2FoVCAZIklQWNbDaLSCTS1uP10oHBW55q1qEDo1kKiSiKrp/nRCLRtPhmJUNDQ5AkCUtL1UWbl5aWsGfPnm3vX1hYwKuvvooPf/jD+PCHPwxg8zfUdR2yLOOnP/0p7rzzTudfgmgbfnJgsDoulh3OWLRA7TS3Qid+p1q8+n5+KRDuFV79roqiuFKTzcD4Xn76LQESMJhi9kEjak6DqIvZFJJ0ZlPAyGazSKVSePXVV3Hs2DHLhSlrMdwcTm+UdnYhqRUuTpw4se0ctDtYcSJgbDowGv8zr21UWcN6xUIUxbL7ohJFUZDJZJBOp5FKpbC+vo6FhQUEg8FtbV7deOCnFJItMgVnv3ezFBJZErkqtBUMBnHu3DlcvHgR73vf+8qvX7x4Ee95z3u2vX9kZAQvvvhi1WsXLlzAxYsX8R//8R84fPiwo2MnrMNjCgmroqA8iyGs0lPJgeFf/NCG1ou0FT/SrtobfvstScBghFHI04zK1hWx/4BpNoUkmcrihRdeQC6XQywWw5EjR5pWuzeLERwEAg4qkaI9qySVBUoPHz6M48ePN3wgYyVgmHZgOHguFASxaSvJTi7i6QWyLKO3txe9vb1QFAXhcBi7du2qqq8xMzODbDYLTdPKbV4r62s4mVi8FBJ4EzCyLqaQyLL7AobVXu2f/OQn8cEPfhC33nor7rjjDjzyyCOYn5/HRz/6UQDA3XffDQD47ne/i0AggGuvvbbq87t27UIoFNr2OtE+nKxYs+5Cwsr5CFir+dQKlgIGTwXCvRQw3HqY8YsDww8Pg17EFl5dO15es263UfUqVvMaEjDegNVKiRkBo9uBA10yKWCsrW9gZGQEAwMDeP3115lNoqIoMll1YblKUrudypawhw4dMtVZhVWwYroGhgxs2ijspfE0oxPaqJrBy3oUgiAgFAohFAphcHCw6t+NNq+ZTAZLS0vI5XIQRbFcX8MQNoLBoKnj9yqY4jGFJFd06MBokkISlCXXv6/VQlt33XUX1tbW8OCDD2JhYQHXXnstfvrTn+LQoUMAgOnpabcOleAAnlNIWMLagcFqccTpMbEUMHh5qPaDgOEXvBAw/OYoBdwXMJLJ5LYC9n6ABAxGWAkMuqMOHBiSuRQSORAuP1jx2PvdjRSSSuHCaktYFqtJrFZ+WtKilSo5MNyjVRApCAKi0Sii0WjV66qqlutrxONxzMzMoFgsQpblbW1eayc6v034bgoYapMUkmBQ4iqFxOC+++7DfffdV/ffHn/88aaffeCBB/DAAw9Y2h/BFicPfCRgeLctVq5MFrCqPUaYwy/n2ovv6ZVbwKsFGcD9FJKNjQ3LcUUnQALGG7BwYJi1evY4EDDM1sDI57eOhdfVDVbbURQFY2NjWFpasixcGLAo4tmulQmhlYBBNTC426ckSeju7kZ3d3fV66VSqVxfY3FxEel0GqqqIhQKlQWNUqnkq57pzfabdypgNEkhCQbltjgw/BhoEPZgmaYB8CtgsK5lxFOMwgKeXA/tPhYv5j6/CBheOTC8iCva0Qmk2b7dXBzxa1xBAgYjjBoYZuhz0OnGbApJobh1LKyLbfGSQqIoCmZmZrC+vo6hoSFbwoXBTqo43mpi9UsXkp0kYDQiEAigr6+vavLRdR2FQqGchrK6uop8Po+1tbVt9TXC4bBr54BHB0a+5KCWiFpq2n443AYHBov6QQRhF9YChiH885R/zVMRT1bwJmAQ7PEqTdRPKSSd6sBwsz07z5CAwQgrgUFPFLBb/0A02Ua1WNo6FkmSUCw2zv22Ag/2TEVRMD09jYWFBezduxe9vb2mWxO6cTwst2EKSiHxjHZMvoIgIBwOIxwOY2hoCMFgEKVSCfv37y/X10ilUlhYWEA+n4coilUpKEZ9DafwmLpSdFDPsFkLVQAIBWVXBQy/rOoR1fD0m7uRksJbATmeamCwgic3COBtQcR24Jex2os5nkdnp9u4fZ55dGC8+OKLkCQJ0WgUwWAQgUAAgUAAsrzpdJUkqdy63u65IQHjDdqZQuIEsykkJWVr4uWx3Zmd7RiOi/n5eYyMjOD222+HrutYWVlxfDxeODAENO2G2uRzLYp4kgOj4/ZpDPKxWAyxWLWFS1XVchrK2toarl69ilKphEAgsK2+hpUJ3MuV1UbnuKjYP/fN6l8AQCTsbgqJMTbwFhjXjlm8HZ/fMeYmFvciy3RSY3uKonDlKuKpCwkryIFBuIEXbVS9iiu8TCEB3L1veHRgfOhDH8LY2Bii0ShisRi6u7vR09ODnp4e9PX1obe3t+rvSCSCd7/73ZaEGBIwGBEIBCy1JxMFwM5zptk2qoqyNfHu9AJZqqpienq6SrgwBiJN05ittrAo4mnpWGwrGOYdGH5ZSWgXXpzPVhO+JEnliaGSYrFYFjbm5+eRyWSgqirC4fC2Nq/1ts/jdVN0oMNqTepfAJsChpsOjFwut624Kw/w+Dt3EqwWR0Ihc3O/m8dSC2tBhMX4yoNLlDV2j8Wte5sXMcUt/BQ3eeHA8FsKidtsbGxg3759Xh9GFc8++yz+6Z/+CeFwGMvLy1hdXcXq6irW1tYwNzeHl19+GYlEAqlUCvl8Hul0Gs8//zwJGHZg1UbVLKIIaDbmWMlkComiuidgFArNHwTMYOZ8q6qKmZkZzM7OYmRkBLfddtu2BwxWKxNeFPG0rV+0aqPKSdDlNn5xYNideIPBIILBYFXbTl3Xkc/ny8LGysoKcrkcAGxr88pjkKqoDhwYLVJIoi4LGBsbG9ytkiwvL+Md73hHWQAbGBjAwMAABgcHy38GBgbQ39+P3t5edHd3l68Poj0YsQULAYM1rLqSAVtxitN7kFXKLE8CBm8ODF6OpVPw0/n0WxHPdvy2yWQSp0+fdn0/ZtF1HW9961txzz33mP5Mb28vIpGIpf2QgFFBO9udySKg2Jj3RUneXIHXm0+slWkEPKaQNENVVczOzmJ2dhZ79+7F7bff3jCoYfUwySqFpB0BT6suJMYl3Omt1/wkYLBasRAEAZFIBJFIBENDQ1X7MNq8JhIJzM3NIZvN4tKlS2VRw3hwddMu3mr8LTkYelo5MKJhyfVCW7zlqc7OzuL555/H/fffj+XlZSwvL+PKlStIpVJIpVLIZDLI5/MoFArQdR2qquL48eN47rnnLAcbfsXpeGGlQHi7YVXU29gWCwGDVQoJy9phTueNdsUWxCbtnuc7OU6rxW9FPNvxfZPJZNVCldcIgoDvf//7UFW1/BxizBOyLEPX9fJ5kWUZ+Xwed999N4aHhy3thwQMRgQCAUs1MGQZgM2SGZIchFpqnq5S+SDAYwpJPTRNw+zsLGZmZrBnz566jgu3YBH0WE1DEexbMJr+s+qTGhhe4GUNDDcRRRFdXV1VK+tPPfUUrr/++iq3xuTkJBRFQTAYrHJrRKNRJsFBq8ledeLAaFEDw20HBo95qqurqzh48CD+4R/+AcVisSxSKIoCRVFQLBZRKBSQyWQQCATws5/9DF/96leZFIklzMG6vhbLziFuODB42Q4rIYTFQgLrdrpO8IMDo93fz08ChpdFPNv1PFGJ2y1UAT4XR/bu3Vv1/81+83A4jK997WuW90ECRgXtdGAEJHtdSIDNNJJWAgawWQdDlkXuHRheChcGoig6DhKtBBmlUgnQA7BzDbR2YGwVC+zkQGOnuyF43qdxbmVZRm9vb9WDt67rVfU1ZmdnkclkoGnatjavkUjE0m/UKrhRHSxCai1SSGIRd4t48phCctttt+HHP/4xAJgSJaanp3Hw4MGOzSXmETc6hxgipFPccGA4hVXqB+vtOBnD7QgYfnkgdgtyYLiDl+3ZvUjDa5eAwZMDox4/+clP8Ktf/Qq5XA579+7FHXfcgVtuuWVbUXorkIDBCCtBhqZpEFECYO9mMlvIc30jjV1DPdw6MHRdx/T0NGZmZrB7927ceuutnlUzb1cKiaIouHr1KhYXFyEIb3WliGcnixZeQ6LJ5nUeCoUQCoUwMDBQfl3XdeRyubKwsby8jFwuB0EQttXXCAaDdc9jKwHDiblIbZFC4raAweMqSW9vL66//vry/7e6vt/+9rfj937v99pxaB0DbykkrAUM3mKLThRCeEoh6fSFEQMSMNxB0zRPnBCd3L6VZwEjk8ng61//Or7+9a9jz5496OrqwsWLF/Hwww/j3nvvxZe+9CVqo+o1ZhTyytoOsni77X2ZbaW6nshi11AP04GRRXCgaVq5K0I+n/dUuDBgYdFsNrFXFiQ9cOAAzp8/j8deEQAbMUnrIp7+cWB45Uxo9z55EjAaYQgV0Wi0KpdRVdVyfY14PI7Z2VkUCgXIslwWNAxxw1UBQ23uwOjtCrje6ow3AaMWQRDw0ksv4eWXX0Y4HMaePXtw/PjxKqHKi+DTz8iyzKRwduX2WAkiLI+NNwFDkiSuBAxe5nKejqVT8JOA4ZUTwisBox0OjHQ6zV1hbSOGfPrpp/Gtb30LH/vYx/Dxj38cwWAQuq7jW9/6Fr74xS/i4MGDuO+++2zdAxSJVODWAKIoCmZmZjA3N4d9+/bhtttuw7PrISwl7W1PMunAiCcy9nbQbN8OggNDuLh69SqGh4fR09ODI0eOMBEveCiSVS9Q0TQNc3NzmJ6e3laQ1O7RCmj+YJnJZvHMM88gn89jdnYWvb29rhdf9AteOTDavU+Wk70kSeju7kZ3d3fV66VSqezWWFxcRDqdRrFYhKZpGBsbKwsb0Wi0LKY4iZtbt1F19/5IJBLYv3+/q/twQj6fx4ULF/C9730PiUSi/Fu86U1vwuc+9zmcPXvW60PckbDocJbJsJvLWQsY2WyWybY60TnBajs8dUTxgk4XTLxaGPECL1NIOtGBYfyOXpzTZhjH9dJLL2F4eBh/8Rd/AWAz7gsEArjnnnvwyiuv4L//+79x33332SqySgKGiyiKgunpaczPz2NkZKTq4TXiwL0pmmylmkjm7O+kAXaCDF3Xy8LF0NAQbrnlFgSDQVy6dCsHpKgAACAASURBVAmqqjp+sGZVJIvlKomu61hYWMDU1BSGh4frukxsH26LD4ZDYdx44424fPkyJEmqKr4YCoW2FV/kbeAzC3Uh2dn7DAQC6Ovrq3IlrK2tYWVlBf39/Uin01hfX0c2m4Wu6290vbDvXGuWQtKOX5RXB4bxW//whz/EN7/5TbzjHe/ABz7wAYRCIUxNTeFv/uZvcN999+Ff/uVfcPjwYa8Pd0fiZNXarRQSFvBYA4PXIp5eb4MVPB2LW7T7+3lZ56rd+E3AaIcDA+C35o2maSgUCtjY2EBfX1/Vc9DKykq5Boade44EjAqcXgCCIEBVVWiahqtXr2JpaQn79+/H+fPnt9040ZD9AdJsCslGsnplhMWAZSU4qHyIHxwcxM0331yVd8tqVcE4JqdFsliskqiqiqWlJUxMTKCvrw/nzp1raJez+1OYKeIpSRICgQB2795dPudG8cV0Oo10Oo21tbXy6lmlld+oUUBshwQM9/cbCoUwODiIwcHBqtdX4zk4kRq0Jikkoii0pdUZzwLGY489hj/4gz/AV77ylfK/nT17FjfffDPe8Y534Le//S0OHz7s2bXhV1h3IeG1qDc5MNw/FoJP/BJXAJ3rhGiE2wIGr/Oxca5///d/H9/73vfw/ve/H5/85CfR39+PWCyGf/u3f8Nzzz2Hz372swDsOUhIwGCIJEl4/fXXsb6+Xq5z0OhHiYXt78dsEc9UeqtTiZHP6fQGNlMrQtd1LC4uYnJyEgMDAw0f4nkKWJxuQ9d1xONxbGxsIBzedECEw81/ZNElB4ZW0YWk+mNbxRdrHw4NK//a2hquXr1atnlVihqxWIyrgdIvk/5OTyFhsV9RFKGK3XU+YWHbTRwYkiT6stUZsDVOpFKpuoXA9u7di2KxSJ1HPIJ1FxKWrgkexRCe4gpW2+HJ9cDTsbgFOTs7b79exjRu1vxIJpPb0nN54vTp0/jCF76Ahx56CJ/+9KcxMDCAlZUVrKys4FOf+hTuuusuACRgOMbuAFIoFDA1NYVkMonBwcGmwoVBV8SBA8NkCkmyRsBQFMX1XCzDfdDf39/UfQDwFSA4KeIZj8cxNjYGWZbR1dWFa6+91tTn3HNgVP536+8kimLdGgWVbo2ZmZlyHnY0Gq1ybIRCIU/sa35JIdkpRTxZ0CzIyDjMiGsmYMiy6Hpwk0wmuawUbvzO73rXu/DP//zPOH78OO68886y1fP73/8+AGB0dBQAv1ZVnuEthYS3wpvGtorF5oV2zcDS2clLfMKTaED3P3v8JGA4dUs72W8nOjCM1Ayeeec734nrr78eTzzxBBYXFxGJRPCud70Le/bscbRdEjAckM/nMTk5iXg8jsOHD2P37t0YHBw0dXN2R+zv12wKSTq7FaSwDDRqMYSLyclJ9PX14aabbmrpPmB5TF61KUsmk7hy5QpEUcSpU6cQiURw6dIl05+368Cw0oXECcFgEAMDA1UdCDRNQy6XQzqdRiKRwNzcXLmjRC6Xw8LCAnp6ehCLxTpyxdYvgYaXQUaj9KVMwdl5b5pCImyO56urq66Jcrw7MO6991688MILePDBB/GDH/wAg4ODWFtbw+OPP46/+qu/Kguz9ADTXlg6JgC2RUFlWeYuhYTV9cmyBobXDlHW8CKmuEW7v59fFmMAMHGC28WL76uqqqsCRiKRQG9vr2vbZ8W+ffvw3ve+t/z/qqqWnd52IQHDBrlcDpOTk9jY2MCRI0dw6tQpCIKAVCplOtDoidqfjMymkGQyWwIGaxsqsDkALi8vY2JiAr29vabSJiphFSCwWCmxEiCk02mMjY1BURQcP368PHioqmpp4rM/lraugVHvv1kgiiJisRhisRh2795dfr1UKuHy5cvlriuZTAaapiESiVSloYTDYWaTiFcTsB8EDK+CjKYOjLyz897MgREKBhAMBpFIJDA/P498Pg9JkspOI+NvJ5Otoihc15bp7+/H17/+dXzve9/Db37zG8zPz2NoaAg//vGP8ba3vc3rw9vROO2QxZJOL+LJCpYOUSriSTTDLwsjXu7XK9x2vvMuYGQyGVy4cAG//OUvkc/nEYvF0NfXh+HhYQiCgE996lNVzxJWIAGjglYDSDabxcTEBFKpFI4cOYLTp09XfcZKYNATs3+ckmQuCM7mt1YcWQYHlakiPT09uOGGG97oEGANlhZNp9/NTLCSzWYxPj6ObDaL48ePVzkTzG6j6v2CDjtFCc0U8dx8X/sCjUAgAFmWMTIyUh6sdV0vuzVSqRQWFhbKD4aVD4VdXV22FWo/rAZ7UQODxxSSrEMHRjMBIxyS0d3djaNHj5ZfUxQFmUwGmUymqpNPMBisEjbMuI12QsCv6zr6+vpw//334/777/f6cAiXYClgsHg4N+BNwGA1f/JQo4uwBqWJuodXqRxezcFup5Dw6uw0RLmHHnoI3/nOd3DzzTdj7969WF9fx5UrV3D58mWMjY3hIx/5CHbv3m1LxCMBwwSZTAYTExPIZDI4evQozpw5U/dEBwIB09XC+xwIGGYdGLncloDBImjRdR2rq6vIZrNYXl62LVwY8JRC0mwb+XweExMTSCQSOHbsGIaGhur+/lZvPvs1MJp/kJeHJUEQEI1GEY1GsWvXrvLrxoNhOp3G0tISxsfHoaoqwuFwlVsjEok0/a68fM924KcUErcEDE1pnEISDMrbggxZltHb27ttdcOoDZPJZLa5jSqFjWg0Wr5+K0VFXtF1HY8++igmJiYgCAL6+/sxNDSEoaEh9Pf34+zZs14f4o6Fxe/OapXWDTcmC3gUMFjQiTUweDmWTsFPixR+c2C4LdjwLmA88sgj+NKXvoSPfOQjTd9v5/onAaOC2hOYTqcxPj6OfD6P0dFRDA4ONj3JVopjRYIAYG8F3mwNjHxhK0hxEhwYwsX4+Di6urrQ3d2NkydPOrZD81bEs3YbxWIRk5OTWFtbw9GjR7c5bpxivwtJ88H/jRIY3AYa9R4MdV1HPp8vFw1dXl5GNpstp6xUChuGjd+rFBI/oGlaW3qX19Jsss8VHbRQ1RToeuPxLxKSTQcZ9WrDGG4jQ5hbXl5GLpfD6uoqvvOd7+DEiROQZRlzc3PYt28fd9etqqp48MEH8cgjj6C/vx+qqiKdTpe/UygUQjKZ9PowfYsxf7O4J/0iYPAyP7CKT1i20nUCr3HFTsarFBKv7g+/iDVAewQMuykYbmKc7/7+fpw/fx7A5u9QOXYIgrP29SRg1CAIApLJJMbHx1EqlXD06FEMDAyYuuGsFscSsClhWMVsF5J8YWvCs5Orqus61tbWMD4+jmg0iuuuuw7RaBSXL1/uuHZnlVZYRVEwNTWFpaUlHD58GCdOnHBlwLV731pxYOyUQEMQBEQiEUQiEQwPD5dfV1W1/FBYaeMPhUIolUpl50Y0GrU8EGbzOp55ZR03nOhGTxe/tQm8oFkxTbf322iyz5ccCBhN3BcAEA5Jjh4OK91GlddvoVBAf38/nnjiCaTTadx7772Yn59Hb28vbr75Zvz93/99w21euHABX/7yl7GwsIAzZ87gq1/9Kt7ylrfUfe///M//4LOf/Sxee+01ZLNZHDp0CPfccw8+/elPmzr+paUlfOUrX8GDDz6I973vfeX7q1gsIpfLcbUy7kcM0YEEDHMYD9mdImCQaNBe/FLE0y9OCK/SVgzc/G2TySROnDjh2vbtsLy8jFAohEAggM9//vO4cOECPvvZz+LAgQNMrzkSMGp4/vnnUSwWMTo6arnlnZUUEmDzAVa1Ma+ZTSEpFreCFCvVwnVdx/r6OsbGxhCJRHDttdciFtvKeWHZr51F2zQWtTQEQYCqqpicnMTc3BwOHjxoqh2uE9xyYOwEu7pZJElCT08Penp6yq/puo5isYgrV65AURRcvXoV2WwWALa5Neo9hGuajh8+ruCXz2WgqsB3f5GArmQRDeQx3AeMjoRw3fFenBnt9c0EX4tXRTyb7bfgwIHRrP4FAETC21NIWBAKhXD77bejt7cXr7zyCn70ox8B2Gx9Njk52fBzP/rRj/Dxj38cFy5cwJvf/GZcuHAB73znO/HKK6/g4MGD297f1dWFj33sYzh79iyi0Sh+85vf4M/+7M8QjUZx3333NdxPsVhEMBjEwsICwuEw1b5wCadjsRFbWCmS3QiWdSuArS4bTsdK1i1ZvUqDq6XTupCQmMIePxXx9AKvBQw3SSQSXLVnT6fTGBkZwa5duxCNRhEMBvHqq6/imWeewenTpzE4OIiBgQH09vZi165deP/73297XyRg1HDy5EmEQuYEglqsrmyIAmBnujabQlIsbW3dbHqLIVyEQiGcOXMGXV1d2/fPkXPC2I6T49E0DbOzs2X3zPnz59sy2LnVRlXXtt7XiYGGIAgIhUKIRCLo6+vD4OAggM3f0XBrrK+vY3p6GsViEYFAoCxoPHe1Fz99SqlyJwmCCCHQhTy6MLMBzGwAj7+sQVOXIekZ9EZL2Dck49ShKAIKH0Gk23gV3DSr2F1wsGjcrIUqAETD5lNI7FBbKbyvrw833nhjw/c//PDD+NCHPoR7770XAPC1r30NP/vZz/CNb3wDDz300Lb3nzt3DufOnSv//5EjR/Dv//7v+NWvftVUwDAEvnPnzuHP//zP8eijj+J973uf5e9HuAuvrglg69icOrZYCxi8PPCzKDJudy7vhEUML/BDS1MSMDoD3mpghEIh/PCHP0Qmk0E8HoemaYjH45icnMTy8jJef/11JJNJrK2tob+/H+9///ttX/8kYNQQiURsT3xWgwxZAko25jXRZApJSdnaeKvgYH19HePj4wgGg7jmmmvqChdmt2UWr4UQXdcxPz+Pqakp7N69G7FYDEeOHHF8PGaxP3e0cGDYSkzaedQOeqIooru7G93d3VXvKxaLuPxaDo9cFJDM5ExvX5QC0NGHjSKwMQ+8Mg8Ax/Cvv51BSMphuFvFe/5XP647tYfRN+IHHgt8FR2kkLR0YITccWAYbGxsmA4yisUiLl26tC39484778QTTzxhahvPPvssnnjiCTzwwAMN3/PLX/4S99xzD06dOoXe3l5MTk7iH//xHzE2NoZDhw5hYGAAg4OD6OnpwZ49e7hu1cY7Th9OeBYwWM3jTOtLMWrRDjh/uGRRv4KnxQiejqVTIAHDXbwSMNpRZ4Q3B0YgEMB73vMeAJtxz8WLF/Gxj32s7vk35jS754gEDIZYTSEJSID5x6ktNh0YrStoqBX5KY2CjHg8jrGxMQQCAZw6dWrbw1/d/e9wB0ZlG9jBwUHccsstCAaDWF5ednwsVnCrBobmQRtVXllc1/HN/1fF9CK74F+Uo1hfW8LrL1zC/t5rOlLA8HLFotH1XXTwE7YSMKIR9x0YZgWM1dVVqKq6rTDX7t278Ytf/KLpZ/fv34+VlRUoioLPf/7z+OhHP9rwvV1dXbjxxhsRCASQTCYxNDQESZLwzW9+E8ViEcViEaqqIh6P4wMf+AC++93vut4SjqiP1djCDCy7mvBWI4WlqMJCwOikFBI/0O64yQsxwau6G17gVTzTjvmSNwED2LqeL1++jM997nP4oz/6IyiKAkEQyn8AOD43FInU4OSGtjppBgI6kLO3P1EOQmsRlKsVE17tCs7GxgbGxsYgSZJp4cKARweGmeDO6KYyNjaG3t5e3HTTTUxyiu1iP4WkxUTnE82i1QT8zf/U8PTLCeg6u8Avl17G6vTTyGdWAQCBgLuTolcTPo+rMyXVQRHPFikksYi7Dox22Tx/9atfIZ1O48knn8RnPvMZHDlyBB/84AfrvveGG27At771LYiiiLGxMcTjcYyMjECSJORyORQKBeTzeWxsbODAgQMA0LE2XN5h7cBg2dXEToFwt2H1wG+kojgZC70s4unGQyotjLDHLw4MHtuzu0k7BIx0Ot3UMe8FxrUcDAaxf/9+rK2tudIphQQMhlgdgEIOzr4kh1oKGJq2NckYAUsikcDY2BgEQcCJEyeqiiOa3jdnAoaZ7ayvr+PKlSuIRqO4/vrrEY1GHe/XKZLdcdxCEU8/Bxqvzvcg1tcNTS1BU4tQlc2/NbVoWdQo5VNYnb2EdPxq1esb8XXMzs6Wa2ywnqy8qqTPSwG8ShQHQ0VLB0ZYcjXASSaT2Ldvn6n3Gk6IpaWlqteXlpawZ09zt4+RAnf27FksLS3hgQceaChgiKJYDnx+/vOfI51ON005ASin3i4sUkhyOTt+zcbbY9nVpFMdGIa702mHok5yYNAYwB6vBIx2u+m8Kg7ulYDRjv3qus7dwoJxLe/fvx+7du3CX/7lX+L+++/HwMBAubCnLMuIRqMIBAK290MChoeEHdS8kqQgrBhKc7kc1tbWoGkajh8/bku42No3fykkjbaTSCRw5coVyLLcsCipV7hWxFPfel8nCxhmJn1BECHJIUhyCIGK0jGapkBTSkivj0MpFSFIMgLBGASxeiJQlSLiCy9gY+nVuqLHwEA/BEHA0tISxsfHy21dDUEjFoshGo3aDk68rEXR7kmx1bWqOHBgqC3aqPbEAq6eZysOjGAwiHPnzuHixYtVBTUvXrxYzi01g6ZpLQs3Gw+xr7/+OncPoZ2Gk/HYSPNhBUtHB2sHBouHOVY1MFi3aLeLk2uHl3ayOwk/FPH0i+sD6FwHBq8dB43z/dvf/hb/+q//CgD49a9/jYMHD6Krqwvd3d0olUq466678N73vpeKeLKCxYVg9scIB+1PamZbqc4vLGNxYRaapiEcDuOmm26yvU8DSZJMdTQxsx23goxUKoWxsTFommbbaWIHKzmzkmjv92+VQuLXIp5WEEUZYlBG355ry6+pqoJ8ZhnF7AZUpYB8ZgVrs5ebrt53d8cwMjJSdUz5fL7cDWV5eRnZbBaiKG5r8WpGeeaxmKZbtPo9VQeXtaY2H696upx1UGiF1RSST37yk/jgBz+IW2+9FXfccQceeeQRzM/Pl2ta3H333QCA7373uwA2u5QcOXIEJ0+eBLBZoPPv/u7vmnYgAbZyUO+991488sgj+MlPfoI//MM/pDoXnME6hYSla8KN9qdOrz9WXUh4qV9hRwQxcs07eRGjU9B1ve3zrVcpJF45IbyY09z+vu0oEmoH47q66aab8O1vfxsAMD8/j5WVFWxsbCCdTmN8fBzxeByA/QUzilIYY2UCjjpxYJgUMC4/9wrefP4G9Pb24re//a39HVbum7MUksoAIZvNYmxsDPl8HsePH7dc3MapKm3YRc3cjLbnDnJguIIkyYj17EOsZ9PqP3b5By1TD4I1NTAEQUAkEkEkEsHQ0FD5dVVVy6LG6uoqpqamUCqVEAwGq0SNaDRaFVR4uWLBW3Dj5Bmg1e/o9ne1KmDcddddWFtbw4MPPoiFhQVce+21+OlPf4pDhw4BAKanp6ver6oqPvOZz2BqagqyLGN0dBR/+7d/27SIp/E5SZLw6KOP4tvf/jZ+8pOf4O1vfzsOHjxY7kISCATw7ne/u+p6JqzjZDx2owYGq+2xPDZWqS0sYxQeBAwWaSiEedodN/nFDeFlPBMKmXtmYonbDoxUKmWpfmG7MOa6kydPlhdVmmFX5CEBowZW7c5MCRhh+4OkJJlTP0YOHmVePI63FBJJklAsFvHyyy8jlUrh2LFjGBwctPxbGqscTgUMs5Of/S4k5mpgdDquT/om6mQEA+aGUEmS0NPTU+UE0nUdxWIR6XQa6XQaa2tryGazAFB2a8iyDF3X2x7geLEi1FLAcOLAaJJCIrbhvCaTScti6n333dfQQfH4449X/f8nPvEJfOITn7B8XMZvfODAAfz/7L15dCTleT76VFd1V+/aWttoRtKM9tkHzWhGNouNDYH42scEE+J7gu0QOCbEC7Hx9keSe3z42TiOucS+BrxgMMdOIGbHECdgx9jAMMAwwzaL9r21975V13L/kKvULfVS3VXVXaOu5xydgVbrq6Wrv+/9nvd5n/fWW29FJBLBzMwMhoeHEQwGEY/HMTs7i+PHj8Pj8Rhy9DLBbDarrsBQs4REDUWmOJZelBPiOEpjHYPAMJAP5cikVxqBsRVLSPx+v+7am//3f/83tm/fjj179oBhmE37kdQuJGazWdFnYxAYKkNsdyanu4VTQQMMuSUkvkC0+INkgZoEhtLNNsMwmJiYwMrKCvbu3Yvdu3cXvRCIQUKpHMeLNvGEocAQoeWiL8j4HGlL8YsiQRCgaRo0TaOurk56ned5RKNRhMNh+Hw+hEIhvP766zCbzZvUGlotyuUyDs11PUoeZS5HCYmJJErS6qwUXUgKhfg5f/7zn8/4e0EQkEgkpOyVQV4UDyX3jqIoVduoqq2aiEQiqoyllneFnpIsevHRMCAP5fKjKAeZUOrr3MpmmtmOq8SkMh8CgYDuCIxvfvObuP3227Fnzx5YLPkT7Q8++CD27NmDY8eOFXwsg8DYALUUGHLgtClQYMgkMIIh9ZzLRejBdTyZTGJiYgKLi4toaWkBy7KK2/SUut1ZsQRG3jaqqIwuJFpfm5xOJWaZCoxCIHaHEE1AAaCvr09Sa0QiEUxPTyMajUIQBNhstjRig6bpC3KjqWWQkauEhCJNmgc3yWSyLBLWXPB6vfB4PKAoKm3eS312CIIoa6tpA2tQuwuF2goMteIBtc6LJElVCJ9ytkBVewwD+kUlkSaGAkM96DExsrKygm984xt45plnYLVaUV1dvemnqqoKDocDe/fuxXe/+13cfvvtBoGhBxSyALtsxR/HJLOExB9MJzD05PBdDFiWxdTUFLxeL1pbWzE4OAiGYbCysqJ47FJnW0iNu5BsdeR6ltc+AmXPuTwCQ9tFMXXBt1gsqK2tRW1tbdrvY7EYwuEwAoEAZmdnkUgkQFGURICIxIbeWm1tRK4gI5oAlHyeuUpIKIosiVO43nD55Zfj+PHjqK6ulvVsnDhxAgcOHDAIjTJA7c0NRVGqlX3okQzRWxcSPYxhQB6MjiBb65jA1jUP1SOBcf311+PcuXMIBoPwer2Ix+OIx+NIJBJIJpNgWRYcx4HneVgsFgwNDaG5ubmoYxkEhsoQS0jkoMpe/IIkV4ERCq8TGGo6fJeawOB5HtPT05iensb27dtx7NgxaUIqRTtWuShIgUEWubGR6YFRyVkbVoVYTw6BQWugwEhFPpmn2N3E4XCkKZCSyaRkGur1ehGJRMBx3Ca1htVqzTh+OZ6bXEFGKKYsuMulwLCYtSUwAH22Mjx//jzuv/9+bNu2DXa7XWr5K/7YbDZYrVbQNA273Y7LL78cp0+fRldXV7lP/YKEnj5/PZIO4lhq+WJtNRPPSl3LS41y3OdKITAqrYSEZVlNjxsMBnVHYHzta19DIpGQFMOxWAyJRAKxWAzxeByxWEz6SSQS8Pl82L9/f1HHMgiMDShlCUmVo/jjmCh5CoxQZD1wV4vAUNsRPRd4nsfc3BwmJyfR1NSEY8eObTp/PdW7FmK2pV0JSWUgvwJD6QHkeGBov/EtJsgwm82SXC91rFgshkgkglAohPn5ecRiMZAkmabUcDgcuvPAiMSVnU+uNqoWM6lpkBGPx3WnWojFYmhpacEvfvELAGvzFkmu3Qez2QyLxQKLxQKapmGz2UCSJAiCkEqaDJQHam101PbAUJPAUKuEZCuZeBoKjNLCUGBsnWMCW5fA8Pv9qK+v12z8YiAmQAAoLuvPB4PAyACl7c5iMXm+E1XOog4BACBJeQqMSHQ9cBeDFqW12Govppkmb0EQMD8/j/HxcXg8HgwMDGQ1w1HrfNTIchRitlU8gWGYeOYDVyoFBq29AkOtBZ8gCGlxSV30WJaV1BoLCwuSz8bbb7+dRmzY7XZNgyxtFRjZS0hoi7YKDD06hVutVrzwwgsIBoMZf0KhEEKhECKRCKLRKPx+P6644gpdtmy7UKD0uyN2IlHDFE5tBYbe1BxbrYSk2LW8kmOAYlEuMqESSBOtTS1zHXcrlpAEg0F0dnZqNr4SCIKAD33oQ+jq6oLdbofL5YLH40FzczMaGxvhcDjQ3NyMhoaGou+RQWCoDLPZjGAwKOu9lAlYM1wsfBIhZSowItH1wF1P3UNSx+J5XppcBEHA0tISRkdHUV1djf7+/ryEi1qTcCkDDUEQEI+GARQh/8pXQoLKCFhyLcCqEBgyngWLxgqMUmQsKIpCVVWVtMlmGAbvvvsuuru7pRavS0tLiMViUhY+Va0hx2laDnIt9tGEdiUkNE1pGtzosU6VIAhZ/dkN6AdiJxI9EhhqKjDUMN/UExFimHgayIdKMdRMjfVLjXKoSrVWYAQCgYLbs5cKLMvC6XTiJz/5CWpqauDxeCTlLwC43W40NDTgxhtvxNe//vWijmEQGBmgVIFRSGBAEMWZLsptoxqLrxMYpSz9kAsx0CBJEisrKxgZGYHD4cDBgwdhsylwOS0Cpci2pBI0LLu7qGPknYgNBUbJFBhWi7bZhHIFGRRFwWq1wmq1wuPxSL/jOA7RaBShUAjLy8uYmJhAMpmExWLZ1OK10PPmOC4rWamEwBB4HgKffd6zWSjNjbb0psAYHx/HHXfcge3bt8Nms8Hlckk/TqdT+m+73Y7q6mrdBkkXEkpZnpoPapIOaiY0SJJEPB5XPI6avlhKCRU1Nk6VvJaXGoaJ59Y6ZjmhNTGlx+SIiEQigY6ODvz93/89brrpJlRXVyMWi+EPf/gDHnroIdx0000YGRnBt771LTQ1NeEzn/lMwccwCAyVUWiQYSIAroh1Sa6JZyqBUQ7zzXwgSRI+nw9TU1OwWCzYu3dv2eqstVZg+Hw+DA0NweFw4NChQ1h6ywFMF3WmOX+bevStHPTkWvRLZeJpNmu7GOstsCFJUtrcihAEQTJsCofDWFlZQTQaBbBWD5lKbFgsluyqmZxdSIq/B1wO/wsAsFm1JzD0FmSsrKzg1KlTmJycRDweB8dx4DguzQCYoiiEUyzzoAAAIABJREFUw2FcccUV+N73vldxwafeoLZvhd6SGYC65pt6MfFUA3oygDWgPvS2zmuFcpVylAtaf6Z6VmBMTU3h6aefxuuvv57WOa+3txcA8Mwzz+Cxxx6D2WzGAw88YBAYekAhXUiANR+EYrLFpMw2qvHEepCiNwIjFAohEAiAZVn09fWVvb5aKwVGKBTC8PAwCILAnj174HSumZ9QWnlg8AJee+01cBwHh8MBQRBK4mFQDmQ38VThOmUpMNQpn8iGcgUZhRyTIAjQNA2aplFXVye9zvM8otEowuEwfD4fpqenwTAMzGbzJrVGqhIrE+KMNi1UgTUCo9JKSPbv348nnnhCIp5EY1eRhIpEIojFYlhcXMSBAwfKfboGUHhskQt6XQf0RjyUs2W8gfKgUhQYlUKabGXoUd0pPlcrKysIBAIZ1yxBEPDWW28BANrb26WykkJhEBgZoORLLTezkUgkMDY2Bgh7ABQuQ5dbQpJg1h8etbMuxU6AkUgEw8PDSCaTcLvd6OrqKjt5AagjhU1VYMRiMYyMjCAWi6Grq2sTU0pp1EYVBHDkyBGMjY1JnSdSPQxSN49Op1PzFpJaIddnpQaBIUeBQRXLQsmEWM5RSqhVp2oymaRnLBWpm+aZmRlEIhEIgoBkMglBEKTaSZqmpfklllSgwMjhfwFUpgLDYrGgra2toL8xAk9l0FMJiRZQY0OkJ+8KcRw9KDAMlBaVQCYApb/OQpMjaqAcBqlAadTPoVBIdwSGeK9bW1vR19eHv/iLv8A3v/lNNDY2gqZpnDp1Cvfffz+uvPJKAGtKjR07dhR1rAtz56Jj5FvwEokExsfHsbq6ip07d8JmpcBECj+O3BISJrm+iGvhFl5I4B+LxTA6OopIJILOzk7U1dXhzJkzuslwFNICNRtMJhMYhsG5c+fg8/nQ2dkJj8eTcQItdo8oZzIWJeA0TaOpqUl6neM4Kdu6sLCA0dFRcBwHm82WRmpYrVbdZulEaG7iKYPA0BrlWHy1DjIsFgtqa2vTZIU8z+Ptt9+G3W5HIBDA3Nwc4vE4SJKE0+lEINSLYoheIH8JiaMECozu7m7NxleC1IzY22+/jenpadA0DafTiZqaGlAUhaamJqN9qkpQ6q+llgJDbYjkv54IDDU2EAaBUXkoR9ltuTbZpUY5TDzLQZoAayaWWiefymmKmg9tbW341re+hTvuuANf/vKXUV1dDZ7nMT09jYMHD+Kb3/wmvF4vZmZm8JGPfKSoYxgERgYomUiy/S3DMBgfH8fKygra29vR09OzJr2miutCYpJZQpJMITAoikIikTuYl4tCCIxEIoHR0VEEAgF0dHSgvr5euk9qBghKAyil58JxHPx+P+bm5tDZ2Sl9xtmgWQmJkP19JEnC7XbD7XanvH9NpREOhxEKheD1ehGPx0FRlERouFwuOByOCyYLWyoPDK1RKU7hJpMJBEGgoaEhzcgzmUwiEomAeU+7EhK7Vds2qnpUYIgwmUwIh8P49re/jZdeegnz8/NgWRYEQYDjODAMg7vuugvXX3+9If8tM8xmsyoGlyJEwl6Nz1RMjijtSKS3Mle9eGAYKB3KVc5RCXNruUpiy6Ey1trv40Lwt7vkkkvwox/9CL/73e8wNzcHjuMwODgoqS8A4Ec/+lHR4xsEhsZgGAYTExNYWlpCe3s7urq60r7AxTYxIAgCJtIMnsudkWHZdAWGmu3O8o2VStrs3LkTfX19mxYGtWtelUwYxRIYPM9jdnYWU1NToGkaXV1d2LZtW96/o4o+1XwLwLoRn5xJjiAI2O122O12NDQ0SK8nk0mpJn56ehrRaBSCIEg9nVONGcuBXIGGGjGnHgiMSmmvBmRe8M1mM6qrq0GYrMWPm6eEpFIJDPF+/+xnP8Ovf/1rfO5zn8MDDzyA+vp6XHrppfjZz36GnTt3Yu/evQD065twIaGUHc7kjqfG/K3WWHojMC50DwxDQXJhoFwlJKVGOUw8y2UcqrUCQ1Tt6PW5EZ/p9vZ23HjjjZocwyAwMkCNByKRSGBqagqLi4toa2vD4OBgxk2BVUEXRpKi8xIYHL8eLJWqDRvLspicnMT8/Dza2to2kTapULPdmdKJqtBzEQQBCwsLGBsbQ319PQYGBjAzMyP774slMIgSbS7NZjNqamrSvDtSjRlXVlYwOTmJZDIJmqYRj8exuLgIt9tdMsNQLQmMfCaepVg3LgQTTzWPm+37yyiYtvg8JSQuh7kiW52JG+nHH38cH//4x3HzzTfjiSeewAc/+EHcdtttOHjwIH7yk59I3zG9BkqVAj0TGHrrHqIW9KQQLfaYBgpDpRhqlgOVFs9oSWCEw2FdeAdmgvg8v/POO3jooYcQjUZB0zTsdjva2tpgMpnwwQ9+ELt27VJ0HIPAUBnJZBLJZBKvv/462tvbsxIXImx08QuMiaQBhHO+J3Xx1VqBwXEcpqenMTs7i+3bt+e9djXPSa0OInJrjFdWVjA8PAyXy4X+/n5J9l5Ihq1oAiNfyVFKCYnaAUyqMaPorSG20Tx16hTi8ThWVlZKYhia69pU8cDgcz+XeT8HFVCO2thy1lVmu9Ykq8TEM3cJicO65lujlZJIr63OxHsdDofR0dEBYM0UTPxefehDH8Itt9wCr9eL3bt3V0yQrVeo2YUEUDceoChKN+u4mlAzwaLnenUD5UWlzK2VVELCsqzm3lp6M/AE1p/l48eP42tf+xpomsbLL78Mm82G2tpajI6OAgAeeeQR7Nq1S1Hi2SAwVEIymcTk5CQWFhZAURQOHDiwyX0/E+wKCAySyh9wp+7xtFJgpJZQNDc34+jRo7InDD25hcvZ8AeDQQwNDYGiKOzbt2+TuV0h50EWO4/n6UJS6pyL2EbTbDajtbVVmow4jpNKULIZhrpcrrRuE4Ugt4lnCbqQlCDeKFcJid460yjxNMlXQmIyAe+99x6SySQsFsumFq9K738wGNSlAkP87uzYsQPnz58HABw8eBD/+7//i8suuwxLS0vw+Xyor68v52luKZSiw1k5xlPLIFztTVy5fbE2jlMOAqNSNsdqwVBgaIutZkqeDVqXkOiVwBDnuXvvvRd1dXV4+OGH8dGPfhQf/vCHceONN+KrX/0qtm3bhquuugoAFM2J+opSdYJCvmCp5RI7duzA4OAg3nvvPdmLnkNeM5GMkNtKlWFYWCyU6goMlmUxNzeH8fFxNDQ0YGBgAGZzYTUxJEmqklVSS4GRbYxoNIrh4WEwDIPu7u6sE0dhCoziqAa5z6cWCoxCQJIkqqqq0u5VqQxDeYWXLdc7RGuUK2ORaqSpB7AKpi2ey67AIAjAarXi0KFDkpJIbPE6NTWFSGStRZTdbk8jNiwWi+zPP5FIwGot3sNDK4jP1Ze//GUsLS0hkUjgpptuwqc//Wl84QtfwNjYGP7sz/4MO3fuBGCUkJQbeicw9FT6AahDGqhl4qlWVxQ9bXT1dC5qohK6kOhJ5aQ1ykUcau294ff7dZkYEXHq1Cl85StfAU3TCAQCqK2thcfjwb/8y7/g6quvxsc+9jEMDAwomkcMAqNIpBIXG8slCml35rApUGCQ8jYZvkAEjfVVqsk8BUFANBrF3NwcGhsbceTIkaLl1yRJquKsrkYAlYnAYBgGo6Oj8Pv96OrqgsfjyTuG3M/eXCSBkU+BkQq91cDKNQxN3ThmMwzVso2qHAPPreqBocduE0oUNbkUGCaTSQoyRCURTdOoq6uT3pPq++Lz+TA9PQ2GYWA2m+F0OuFwOKR/NwYsevv+ZcLFF18sBVsHDhzAT3/6U/zXf/0XGhoa8Dd/8zdlM+ndilCqBlDzeVKTwFCbXFEDYkyg1BdLjZhJrRbtW5U00Bu2eheSSul6AmhfypHruFqunXr11hK/OxaLRUpoOxwOzM/PAwDcbjdGRkYKTnZngkFgZECuyYtlWUxNTcHr9WL79u04duxYRud8uYu521b8ecopIQGAFd8agaF0MRYEASsrKxgZGQEAtLa2Stm5YqG2RFOtMViWxcTEBBYXF7Fz50709vbKWtQKUT2Yi/XAuEAUGIUgl2FoKBTaZBjqdDrBMAyi0SicTueme8IrLSGRQWCYtqgCo1zHzPVcKyGk+BwEBkUSeYObVN+XVDAMg0gkgnA4jNnZWUQiEfA8D7vdDpqm8eabb0rKDr1vOkiSxHvvvYdQKIRjx47h8OHD5T4lAxpjqysw1FBPqPW9VavEVS/kshhb6H1eKwZb9bpSoZfnqBQolwKDZVnY7XbNxtcrgSE+V1dccQWGh4chCAI+8YlP4O6770ZNTQ1OnjyJ+vp6qVOjorJKVc54C2Lj5o/jOExNTUkGlZmICxGFBAYuBQoMuSUkvmAMgLIHxefzYXh4GFarFfv378fq6qquXMfVIjA4jsPk5CRmZmawY8cOHDt2rKCJvpDzKLqNqkwFxoVEYGRCpo2jKPMPhUKYn5/HxMQEYrFY2ntdLheSrLKJXZ4CQ/sgpxyZEj22OlNSEpTLxJMii2+harFYYLFY0kg3UZ22sLCAEydO4IEHHsDMzAwuvfRS7N+/H/v378eBAwdw9OjRoo6pBbxeL7761a9ifHwc8Xgczz77LGpra/HYY4+hq6sL/f395T7FLQM9bYwoikIikdsfppCx1FBSAupt1PXUAlXrElcDFz5KXUJSKQSG1kRCNmgdRwUCgTSlqN5w2223YWlpCRzH4ZOf/CRee+013HnnnbBarbjjjjvSFNjFojKeYAXgOA4TExM4fvw4AGBwcBDt7e05H8xCSkjcDiUmnvIIDH8wWvQxAoEATp48iYmJCfT19WH//v2w2+26a5umdHEXBAGrq6vwer1IJpM4evQoWltbC57kCyENip3bStH9Qq8QZf4ejwc0TWPPnj0YGBjAoUOH0NzcDIIgMD8/j/HJaUXHkUVgmLZuFxK9kSZKeDguRxtVs7l4AiMTCIKAw+HArl27cNddd+HnP/85+vv78cwzz+Cv/uqvwLIsnnjiiZxj3HPPPdi5cyesViv6+/vxxz/+Met7H3/8cVx55ZWor6+Hy+XC0aNH8fTTT8s+30gkgn/8x3/E2NgY/vzP/xxnz54FTdMQBAGnT5/GnXfeKXssA9pDzU25Hk08xbH0FFuogVKZjGf6Gy1woSdHcsFQYGh3zHJgq5p4BoNBXZp4imhqasK+fftAURRqamrw4IMP4tSpUxgeHsb111+vynfMUGBkQariorm5GceOHZP9MJrNZtnZiGpH/vdkg4mUV0ISDMUKHjscDmN4eBgcx6Grq2vTF0UvxIPScQRBwPLyMkZGRmC32+HxeNDZ2Vn0eRSysFuK/PYRFaLAyIfUQGOjYeiqQOGEAg5DkPEsbdUSknIs+FpmK3KVkFjMpOZZkurqalRVVeHiiy/GxRdfnPP9jzzyCL74xS/innvuwcUXX4x77rkHV199Nc6cOYPW1tZN73/xxRdx+eWX44477kBtbS1++ctf4pprrsHvf/97XHLJJXnPb3p6Gs8++yxOnz4Ni8WCu+++GzRNw2KxpJEhlZSx0zNE0kGNZ1ZN0kGLchSlNdJqGXCqgXIRGAYMZEI5SJpylXJsVRNPvZaQpCIajeLcuXOIx+Ow2WyoqqpCJBIBTdNoampSPL5BYGTB2bNnYbPZCmoJKqKQxdxtB9YaXxY+mchVYGwkMHJNXtFoFCMjI4jH4+js7ERtbW3mY+ssS1LMOIFAAENDQ6BpGgcOHADHcRgfH1d0HnopIdFL4KY1tGqjKkeBYSqRAqMcmRI9lZDEGUBJz9pcJSQWi7oKjI0otNXZXXfdhc985jO4+eabAQA/+MEP8Jvf/Ab33nsvvv3tb296/7/927+l/f8///M/49lnn8WTTz6Zk8AQ14ClpSXQNI3Gxka88MILsFqt0vMWjUYlJaGxcVIHSjcNYmyhRpcgtUy9AXXVDmomR/SiwFCDfNBTCclWJlMMBcbWOSZQXhNPrWMLvRIYHMfhV7/6Fb7zne9AEARYrVZQFAWLxQKSJLF9+3Y88MADio9jEBhZsG/fvqIXi1I5css18QxF1tUgYnCw8YsVj8cxOjqKYDCIzs5OeDyenJO4msRDqRUYkUhEUpf09vbC5XJJr5cyS6KliSf7p9KDUgcZeglqFJ+GTkw8y5Up0ZMCowgBWRr4HCUk1j+1l9YKhbQ6YxgGJ0+exO233572+pVXXolXXnlF9jFDoVCaL0cuWK1WuFwunD59GjU1NaiqqgJN0/D7/fjd736HgwcPyj6uAe1RiEF4PujVxFNvyRE1sNUUGFt9g7/Vr69SlJ1AeU08tSYw5K7zpcb09DT+6Z/+CYcPH8aVV16JWCyGQCCAUCiE5eVlKamjNL41CIwsUHJTzWazbA8MADARxZnUmWS2UQ1H1gN4MWgRv1gMw2BsbAyrq6vYtWsXdu/eLeva9ZYlkRMgiCRNOBxGV1fXJnVJqY22ilVgyCkhYdnSExh6WvSVt1HN/0wKgoBAIACHw6HpQlXq+6q3EpJQTNm55GqjaqW1V2DIJTCWl5fBcRwaGxvTXhfVEXLwwx/+EDMzM7jhhhtyvk98pg4dOoRrr70Wn/3sZ9HU1AS/34/HH38cTz31FN544w384Ac/AACjfEQlqKHAKCS2yDfWViZD1FQsKA20t6KJp17IFLWxVa8rFeUwB9+qpRzZoPU91qMCQ5wnp6amEIvF8O///u853694PVT01wYyotDF3GQC+CLWa7kKjEh0PYAXgwOWZTE+Po7FxUW0t7ejp6enoIdJb1kSk8mUNbBLJpMYHx/H8vIyOjo6spI0Yp91JSiENCh63yTjc+JY/QQ65YDSOE9uCcn8/DzC4TA4joPNZpO6oDidTtA0rStSRy70VkISTRR/DwVBAM9l3/DZaLOmBEYhCgyleOyxx/CVr3wFjzzyCNra2vK+XxAEUBSFz372s4jH43jxxRdRU1ODz33uc9i+fTu+973v4fLLLzf8L1SGEmJZr6SDHstR1FaJKpkTt6ICQy/nojYqpYSkEpSdQPkIDK2hZxNPt9uNQ4cO4e2338b+/fs1O45BYGSBIllLgYEBZQLYItZZuW1UI7H1GnCTyYTJyUmsrq6itbUVg4ODRU0qesuSkCS5qSWcaMQ6NzeH1tbWvC1RxfZtSlAICUKZgGL8T2QpMLjylJDoBZzCy5ZDYJjNFHp6ev70fgGxWAzhcBiBQACzs7NIJBKgKEoiNJxOJxwOxwWxGSyH6iNbkBGJF38uPJfd/wIArFZtTTzFkjw58Hg8IEkSCwsLaa8vLCzkNbx69NFH8alPfQoPPfQQPvrRj8o6nvgZNzc3484775TaR2/fvh1tbW148803cfbsWfT19ckaz4D2ULOERM2Mvh67kKip7lS6CVJLgVGp67kBdaG3MtGteFytwfO8psmXYiDGFAcPHsQtt9yC73znO7jqqqvQ2Ngoxb80TaOhoSGrv2Ih0NfVbxEUutBQJIAiVKGkzBKSeDwJnucxPT2NpaUlNDU1YXBwUNGXWq0gQ62NUmqwIggC5ubmMDExIXWQkXOtamVJNJd5ylFgKK2huMAhg3/I/fcyBiBTTDwJgoDdbofdbk/rb51MJhEKhRAOhzE9PY1IJAIAcDgcEqnhdDphschTU21VZPLlERFRoMDIVT4CAA6rtgqMQmSeFosF/f39eP7553HddddJrz///PO49tprs/7df/7nf+LTn/40fv7zn+MTn/hE3uOIGcZXXnkFv/zlLxGLxXDVVVfhL//yL9HW1obf/va3+N73vof77rsPd955J/r6+rZsEHihgaKoTUR9sVCTpFRzLDWVE2qU2+iFfCgmtjDaqBaOcigwSn0vK8nEsxzH1frz1Pt3b3l5GY8//jj+4z/+A3/84x/R0tIimXn6/X787d/+LT7/+c8r/mwMAkMHMFPFdSExyTXxDEdx/PhxNDY2oqWlBXV1dYqDUT0ZZAHrBMbi4iJGR0dRW1uLgYGBglqxXSgyTwL5v/Acz4PcwkFGPihVYMipQZEz8ZrNZtTW1qaxzTzPIxKJIBwOY2VlBZOTk0gmk6BpOo3UsNvtii7hQgLHcVk7K8QUEBi5WqgCgE1jBUahdapf+tKXcMMNN2BgYADvf//7cd9992Fubg633HILAOBTn/oUAOChhx4CADz88MO44YYb8K//+q+49NJLMT8/D2CNDMmU4RCD8xdffBH/8A//gEgkgsXFRTz55JNYWFjA/Pw8fvWrX6GpqQk/+clPcM011wCAQV6oCKUlJCIJulWhJoEht519LuglsaEn0mArl1jo5R5riUoqISnHs6o14S+u43r7HorX/cADD+Dll1/G3XffjY6ODqyuriIUCiEajWJmZka2KjUfDAIjC0r5YFiKbHcut41qnEniyJEjsFgsGBsbU0XqqbcvTiQSgdfrBcuyOHToEKxWa8FjXCitzmR1IWE5kFRlLMaZwJegjSpJFncMk8kEl8sldb9ZO56ARCKBcDiMcDiMpaUlRKNRqY+26K2htWGoeC6lRq4FP8YoUGDkKSGxWyndKDAA4Prrr8fKygruuOMOeL1e7N27F88995zkaTE1NZX2/vvuuw8sy+K2227DbbfdJr1+2WWX4fe///2m8cXA5/7770dvby++8pWvIBqN4tprr8Wdd96J6667Dr/4xS8wMDBQ3AUb0BRqlpCI0FvNv56UE2qNo5cx1MRWji1K+X0ol+KjUkpIygGtrzUSicDpdGo2frEQ54TTp0/jkksuwRe+8IWc71f6DBoEhkYopG7SWiyBIbOERBAISaKuN+WEUoTDYQwNDSGZTKKmpgZ79+4teiw1FpGSZElkeGBwnADCrJ+gtNQopqtPKuSVkKgXABAEAavVCqvVCo/HI73+2muvobm5GeFweEsahorINVfGkxqWkNj0pcAAgFtvvRW33nprxt9tJCUykRRycPLkSXz1q1/FoUOHAAAtLS3o7+/H3XffDWCtOxVJantvKhVK/bXU6kICrG+K1fqc1diMqaWc0FOr91wm43KhNwWGXs5FbZSj9XwlqCEqyQxa6xaqfr9flwae4jrysY99DK+++ipCoVBaok5tGARGFqjR7oxlWXkEhqW4CZMwmUCYKAh87owMk1xfxNUOgMqFWCyGkZERxGIxdHV1gaIojI+Pl/u0Cs6SEFiz8SwE8kw8ORAEuWWDjHwohYknSWq7GIsLflVVVdpipaVhaLmysTkJjNwiipzIV0LisFGaExh67NW+srIiGdACaxmdT37yk9L/V7oni16hZueQ1PHU+A6oRYboiXgA1DED3YoKjK2Mra7AKJeJ51bzosiGXJ5eaiAQCOiSwBCf5WAwiKeffhrT09O4+uqrUVNTA5fLBbfbDZqm0dPTA5vNpvh4BoGhEUSiIFtddyrsCmJFkrKAZXIHNGxKixO1shtqQqwPlTO5MQyDsbEx+Hw+dHR0oL6+HgRBIBKJ6GJxLzgzURyDkfctvFIJwgUOoSQlJNouxtkCGy0NQ8sRZIjH1UaBkZv9cDssmgaPiURClYVabcTjcfzwhz/EH/7wBzQ0NGB6ehovvvgigLXnxeVywWq1or29/YJW9ugRSu6n2WxWNQEhEhhy4pR8EIkHvRAYanYh0QP5oCfVg57ORW2UmlAoF4FR6g4WPM+XnBgvV9mKWqRwNpSyPXshEPdx77zzDiwWC9544w2cPXsWVqsVgiDAbDZjcXERTz31FPbv36/42TcIDI1QSK2qjS5+ISApGiwTzfkeNqUjhdoZHDUmX3Fxz7Vx4jgOk5OT8Hq9aG9vR09PT9px9ZKd0IsCI8lyIAjzlg0y8kGxiacMAoMqkQJDLuQYhk5MTEgbltQSFJvNJhGJemt1xighMLjcCgynQ7uASm/eAsB6zen73vc+TE5OYmJiAhzHYdu2bXjqqafw7LPPAlhbJ+LxOF566SU4HI5ynrKBFKhdAqpmPCCOpXSToqYCQ08ERjn8tWKxGPx+P9xuNywWbclaA8WhXARGpag+ykVg6Mlbq1QQr/n//J//g69//etgGAZ+vx+hUAjBYFAqhW5paQGgQqWD4jPeolCrhEQOnIX7TUowyfDBSM3GqxkAiWMp/aLmGofneczOzmJqagotLS0YHBzMOAnqhcAoJDNRbEAj59k0FBhK/76wNqpaQI0FX45h6MLCAmKxGEiShNVqRSKRQCAQKIlhqIhcgUZSwXTF51FglAJ63DQ8+eSTYFkWDMMgHo+nPQ9isLG6ulpRnXAuBKj9LKlJYOiNeFCrhESNcUrdhSSZTGJ0dBSrq6uorq7G3NwcEokEzGaztB6Ina6KeaYMBcaFezzxmJVQQlIuAkPr4+qthER8hm+//XbE43Fs27YNbrcbbrcb1dXVcLvdaG5uhsvlgs1my9ghrRgYBEYOKG13JjcwcNiUKDDyZztSN7NaBCxqERipEAQBCwsLGBsbQ319fd6WqBcageH3+3H+/HkAF6PwFrpyTDz5LR1k5MNW8sBQG9kMQ1mWxfLystTRJxKJSIahqd4aWhiG5gpuGFYbE0+TSds2ZAzDFNTGuZSwWCywWCwGQVEG6InQ0kKBoRRGCUlmyFnPeZ7H1NQUZmZm0N7ejq6uLrAsKz1zIlEZCoWkTlckSUpzu9jpKt/mq5JjC7VRKYaa5VB3GgqM0kCcXyYnJ+Hz+fDuu++CYRiwLAue58HzPARBAEmSiMVieP3111WJPQwCQyMUUqvqVlAibZLZSlWEFgoMpdi4uK+srGB4eBgulwv9/f2y6nP10l0l38IejUYxNDQEjuOwe/dumN4iwBd42vLaqFY2gVGKNqoUpe3CWOrMDEVRkv9Bb2+vdA6xWAyhUEh1w9CNyPb3rBIFRo4SEtJkqkijLQMXPtSaGwwFRn5cCCaegiBgfn4eY2NjaGpqwuDgoHT9HMeBINbIWpqmQdM06urqpL+nmUJJAAAgAElEQVRlWVYiNWZnZxGJRCAIguSdJM7zeiVj1UYlKDAqhTQpJ4FhtSqQ1udBMBhEe3u7ZuMXi4cffhgcx0nqzkQigVgsJpUxh0Ih+P1+1RInBoGRA0oVGIlE7vprEW578Qub3Faq/mAU1W47KIrSHYEhjhMMBjE0NASKorBv376Caq/V3KwrWVCy/R3DMBgdHYXf70d3dzfq6urWjlPUQfIvAlNTU6iyNyOZTFZU+yoRSh8FWQTGBarAKOSYqYahjY2N0usMw0glB9kMQ10ulypBrxICI5eJJ0VpT2DoKUtiQB9Qo82oWi73elRgqDXOVlRgZBrD5/NhaGgITqcThw8fBk3TEAQBHMdJ7xf/5ThOKh8QSQ2KolBdXZ02V6V6Jy0tLWF8fBwsy0rtuxOJBBKJBBwOh64URWqgEtqolquEpFIUGKUoIdFjbCG2Xi+VutMgMDQCRVFSUJ8PbgUeaSYZJSQAsOqPoNptB0mSusu48DyPoaEhAEB3d3dRWUu1FgC1WsGJ4DgOU1NTmJubw86dO9Hb2yuRLRzHFV49AnnX6nC5wXEcQqEQTp48CYIgpOy6uMEstQt1KaHYAkQHCgw9ZywsFotiw1DZ56RATZOrjaqZMlVUnaqBrQFxg68WgSE30ZIPasUDaiUj1IwJlHZ+UYsEST2PSCSCoaEhCIKAPXv2wOl0biIuRNUFAEnGnfovgLTPTCQ2Ur2TmpubAaS3715cXMTExARGR0dV89XQEypBgVEJqg+jhGRrY+vuYFRAqdqdVSsgMEiZJSSr/gh2tdar6hWhNGARVQkrKytobW1FR0eHKuelBGoRGIIgwOv1Ynx8HM3NzTh27BhIktwUYBQzncvpQmK3O9DUVA+O49DX1weO4xCJRBAKhbCwsIDR0VFwHAe73S5tLl0uV8nbXGkFpQSGocAoHPkMQ8VnTzQMTW3tmmvDomS6yuWBYTaTmgYZem11ZuDChhhbqCFRVrP0Ui3lhN42vyRJKiZ51CBlxDEYhsHIyAiCwSC6u7tRW1srxRWCIEgb4o33UZzXU2ObjaSG+N/iMyFm6sW/FdV4q6urklGfWr4aeoFRQrJ1jrmVFRg1NTWajX+hwCAwNEIhizlN8Vhrpln4JCa3hCQQjAFQNzgoNvhhWRYTExNYXFzEzp07QVEUnE6nauelBGoQPCzL4sSJE6iqqsKRI0dgsVgyZkbWfoo4gAwCI5Fg0oITkiQlV2ARgiAgGo0iFArB5/NhamoKyWRSccZcD1DK0cky8aS0JzAu9MAml2GoSKjNzc0hFovhtddekwi1VMNQJWQUx2UvIaEtVEXKPA2UF6XscFbKsUiSBMOUv+uP2tCLBwYALC8vw+v1YteuXejr6wOANPJCVE8Ucl7AZlJD/FeMIVLHTz0mz/M5fTXC4bDhq5EHlUJgVFIJiaHAKA0MAkMjyAkMxCz9xMQEgA8UdRy5JST+YLSo8XOhUAKD53lMT09jZmYGO3bswLFjx2AymTA+Pq4LA05AWaARDodx/vx5MAyD/v5+OByOrMSFiGLWLTmLXTAYxtDQELZv3w6O49IyKiRJSmM4HI40r5FsGXORZBIDDzVMG7VEKTwwzCUw8dyqQQZFUaiqqkJVVRVYlkUsFsOhQ4cQjUYRDofTDEN54fKij5OrhIS2GAoMA+VBqTqclXosvazjaqLcHhiCIGBubg4jIyOw2+1SK3kxOZEttsiFZJLHhDeKrtbNiSNxzdm49vA8j2QyiYmJCYTDYVgsFim2UMNXQ4wttOhyVQhKTSiUg0yoJNKkHCQZy7KaxlHBYNAoT4VBYOSEViUkgiBgaWkJo6OjqK6uRn9/Px55B+CKWN/klpAEw/HCB893bJkERipR09DQgKNHj6ZtHPTSAhWAFBgUgkQigZGREYTDYXR3d+Ps2bOw2+15JZ1AsQRG/kUgGAziIx++FFardZOB18b6140y0UwZ82QyKZEaqaaNqYGHnjqelKKERGsCo5JknhRFST4tDocjzTD04XcUjJ2DwLBaKE0JjGAwiF27dmk2voHKRCHlqfmgtgJDrbGA8myyMqGcBMby8jKGh4dRU1OD7u5uBINBEASRMymSD4/+bhH/+64blLUBXDIKkvejxh5HeyOwr9OGA11uUGT6eDzPY25uDtPT09ixYwe6u7slU1G1fDVSSWvRV0P06iplbFEJJp6VFFtsxRISnucN9RIMAkMzZNvciy1CnU4nDh48CJttrYeqiQCKyV2QpDwFRmgDgaHGpJkvYBEEQbre6upqHD58OKPHgpp1uEqvK5vTdyaklsLs2rULu3fvls4hmUxKgUWuSdtU9KkSWCs7yozmbS1SjXSujEpq7av4GYj/rpe5EDCbzaipqUmru9voqxEOh3Hy5Mk0mWi5fDV4QWEbVRnPQCkIjFIHNuXIWHAcl/U7wrBAUU630tjZJe1W2ighMVAebEUFhprruJhIUDr/ieu5ko1TOQiMUCiEoaEhkCSJAwcOwG63Y3l5GSzLSp9XocTFK2/78MiLBEC3g/qTfQpptgOww8cBvjng1BzA/y8DJH1wW6PY4eHRVp+EA3PY1uzBkSNHNiWfgMJ9NVJVoKKvRkNDgzQGwzAIhUJS28VgMIiTJ0+WzFfD8MDQBuWIZ8rlvaLVteopUVhuGARGDijdCKfC5/NhZGQEFoslY4tQigSSRaz9JpkKjFBkncAQpZ5Ks4+5HMwDgQCGhoZA07S0AGeDGi7fwHpQqORzkxNoCIKA2dlZTE5OoqWlRSqFERdqj8eD119/HQRBSJt4t9sNp9O5aTIliOK8T3IFwE6HFbtaPRl/l4pU1YWIfBmVVFJjo69GJBLBvn37pOCjnL4apelCsjVNPPVUpxpSWPmWq4TEZtVWgWF0ITGgBSiKQiwWU2UsNVUTWqg5lJLfJEkqnkfFMZRArrIzHo9jZGQEkUgEPT09qK6ulpILNpsNkUgEJ06cAE3TcLvdUnyRaz0dn43ivqfDiJlaQdD574OJtABkI8IAzi6v/Qh8F/hTq/jIYT+ufl/u2EKur0au2MJisaCurg51dXWIRCKYmJhAT09PSXw1DAXG1kE5CQytID6felCnlRsGgaExgsEghoeHQRAEent70xz6U2EmgWJCElKmB0Y4sh7Ii8GB0uA902Y/EolgeHgYHMflvN5UqJW5Ec9Hq2yLIAhYXl7GyMgIamtrMTAwALPZvMnnoqOjA52dnVIb01AohNnZWYRCIQiCkKZOIIhtxZ0oQW7aZJtMJK764H58+eYPwGIu7rOVk1ERr5NlWWkSFQM0MaDQ2lcjX5Ahg3/IM37526iWwwOjHIFNrnrRULz4c+HY3IaCJrBYWlqCIAiSUkjNoCAYDBoKDAMZobQ8NRgMqnIean7X1VRgqBkTKE3WqGHimU9xw7IsxsfHsbS0hI6ODuzZswdAukEnTdPo7++X1tNQKIRgMAiv14tYLJbWztTtdiPBUrjvSR/mYztgIj0KdGwAkVzAX39QwLF9+RMjmZBLBZovYSL+rpS+GpWgwKiEDXA5CAytCbBoNLopAV6pMAiMHFDyBQ+Hw4hGozh//jy6urryBrJmqrhMvFwFRjS2HsyrlXVJHScej2N0dBThcBhdXV2ora2VPY4aAYJ4PmoEK5kIjGAwiPPnz4Omaan0J59BJ0mSWRfcYDCIxcVFtNr9GPJbEReqAaoKJlJe9oAgiJQCEgIH9uzE//MPV8FTo/7EliujIl6/1+sFwzBS+YxavhpiDWyhKIUHhsW89TwwcpVzaIVcqo9IvPg5mOdytz6sctths9k21V6nypTtdnvR98NodWZAC6ipdFATeixHUWMcLT26eJ7HzMwMpqam0NrauknNKW40U2OL1M5O9fX10lipZRfj4+N45lUB82EPODICwmQuKp5l46v44N4gPnF5Q/43F4F8CZN4PI7JyUlYLBZJpZt6P4r11RDn9kz3pNSJg3J5vZTDOLTUKAeBoXXc5vf7DWXnn2AQGCojFothZGQE0WgUVqsVhw4dkrUBo4tUvcltoxqNrxMYarmFUxSFZDKJoaEhLC8vo6OjA7t37y54MlZDogloU6sai8UwPDyMRCKB7u5uVFVV5SUu8o0vLrgA0Nu73s7U55/CW0NhnJsWsBiyI8ZVQaCqM5NUJhPAAdua6vFPX7wKe7qbFF330GQIP3xsEeE4BZeVRYuHRN9OO47sdqOxzprxOoA1YmdoaEhqGWs2m9MCEKW+GqOjo+A4TmqvKd470fQxGxRXkMgx8SwBgaFliUO2Y+qphEQJgZFPgeGwmdHY2Ch5xQBrmwBRpjw5OYlodK2GpRiZskFgGNACeiUw9KjAUKv8Q20CQzRyHxkZgcfjwbFjxySzymJji9SyCwDYt2+9nem014uTZ0MYXzDBH3chaaoDRdeCMGWed7lkFN31Xnz2mkbQZmXkxX/8zwJePueCCUlU22JobQD27qJxqLcKtHnzRk+837Ozs1LLWDHxoZavxvLyMqLRKEiS3OSrUWpUihqiHChX61ajNLU0MAgMlZBIJDA6OopAIIDOzk54PB68+eabsks1iiUw5LZRjcfXPSbUCA44jsP8/DwWFxfR09MjZQ6KgdolJErHEFUE4+PjWF5eRldXl7SApgYYoru2UqR2X9jeAnwE62UXwaAXbw/78fYIg8WQAzG+GhxZA7fLhRuvvQQf/7MDis7BF2Twbw/PYHLZBsLkAkxAkAGCc8DZOeDxl4MQuCU46CSaagh0t1rR3+fCtjpSKhXas2dP2sJfiEx0Y/u1jb4awDrBk+qrwTCM9J3L5KuhON6Uo8DYgl1IyqHAyBVkRBNKCIzcCgyHjdx0XIvFgtra2jQFmaiaCoVCaTLlfL4u8XhcMmk2YCAVSktI1CYw1DLMVAtql5AoPRc1CQzRH8xqteKiiy6C1WpVRFzkQmrZxb6+tdfE+WxhaQSvvrOC4RkBgUQVGFMdTOZqVFPT+Ltrq9DS1Kzo2K+87cPDvzeBsO4E+SeOOCAA7yys/fzyJRZCchUuSwQtdTx2t1vQ3+dCIurH2NgYGhsbMTAwkDZHF+OrIa5nGwkeYJ3gSfXVSCQSsFqtYFlWNV+NXChHqWipUS7PjXIQGGqU5+eCocBYh0Fg5ICcBYRhGIyPj2NlZQW7du1CX1+f9Hdiu7PUDF822OjicsZy26jGE+sEhpIMjtiTfGJiAh6PBzU1NdixY0dRY4lQK8Oh1jgLCwsYGhrKKenUelIUjazi8TgcphV88sp2NDU1IZlMIhRaQegjH0AwGMSJEyfSVB3igpvv/FiOx0+fmMGJ8yYQpBO5OrMSJI0oS2NsCRhbAn5zMgqeY0CTDjRWE7g0GcWHB7JnLgrx1cjWfm2jrwbLsjh16hSqqqoy+mokmN1QMr3JUmBYtJ0+y1UbqycFhhICI18Jid1Kygo0NqqmgHWCMRQKIRwOS8+fyWTCj3/8Y/T09MBkMiEajcLpdBZ9DQYMbISofFRzPJZlddWWbysqMHiex1tvvQWGYdDT0wO3260ZcZELJpMJFEUhGvZhT6uAaz7cDbvd/qckgRfBYBTzswuYGmdgtVolTw2XywWr1Zr3/Ca9Udz7VBhRohWENUcHNpICyAZEAQz71n6efJMHG+dgp3ahuYbDDVUsGmozrw1qdFfL5KsxNTUldeNS01cjG/TSLlhLlIvAKAc5pDVpYnQ3W4dBYORBNvMlsYXmwsIC2tra0NXVtemLUghRYCvSbNtkokAQprwbrgSzfh7FBAei5HF0dFQysBQEAW+99VZR550KPSgwBEHA4uIiZmZmUF1djaNHjyqWdALFTdzivR4bG0NDQ0NaFiJXFiEYDGJmZgbhcBjAmuw91alc3Kz918uLeOzFKHiTHUSR86yJtIDhTbDRCQzuK1wmX2z7NdFXQ5SMejyejL4avEITDHltVLdmF5JyLPjZNk9RRrsSErez+AA0Vx36ddddh9OnT2N1dRVXXHEF4vE4urq6cPDgQXzjG9/Iesx77rkH3/3ud+H1erFnzx7cfffduOSSSzK+1+v14stf/jLefPNNDA8P44YbbsCDDz5Y1LUYKD207pRVCLYygaGWAaeS+51MJjE2NoZoNIqenh7U19enba7FDWxhcYUAUxE92JPJJCYmJuDz+dDR0ZEWR4hJgqamtXJUQRAQj8fTjMjj8TgsFktawsThcIAgCISjLO55fAlTwe0gqeJMQwnCBLOtDvG4gL62KBpq5SXoUpGvu5r4A2QmNQDAZrOhqalJNV+NXDAIjK0FrRUYBoGxDoPAKBAcx2Fqagqzs7PYsWMHBgcHs34xCyEwHNbiN1wmigaXzN3DhEnp0VqoAsPn82F4eBh2ux2HDh2SFCUcx+nGaEvJOH6/H+fPn4fD4cCOHTtgs9mksYolLt4448PPfu1DjLWBIuKocwlob6Kwr8uJ/t4qWOnMzIHYtUb0T6Hp/At4Nndu0SBzfn4eIyMjSCZZPPemA7PBehCm7G1t80EQBNTYIvjCdY1ob1GvZlRu+zWO47C6ugpgLSDL5KthNhce+KRCnomnttOnUUICJBQQGLlaqAKA26WsRWMmWCwWXHHFFbjsssvw3HPP4fjx4+A4DsPDwzh37lzWOeSRRx7BF7/4Rdxzzz24+OKLcc899+Dqq6/GmTNn0Nrauun9iUQCHo8HX//61/HjH/9Y9eswoF+ovdlR21NDjQ1ZuWOCVBR7LTzPS7FiW1sbHA6HRF6kqjkLmW9ZTsCDv17Aqel6AAJoBFDvZtCxjcRFPQ507si8HoueEjMzM2htbUVnZ2fe6yIIAjabDTabLaOXRDAYxNLSEqLRKJaDBH5zphOkvQOkgmWRYyLY0zyPmz/eBIosPkbZCLkqUJ7nEQgEUFdXh2QymVYmrMRXI1dGvhIIjK3YzjQbcnVVUwMGgbEOg8DIA1GBIbpFT09Po7m5GYODg3kfUrGERA4c+atMsoKUQWAkUwgMkiRlnVc4HMbQ0BAAYPfu3Zuk0Hor/Sh0nGg0iqGhIXAch927d8PlcmFychIsy0oBXaHExfR8FN//Ty+WI04QxFppBgcHFsPA4gjw2giLnz63BFKIo9rBYUcjhX27HNjXQWPBOymZhcppP5sLJpNJ8pJoaWkBsLZQ7t8fwcpqEKfOLeHsJIN5P4UIYwNH2EGY8k8HpBDBX1/hxmWHdyk6v0iMxT2/mgEvAD1tVhzZXYWWhs1+ARtloqKpKs/z6OvrA0mSGX01eEGZ94AeCIxytVHVUwlJPLeIIve4eRQYlIb3NtVoiyRJ9Pb2ore3N+v777rrLnzmM5/BzTffDAD4wQ9+gN/85je499578e1vf3vT+9vb2/H9738fAPDoo49qcAUGKgVqdw9RYw7RUwlJoRAEQTKgbmxslNScYmwhKnoLjS1+/dISfvOmHaR1F0TrMw5uzMeB+THg5TGAS0ZA8n7UORLY2QQc6LKhqYrB+PgYPB4Pjhw5ojg7nE0F+v4jIUzOvYs3z0UxsWBCIJFqFpp7ruV5FnXmKXz+r2tQV63Me+P0+SCeejmKpmoBe3dZcVGvGzbr5ucxldRIVRg3NTWhoaEhLfYH0j27CvXVENvLZzKCrgQCo5IUGKUw8cyU1KhEGARGHgiCgNnZWUxMTEhyfrlSy0ICA5eteAUGSebPJKYGAxRFIR6PZ32v2EklFouhq6srq5O+WpNuqUtIGIbB6Ogo/H4/uru7UVdXJy1UNpsN58+fx+LiolR+4Xa789Z+hiJJ/H//OYMhLw3C5EKuW0MQJvCEHasxYHUCeGuCh/DbKAjeCbfNhssCEVxzuTICI/NxCSkz0Na6DR/Hukw0EAjirfMreHcsjtlVE4JxK1g4YPrTsyVwCVy6j8DffGyn4vP4xXOz+N0pDvhThuW8F3j61RAEbhl2SxKNNQQ6t9O4qNeF3va1+8BxHCYmJrC8vIzOzs60gEFEekZF2TkKQv7nkbZob+JZDg8MPSkw4qw2Hhha39dCsiQMw+DkyZO4/fbb016/8sor8corr2hxegbKDDWeP7W+q2q1VU8dSw0CI5HIraCSA7VatMuFz+fD0NAQnE4nDh8+DJqmJdWg2+3GiRMnNpV25osnT50L4KEXOPCWNskMMxtIswOAAysssDIDvDEDcGwcBGtBrT2Gmz+axPZG9cN+iqKkjmIH96y9JnYUm184j9fPhTA6B6xGnWBQC9LqWfPAAEAy07jpKjP2dSrrpLbsS+D7j/ngY9tgMpFYXQbOLAMPv8pBYFbhtETQXMuhr9WMI7vdqHGvxTZioo6maVx00UWbVK+pKlA53dWyKWIjkQjC4fAmXw2O42Cz2RCPx1Xz1ciFcrUzrYS2rYBRQlJKGARGHpw7dw6CIODIkSOwWAqTHFMUJbXhyweXgoRxxjabG8Bx6xv7bAELwzAYGxuT6iPr6+tLsoHK5jNSKPIRGGL5z9zcHNrb29Hb2ysdW2TXa2trMTg4KBn0hUIheL1exGKxtNpPt9sNu90OQRBw/9OzeOU9gCAdOc0wc4EgCAig0LndhP/r0vr8f6ASUmWijY0N2N89j4mJCTQ2uuBy0Tg37sO7o1H0bovBaadw7lw4zSy0kEXp1XdW8eBzATCCAyA3B20ESSPG0ZhYBiaWgRdOxyDwQZiJOOxUBO3NZrz/YDfcVe4Mo2+UiSp8bmUoMLzeOczM0BIppPaiVa6sRalJk1wEBpPUpgsJaSJ00+pseXkZHMehsbEx7fXGxka88MILWpyegQscYieSQmOSTFCrrTqgr9IPNcfJh0gkgqGhIQiCgD179sDpdG7yz+rr64MgCFJHo8XFxbQ24almmRaLBTMLMdz7VBAhvhWEArKcpKwAJ+CqozS2N5auK1JqR7H2trWkUSi0iNZWKxhmHG+cDcAfjKFvOwMubMPo6HpsVchGnuUE/OTJebznbQJp2YWNS6bJRALWesRQjzE/MOYHfv2WAI7xg+JX4aIC2NtZj/cfrMtYspvLLFRud7VUI+iNvhoTExNIJBI4f/68ar4auWCYg2sLkZjSCsFg0CAw/gSDwMiDvr6+oiWIhbQ7q7IXL3OU04mETyEINi7qHMdhcnISXq8X7e3t6OnpKekEp6aSI9NnJQgCvF4vxsfH0dzcjGPHjkmywWw+F9kM+lJrP4OhCB5/1YHVeB1MGTbkciEIPHbURnHbJ7ej1q1+Xb4ciK3dXC4XDh8+LGWF6uvrccnA2ntEg8xQKISpqSlEIhEAkBZaMfjauGjML8fw/z48h8WQEwRRmGcGYTKDhRlBzoW3Z4AzM37cKAg4tq82598p9PCUVULS3NQIgiAkubAYiIr3QwxEi0WlyC5zEhgKEsO5SkhI0qR5qzMjyDCQDUrXPFHdqRaBoZYCQ62x1FRlqtmxZSMYhsHIyAiCwSC6u7tRW1ub5qew0aCTIAhpbdi2bRuA9TbhwWAQKysrmJiYwMhsEn8Y64bJ2rq2AS8SbNyHD+z247oPN+Z/swbgeR7T09OYm5vDzp07paQRALS2rpe2xuNxBINBBIPBNLPQVKVKpo38fx9fwTOvW0FaOyBDiCyBIAhQdA2AGoQAvDzOYmh2Cl/6Kwucdnnrghrd1ex2OxwOB6xWq0Rgq+GrkQuVZA5eDgKjFCUkRmyxBoPAyAMlgUYhi7lbgReiScbMnSpwEM9LNHaamppCS0uLtLG/UJFJLrq6uoqhoSG43W5JRVNsZ5FM9Y5HB5IIhUJ4e2gFbw1HMb0IBOJWJFPKL3LBZQ7h7/6iAb07lcknF1bi+OGv5iAA6Gix4GC3E/u73HkXjXg8jpGRETAMg76+vpwtH0WDzNSSIo7jJFLD6/ViaGgIPM+vLco2Jx5/icW5OXvespp8EDgGl+wDbpRZwiIIyjYIcgiMmho3WlrWPzcxEA2FQvD5fJiamgLDrLWiS619tdlssp63cpSQlAO5Ag2W06aExEyRmhttZSu92wiPxwOSJLGwsJD2+sLCgtQRwMDWgxLlodqkg1qbfL0pJ9RUYKRmrlOTPjt37kRfX98mNadcg06CIKQOIGJ2/qKLBHwsHsfi8jhefy+A89M8liN2JFALkvbkTZhwyRi6PHO45TMNoC3KyIvfvraC59/k4HFx6NlB4fBuF5o9uWtZBEHA8vIyRkdHN3VS24h0Fej6uaaqYBcWFhCNRkFRFFwuF1YiNB4/7gBrac9bVpMPJmYGN11FKS5hAYrrrsYwDCwWixSPquGrkQuGObi20LqEJBgMyo4ttjoMAiMPlBIYcgODagWGy3IUGAAQZ1hYLRRMJhMikQheffVV1NfXF+TrsRFiizE9ZIpTCQyxrpEgCOzbtw8Oh0OTnutmsxm1tbX4wLFafODY2mscxyEUCuHc2CrePBfCxIIAf5QGIzhgotZWW1KI4PoPOfHhgQ5Fx2eSHO55dAZvjVMgTGvkw6wf+MN7DAR+HmZTAnVOHu3bLDjQ6cBFfVWwmEkpAFtcXERHRwc8Hk9R94IkSVRVVaXJ5XmeX3MmXwmgsymCZCKMxQCFSNIGXqZZqAhB4NFaF8WX/u8dqHLKf0aVFiTJaaNKmtYWq1SZqBiISuMIAhKJhETyLCwsIBaLgaKotMDD4XBs+g6Vw8SzXPWx2QKNpCIFRg4Cw6ytAiMQCMDtzlzqtBEWiwX9/f14/vnncd1110mvP//887j22mu1OkUDFzDUJB0oikIsltsEvJCx9KbAUMPEM5Vsmpubw8TEBLZt2yZLzVns8Ww2G9p22NC2Y12pkUgksLo6g9fP+HBuisNC0Iq4UAMTXQ+SosHzHGqoSXzukzVoqFVmhjk0GcaPfx1D0twGmIDpCDB9DnjhHMAmgqCJtQ4onS0kDvc6sbNlLYgVYy+LxYKDBw9KXesKBU3ToGl6U5v0UCiE2IwfvY0LmFxcRpBxgzXVgbLWgCighpdN+HD5ngCuvbwh/4lCaNEAACAASURBVJvz4I0zfvS2OeB0bI5RspEaLMv+qawmhG3btqURX4AyX43U2GJjOU65FBiVUkKi9XENBcY6DAJDQxRSQrIWSwsopnbfRMnTzq34wrBSHIaGhhCPxzE4OFj04iJCDDT0QmDEYjG89957CIfD6O7uRk1NTU5JpxYgSRLV1dUYOOhGc92afLK1tR5OpxPj06s4Mx5GZ2MMPL+Ad96ZTyu/KIRIevS3Xjx3ggFMtozeG4SJAgsKC2FgYQg4McRC+PUiTIjDRkawo4HEkb0dsDtrVL0fJpNJkju2t63LRGOxGHz+IN4eWsE7o3F4fSRCCRtY2DNmlGxkGH93jQd7i8iMKN6Hy1Bg2K10mlO5GHALggCSJDeVI20MxERSY3p6Oq0cRww+9PK90hq5iBpWwR4mVwmJxUxpGmQEg8GCnMK/9KUv4YYbbsDAwADe//7347777sPc3BxuueUWAMCnPvUpAMBDDz0k/c3p06elY5lMJpw+fRoWiwW7d+9W8UoMaAUlCoxCYot8ULsLiZ6UE2oSIaKioLq6WrGasxgQBAGr1Ypt26y4otqF9vphCEII7e11SCYX8ObZVSSZGDzOGCZHp7G6uB5XZCLIsyEQYvCDR1ewEG+FyZx5c0/R7vUOKKPAS6MAy0RgYpdhJ/3obvVgcG+N4vhyI8SEUW1tLQ7tX3tNVIHOLZzHG2eDGPOa4Is5wRC1IK11MG1ImHBsAu1VM/j7TzXAZlVGXrz2nh+//B0B0Nsg/IEHz/hgp8JoqmHRs8OMI3tcaKhJTzAKgoD5+XlMTk6ira0traxGLV+NcDiMQCCA2dnZTb4aapSdFQpDgaEeOI4rOuG81WAQGHlQqhKStWMVt/GSq8A4fvwkOtvrsGfPHpw5c0aVxUUMENT4QikxF+I4DouLi/D5fOjr68Pu3buLlnQqhSAIWFxcxPj4OBobG9PkkwerqnBw79r7RKWC6KkxOjoKlmVht9vTOqBsXHDeOOPD/b/2IcE7AVNhZkGEiYQAB6KCA+cXgNnVILbVW6VuH1qBIAipj3rLtiZc/YG114PBIM6fP4+peQbTqzbMrJAIJ2gc2pXERy+pg8tVnMKnFB4YDodV+mw2Bhr52q9lK8cRDd4WFhYQCoVw6tQpVX01ckGPJSssr00JCU2Tmntg7N+/X/b7r7/+eqysrOCOO+6A1+vF3r178dxzz6GtrQ0AMDU1telvDh06lPb/zzzzDNra2jAxMaHo3A3oH3r0rQDU62iiJwIjFAohHA5jZmYGBw4ckMy7S0VcpCKZTGJ8fBx+vx+dnZ2orV33gvqz+s1KhVAohMnJSYTDYSmxIMYWTqdzgypAwP1PL+D0TAMoSwcKtd6gLA7A4kAcbTg1E0M4PoeOVgdos7YxV6oKtK977TWO4zA7O4vh0VOY9dkxvUJjJeIAQZC4bjCBnp01IJCEIJiK+tyWfQl8/1Ef/FwbCHrtRhEmE0hrHRKow2QImDwD/M8ZgE0EQBNBNLgZ7PBwcJvn0bXDmeY1JkItXw273Y6GhnVyJtVXY35+HsFgECdPnlTNVyMfDAWGOhBjSwNrMAgMDVGofNFEAFwxBAYpj8BwVtXh4MGDaZOgUqgt9Sz0iy+2uZ2cnERVVRW2bduGpqYmxQHG/xxfwrPHQ6hxAl3bafT3udG7M/8mPxAIYHh4GHa7HYcOHcroai0iVamQej2pPgqTk5OSjwLDO/CrPwIrMTcIIrtXhRyY+Cg+8QE7rnqfshKWYpFawtLV1YUjR9brPXMFXyKpszH42ogEwwMoPnCSQ2DQ9Pr0mcupPLX2NVf7tVTXdmCN3Onv70csFlPNVyMXyhFk5IOSaSpXCYnVQmlep1qozPPWW2/FrbfemvF3v//97ze9ZgQylQu1S0jUJEP0QjwAykpIRH+oSCQCp9OJvr4+WK1WRWrOWJzDvU8sYt5PYlsNh95WM47uXW/pmQ08z2NmZgazs7Noa2tDV1dXzuOmKhVEiKWtoVAIMzMzCIfDANZUf+9MWvDScDNI2y7IFPRmhMDzcJsm8ffXV6HZo6yEpVhEIhGcP38eFosFF7/vqBSDieqEUCgEv9+P6elpJBIJ0DSdpoLNtZbyvICfPrWAt2cbQVp2yeo6R9FV4FAFbxzwzgBAN/57KALrb1fwD3/pQEt97iRUMb4aG1Wgqb4a4uff1dWlmq9GPvA8r+l6mwlbUYEhrvl6SzSVCwaBoSEKfchIE8AVsdbKLSFhubWJUM2HX+1MSSETztLSEkZGRlBbW4uBgQFJyaCEuHh3JIgfPbmMCOsE4ERoFZhaBX779lpLT5pMoL5qzSjzoh4X9na6YDKZ0swwe3p64HIVp2hINfQSDfxEl+7l1QAGe1dxdnIeCwEKUclTQv49EzgGR3t43HRNKyhSWWbkzXN+uO0UOlvlkymCIGBpaQljY2Nobm7GwMDApk1/tuArHA5LLuXhcBg8z6cpE1wuF4IRAd/79xmEiJ6CM0jp55n/i2gx558+U1UXIlKDD/EH2Exq/P/svXeQJHed5v3JzPKuvXcz7Wd6RtL4kcfIIMEKJ8yxoN1l2V1gd4HjOPbei3vfiDduLzbeYN8XrzWwhgMOCYGEuQWBBEhIyM+MZkajae+9Ke+zMvP9oyarq7qrumxrBNtPRMVE5HRnZWdVZn5/z/f5Po+u2qikr8ZOeL142aSjHCWNusMIicW8uyMke3Oqe8iHcp7DRqORaDRakeOoNIERj+e+7grF1VRgJBIJpqamWFtbo6enh6GhIc6fP4+iKGWpOb/5k2Wem6jDYO4BCab8MPUK/ORiMtLTKgZorpYZ6DRwashFY605wwxT9ysr9b6lj7Zu9VEIBoPENTfB8AzTK3P44i4UqQ6DucjR0tgC971J5PhQeaahsbjC86/4uG7AiSuLp0QuyLLM5OQkPp+PgYGBbTHW6SpQ3SxUf5amqxPC4XBq5EJ/2e12nnrZy/eeNiJauotKPNkKTdOwi2v8+TsdecmLXMhFauj/5lJrCIKQ8u2qpK9GPvx7GiGB3SMYIpEINlsZhom/Y9gjMPLgtWS6DFJpsYGFjpD4AuHid57vva9Cp8Tv9zM6OorRaOS6667DarWmFnvr6+sZ8VuFMqErG1G++OAiSz5bTnWDIBqJa0YWvLpRZgxNDSERwW4M09du4eThVqy2MiJlsr3vFUOvjjYrHWmpF0lDLx9nLru5NBVl0S0RjGc3ytQ0lY6aMJ/6QPlRrdMLIb743WW8UQeCEEdTfVikGA3V0Ntu5ki/g6Ee57YHlm7uZTab86pTtiKXWag+crG6usrI6DgPP2vCHXZiq939FJJCCIxsyNdRUVWVpaUlNE0jHo+n7kG6TBRK99VwOBw5r4mrUWTkUxGUQ2AoO4yQWHd5hKSYFJI97KFY/K6PkIiiWBGFUa5o9WzQU9lmZmbo6Ojg9OnTqeOQJInJyUlqampwuVwZhHI+/OKFDX7wnAnR0k22Uk2P9JSpSRplXobHLydHD8TEOtWWIId7OmnbX13xBZkoirhcLo4ccnFky2jr7MIoL10OMLEE3qgTWazDYK5F2PKMSMQ8vOFAZaJaH3lilccvuDBY2vneiypKzIvNEKClJkF/h4GTQ66snhKLi4vMzs7S2dlJf39/wXW77itisVhoaGhIbddVoH6/n+npaS5Ph3l6vB1FsiGUM+ocXeMdp6Lcdqp849Ct2EkFqtcW8Xic+fl57HZ7SsGVrgIt1VcjV8xt+jH8exkh2U14vd5txNy/Z+wRGK8BCu1smgwQzl1z54RUIB3sD1amY5P53q9dpyQajTI6OkosFqO/v5+qqqoMjwuHw8HQ0FCKSR8bG0tFeqZ7SqQvXCKxBF/97jyX5owIoqPoqE9BNKDiJKA4OTMlowoBjgy+NjcYs9lMS0sjb2tp5G1Xtrndbi5fHmbRbWB2w8jChkQ8IfHWUxrX9NdgFGKoqqGkhWo4kuBLD84xsmjOiEUVRCMxzci8B+Y98MTFJLFjFGPUuzQ6mySaHAGaq8IcPLC9M1Iq0h+2ra1Jp/bTp5IjOP/jexAq4VrSUUgKyU4IRRL8v9+eY3FDo6EKultNXHsl2jab8kX/PCKRCCMjI9jtdo4dO4bRaKyor8bExASKomT11fhdKzJ2HCF5DRQYewTGHnbCa+mvtRMqldQBlY0trQSyRatvha4KHB8fp76+nlOnTmE0GjPGUHt7e/H7/QQCASYnJwmHw6mRP72usNvtGZ/pqxMB/vnRGLKxE7EEuzGDuQrMVfiBp4eXaGuM0dG0+91XfVzz4ICDgwPJbYqiMD09zcTUSyz6nMxtmNgIOaiyRnjfbQbq61xEo9GiO/M6Loz6+ZefJ1BN+7gS1IYgiBgstcSpTXlKPHbFU8Ii+Giskmmvk6k2LtPXVZ3VU6JUbFWBHj4M774ygjO/dJkzw0Eml4UtxE7u54mSiDJQv8BH39mE0Vheg+vcsI9vPp5AFDSaqmX62yWODTppb8qu5tBJuKWlJebm5uju7k41PnKpQPXfK9RXY319PXVNZPPVuFrRra/12MpuY0/ZmYnfrU93F1CJmM1EIlGQ8Z7RUGoKSWGd7EAagVGp+NPXQoGRSCSYnJxkfX2d3t5eGhoachp06h4CbW3J9IutXfr0BdxTl4y8NGlHkGwFzTLmgqaptNeE+dT726mrfu0dniGpxhgfHycajXLNNYe5MW2EJZFIlO0p8Z2fLfLYSwmQ7AWdKz0BZdkPy34AK5qqYHzCzYffqnD6cG2+XZQEfQSn7IdlAQqMXPje40v85HkZpGShoit2nno1jqauYBCi1DpVupqMHOqxc/xAFSYjGfLX9AjO9L8lXSa6de61EF8N2O6zovtq6Iui1dXVivlq5MNOBEZyfVba+6uKvKMjss2yuwqMPannHnYTRqOxYh4YlbzGK0msVAL56hOfz5ehCtTVnFvHUE0mE/X19VkjPf1+P1NTU4RCoeT7YedHLzkICL2IJar0dCRiHm4Z9PK+28tXN5SKjY0NxsfHqaur481vvDF1v9ZHW/VzsLCwkCIxCvWU2PDG+PL3PWzInYimws6VwVxFgioWI7A4DzDIT0aC1JhW+a/31WOz7M59PX0E59CB5Da9vlxZG+fssJ/LswncYQeyUI9kqUcQDVjVaf7y3S7am8rzBPEF4nzxoQ3W4vsQTRIKMB+C+RH45Qgk4gFM+Kh3xOhuFTnab2dgn4NAIMDw8DBVVVWcOHEi47lXKV8NHYlEIquvRiKRSCmqKuWrkQ9Xg8CoFBGcCz6fb0+BkYY9AqMAlBN3pj/QCyEwzCVe04WOkITCm7OplYo/3U0FhqqqzM3NMTc3R1dXV4aks1Cfi2xdek3TCIVCyMIGkuhjasmDJ2xG1mwIUnGtEocxyMff1cDg/uKjPtMRjiR48ZKPI4MuXI7CvwiKojA7O8vKygrd3d0pcicdBoMha2c+l6eEXng4nU5eHg3w9R97iGsOkMq7XVgMEf7s7bVcN7D7DLKm7f4IyVYMTwf48kNrRBQH5FiUC2KywF0LwloQXppQ+JefrYMSwWnR2NfcwLoc5dYjNmzW7ee7EJloIfFr2Xw11tbWWFpaShZkW3w10jsqleyk7ERgBMoQjO0UoQpgsxj3jLb28FuL1xtRoOP1psDIVbtFIhHGxsaIxWIpwji9IVKIQWc2r6ZEIoHb6+OmsJtLUy+z7DMTUWsRzfUF12kAihyht26Rj72rEbOpPPLi1ckAiYR2xa+r8HtSKBRidHQUSZK45pprsFozO/z6aKvVas3ozMdisZRaZaunxCapYeOffrSaMsMs55GiKnE6qlb4i3c37Bp5kQt6fakoCvvqlzjSV8O+fZ3E43Hc3hmm5/3YDCHmJuOsLVpSdZXL5cJisRT8jPj2o8s8M16fTIfJca4MJicqTlbjsDoNz02DIofR4nFq7a10t0iECXNdvyvr75fjq6H/bi5fjYsXL2I0GjN8NSyWzfNRiq9GPlyNEZLdJk28Xu+eAiMNewTGLqOYQsNSIoEhFjhCEkybT6lU/OluEBh6DKluXHX69GkMBkPFossEQcDhcHDssINjh0m9ZzgcZnzGzYuXfEwsKbiDJuKaDUHaLs2TtBDvfaOD2093l/5HX8H//LcFnnhZAcnCvz7mRtSiOK0KHQ0SB7utnDpUvc23Ij2qtbm5OasZ5k7YyVPC7/ezsrLC0y+O8dOzDmKKDcTS5z5Rotx5wsj77ij/XBWKcqen8xEY6aciEkvw+W/PMbZsQRCLT4cRBBEMdoIJOxdnZayWKHeeLq6iq0T8msFgwG63s3///tT/l+urkQ87EhiR0qvanfwvAGxWadeLmz0CYw874fUyQqKjnBhzHZVKIdFR7jFt/V3d6NHtdtPb20t9fX1F49YNBgON9XXcfWsdd9+a3KYoCl7vOmcub/DKZJxFj5mIWo1gbkAyZDZMVFWhRprh4++rprnMFI9VT4yvfN+DJ9GFKEooj0cREx6qbRH2NcI1vRauG6jCIGU/Rz6fj/7+/qIXTGazmYaGhgxPifRxg7W1NX7+ksKUrwNMZSqc5Rk+eo+N3o6rk3gSj8dTRNjQ0FCqKWA0GrHb7XS0bTbN0omdpaUlIpHINmJn6xjSxXE///RTBc1cWjqMZLSB0YYfODe9xOGe4hozlUhXE0URSZJoampKqRIr4auRD1djJHY3E0hgb4RkK/YIjF1GMXFnVnNpy65Cmf1IdLMrWakCSJKkikhZ9RESr9fL6OgoNpuNo0ePYrFYXpPMdX304NqDdq492AEkb8aTk5OMTs4y73EwuyriDhnZ3xjjnbc4qa6mrLnPp8+5+Z8/85HADpIxdRyaYMUfg0vzydd3n/QgaDGcZpm2Bon9zQK15jVaGpLnqBB1TyFIV6sADA7C225PqlUWlry8cMnD2ILCesBINGFDk6zJxXcOaKpCf2uUT76vI6uaoBhML4T40kPLxBMCzTUCA10Wjh1w0d2WY560TAajEAXGhQsXOD9l5Fev2Aoercn9fhq1tiCf+UArLSU6k29FsfFr6XLPcn019I5KPuxEYAQjpV/j6g7+F7C7IySJROJ3zjxsD68vVMrkMn1/lSj4K2XiWcljguR9b3Z2lvn5efbt25cyenwtagtJkqirq+GOm2q446bktkAgwOXLzzO1rLDgcbDksyArRm4/7OfIQDUWQxRFMZb0t8dklX98ZIWRtRYk46a6QTJYwNCCT4Xzy8nXN56Mg+yhyhKmo0GlrTqEy7hGb3dXUWaY+bB13OCaa/TRVg8Xx8Y5PxZj3m0glKhGM9RjMO+c4qZE1/m9ExHuvL5hx58rBA//apUnXzFhM8Zpq1MY2m/ixAEXjh0SUPRY28XFxZzK13Skm4Xm8pFYW1sjHA4jiiIWq53vPWvHo/Qjmst7TinxEEc6V/jje8pTCaejmHS1RCJBNBpNXWuV8tXIh6vxHN5t1ccegZGJPQKjAJQzQqJ7YBQC2y4TGOHI9hGSciFJUkXi3FRVZWJiAqPRyIEDB3A6nUVLOiuFdHVDU1MTb7nthqxznz6fLyNLXPcacDqdO8oDk4vxFTwRO4KQ39BJEAQQLARkC8OLMLwI0ImmxNjXuMB//aNOjIbduWnqapWBPgcDfe3AJnu+subjhVfWeHU6yprfRFSxoYl2BFHEafTzl+9tLrszEo0pfOnBOS7PmxDEZFEzuZZ8/fSlEJriwWqM03glAeXooJOD3S5UrTQ/mRTyKjAEenp6qKr24bR6eHXazYrPQChuRcmSArPjvtQIH7jNxm0ne0o/3iv45Yvr2CwiRwerMBm3fyeykRrxeJyJiQlCoRD9/f0AGd1IKN1Xw2KxZJAaW+ehd3rgh2Klf375RkicduOumYrtzanuoRC8nhQ6ekOjEgRGpRQYpUSrb4WmaciyzLPPPktTU1PF1ZzFIl3d0NfXx8mTm8SwHmnq9/tZXFzMOda5E/H6yBNrPH7BicHSo/dEdoQomUBqIgC8upZ8qUoCzrr5vZMb3HG6Pu8+SoU+2nrLyRpuOZncpo+2jkzNcmY4xMyqSDBRjWqox2ipRpHDDDQs8tF3NmM0lucx9OpEgK/9VEY17QMzhIExT/L1yEsqatyDzRigpVphsMvIyYNO6qrNeDweRkdHqa+v58SJE2V9P3fykXiX6Obs8FmmV0R8sdwpMLmgaSpOYYZP/n41jTXlkRfBkMwvz3g53Gtnf2v2856tttDPVW1tLWazOYPUyJauVoyvht1uz6gttqrJr0aq2muhwGhvb9+1/f+2YY/A2GUUo3SwFz4imQFRMpJcrO1MgMRim0qJSiowyilY9MXTysoKLS0tDAwMZMjSSpV0PnfBTV+no2hTTZ/Px9jYGHa7Pau6Idvc51Z5YC4zq4Rm5EsPzDOxYikp8SQdmipzbbfKx+/dPfIiF/Q89YY6lb6WJQ7ts9DTk1x8r294GZ9NdnTW5tfwrZoyiq9iJIE/+NUyP3o2DmJuk1VBMhFVTcy6YdYNv7wQRVMDOGv3F/ygz4b8IyRCykeiq7OVd7BJbvl8fi6Murk4EWHBLRKIWZE127ZRL01NcKhT5hPvby/7M5xeCPH/PbBCUHYAKtqPV5GEGDV2hc4mA0Pddk4crMKZ1lXSNI2VlRWmpqbo6upicHAw47OphK9GLBZLjaDovhqSJKWKDlmWc17b4TIIjHwKjKpSb7YFYK9LsoffNuj1QDHR1tlQSRKg3NpCXzwlEglOnz6N2Wwum7jY8MaYWoxwbZ8Lo7Hw54vesV9YWMhQgKQj3YQ8/ffSxzrTk9XSa4vzYyG+9QsNzdyFoYTEk3QI8jrvuTnBzUd2j7zIBZ0cb28MoUSWuefmTpqbmwiHw0zOXSYSDiFpIc6cmcVms2WkwBQ6Dh0MyXzhoXVWIp2Ipuy/I4gikqWOGHVMB2D6FfjpRY1EzItBidBa28ZAlwlnTYLG2srWX7qPxHXV1Vw3lNymk1srq6O8OOxnYhHcIQdxoRbRXHdlDbAJJbrKe2+Kc8vR8s1fv//LVX55qQaDuYtfDCcVHQbNS60jSnezyLV9Voa6M/1VZFlmfHyccDjMoUOHMuqCrXVEvnS1XL4aoVCIYDCY01dDluU9BcbvOPYIjAJQ7qxqoSMWdmvpklDJYNoxNhAgGt8kLF7L+NNsUFWVmZkZFhcX2bdvHzabLSWLTZefFVtg/PrsBt/+uR8ZO5p2ZfTCItNWL3Fwv43Th6qor9lepEUiEcbHx0kkEgwODuJwFO5lkEsemE5qzM0v8uCvBTZCLpBK/z5pmkqzK8yn3t9KU12ZlUqJ0LtIfr8/FWero72tmfa2TbY/FoulJIErKyuEw2EMBkNG4aF/9jqGpwJ85ftrhBMOSsmfE0QjUB7zXowHxua2TXKrubmJO25Jfs8nJydZXp4mprq4PKsyuwaxhIG33ywwsK86WZQ5HCV1CxKKypcemOXijCnDf0MQJVRsbIRhYwrOTal88/Er/iqWBM21UG32cWi/kZPHjmUdQ6qEr4Z+XWx179dJjfX1daLRKOvr69t8NcKx0v158nlgWHbR7G1PgbGHQlDuYl+PCK1Ewfx6NAUttbbQzSdVVWVoaIgLFy5si6Mutq7YHMtoRjLWXBm9cFNtDdPVCId7LBwd2E5q6ObIk5OTNDY2cvLkyaI+r61jnZC8B4fDYfx+P6urqzzx3AS/GmlDNTSWVdAnYn5O9Wxw391XL/FET4VxuVwZsahOp5NrD26eA92IXX+GTE1NIcsyNpstg9jZSsh969EVnh2rw2DuYYfU06wQBAGjpQaoYTGq4h+Z4fpDlRvj2gnp5FZfb3JbOBzm0qVLyIrGktfG2ILGWsBGtS3G+95iorraRSQSKcosNB0T8yHu/0GEhGkf6SJvyWRHw86GDBtz8OIcKD+PIia8VFnDNDjCVJvWecOJtm1NEf1vSf8Xik9XS78uWlqSKt+tvhqhUIhz585hMpkq5quRD7utwPD7/XsERhr2CIxdhtFoLHjEwmkp/WYoGsx5CYx4GoFxtRQYeh711NQULS0tnD59GkmSmJ+fJxKJIMtyxo2qUIzPBvnq91fwRh2psYzU6EV8c/Ti+097EdQYDkuCtnqRgS4zrS4/muylp6cnY6FVLtLNrLqB48eSipOVNS/PX3QzPBNj2WsgLFvRRFtexYBZDPKRt9Vy7GD5s4z/9MN5zozEqXNBT5uJowPOKy7lO3haaBqLi4vMzs7S1VXYjKzZbMZsNueNnxNFEaPJzvd+I7HoqyrJDHPL0Zb323kIDLGA76beAWxoaOCGG25AFEXefOX/0qNtZ2dnM8wx06Ntd3oYPnl2g28+GkDdQaGSjpS/Shz8ywBOXpiBf/rFCkd6VD7x/q68+yjWVwO2x6+l+2ronZampqZtvhrTcz1AR/4/LAvUHUZIdlspvkdg7OG1QKXGPqCy3hWVQrG1ha7m1Mcz6urqUt3caDSK0WgsSc350OMrPPFqVcZYRnL0ohm/BhdXkq9vPSWD7KbKEqazUaW3RcMmLOC02zhy5EjZ6hYdegS6w+GgtbWVwUF4513JEb6RqWHOXA4xvSrij7tQDfUYzDvfi1QlTpt9jr/4/Xoc9vLIi6X1KF992EtUlmiuTjDQaeDUkIvG2p3/dj0GPhaLceDAgbwNJH201eFwbFvApo8xxmIxLBYLi14rj15oRLTup4gwmKxQoyu875YEN113dYgeVVWZnp5mbW2Nvr6+jBScXNG2+iI+vWmUq3aTZZWvfG+FCU87kqkwj5Gkv0ryevAHktte/LcEgrzOh99CzuQTHZVKV0v31XC73Rw/fjxVb1bCVyMf9giM1xZ7BEYB2G23cJ2lX5j1ANeU9D6SZCafzkOWN4uBq6HAcLvdKXb9xIkTmEymlKTT6XSyvLzMCy+8gMlkSrHN+eKm3P44X3pgnpl1K4LozLs4ZqW1mgAAIABJREFUEQQBJAtBGUaWki+oAcVKwwt+/ssfuKhxVcYUMxtMJhMdbY10tG0qNWRZZm3DwwsX3VyairLklggnrFf8JCRQItx10sh7bi8/xePXZzf45s/8KIIdMLHghQUv/PpSDE0NYRRj1Ls0ultNXNdvv+JSLqbMVaurq7dliReLXPFzwWCQu+UNzo2uMbOq4YtYiGs2RKnwikPTNGqtQQSjgFzG11vLk+e90z0hFosxNjaGLMtZ4+cgd7StLhdeWloiEAigqmqGVNbpdOIPaXzu2wusBuwIYnlzwJoS5+bDAh++Jz95kQvlxK/JsozFYsnqqzEcMMNGace0E5krXvHx2C34fL6Mz3UPe8iFSkS0V2Jh/HpLD4HCawtFUZiZmWFpaYn9+/enur76Pae5uZnz58+nRi/S1X87Pcd+87KH7z4lgnl/QWMZomRM+UlcWk2+VKULZA/Hpz38wVsrZ6K4FfpI49FDdo4eSm7TfYkmZkd58VU/k8sCvqgT1diA0VKDpmmYEzN89O12etrL86qKySp//8gKY2utSMZaMMJcCOYuw+OXIRHzYRF8NFbJ9HcYOHHAQXuTNWWuury8XJAZZr5zoC9gm5qaUucgFovRuOFFTqxyeXaJtYCVGLUIpnqkIqI9FDnENW3LfOSe5qLiaLNhbDbIhk/myGAV5iJGkTY2NhgbG6O5uZkTJ05sW/DniraNx+MpNbBuFqqPcqZHmT551sP3n7EgWXqQylwdiokV/uStEod6diYvdtxHGSpQ/R5UjK+GruDJ5auRD4qiVMxUPxv2RkgysUdg7DLyERgej4exsTGsVivXDvXz5FRp7yMWcCOWE5sXuMFgIB7f2eiuEBRSZASDQUZHRxEEgcOHD2O327cZdNrtdo4cOQJsjl7oC7lIJLKN1JAMJv7xkQXOjIkIkqPMBAiVttoEn3h/666SF7lgNBppbqznur4wzU4v+/fvp7a2lg23l3OXPTS6osjxMC+8MJ8qvFwuF3a7veBu0uxSmC9+dxl3OLdxqCAaSGBg2Q/LfnhmWEZTVxC1MA5TlN6Oeo4frGafVvkWtj7neOOJam48kdymG3qNz7h56XKAqSUVT8RMXM0ebSuqYd5/m53bTvbwn/+5vGPUtOKLeU3TmJ+fZ35+np6enqKLsWyLeF0urHcPxicmeeQZI+shBwgKCKXdwjVNo94e5D9/qI3GmsqPIhXSUfH7/aytrdHb25sas0tXX8XkMkw8ldz3NkkSd91oa0+BsYfdRjEG4flQyRESvSYo9xrLV1ukqzlbW1tTas6tPhft7e10dHRsG73Q05PS/SRcLhfTSzG+9r9DRMQuBHN5zxE1EeLGgRAfuHP3yItc0EmN3i4BLb7B8V7o7a1BFFWm58aYWfTT6IqwOhfDv2bJIHaKSVb78VNr/OycI7nozbHeM5irSFDFYgQWR+GJUUjEAwjyGjU2jaH9+2iI22nchXQ5i8VCW1szbW3NvOPK9lgshte7xJnLHi5Ny6z4LDmjbTVVxSVO84kP1NBYUx7RE4kqfOmhVeaDHYiSiW8/LYPswWkO0V6vMrTfzLFBFw5b5rUTjUYZHR1F0zSuu+46LJbintkmk4n6+vqco5yzs7OMzoZ4cqQVVbQhauqOCXM7QYmHOLFvhT942+585/ORGrrfjCiKqbqiUr4aerparmsjkUikomJ3A3sERib2CIxdhtFozOqBoS/qAQ4ePIjD4cAfLv19CkkiUZTNrnKlJKM7FRm6LDAYDNLf309NTU1BBp3ZcsS3+kk88KTIRrgGoZRw7DTYDUE++s56hnpe+wIDMmdkm5qaMlytm5sauKtp8xykjx3MzMwQDAZTctL0Dn36+YzEEnz5wfkrKR7FG4cKooSGk4Di5Oykgifo41CPM2vCRaUhSRJVVVUcu6aKY1eESZFIhOHhYVbdUebdNqaWNTaCJlpqZD5wu5OaapF4PI6mlRlFmmeEJJ4Q+KP/MY/VGKepRqCzAapNaxzqqyl6znknpMuFdansyRNJmajX6+PlkQ1emYyy6JYIxi1ZzUK3QlAj/Ic32bj9dPmpJ0++tMEDv/RhM2m0Nxo4uN/KyaHqnESgPrc/NTWFz+fj8OHD2Gy2rPFr0XjpY0A7mXgaDNKuKzD2nML3UAjKVWBUIsJc39dvE4GxsbGRoQhMV3Pm8s/aOnoBm14KOqnx5HMT/GKkE8wtSGUsppVElO6aBT52XyNWy9UZNUgkEkxNTeHxeOjt7c1QPB7ob+NAfxuQe+xAT1bTSY2tSthXJwJ8/adxFFMXUgkcuMHkBJMTP/DU8AZ2S5Ce9vypbJWA2WymqamBu5sauPvKtpWVFUZGnmQjbGN6zcySx0xMsXLLoJfrr6nBIsVQ1dLTq3706zV+dt6V4b+RVO00EgJGNpKv77+goMY92I1BWmoSNLmCNNrcXHuot6Ijzlsj0g8dgrffmWwaLa6McGY4yMSihifiJC7UIlnqEHdIV9M0DQfTfKoCqSeyrPLl760ws26hxhZlf5PANb1WDve5MGTxkNM/k3A4zPDwMNXV1Rw9ehRJkjJUoDulqxXiq7GwsEAsFsNoNGb11dhtE09Zlis2iva7gD0CowBUcoREN4uMRCL09fVlSI1dNkjO7hf/foUQGKq6WSjt5giJoihMT0+zvLxMT08PBw8ezJB0qqpatM9FNj+JWCzGxMwGz7/iZXwhwXrASFy1IxSg9xS1MO95g407ry9/LOPnz67xk2f91FeJDHRZODHkYl9L/gdxIBBgbGwMs9lc0IxsrrEDndSYn58nGAwCSS+FZ4cNPDNsBakwj4SdYDcE+fN7GxjcV14HolSoqsrc3BxLS0v09PRw5MgmsaNLZf1+PxsbG0xPT6OoNwDlxO/lHyHRE1BmNmBmA8DOj16WsRpm+Ng76zjctztd+HSZaEtLM3e9IbldN0x9ddzN2ZEgc2sQiNmQsSFIFjRVYaA1yqd/v7NsAsrtj/O5/znHcsCBIDiIRcEzCxdn4YEnrpjnmmVa6kUGO62cGHLR1mhLSWDb2tro6+vLuP63dlTiSulf2p1HSJJFycbGRqqjUkl4vV4OHTpU0X3uYQ9bUUnSwWAwEIlEKravSoy2ZKstgsEgIyMjSJLEtddemyI/SzXoTPdS0P0k3nGXRiDg46VLE5wfj7LoMRFWsnfnt0JTFaqkGT7+3mpa6svv1n/1+6usByTa6xSG9ps4cbBqW3d+2zFoGgsLC8zNzdHR0UFvb++O5yPX2EE6qZGuhBUMDh55zopX7UU0lbeEUBJRemsX+NgfNWE2ltl0KBGRSCSlED558kSGuiHZNLInG2dzcxn1VXrTaKdF6/hciL/7UYSEsasg/w1BlJAs9USpZ8oPU/7kZ/rwRS9NjiX+jw82FZWAUwz0plFVVRUHkonqKeXS2sYkZy77GZ6Jsx5yEBfqEM31SAYzieg67zwd4baT5ZN1vz7r5rtPm5EsPWAGjwKeRTi7COqv4iB7cFnCdNarDHVbODbowmSEyclJvF4vg4ODGaa3lfTV0BGPx7f5aoiiSCKRQBRFJEmqmK+GjlKJ7t9l7BEYuwz9YR6Px5mcnMTj8ZQkL8+HfF1XADXtAqhU8SOKYuoGoD84Z2ZmaGtr4/rrr0/Nou1G5rrZbOZgfysH+1tT2+LxOBMzGzx30cP4gsx6wEhMtSMakg9HTYlx4xB8+J7OsjOih6cC3P/wKkHZCTjxr8HkGvz0pRCa4sFqjNNcK9DfaebEQRc97Y7NY5yYIBQK0d/fnzEyUCwkSdomhdNHL3oD6wRDXmbXwB+1kMC+LW4rHwQ1wjtusvB7t5RP9AxPB2ioNhcdbet2uxkbG8uZu54eaaoz5//rnIhaxv0+H4GRC0Yxzh+9tWbXyIudYDabMRgMtDX4sIgJBt4xgM1mIxAIMDnnwecLYTeFOXd2NWP2NV8BthXf+dkiP39JQZCye86kzHNlC4ElGF2CHz0fRFM2MAoRWuoaGPBKHFWCDO5zbt8ByfuKnCgjRnWHERKLxYjRaEwZvcXjcSwWS0YCitVqLfketWe0tYdCUc5zMJe6sxTshgKjXKT7ckSjUcbHx1PPzELVnKVAEARcLidvut7Jm65PbtO0JKlx5tUJLozHmNswEFaqEc2NSMbkgleMzfEHdxi5bqB8Nee3H13mmbFaDOYeEGHMk3w98tJmd76tTmFon4kTQy5cV+Kx9ZHkmpqasr2q9ASprUrY1TUvhzu9jM6fZz1ou9Kdr0csItZD01Rs2ix/8W4n7U3lET2yrHJpKsihHmfW7nwu6N4p2cwwdeRqGumjF4uLiwSDQVRVzTDgdjqdKKrAlx9aZcbfgWgszAwzFzRNocXp5lPvqd818iIXdOWSIAjsb1jh0D47PT1dyLKM17vA+TEvtbYgakLm7FlzhlloMc9Rjz/O5x9041X2IVmy/41J89wmgsCr68nXg88pKNENrJKdzgYH7kSck0PxHVWgUF66Wi5fjQsXLiAIAgsLCymyq1xfDR06gbFbCSq/jdgjMApAOV8YXZ734osvsm/fPgYGBnbcnyhQ0sKrEAUGJC9UnSGsRJGh/y3r6+uMjY1RW1vLyZMnMRqNu0Zc7ASTycRgbzM1TiGVdNLc3MT0vIcXL3npa4miKVHOnVvNmHst5kbr9sf5wnfmmXPbEITsCzC9Oz+9DtPr8POzYTTFi0mK4DCGGdxn5dbjA7hc2X+/HOgs+htOV/GG08lteo74+eE1Xh4NMb0K/ogZGXtW8ktTExzuivMX7+0ou1u/vB7h899ZYjVoB8Kp7nxrvXRl5KAqayRsNBplbGwMRVFymmHuFvISGFu+K5oS54aDGn/yzv27eFQ7Q1c3tLS0cPz48dSDeqthql6A+f3+jAIsfRbc6XRue9BOzAf5/AOrhBMOhBIcvgTJTAIzcx6YXY8hibkJDEiO6ZSKnRQYFpORqqoq9u3bB2wavelF6crKCpFIJGVylu5UXsgCaW9OdQ+vBQwGA7HYzsljxeyrkmqOStQWoiimxlBXV1fp7u5maGiobDVnKdBJjRuPmmmpniQQ8NDbW4ckJUmN1Y0I3Y0hoh6FCxdsGaMXxSxYnn7Zw3d/LSJYurN269O78xNemHgZfnhWRYl7MKob1NiCHBtsZ6C5fld8fsxmMx3tTXS0b3ba4/E4axtzPH/Rw8icwmrARoxaJHM9YpbnhBpd4T03ydxytHHb/xWLnz+3zo9esCFZmlF/kezO6ykwh3ssHM1hkrm2tsbExAQtLS1ZzTB3QrpKIfU3XfFP0J8fo6Nj/PBFF16lC0O5kd2xRf74TpHr+q+O+lUf+XS73QwMDKT+bqPRiM1mo7V1k7BLH/Xe+hzVr4lsz9GHHl/hieE6DKbuotXCoigh2hpJ0MikH2bOzNHbIRflZ1eJdDWDwYAoirS3t6eMPCvhq6EjGo2+pjXwbwP2CIxdgqqqLCwsMDs7C5AymMoHUQS1hGd/oQSG1x+httpesYIlEAgQCoVYWFjYJul8LYkLHV6vl7GxMZxOJ8eOHUvdSAZ7Wxjs3XwA6K7Mfr+flZUVwuEwRqMxRWhky4tOKCr/+PA8L45eMQ4t1k9CMiFjwiNX8cyoxujCGv/pAwaa63f/pqTniN980sXNJ5Pb9A7E2VemmPPYWXQb8IbNWE0KH7rTRE9XLQIqpY5iJBSVv//+PGfGpUz/jSvdeT0F5pFn/GjKGnazTGutwECXhfaaEFp8nd7e0uY+yxbb5ZHrCVfGvDRNo9ER4j99sLVsM8yEovLVh+aYXkrQ3mDgYLeVkwer8ypW4vE4IyMjqKpakMFXvgJM92SRZTkpn7Q7ePgpheElR9nxtpqm0eQM8dn72qnNU2CUkyKzE4FhMoqpeVW9o6J3G3OZnM3NzWVE3aarNbYuFPZSSPbwWsBgMKS+k5XYVyUVGOXuS9M0vF5vagz19OnTu6rmzAd9hHFxcXFbI+qNpzdJWN1TQ5eWT05OoihKRpJUNlJjajHM3/8wSETsRMjRfc4FQRQxWOrQqMMN/PRCkFXvKh++57Xx9TKZTLS1NPKulk1CIhQK8cqlZ5MGmX4nq0Ebcc3F/ro13n+3k6oqV6qZVgqmFsPc/4MQccOm/4benU9PgflfTyfQZDcuc4iOepW+NgG7sIjTbqp4tK2+INX9VU6eTI62LiyN88KrfsYXwRNxIIu1GMx1yYS5HZCIBzm5f7Ui6TVTi2G+9uMABkljXyNc02Pl2n5nXjWH3hRpbW3NaIrkQjb/uvQY063ebb6ohe/+xolq3k+ZdnYk4gFu7FvnA3dWxnOm2HS1RCKRIpTTa4tyfTV0eL3ePXPwLdgjMCoMTdNYWVlhcnKShoYGTp48yYsvvliwRFsSIVFC4V7ICAmA2xukttpetgJD745HIhEsFgvXXnttVklnscXFD55Y5qXLYfa3mjgy4OCaPhcGKf9DLhKJpLr1heSIZ3NlTo+a2kpqnBkXefxlA5poQyhzrM1IiPvuruLGa8sfyygVPp8vFWn79rtOpwqq9AJMX8gmEgmsVmsGuZMvKurxF9Z44PEQqliY/4YgmQknzIyvwvgqgAtNsWB7ys8bj8jce1tx3YdyCIx8EaoACCKiGuZDdzi59Xj5n+PT59z866N+VCHpYO2bh0vz8N0nPQhqDIclQWudwGCXlRNDVbQ1WjNmnXt6ejJmNItF+oNWh/6g9Xj9DHW6QV1h2SMRiFlJYCtpHOmDt9l508nCzpei7M4IiSRq1NfXZxQe+n1Kl4nCdpOz5DEpGZ02PcnAZrPxy1/+kra2NgKBwB6BsYeC8HoZIamUIrPcfWmallJz2mw2Wlpa6OrqKpu48Idk/uGRdVQN+jskTh9y0VKfn3DearKdz6A53VMjfcGiezTppEYikUjOyBvtPPyskZXofiRDfQnuZ5tQFZlGyyx/8f46alxXx5Q8nejp7u7m5InG1OeU9JMQ8fv9GQvZ9JEDh8Ox4yI5Flf48kOrTPvakQz5GxuiZEiZZA5vJF+q2oUW9+D6jZePv8NFe9PuNJD00db+Xjv9vclt+jN1dW2KFy/7GJlTk2M4XBnDkYxoqkqVNM2nPlhDXXX5Zpj3P7zC2EZb8nypcH45+frGrzf9JDrqVQ5d8ZOwWiRisRijo6MFN0V2gtFozKoCDQQCaMtejnSsMLm8iifiRBZrkcx1RY4jJc1DP/371dTXlEdeqKrGhfEAQ/sdWcmdXOlqfr+f4eFhGhoaUsahkBkZX6qvRiQS4aWXXqKlpaWscfPfRewRGAWg0AflxsYG4+PjOBwOjh49mrrodef9QkgMowSxEmqSghUYvqRRV6kdl0QiweTkJOvrye54Q0MDzz77bAYbWcos6ouXPPzzv3mIqQ7AwaIPfnM5jqYuYxRj1Ls0ettNHL1Cauj7l2WZ6elp3G43vb29GTNpxSIXqeHx+pDj67S4wqwHIsQUG0iW4otPJcqbjkh88O7yxwx8QZkqR/GzdLokNxaLZSV68hVgGxsbTE1Npbrz6dJAs9nM9FKILz6wjDfqQBDLjJMSBA7vN/CuN5XwUNpl/wuLUeWP37iMqKxw6dJyxnkoxk9iwxvnb789z7LfjiBsP1+CIIBkISjD6HLy9aPnA2jKOkYhTJ0jweG+DhqiNsoX5G5/b/1B29bazNvYHLcIBAK8Mubm/HiY+TURfyyZgCJI2+9DmqbS1xTh07/ficVc+LlJlGZDAuyswGhpbkgVAlsNvHKZeqV3Y7ZG3erXR01NDU888QTT09PcdNNNtLW1cd1113HkyBHe/va35yT97r//fj73uc+xtLTE0NAQX/jCF7j55ptzHv+TTz7Jpz/9aS5dukRrayuf/exn+ehHP1rcCdrDbz0qPfZxtffl9/sZGRlJmVrHYjEWFhbKIi4SisY//3iZ8/ONGEzJ1KVUjGfMh0Xw0VQtM9AhcWrIRXMaqeHz+VJESjnd+mweTfo9Y2RqgypziEBolFCsCsHUgFSCmaVBnuUjd1s4sL/8MQOPP7d/wE7Qu/WNjY1ZiZ6dTMj9fn/KJFOvQfTnqcPhQJIkfvjkKj8/X4XB0kMJE4wpiKIEgsy7bjbvGnmRC/oztavTitkk0F41TWdnNbW1JjyeeV581YMci9BWG2V6YoGNtLpia0c+H5JmmKZkvG2W85XuJ3F5Pfl68DkFNbaBUd2grd7JkX4n+xWJSgetp3u3DQ0mt+kq0NX1Cc5c9jG6oLIRchCnFtFcl7VJm4i6efvJIHecLl91cWHUz9cf1RAsLai/2Iy3batTObjPxIkDLhz2zJpbVVWmpqbY2NjgwIEDGQ2grdGupfpqTE9PI8syDz30EBcuXODYsWMcPHiQI0eOcOutt3Ls2LGi/9Zia47XK/YIjAKxU9yZ3+9nbGwMSZI4dOgQdntmAoX+QC+IwDCUlkIiFqi/cvuSklNdjlko9Gzl2dlZOjs7MySdgiAwMzOTutEWQ17MLoX58kNLrIeSaQZbIYgGEhhY9sPyq/D0q5ukRpUlRq0tyMlDtbzh1PFdiS8ymUw0NTZw3zs2JXHxeJyZeQ/PXdxgZO6KUegOpIamJuhvjfHJ93Vgs5Z3yQVCMp//zjxTqxZAwyylkztODvVmP/+qqjI7O8vy8jLd3d1FmcjmKsAikQiBQACPx8PMzAwjszKPX2pEkxxl+8Y0OkN8+j+0ZvXG2G0UQmBUOc1cf/3plLeI7tSudy3sdnuGS3m2Oehv/O8FnjivlTiOlPSTWAnDynn4zSur/OcPCgWl35QDQRBS4xZvbGjgjTckt+tO7tMLAeY9NubWRbxhMxoS771F4viheoxFfvWVMggMtNwLKKd98zuVraOSLhPdOveaq6Nit9v50Ic+xAc/+EFuueUWzp49y9LSEufOnePcuXO84x3vyHosDz74IJ/85Ce5//77uemmm7j//vu56667ePXVV+ns7Nz281NTU9x99918+MMf5lvf+hZPP/00H//4x2loaODd7353kSdpD1cblUw4KwdX08RTV0/GYjEGBgZwuVxomoYsy/h8PpaXl6mqqtoW45kPP35qjZ+dsyNZerLK0w3mKhJUsRCGhRH45UiS1DALXhwGDy1VYe68cT/dnaU3RXJBf6YePWTn6JXAoiSpEeTsq1O8PBZhbt1ISKnekdRQomu89XiEu24oP17zpVe9fPMXoJlaUOI+rKKf5mqZgU4Dp4ZcNNZmJ3DC4TCjo6OIolh0t34nE3K/359KVnv0nIM15RAGS3mEQyIe4FT3OvfdfXWibWEzScdms3H8+PFUbWC1Wnl7a6a3SDY/ifS6IpufxLonxucf8hLQunKaYeaCKEqI1kY0GpmPwOzZOK9MzfGp9+++/0a6GqdnfzKGXFdAXb78K5a8FmY3LKwGrETUGmqtPj7yTgsNddUZ0ajFIiarfOnBFWYDnYiW5GeRHm876k6+Hnkp6TVjMyTjbbsaEjjEBQa6m7OO11TKV6O3t5fPfvazPProo7z44ov89V//NZcvX+bcuXNMTk4WTWAUW3O8niHkWcTu5bZcQTwe37bgD4fDjI2NEY/H6e/vzzmf9PLLL9Pb25t3rAHgvz9gZMVT/Fygd2WYyZcfzPtzn/6T27n3rckv/DPPPMMNN9yw489rmsbq6ioTExM0NDSwf/9+DAZDBrMYDodxu90p+VP6jaiqqirrTTYQkvnSg/OML5sRdsiWLgSaptLTGOG//GFXQeMmu4F4PM4rl6d5+tw6yz4r7rCFmGLDYY5w3x1WDvbWF82gb8W//nieJy9oWbvcOjQ1gemKYqXnimKltSaeksB2dnbuWk61blg7u+Dm+Ve8jM0no22jig2kwkxSJS3EH95dxY3XbncELwaf+poVTSvtXCfkKBd++f/s+DPtLdV85yt/kvX/9GtCLz78fj+JRCI1B73kMfDNx2RiWnl+EpBM1bn9qMgH7more1+lYm1tjfHxcTo6Omhra0t9zukRv36/n1AolOHWvhO5A/Afv2ZFLfEzPPfzv0bTti+iBEHgM392B/fcfk3R+8zlVA5kxK/deuutnD9/vqB9njp1imuuuYavfe1rqW19fX3ce++9/M3f/M22n/+rv/orHn74YcbGxlLbPvKRj3Dp0iWeffbZov+mCqOYD2uvtiD5nSp1DCSRSHDmzBlOnTpVkWMppB4oBMvLy4RCIXp6enb8OVmWmZycZGNjg76+Purr61ONIl114Xa7U15V0WgUs9mcUkC5XK6s5ncvverlW79Q0cztZf8tiZiXe68P8MbjlScxCkEy/STAE89N8OqMgjtcRUitRpOcdFfPcd9baqiuduUd6dwJq+4YX/6+B5/StaMvQyLmwyL6aK6S6e+QODpgIxZcZmNjI5UMs1vQGwXnLq/z8liURbeRoFINpgYMxvxKT1VVqDfN8Il7a0tSl6RDllX+4QcrhKLQ1y5x4qCDjqb8x6AoSiqJMN0Ms7j3lrc9U9Pr7Z+8oHJ+sR2DqfzaQorP8bF7zPR1lr+vUqAoChMTE/h8vgy1cLoKVK+xIpFIykMiXbGSr5n69MseHvi1CclSekpMkvT0c6xX5vffUvzITzZfja1rTUEQeOihh1hdXeW//bf/VvKxQvE1x+sEWWuLPQVGgUhXYOgxmF6vN/Xg3QlGo7Hg7oaltISdghUYvkDhWe9er5fR0VFsNltqJCbbLKo+cqAjXRa4ddbR4XDyo2fjvDRmRJDsRTsOb4XdEOSj76xnqOfqzHxCklEfGxvDaDDwp+/fHB3SZ9r8fj/j4+MpT4309JNCSI3fnHfzjZ/6SGDP678hiAZkDCz5YSmlWElgFBupd2m86bib206WF+mV872v5MkP9LYx0JtcUOsPm7lFNy+84mV0TmY1YCSasIK0+bdrSpzrD2h85B1dZUfhrXqiaKq1FCHTlWPO3z2UdjhG3aAq/ZrQJcOBQICLHpRaAAAgAElEQVTF4XWanAnW/BEiijXpq1LkhaBpGi2uEJ/5UH4zzEIQjiSKVgfFYjFGRkYAOHr06DaJdbbumi4T9fv9KWJUUZSUx4peiJnN5nw+qjmhqkrWz9DpcPB/f/ptnLi2o6T95uuoJBIJvvKVr7C+vl7Q/uLxOGfOnOEzn/lMxvY77riDZ555JuvvPPvss9xxxx0Z2+68806+8Y1vIMtyyRFte7g6KIfQrqRvRSWR77h0n4S5uTm6urro6+vLatApimKGIaD+LNEJjfn5eWKxGBaLBZfLRTBu4YEnJULsQzCX9wxRElG6axb42H2NWC1Xj7xYWlpiZmaGIwfaedttbanzlCTIHXi9bmZnp1MjncX4VOkL8eHVFiRj/vQHXbEyH4b5lGLFjFmopnksyoffGqO+pjKmmFuhm5DfesrFrVf4uuSzJMCFkSnOjUWYWzcQlKuSpEb6Aj62wB/fIVUk3vYXL2zwyHMWJMuVcaQxeHIsqeww4aPBGaO3TeLYoJ2e9qQaUlcRTExM0N7ezokTJ0q+7nfyk1he9ZKIB3FpYwRCVWiGegzm4j0TEvEAN/Wv8x/uKF+lEo4msJWQwqL74LS3t9PX15dxvtJVoOlmoVs9JLaSO+njSMGQzN8+sI5b3l+0SmUrRKODOss673pDaUO8uXw10gmNubk5vvrVr/LGN76xrGMtpeZ4PWOPwCgC+jzSysoK3d3dDA4OFnQjKkaeaTGVVrUX6oERCEbz/owuCUwkEqm5rnTFRT6DzmwLl6SBU4Czl9dZWI5iEozEFA1RKm1EQNTC3HurjbfccPWMMGVZZmJigkAgQF9f37boxGwzbbIspwqwtbU1wuFwxlx9OqmxsBrmCw8ssx6yIwiljwYIogFZtVDtiHNTmcqGot/7ysOmr7uV7q4mpqenWV9fZ9++OiIxjedfcTMxH+NYT4T6ahPj45GSZz5VVeVrP1jgucsCzvqa0g3RChghkYpU+qSP4dx7VzP3sqlYWVv38cKldYZn4qx4DYQSVjTBlrMbJqph/vAuFzcdKf+7//KIl797xENcsyJqMapsCdobJIa6bZwcqs7ardI0jcXFRWZnZ1M+OIUil1moTu7o40jxeByzcJxwwlqwQXFqf0pmR1sQBN5882H+z7+8vWxybCv0/Y2MjPDJT36SW265hYmJiYJ+d319HUVRaGrKLBSbmpp4/PHHs/7O8vIyt91227afTyQSrK+vp0a89vC7j9cq2atY5Kp30g3OGxsbOX36dErNWYjPRfrCRTe/0++hgUCAx59wk4ibSCiLiOaGgmuijGNUFVziDH/+3mpa6q/etaQ3j6qqqjLGDGBnT41AILDNpyo9/UQnNX7ym3V+csaW9Ecog/M0mKuIR2Mc6xd2jbzIBf1ZcuNxJ9cOJscyLBaZ1lYTozOznB0OI8txTl4TRYzZmJ4uLdoWYH4lwlceCRAWupAs27+bBpMTFScrMViZhN9MghIPIakerKKbluoYbzo1SEdH5VUq6fX2YH9ym65YGZuZ5+xwiOlVCX/chSLVYTBX5xh1Vqk2TPMf76ulxlU+efGPP1jiwkILICCpHmpsUfY1wbW9Vg73uTBI248hPVHtyJEjRY0j5fKQ2DqO5A+r/Ph8N1j2I5RZDyjRVT74RpnThyt/r9Bri3/5l3/h61//Op/73Oe4/fbby9pnKTXH6xl7BEaBWFxcTDGo119/fVGFcDEEhrXEZqq0w1hBOoKhTQJDEISMKCt9Qe7xeDKUJVuTRUpZBOgGTm++oYY3X1GpJhIJRibXee4VD+PzCTaCRuKaHXGnEQklxg1D8Mf3dJa9GFlej/DFBxZZ9lswSzEaqqCvw8yxQSdDPbmZa90PZGFhYVukWj4YjcacpEYgEGBiYoJwOMzzI0ZeXmjOjB8tAZqmUWMN8on3Ne+6P8JOx6A7ube2tmbkru/r3OyKZJv5NBgM2zLEs53r5y64+eefFKZSyXu8BaSQFEtgZIOuWOnssNLZkZmlPj+/xFNn5pnfsLAWNBOMW1Ex098c4mPvbqWqyrnDnvMjEkvwt9+aY3LViiDYEQTQBCveKHjn4JU5eOAJD4IWw2mRaa2TGNxn5XC3Ec/qFA6HgxMnTmyLEC0F6QV5c3PyPGiaxpEjMbzeBS5NBLg0o7LktRBWqlDE6h2N7pQ0AqOmuoq/+at7GOrfHYWWLMt84Qtf4N/+7d+4//77OX78+K68zx728FqgnFlyHdkUGB6Ph9HR0aTvww5qzmLfW7+HWq1W/uy9m6RGMBTg+YuTXBiPsug2EVarkSwNO5KhYnye+26TODJY/r3isefX+dHzFlTBhFX001IjM9hp5PQhJ3XVueub9DS1oaGhbX5quZDrHqqTGm63m+npaYKhOD96uQ3FeoASe0cpKHKIQy3LfOTtzRikqzNmoJvK+3y+jDHuUzU1nLou+TNbo23zkTsZ+1c0/v7hZYZXW5GMdUU1RSSTHbAToZ3JMEz+Chy/muL/+sN6zKbdGePVoStWjh12cexwcpuufrxw6XnOjoZYDbrwx1zIYh0CCd521MObT7WUNY4E8PKon3/5mQbmdHLMikcBzyKcWwT1V3GQ3VRZwnQ2wFC3mdbqEMuL5SeqpcNgMGRVgZ46FmRlbYyXLvsZX9Rwh9PNQvOTW6oi0+Wa5ZN/1JQ3irZUTE9P85d/+ZcMDAzw9NNPZzR99pDEHoFRIFwuF6dOnSqpYC8m7sxmLk2BUegISTC86c6fXmjMzMxsyzhPV11A5TPXDQYDQ/3NGYsLWZa5PLHGr19aZWpFxR+1IWNHEAy01/j483e30NTgKus4ojGF+783x8UZI4LoRBAhrhlZ8MKCF564GEVTA5ilGI06qXHAycFuF+vr60xMTFBfX583Uq1QZCM1jh2TmV1089yFDUZmZdb8hqK8JCCpUvnAbQ7edGLnWeRCcGHUxzMX/VzbZ+fYgSpMxsL+7lAoxOjoKEajMa+Te7YUmHRyJ12xohcdCSz83SMelv2OslQq6SjExLMSBEY26CqvQCDAvXdflxpD2ZRHKszOTmecB/1cZPOayYafPrPKQ09EQLTvSI4JggCChUDcwsgSjCzBD59NoCmN2M0yzTVzvOX6ao4frHxXSe+2NjdbaG5u4s03Jrcnz8M6o9M+zk/KLGyYkp0lsRrJlHzAq0ocQRS55/ZjfOZP31DxY9Nx8eJFPvGJT3DnnXfy1FNPFZ1SUF9fjyRJrKysZGxfWVlJLUK2orm5OevPGwyGvKOMe3j9oRLP00qQDrBZD5RLSqY3bHQ1p6IoHDx4sGg1ZykQBAGnw8Zt13dx2/XJbZqm4Q94eebcCmdHQ6wH7MSEOiRLA2rcy80Da7z7zW1lj2BdngryTz+JIhs7ES0gAjLVzAZh9lX42SUNJe7FJvlpqUkw2Gnk+sMuXHaJqampVLpbJa7lXKTGyRMRXr58mXOjYebWDQQSVWBqLMhLApIqlWpphk98oIb6mvI7z9/5+QqSKGSMXeQ9Bk1jeXmZ6elpOjs7t40ZpGOnZDWd3NFVf+mjjOcnNX7wfPkqFYBEzMOd1/q555arZx4aCAQYGRmhqb6Wj58YQpKktPMQxu+PcfHixdR52Jowl+8ajUQVvvjdVRZCXYjmne8hyQSUZgLApbXkS1UTaPEanOdDtNcv8Udvayhp/CQfdHLH5XLRd6U01s/DxsY0Z0d8DM8qrAVsRLTqK2quTbZPiy7xJ28RuKZ/dxRaiqLw9a9/nW984xt8/vOf5w1veEPF7o+l1ByvZ+wRGAXC6XSWPG9qMBiIxXLH+qXDXiIrXqhcMhSJb/6OJLG4uMj8/DzNzc2cPn06dVMrtzNSKkKhELHAArcdd9Ld3Y3JZEKWZVbXPMRjZlaWppmaSHpJpI9dWK2FLey/+9gSj74og2jbceZTEI3ENSPzXpj3wq8uRlGVAEYhTHNNHQNdFmoaFGpdu8OkG41Gerqa6OnafODJssz8kodnL7gZmY2z6jcQTWwnNTQlzqlBjT99Z/kqFY8/zuf/1zxzHhuCYOaFsQT/+L9XkYQYtQ6Vfc0Gru1zcOxAVUZEpqIoTE1N4Xa76e/v3zZeUyhyKVb0Wcef/GaVUEhCVDVUwb6jCVmhKITAqLRZrG6WOzk5SWdnJ/39/RmfaS55ZDavmWwRdAArG1E+960FNsIOBLF0N3dBMhOSjYhChEM7KJV2A/p5uL6ujmsGQwwPD2OzRWlshPnlOc6NxZlZinD3Hx6jd18Ds7OzKZKnEmoRSJIof/u3f8vjjz/OP/zDP3DdddeV/LccO3aMxx57jPe85z2p7Y899ljORJHrr7+eRx55JGPbY489tk1mvoffHuyUcJYPlSIdYJN4KHdfkiQlGxGXL+P1eunv70/dtyqh5iwFmqbhca9TbVrlj39vf0pC7fW5CYeChEJxzp8/jyzL2O32DJ+qQq4rjz/Ol7/nZi3WgbjDzwuCgMFcQ5waZgIwcwkefUUjEfVgFux01NsIiQJv3iUuUo/xvOFYFzdcCS9IJoqFefnyTNJLYk1KkhrGRgymLaRGbJH73gzHD5a/2HnmgocHnpAQLMlYeX3swqB5aHDG6G4VOT5o32YiqS/EHQ5Hyfe9XORONBrF7/ezsLTBU+dAUOLIUQMGc01JNbCqyLTZZ/nEfQ3YyjCKLAeJRILx8XFCoRAHDx7M8ObKdx58Ph9zc3PEYrGUga5+baSnAv38uXV++IIDg6WHUkswUTSApQF/VKKvPbgr5EUupJ+Hjo5WTi4tMT09TVeX5f9n773j7Krr/P/n7WXmzp0+md5nkkxCSIEkRBRBUMECUhQFVneXlWWlKcq6a/tZdtWVpYhI+aIrVToIIkhAAiQhpNfpvc/c3sspvz8mZ7jTb5uJu87r8Zg/MvnMvWfO3HPO+/N6v1+vFxrNMEfanRzrjhAOS3xsq4CRLIaH/XH72MWLjo4ObrzxRtatW8fOnTvjnsCKF8nUHH/NWE4hiROiKCYdMzY2Nobb7aa+vn7BtW8cVvP8rsRvyLIsc/DPP1xwXVNDCQ/+/BocDgcHDx4kPz+flStXnjTNW9yJi/kQCATo6OhAkiTq6+sXvHBjDTI9Hg+BQAC9Xj/FxCqW1Hj/mJPf/NFJJC3JDxHOapL5h8+ULlkBNh2KEdrQ0BBmSz7He0Ra+yIEwjKf2BCmtOgDcmcu2cVC+O0fBnj7KKji8CCQZQmNHCInU6TIKpBrcvHhjSuoralYks+QIAg4XW72HbdztDPIYHQLyWpvQr5xTuy8d94161aXcc+PrpzyPacnwn89OsCIU4vZIFCap6Kx0sjmNVZKC+fubgWDQVpaWtDpdDQ0NKQ0whmb/KF8ARzrN/Jua15cf8uFoMPPP1+Sy+mNibuopwNKJPDo6CiNjY2zkmOx8bZerxefz4coipjN5imdpUTP9aFDh7jpppv4zGc+w7/+67+mTBo8+eSTXH311dx7771s27aN++67j4ceeojjx49TWVnJNddcA8DDDz8MTMSorlmzhmuvvZavfvWr7Ny5k+uvv54nnnjir6EAWU4hSQKzJZzFi/3799PU1JSQVnwuHD58mNra2rjS0uaCKIr09PTQ1dVFU1MTxcXFSzLNORcUYri7uzuuFK4PDDI9k1+CIEzGYitfCskjiDIPvTjCkaGitCQ/qMIDfPkCLac3Li0xHItgMDjpQ+ATsjjaJdA/rqEg08t569VTNrGJTp0BjNhC/PI5N16pMi4PAjHqRyu5yM0Ikmt0U5bj47wPrVySkfrJZLUhJ3uOe+gaknEELQjqXLTG3HnNt1XhAf7pQh2ra1M/zncPOXnybQ0yarIMfsrzJZqqDWxanTXnRj+2KVJZWTl5LSYLxUBXqbuDwSAqtZYX9hUQ0K5K+XqWJIFiUy+3fL4Qk3FxJTZzIRgM0tzcjMlkoq6ubtbne+zew+v1zpiGVRpHiewNRFHkvvvu44knnuCuu+7i7LPPTuevNQUL1Rx/pZj1w7VMYMSJVAgMp9PJ8PAwq1evXnDt+21qHn4juaL40Pb/RBIj866pKsvl1r/fNFlAVFdXT+aupzLS+druMV5424dRL1NeqGFtbQZb1mZjyZj/d4lGo3R3d+Nyuairq5virpwoFA8F5SsYDOIP63hpXwaeaG7KN1hZEqkqCHHzlWVYM09dt9Nms9HR0UFhYSGVlZUzCjJlQiGW3ImVXSis8Vw32Fg/iVQgyxImTYDvfqWY4oLU8tsTxU0PmEg2hiToHaV5133zrtm4toI7f/D5yX8/+sogbxyU5oy4lcUIZn2EFbkqGsqNbFptobrETF9fHyMjIzQ0NKT02Z8Pyma+u9/B+ye8dA2JOAMGwpIZ1Ma4rwtZEjijXuC6S8tSJu6CYYFnto9SXWJi4+osTAuMnCrwer00NzeTl5dHdXV1QscRq4VWvmLHZWOL8unnJBwO89Of/pR3332X++67j7Vr1yb0+86He++9l5///OcMDw+zZs0a7rjjDj784Q8DcM455wDw1ltvTa7fsWMHt9xyC8ePH6ekpITbbruN6667Lm3HkwKWCYwkEI1Gp0TyJoIjR45QXV2dls3c8ePHKS0tTWpaTknM6O7upri4mOHhYbZt25YycREICdz77Dh9djPZ5iA1K+D0BjOn1VlQq+d/HbfbTXt7OxkZGdTW1iZNDCv3DeV56vV6EUWR5kEz+wZq0JpS1+sLIQcfO83LJeecmi49fDA1qcTaTn8eTUxqBKfUFtNlF/ORGoIo88ALI5wYKUYTp1xlzmONBqjPH+amzy+90aqShjM44uTdgzbaByU8kWwETT5aQx5i1MeZ1SNcc1FpyjWn3RXmzqeduMWqWckeSRKRI04y9T5Kc0VWV+k5oykLnVqgpaUFvV5PfX19yr4WcyESieB2ezjQ7OBYd4Rhl5GglI1Kn5/Q31gKjfDlC2Q2rky9KXK0w8OxriAbGjJorIqPVJRledLXLplaTJmGjY23BSYj47OyssjMzJx1uq21tZUbb7yRzZs386Mf/QiTafFr5flqjr9SLBMYqSCVvHav10t3dzennXbagmtbB+CXLyXn5nz0rduJhn3zrsnLNvLwHX9HTk4OLS0t5Ofnk52dnTRxcbTdzf0v2gkIM28UsiyjlkNkmwUqVmg5rTaDzWuyMZu0SJLE4OAgAwMDaWGH50I4HGb/8TH2N3voGZVxB/UIqgzU6sQICIvOy79cVkhDZeqF4t7jTrItuoTztRU9sVqtpqGhIaGuWyyp4fV68fv9M0gNX1DDnU8OM+pNbmIjFrIsUZYT4OtfLEs5dz0ZpEJgBDzDtOx+YN41m9dX84vvXMaJLg/3PGMjJCXefZPECAZ1kBW5GurLDZy1Lpua0qUxWpUkiUAgQP+wk/ePu+gYELH79ASnxdsqyNT5+PoXi9JiBPvm+zYe2+5HPiljkWVp4j6RIVFeqKGp2szmNdlkxZCEkiTR1dWFw+GYTEZKB2JTDJRrIxQKodfree6556iqqiInJ4c777yTK664gltvvTVtUpT/g1gmMJJAKgTGiRMnKC4uJicndR+a1tZW8vLyEvZfsNvttLe3Y7VaJ4mCnTt3smXLlpQmLn73xxHe78pDa5i5qRGFEBrRSY45QG2xio2NGZOd7mAwSEdHB4IgUF9fn9JEyVyQJAmbw8uuQzaa+wRG3SYiqly0xryEZIxiNEh9wRDXXVKEIUUzwHBEZPdRN+sbMrFa4n/mKukw3d3dlJWVUVoa/2RprNxgOqkRW1u8c8jHC3uMaNIgoxDCbs5Z5eDyj506P4lIJEJ7ezuRSITGxkbMZjPhcJjhMRc+rxcx6icQ+EDqrJyLROQGj7wywntdBWj1iT3rZElCCDswa7yU5kmsqtTx4Q3ZSybJiEaj+Hw+jrTaOdIZYsChxy9kI+vyZ0wpiUKIVYWD/PPnVixISC6EcFTi7qdG6fNUTBpxitEAGslFjjlI9QoV6+pnkp9+v5/m5masVis1NTVp8bWDCULQ5/NNaZhIksTY2Bh79+5l/fr1tLS08Oqrr3LPPfewZcuWtLzv/1EsExipIBUCQxlL2rBhw4Jrh+3wk6eSIzCOv3sPYb993jV5OZm89NuvIcsyXV1d2O128vLysFqtZGVlxX3xjtiC3P3kMMMe87xjdNMxsVkJYtL4KctXsfX0AjavyZvin7DYCIVC7Ds+zv5mD72jMu6Q4aR/wswbvFoKcPlHzXx8a+pdls4BH798ahRPZOKBJIsRTLoIRTnQUGHkjFVZ1M1CagiCQHd392Q6TDqKVZhKatjsbh79iwp3yDLrBjYR6FU+rv10LhtXJ+d7kQ6kQmD43YO0vvf/5l2zdUMNOSUbaBs2psV3w6LzcssXT21STH9/PwMDA5gteTT3CrT1RRn3aqkvjvCpbdZ5JxTigdsX5ae/62fEszBBJssyKjlEllGg0CphNTg5a10ep6+pWZLR83A4zIsvvsjTTz/NiRMnMBqN5Ofns379etavX89VV1217DkxE8sERhJIhcBoa2sjJycnoSjjudDZ2TlFC78QfL6J6EqFUM/IyJicuNi9ezc5OTlkZWVhtVoT2rht32PnxT161MbENqhiNIgqasOsdtBYoePsDfkJNwlSgSRJjNvc7Dzk4ESfwLjXTFSdi9aQN6N7rsS1fu1z2azIT13+8/QbY7x1worWkIMsS4hhJxk678muvI7Na6xkzTINq/hJpDqlEovppMbeE152dZUi6wpSktlIYpSSjD5uuKyATPOpIZGVTv3AwAC1tbUUFBTM+7meS24QK3WeLvE91unh/70iIhtKUz7edBIEySIcDtPS0kI0GiUsWznSGaHPpiEsGLhwg4+GKuu8EwrxYOchJ0+8rY+LIBOFMGrBidUYIMfkpSDDySc/XE9+fvrNyKdDkX4//vjj/PnPf2Z0dJSsrCxqamrYsGED559/Plu3bl304/hfiGUCIxWkQmAIgsD+/fvZvHnzgmuDEfjmQ8kRGC27HyTgGZp3jSXTyCu/u2FSLhKr91QYwljm3GKxTGHjg2GBXz01wPF+HaoEpxhmg1nr47qL81lTd+o0nxPZ020c7fAw5Mpk0K7GG9ZTXeDnio9ayM62Jq33BPAHBe58op+OkYU3ux+QGioaKvTUFAlIwSHKy8spLU19JHEhCILA4IiD9444aO6NMObWztmVn3nsYT56upprLkr9wevxRfnvx/tx+yckSU01ZraszVlQuiMIAp2dndy7Y33S7+1z9dO25zfzrsnMLqO4/ryk32MSYohPb9VzybmnzgHa5/PR0tJCVlYWtbW1U0jM2AkFpRBTJhRiO0sLmeg+/+YIf9gdnVNiEzfEEBUFAt/5h6q0G6nG4r333uPWW2/lS1/6EjfddBNarRa3282hQ4c4fPgwN9xww5L5A/0vwjKBkQQEQUjaILy7uxuDwUBJSUnKx9Hb24tGo6GsrGzedeFwmPb2dvx+Pw0NDZOEeqxBp+LFEytj1Gq1k4TGdBNAgBOdXh56NYygq0j5dxGFEFXWQW64vHDRIyvng9Pp5MDhZrrHjAy5M7D7zEho+eiqcc5oypncuCXb9T3Y4uZ3r0sLbnZlSUKKTJAaJbkiK8vV5BntIAVobGxcdD8J5TlytG2c/S0Besc1+CJZyPr4SA1NpJ9/vFDP6prUj/O9o06eeVskwyBQvQJOrzdzWv3CkiSPx0NLSws5OTkpdernkvjqDZm88L4JW7Q+rijPhaCL9nLjpRlUrEhNrpMsZFlmcHCQ/v5+6urqZpCsirQ1luCRJGmKia7FYpm3UeDzR7n9STv2SGVKjSRJjELUyafOCPPxrXkL/0CSiEaj3HHHHbzyyiuTseuyLNPT08OBAwfIyMjgE5/4xKK9//9iLBMYqUCWZSKR+f0l5vvZ3bt3c9ZZZ8W1/mu/1pNM97ht7+/wOXrmXWMy6nj1kRvnHOmMNb9TbiowkcKy44ia9zvNqFINEGdisuHSj5j55Lb05D0ng9gb7HQZy3yjkbFmXgt1LBbyRojrOE+SGh9aa+CLn0ydHEgUgiAwNOpk92E7zT1hRt1KpKv5pEGbRHlOgG9cVZ4Wb5DHXhlk+yznbLIrbxIpy1fTVDshNcjN0k8bg63gF39a2DB3LngdvbTv/Z9511SWr6C06jScAQMR2Yw6wWtCliUq8gLc+qXyBX1i4sHxTg/1FRlxx9vCxLWuaJ5XrlxJVlb8JGI4HJ7RWdLpdFMKj4yMDEZsIX726DCecBrMc0+es9uursBsWpwOXCAQ4Ic//CFHjhzhgQceoKGhYVHe5/8olgmMJJAKgdHf348sy1RUpL7pHxwcJBqNUlVVNev/KxHPo6Oj1NbWUlRUlJBB52weVQaDAYEMXng/Ay81E0kEKUCWRCzqPq6/JIvSJfZdikUoFKKjo4NIJEJDQ8MUGctcNZaSHjVb42g6bM4wdz/rxClUok5y46aQGpl6L1/9dCbVpUu70VVqrGPtNvY1++gdU+ONnox0PUlqCGEn5za5ufTc1OtEuyvMXU87cc3iJ6F05bPNAaoKYV2DiXX1WWg1KqLRKB0dHQQCE2TPYkiSBEHA4XKz95iD4z1RRlxGQnLOyQjPxKZihLCLj611cck5qZ8zpyeCwxONO95WgSLLsFgs1NbWxj1ZoUhbY81CBUHAbDZPXhdKrOsrO2388UAWWkPqk75C2M0n1rn49IcXz4MmNnb93//935NuiP6NYtbaYlnMuwRItFOnIrnqLp4oVUGQ5n0wxmYkKxBFkcFhB6jtFGR4cPhDCGQkxRLLYoStq2T+8eLUIz4jURGtJrkoNofDQXt7O3l5eZxxxhkzbrAqlQqTyYTJZJqMXIslNZxO52R2eOzNVSE13jvq4LevuInKGahSbQCpVKyu0nLFBUtvWAUT8XrlJfloVVEqcnqprKykoKCA4TEX7x2xY1CHKbIGaQ1dE6oAACAASURBVD1hmzK9k5GRkdDf5mi7m3uftxOWMmc9ZyqVClQmPGE4MTjx9dQOJyophEEToCBLZNPqSqpMKWbQxRGjurImj+/cuG5yiqm9x8beE146h0Sc/glSYy6iT4ufaz+TzRlNqU9ddPT5uOPJMYJiJrIcQEOInAyRqhU61tRlcMYq66ybfafTSWtrK8XFxWzatCnha8hgMGAwGKbo5aPR6GThYbPZGLX5eHaPlaBoTTpaTYFKCvAPF2ax7fTFmVSRZZmdO3dy22238ZWvfIU77rgjbVrYZSxjPqQyyaPVagkGg2k5jrleSyH6e3p6KCsrY+vWrajV6oTj1vV6Pfn5+VPuGeFwmD1Hxsg2Bgm5OwjJOWiN+Ul1U1XhAa45X8PGlal7I4QjYlKTG6Io0tvby9jYGLW1teTn5884J3PVWAqpMTAwgM834WUW+zzNzMxEklU8+MIIx0dWoNHVkEoJpVKrUasiXLxNt+TkBXxQY61bWUSG1kso5KehoRSNJszx9kGOdPhYVRIAOcLBg4NTyJ1EU3d++9II+3oL0eprmE3xrNEaQLsCtwSHRya+pL9EkCN29LKN6iIDW04rxmBYnPOk1WopzM/jonPyuOjk9wRBwO0eZ+8JO8e6Ioy4DASlHFSGfDTamb+/JIkUGHr4+pfyycxInbx48vVR3m7NR6vPPhlv6yIvM0RtiZr1DRmsqp5J5EiSRE9PDzabjcbGRqzWxEw5lRj4WJJIqbG8Xu9k3b2vTeLwaCMaY2pkkixLWNU93PrlXKyWxSEvIpEI//Vf/8Ubb7yRUuz6MmZieQIjAYTD4aR/dteuXXFPYNx4nx5JTryo6TnyPI7hI/OuUatV7Hj61oRfezoEQWD/sVH2nvDQPSLhCurn9JGAic5ITVGImz5fNsWcL1n87uVB3josgUqDXhOm0CpTV2Zg0yoLTbVzd5IVI0yVSkVDQ0PKjr+KM3dsZ+lP+1R0OUpS9kaQZZkii59briyhKC/1qZdkoehkLRYLNTU1c470KU7MsdGVarV6QVLD65+Qi/TYEvNTmQsWnR8sTUn/vMfWScf+R+dd86nz1nLb9bOP+smyzMjICPsOd9BvNzFg1+Hw6YlIRhpKAnzlogKs1qyUog8FUeLu3/dxtFc/5zU3cSwSajk8YaRbpGVlpYFcow0NEVatWrXojtfKZ+JYu51DbX56x8ATMp6cWlmYcJVliYYVQb5xVUVC0yWJwOfz8f3vf5/29nbuv/9+amtrF+V9/gawPIGRBFJJOLPZbNjtdhobG1M+Drvdzvj4OCtXrgQm7mNK4lVubu7kvX8xI1FlWcbu9PHuIRsneqKMeWLMMed4NoghO+ev8/LZj6S+aRuxhfjV8y5cYiVS1ItJ7WFFdpRVlTq2rLGQlz1HylTMBGBJSQnl5eUpN2hiZTher5ehUQ9/OFyJOqMupdcFECIeNtfYuebCU2eEGesnUVNTQ2Fh4ayfo+lGyx6Ph3A4jNFonJF+Mv3n951w8fB2FSpj6s0fUQixrmSIay8+dXLPaDRKS0srR9rdjHisDLuNE6SGCj613sWWdXlYLJaUyPfOAT+/eiGEqC+fd50YDaKRnOSYg9QUq6kvFiHUR3HxCioqUm9QzgflM2FzuNl7zElLv8S4z0yEHNSGfNRxxMULIQeXbPbzsc2LJxk5ePAgN998c9pi1/+GsSwhSRWp5LXv2rWLrVu3xvWgv+UBPVEx8YKg78QfsfXvm3eNCnj72W8m/NrxIBwO85c9vew97mLca8QXMSOrzWTqPFzzcTNr6gtm6F4TxY59dh7b7pk34lOWohg04QlzzDIDZzRlUV1iTFtc60KQZRmny8vuw+Mc7QwyaFfhjxiRNRlxb9B1Kj9fudDKlrWpH2d7n4/n37JRXWJgc5OViuL4ugjRaJTOzk58Pl/SOtnp8VLTSY03D0R584g6LbIkpBCf2arnvM0r+M6jyXdK3OPtdB54fN41l3zidL5+7fkzvh+JRGhrayMajbJy5cpJgiB2ekc5F0oRFkvwxGOQufuIg4f+6EFSJfc7KulAFpPI6kod//S5+QuVdEPpNrb1ONjf7KV7RJqcWlFrPyBUNLKff74khw0rF8cMVpZlduzYwbe//W2uu+46vvrVry5q0fU3gGUCIwmk4q/lcrkYHBykqSl5wna21/J4PLS2tmIwGKivr8dkMk2JWk82tSwZyLLM0KiL13b20zmkwivkIGjyUan1VFm6uObCbPJyslNKBwpHJe57bpR2Wwka3eykrizLiBEXZo2HkhyB1VV6tqyxgBRMS1xrPBBFkc5eO+8dc9MxCM5QBqKmAJ0xvk63JEYpMvVx4+X5s5p6Joqnt48y6pRYU2PgzKasuJMuXC4XbW1t5ObmUl1dnfCGez5Sw2KxIKvNPPIGOMXqpCU2sTAIvXztc6fOTwImpobb2tpYsWIqQTBdkuTz+ZAkaVKSpMguFro+BFHm3mdHaLOVzjrhEQ9EIXRSihPkU1uNnNm0tEbu4XAYh8vNgRNOTvREGXYbCUk5qI0Fk7+TfHJS5RtXFixaMksoFOKnP/0pO3fuTHvs+t8olgmMVJEKgbFnzx42btwY10P2mw/pCUYSLwwG27Yz2r1zwXXvLAKBEQgEaG9vB6Curo6MjAmCYS7da6yPRDyd6M4BH/c8PYorlJlU0SSJEQyaECV5ak6rNS+5aeJEZ8nLrkPjHOsMMuRQEYiakDVTpw7SaYQZOGke2j7NPFQWI5j1EYpzVaysNLJ5jZXymAezLMsMDQ3R19dHVVUVK1asSGuhqpAavYNO/vCuj1GXhoBgBo0pqQkMWRKpLQrx9S+WYzZpcfvhe48lX2i4xlrpOvj7eddc8alN3PCVj35wDDHnbL5u0pTjPpknH0tqhEIhDAbDFFJDIf08vij/9Wg/A870TKpk6nzc+sUVcRNa6YYsywwPD9Pb20tdXR1Go5Hufgf7mj3YXRG2rYqQmZkxpQhL1+bA4/Hwne98h/7+fh544AEqKyvT8rp/41gmMJJAKgSGz+ejs7OTdevWpXwcPp+PtrY2tFot4XCYhoaGyRHwWIPOpSIulPdVJhuKi4snN26yLOP3+6f4SIiiOMNHIp6N8TNvjvGXY1lojYk3C2RZQgg5yNB6KSuQOH9j5mSc61JBEAQ6euy8d8xD5zA4g5lIunx00+Jn02mEeajNw/+8NjUpQ5JE5IiDTL2fsjyRtbUGzlg9ldRQDGCj0ehkck26EPs83XHAzsEODZ5o1sn0k+R+ZyFk51Ob/HzyrBRlqSlAaYoIgkBjY2NcU5OSJM24PhSDzNjnqTIR8N5RJ4/9RZtw8s9sEIUQq4sGue6SU5d8opwzURSpra0lGAxxuNXJka4w+RkBVpYzZXonUbnzfNi3bx+33HILl19++XLsevqwTGCkilTizg4cOBD3yPa//Y8eTzDxC3+k8x2GOt5ccN1rj96E2ZSejUA0GqWrqwu32x33ZMN0c0yFOVfcyWPNMT2+KHc9OUDXaHriKk0aH9ddnMfa+sS0eemEKIp0d3djs9nILyzlWHeYY50hgiGBj60Lkp87tQhL5gb41OvDvPp+FOKcbJDFMGZ9lEKrSI7RzfoGM1s3NSzZzVcURUbGJoxCT/SET5IaSvrJ3A8Wo9rHv1yaP0U2ZPfCD59IgcAYbabr0FPzrvnSJWdy3VUfAT5I8UjUsGouTCc1gsEg/TYdfzpSgEqTuuRDFsN88kwtV5x/ajxV4INoabPZTF1d3aznTNmkxI5RR6NRzGbzZAGWaDqQLMu88cYbfPe73+WGG27g7//+75enLtKHZQIjCaRCYITDYY4ePcqmTZtSOoZoNEp7eztDQ0OsW7du0rthMeUiC8HlctHe3j4pXVyIvJxt0ybL8pzmmPuOu3nkTQnSElcZpso6wPWXLl5XNx54vV7a2towGAyI6mz2tQToHlGxIsvD5kZpSuMokWhbBU5PhLufcWCLVMRluPoBqeEj1+Ql3+TkvC1lVJSntykyFxRS40SHjb3NPnpH1ROkhrYArWFuUkMSI1RY+rnxivSk2Dz66ii723NRyREseh/lBRJrqg1sWj331EqsyXxtbS2FhalJpGINMmNJv9ePZDMurUtLfa2J9HPDJaZT4qkCUwnPmpqaSf+66Zg+Gez3+1GpVGRmZk7WFYmmAwWDQX7yk5+wb98+7r//flatWpWuX2sZywRG6kiFwDhy5AjV1dVxjeF//1Eddm/iRfVY7x4GWl5dcN3v7/lHSosnos/ePmDn99vdaNRQWqCiqdrM1rXZ5OfMvymQJImBgQEGBwdnJHgkirkSP95tNnFiOC/16EVAJQX5zDYjn/3IqdV8fpCUUUZpaemMzVNsEabcXGPHARfqLB1td/Pr5+2EpDQ4ZUshrjrfzLlnnJrug0Jq7Ng3wvGuIM6giaAwkX6CFOXDTQJ/95nKGedw3AU/fir5B6hz5Djdh5+Zd83Fn9jEzX//Ybq7u3E4HAmneCSKSCTC6LiLPUftNPdEGHVrCETNMyZ45oMsy6zI8vOtq8vIyUqdwHz7gJ1hW4RNqy3UlsX3eZNlmf7+foaGhmhsbJyMYIwXiudMLKkxXYqjmLxNvx+5XC7+7d/+DZvNxn333bdgXOQyEsYygZEEUkk4E0WRvXv3smXLlqR+XpIk+vv7GRgYoKysjOHhYbZs2ZIycRGOStz//CjtIxlYDEGqCmVOqzOwcaUVnW7++1UwOCHJEEWR+vr6lFIfJEmaIjPw+Xy4A/DnY8VEdA0z0igShSxLmOU+rr8485TKCyKRCJ2dnZPRtrM9i+aK74yX1Pifl0fY25P8NIMCSRIxSgN852orVsviyW3mgkJqHG8fZ+chOwMOPQExF1mXj9aQBaFerv2khqa6nJRJlhOdXh54JYpsmP1ZM31qZU2NgU2rskAKpbUpMheUJkFrt539LX56xjR4wlknz0X8TT4h4uVDDTauvCD1+joalXjyjXGKc7Wc0ZQVt9QpFJo4ZzqdjoaGhoT9JmKNdBUPt3ilOLt37+ab3/zmlNj1ZaQVywRGqkiFwDhx4gTFxcVxFez/8aSOIUfiD1b74CF6j7244Lp7f3wlxoxsfvXMKO7wTEnGRFxlmCxjlPJCLWtrzWxZm01W5oSB1/j4OF1dXRQWFlJZWbkobv2yLDM05ubdAzaae0KMujWEBDNoEvPQkKUop9cIXH9ZGTptascpSRLvHHDSVJu5IMEzHYoRZjI62bnGAWNJDUll5K4nh+izp0deYNL4uP5z+fMaoi42wuEwbW1tSJI0abiqkBoerw8x4pv01Ig9F96ohZ8/m/xoqmP4KD1Hnpt3TW7penKKGjFqQpTma2isNLFtXTalhUsX3ReNRhkbd/L+MScnekKMODX4oyZktXlGN0UlBfnS+RlpIaPcvig/e7ifYXfGB7HDJ6N+C7OhvszAxlVZrKyeWuj6fD6am5vJzs6mpqYmbfeNuaQ4Go2Ghx9+mHXr1qFWq3nggQe49dZbufrqq5enLhYHywRGEljKiPbYnxsbG6Ozs5PCwkKqqqrQaDTs3r2bzZs3pzRx8dT2MXacsKI1zqx1JDECUQc5pgDVK2B9o5nT6iyo1RNxlT09PTgcDurq6sjLWxxzPVEUOdQyzt7jXnrGNHijWaj0BXN6X8wFOTTCFR8W+dDpiZGws2FgNMjgeJgNjVkLEjxTjiHGCDMZuaeSHBVLauh0uimkxpGOMI+/pU6TEWaY6uwBvnZZeiYbkoViTltcXEx5eTkqlYpwOExXnx2DJjRFzjk9/SSe8xsMidz99BgDvoqE0/pkSUQI2cnU+SgvkGmq1rPt9BwMCXwuUoGS+tHR62DvCR89Y2rcYQuiJh+dMXvGWouqh69fkT2nwW0i2HXEyeNv6dEYJxJBZElCjDjJ0HkpyRFZWaFj85qsKQ2Y2EmVhoaGtN43pjcUlamVtrY22tvbWbt2LTt37qS9vX05dn1xsUxgpIpU8trb29uxWq1xjYHd/pyO7tHEb1bO0RN0H3p6wXVr1m8lpK5NaGRswvgviEkToChbZOu6Aratz8dkWDqmUZZlegec7Dxkp6UvzJhHS1gyo55FJiHLEsVZAW76QnoSPN7ca+OJ7V5EVcYkwWMxCpQXqGmqNbNlTfasXe1IJEJHRwfBYJCGhoakjDBnQ6xxk83u5uHtIs5g1kkfiRS6BmKICzfruOxjp05eoEz3DA0NUVtbS0HB/PFW093a+8dk/tR+ZtLvbx88TO+xF+Zdk1+2kZziNZP/zjZ6+cYXS5aUwJgOh8NBa2srmZZsukbVnOgKMezUYNYLfPE8A3m5ycXbxuKFv4zw4q5oXFNRiplugVWmwBJmRZaPC85uIDt7aYy9AoEAzz33HE8//TRdXV0YjUby8vLYsGEDGzdu5Oqrr16S4/gbwjKBkSSWKuEMJiaRFDJd8Z5RJi527txJbm4uVqsVq9WakMzg3UNOnno78Y2uKIRQRW0YsVNbouacMwpZWbW0PhKRSJR9x8fY3+Kn36bFL2SjMhTMGk0vhN1srXNw1SfTE9d677NjdDonjBMVgifbFKCqCE5vMLGuPgutZubfIDYKvqqqKm1dX8W3zOv1crDFzZvNxcj6IrT61CZM9EIv138245TJC2CiS9/a2jqZQjef/9p8HlWx/gnTSY0/7bLx8r7MpDxVpkOMBlhXOnJKk09EUaSrqwu73Y7OlM+RrijdIyrcoQzWldv5yHrLvEkw8cAXEPjv39uwRSoX3JcoZromtZfCrBBZ2nHW1Rs44/SlkTzLskxnZyePPPIIb731Fi6XC7PZTG1tLRs2bOCiiy5i/fr1i34cf2NYJjBSRSoERnd3NwaDgZKSknnXSZLEHc+KdNsSH5uMJ/4RoKBqK9kFqTGFKinA5eeY+cRZqUeXpQK73c7ufW10j+kZchqw+3SokPnkxgibmnIntWzJbth6Bv3c9dTIguahE6RGCKtJoLxQw5paM+W5AVz2YaqrqykqKlp0zackSfQPOU4SPBHG3VpCYnxTK7IkUrcixC1XThhhpooX3hrhrQN+inLVrKo0sWWtlRX5C2/uU3UnB+gbV3H788kTCbaBg/Qd/8O8awoqziS7aBVIIS4928hFZ5+66yASidDe3k4kMhGNOr0omysJJnZqZaFrZMQW5GePDOEOp7axkCUBvTrM58+1cO6ZiydNkmWZl19+mR//+Md8+9vf5gtf+AJqtRqXy8WhQ4dob2/n2muvXbT3/xvFMoGRJFJNOIuHwFAixEVRnCTTlfdUDDpjyWC3200gEECv188w3Y59nnT0+3ngZT8hdWXKzzhZkshU9XLjpVZW5J+66HBRFOno6GLPMRsjHitjXhMBMZsc/Rif/wgUFWTPei4SwfNvjbP9iGXBja4ohFELjom4yhXQVKVFKwwCMg0NDZjNi08IRCIRDp4YY1+Ln75xLT7BGvfUihiyc+FGPxduS/1+7/NHufsZG76QmooCibU1RjatzlpwmkOSJPr6+hgZGaG+vj6lLv309BOF1AiJGTy7JwtBn54YbqPYw82XZ1F8Cq8DJflEmVSJrRGmJ8F4vd6kplb+tMvGy/staA2pTTIJYTdZOgf/+qWcRZUm+Xw+vve979HR0TEZuy5JEt3d3Rw8eJCioiLOPvvsRXv/v1EsExipIpW89v7+fmRZpqKiYtb/l2WZkZERurq6ODC2kdaRxE0mfa5+2vb8ZsF1eaUbyC1JLtZHFiNsXinzjxeXotWcujFsRSeryAtiH+KxWjZlw6ZSqaYkOyzUhQ4EBe56sp+2IQOqOMyqZoMSV5ltFvjUNisfPQVeEqIo0jfoYNdhBy19EcbcJ6dWYuIqzVovX7ssPV2vzgEfdz05ii8687VkMUymIUppvoqVVSa2rs2enI5RJlVCoRCNjY0puZN3j6q588XkH/rj/fvpP/HyvGsKKjazYU0537iqPC1TSMPjQYoLEhxhPnnP6OnpiTv5RIGyUYklNYAp5piKidX/vDTAjiOgiiNbfcFjFsN8equWz527eBM+NpuNW2+9FVmWueeee+Y08lpG2rFMYCSJVAmMLVu2zPk8U/wRXC7XlBHrWJ8L5b4x2/0jEongdrunbNiMRiOyOoMX9phwijUJj8nPBlV4kKvOVbOp6dQZbCvSmu7u7hlxlfCBwfL0cxFL8CxkKnykzcNv/ywg6ZP34BGjQTSSk0JLkK9dmndKvCTC4TD7jo9xsDVAn02LL2pFbShEo5t49opCiNqcAa6/bEVa5A9PbR9jR3PODG8GSRQg6sBi8FNZILG2zsjGVdbJ93Q6nbS1tVFQUEBVVdWiyAfD4TCdfXZ2HfXQPaLGHbIk7COhQAg5+NQmX1qST4IhkVBETNjzSjH1DYfDU+LgF4IytTKd4IklQS0WCyaTCbsrwu1PuvCrqtLS3NNG+7jpUvOiedEsx66fUiwTGKkiFQJjZGQEv99Pbe1Mdla5wSqGPS/sMfPO8cQ3RUHfGM07f73gupwVTeSXJ+ZaLksi1YUhbvpCGdbM1IuVZCEIAj09Pdjt9oR0stM7S36/f04Dq8dfHWL7fiHuBI/5IIsRtjXBP158ag0Dlc9Yfn4+5eXl9A662HXEiRAJ0VQeRK1WJ0TwTEcoLHL3k/00D+gTInxkMYRZF8Ki97O2zsJ5W8pS7rx1DKn55cspEBh9e+lvfmXeNVdffg7/9IUzkn4PBSO2IP/12DCOQAbIAgZNmMJsqCszsHGlZU4PEiXFw2g0Ul9fn7Bh1WxQiL9YUuOlPTr6PYUpb1BkWabQ4udfr0mPgehc7/H888/zs5/9jO9973tcdtllizb19Pbbb3Pw4EHOPvtsNmzYsCjv8b8QywRGkkiFwNi7dy/r1q2b4askiiJ9fX0MDQ1RVVVFSUlJWpJFlE3KG3tGeL9VxOHPQNKeNEBMAmLIznmn+bjknPmlgosNJcHDZDJRW1sbV7pRrMwgNlXNZDJNqS30ej12V5hfPuvEHq1EnYbEB1V4gC9/XMvpDafOp0qSJHp7exkdHaW+vh6Tycze4+McaQ/SUOwnyxieJHhiJReJ4ESXlwdfiSZE+EhiFDnqwICDPLOPbacXsGVd/pL5SMBJD69uO3tOTJAanrDl5HUyO6khiVFKM/u46fJCTMbUPx+v7bbzh70ZaAw5iBEXZo2H4hxhwkeiyTKrZ0Ws0Xw6J4djSQ2v18vweJCXj9agMpWnfC0IER/b6sf54scXr1GhxK4PDAxw//33L1rs+nJdMSeWCYxUkQqBYbPZsNvtNDY2Tn7P7/fT2toKQENDA5mZmciyzB/3anh1f+IbhkjQzbG371xw3WlNNRSXrWLIqSIYNc3rmyDLMtlGH/9yaRF1FaknWxzv9PDr5234IwZM2jBFOSpWVhrZvDaLquK5u+6yLDM8PExvby/l5eWUlJSkzH5Od+UesQV45r0cBHXqplyyLFGeG+CWKxdvwxYPFCNMJUN8rnHTWIInVmYwneCZ7Zz/8Z0xnnsniKxOQ8SnJHDRmaqUPDhaB9Tc+0ryBEY8aT7fv/kiPnb26qTfA+ChFwd497gKlXrua/0DHwmoLdWzvjETi9bJ2NhoUikeiULxWjnUPM7BtgB9YzKekJEoZtTxTmRIIa44x7iocrPR0VG+/vWvYzKZuOuuuxb0TUkFgUCAX/3qV+zYsYPt27ezdetWHn74YcrLyxftPf+XYJnASBKpGIQfPHhwyr1deVZ2d3dTXFw8abS9mJGosizT3OXgvSMuOkdUuEKWkxKDubuhYtTPqqIR/umzRQkZV86FR14Z4b3OXJAlMnUeSvNE1lTrObPJSqZ5blI9HA7T2dmZNp+q2FQ1ZXLl/TY47tiAVp96DSWEXZyz2sXl551a+a5ihDnbpIqCuQieeKZWAiGBu54aZ8ifuBHmrAgP860v6ClNcNIxnfD7/eze18axboFxvwVPxIqozUcterjiLB9nrC1MSZYEMOYIc8dTbvyquSVdEz4SbkxqDyuyo6ys1LKuRo9ttAu9Xp9UikeiiEQijI272HPMSUu/iM1rJqzKRWPIR62JrwlmFHv4xuetFOambiA6G2RZZvv27Xz3u9/lxhtvXNTY9eW6Yl4sExipIpW8dpfLxeDgIE1NTZPj8h6Ph4aGBnJzJzSQSoGx46ia53YnvgETokGOvPnzBdedu62R/+/rn5n898CIh7/sHeZYZwBnwEhEykCtNaKWvHzuQ1rO31qS8s3M7opwxxMDDLrmTsmQxQgZhgileSpWVZnYetqExMDpdE6aoNbU1CzqjTUQDPHe4TEOtPjoH5fxhidGZROJWzOqffzzJXmsrU99FHZwLMCf33NwWl0m6xqz4pbtKPF4w8PDcRlhzgbFO0EpPJSpFaWT4vLruP8lD95IegzXsgw+vv6FFVQUpzYCeKJPzf2vJk9gjPbsZrD1z/Ou+fIlq1lTnz/DRyIez47jnR7uecZGWE6umJ3wkQhRYIX6cgNf+mTxksq5FGfuY+12DrR46RmRcQUNJ0mNDwoJWZYpz/Fz299VkJEGX5W5juWpp57ijjvu4Ec/+hGf/exnF91rBibu5zqdjosuugiA3/zmN9TU1Cz6+/6VY5nASBKpEBhHjx6lsrKSrKysSc16VlYWdXV16PX6RSUu5oMkSew7Ps7OQzb6bTpC5KM2FKBSachSdfDVT2dSVpyd8obg7QMOnnlXi8o4u9GhElVp0fuoKJBYVz8hMdBpmPRFqK6uTkiClyhkWWZgxM3OQ3Za+yXs/gwETR66WZJa5oIohKnMmkjwSEeH/s/v2fAFJTavsSS0qQ8Gg7S2tqLRaKivr094oiKW4FG+IpHIlKmVNw9F2dGch9aQuuGzGA3StGKIr16yArV68T/3c0FJ/amoqJichoKpsiSv10swGJxVchHPZ/N3L4+wt6cIjT45Ca4QdmFSTC9J8AAAIABJREFUeyjKjvKh04xsXbu4DZLpiEaj2Oxu9hx10NInMOo1EZZz0BgLppBYQtjNBac5+exHFo/Ec7lcfPvb38Zuty9Z7PpyXTEnlgmMVJEKgeHz+WhvbycrK4uRkRFqamomI6+mFxiHuzX8zxuJs8SyJHHw9R8tuG7zhmp+8e+XARM3jK6uLtxuN/X19eTk5CDLMt0DLsy6D26sgiBgNpuxWq2TN9Z4NmtRQeT+5wbZ365OSkMvi0GMmiCVRTrWNVr40LocLHHmQqcLHm+AnQfHONzuZ9Cuwh8xImtmIWKkkwke56Wu748KIr98sp+jvR9IMmRJQKcOU5AlU1emZ+NKC2vqLDMKQMWdvKCgIO0xt8rUisPh5pE/exlyzty4JgqVFOSyj5j45Lb0PIyO9ap58LXkCYyR7p0MtW2fd83t372cjWvLZ3itAHOSGpGoyH8/1kfrkDGhBKC5kM5o1GQRiURobW1FkiTKy8vp6Pewv9lH94jIytIQmxpNk4SXxWJJKD54IYyMjHDTTTeRk5PDnXfeOUkELzZEUUSj0eD1eikuLuYXv/gF11577eTf+fDhw+zatYva2louuOCCJTmmvxIsExhJIhWD8ObmZiwWC2NjY5PpChkZGVMMOiVJQq1WLwlxocDlctHe3o7FYqGmpga9Xk84IjAw4kJHYPKeqZDiSm0Rb/JJ54Cf+19KzjxUEqOIoXEseg91pTo2rTSzfuXSem9IkkTPgIudh520D8o4gxlI2oIZUhxZljGKffxzmhI82vt83P9SiKjuAz82IezBqHJRlB1lZYWWLWuyZnS1RVGkp6cHm81GfX19Wu+3saTG4VYHrx00EpRy0Rjzk56+kGUZs9zLDZcmRtCkGwrho9VqaWhoiOsZOD39ZCFS40SXlwf+KCAbSlM+3nRHoyYLu91Oe3s7xcXFGI0Z7Dvh5HhPFHdAxcfWellR8EFdkYpR/3TIssyrr77KD37wA775zW9y1VVXLYnXxXJdMS+WCYxUkWxeuyzL9Pb20t7eTl1dHZWVlajV6jk7I53Dau5+KbkN2MHXf4IszS9zOW1lKb/80Rfo7++f1MculB8uy/JkHrLb7cbr9SJJ0hTfBItl6mb6xR2j/GFnKG3SgtVlEb72+bIljW6dDmV6ZtzhZdRrpW1AZNihIssY5pKzoCA/O+XN2p92jvHMjvgkGbIkTEZV1hRryDc7qChU09DQELfxUqqIRqMcax/n/WNuOocEnH49UTIWlBjIkkhjSYibr6zAaEh9Q//6e+M8s8OH0ZgBpqqkX2ek8x2GOt6cd809P76SdatmMvKxBrKKSSZA54iJ7ceyQJN6ASpLIg3FIW75YnrOW1LHEGMgWltbO2s8tJInH1uIRaNRzGbzlPtGoteJJEk8/vjj3HPPPfzHf/wHF1100ZJuzARBQKvV8oMf/IDHHnuM5557jrVr1045thdeeIEDBw5gs9l4/fXX2bx585Id3ynEMoGRJJIlMMLhMPv370cURdasWTMpKZtu0LmU10cgEKCjowNJkqivr1/QkFkQhCndeL/fj06nm9IsiR2r9/mj/PJZG0P+8vhlbPNACo1x8ZYw552ZfDJFOqD4VHnDJnpsJrpH1XhDBtaWjLBtrTnuxKi5EAgJ/PLpcQZ88Z03pRtfnBOlPC9Mjn6YhpqSGWkUiwVZlnF7/Ow+PM6xrgjDLgMhctAYChaUGIghGxdvDvKxzan/TcMRkbufGqPPkUG2KUBlIZxeZ2Jdg2Ve6VNs8knspHXSxzHNHDMYDKLR6vjToWxswsq0XAtCyM7Fm/2cv/nUNUWi0ShtbW1zpqrBxD0jtnnk9/tRqVSTzSOF1Ei0eedwOPjWt75FIBDg3nvvXTA1Mp1YrivmxTKBkSqSITBsNtuk/MHlcnHWWWctONJp98APf5/cRufIX36BEPHPu6a6PJfrv9BEYWFhSh16SZJm+CaoVCpG3Sb+uN9IhNQ7GrIsk5/h4+YvFFNaeOrywyVJYnBwkIGBgVnNjWRZJhgMTinEotEoGRkZU7Se8+VUdw74uPup0ZQlGbIUxagJ84XzrHxk06kpyiKRCEdax9lzzEXnoIAnZERQfUBqmNRebryikMY0JJ9MGGEO4QhMRN1qdSZMluQNnYY7djDc+da8ax742VWsqotv0kaSJGwOF+8dsXO8K8iQQ40/YkpYmgSgw8+/fC6X0xpSv7Y8vigtPT7Wr8xCp43/HhAKhWhubsZgMCRsIBp7nSj3DmV8OJbUmMtAb3BwkBtvvJGSkhJuv/12srNTHzFOFpWVlVx22WX88Ic/nOx4q1QqotEoDoeDJ554gttuu42dO3eyaVNipsn/S7FMYCSJRP21FDPr0dFRLBYLubm5lJWVpSwXEUSZ3/xhlJ4xFZUFEqc3mNjQmBWXR0U0GqW7uxuXy0VdXV1KG7ZIJDLFQ2IiycDAO80ZtDtrkzYMjYUQ8bKhYoyvfOrUSgtCoRDt7e2T8bbTfapiSXG32z2rP1VGRsa8f+en3xjjrRPZKUkyZFlGDLvIMTr51pfyyFriSVjlGJwuL7sO2zjaGWbEbSSqzpuY1FBrEYUw1dl9fO3y4rQYdk4YYZrRGmfWUZIYgaiDbFOAqiKZdXUmTm+0otWocLlctLa2kp+fT3V19aIRPpFIhPYeG+8f99I1Aq6QBVGTj86Y2N9ZkgRKzL3cfEV65EknOr1kmDVUJigHVmQ2yRiIzpY+CEwhNSwWy6z7HVmWeemll/jJT34yJXb9VGC5rpgVywRGOhAOh+Na5/V6p4yNmc1mdu3axdatWycz1+cqLgQBvvGb5Dbr7e/9Gq97bN41hXkZPP7Lf4jLZTtRiKLI2/uG2XvCS79Nxh+eQ24RB3T4+fKFVraelvqoYjAsYNCpk7opKZKMvLw8qqur4yZ8YjvQypcoimRkZEx2lywWCxFB5s4n+mlLo7Tg4g8Z+fSHT218pPIwKisro6ysjGg0ysETo/QO+2goDs8Yi5zeaYsH9z/Xz3st6ilGmFpdBiZL8iaOQ+1/YaTr7XnX/O6/v0xNZfLvoZAa7x9xcLQrsCCpIUtRzmwQ+ernytLyYH3hrRH+sDMCGiOyJKJVhcm1SFQX6zi9PoMNq6zodVM/i7IsMzAwwODgIPX19XEnAC2E2PFhhdRQjN5GRkaw2+1s3ryZd955hwcffJCf//znXHDBBUvaVVagjHm++OKLfPnLX+aZZ57hvPPOm3XtRz7yEYqKinj44YcxGo2TY/yhUIiurq60pcf8FWGZwEgS8RIYsiwzODhIT08PZWVlVFRUMDQ0hCAIlJeXp+Rz8dLb47x2KAONcWr3VRIjqKIOss0Baoth40oza2LSkWLJ/en6/nRBlmUcLj+v7hqjbVBOKflEEqMUGfu44bL0xI/6AsK8JqFzQRRFent7GRsbo66ujvz8+Lvec/lTTTfdPtbp5aE/CciG1PX7iiTja5dYKCs6dZIMQRDo7OzE4/GwcuVKMjMzsTk87D7swGIMkqnzI4oiZrM57ubRdAyOB7n7GS/BBOVJkhhBCtswqR3Ulek4Y3UW6+qz0GqW7lkViUTo7LXz3jEPXSMqXKHMeUkNOTTCVy6Q0yKh8gUE/vvJcWzhKlRqDULEix43BZYw9aVqNq2yzCqDCofDtLa2olKpaGxsTJvUVGmyxiarybJMRkYGe/bsoaKigpqaGn74wx8CnLLY9eW6YkEsExjpwEIERigUoqOjg0AgQENDw2SHUJZl3nnnHcrLy7FarTPkFtNx0wMmEqsHJ9C65zf4Xf3zrinMs/DsA9cl/NrJwuEO8s7+UY52BhhyLJx8ghjivPUavnRh6no+OJn2cAxQqdGrwxRmy9SVGThjtYXVNXMXQMFgkPb2dmRZpr6+fs4Ej0SgGCAqhUf3oJfn9uQgadIwrXJSZnPTleUzNp9LiWAwSEtLCzqdjvr6+nmJstkMrAwGwxRZ0mykxr4TTh74gwuBmePJWn0GpszkyYXBtjcY7X533jW/v+cfKS1Or8GVz+fj8JFjdI1oGHAYJkkNgzbKly/Q0ViTN2cHIV6M2kP87JFBXKH5J19kSUSjCpOXKVFVrKWxXItRGiQvd8IcMJ2+KrO+/0n3+n379vH444+zd+9eRkdHOf300znzzDPZuHEjW7ZsobQ0PfeIRPHRj36U7Oxsfv3rX7NixYpJQlpBS0sLq1ev5uWXX+bCCy+c8rPbt2/nwQcfpLW1laamJn7yk59QVVW1xL/BomCZwEgS8RAY4+PjdHR0kJubO2lmrcQe9vX1UVpaitVqTZgE3nfCxaNvSAltcsVoEI3kINvoxaqzcebqDLZsqE1ok5gqkkk+0UX7+IcLjayqTj0NZNgW4pfPuvHJlYhRLya1mxXZUVZV6tiyZvaYSuW4x8fH6erqori4OG2SDMWfSplaefOgQKd/Expd6mSDGBrj0rPCfPQUTXTCxHkbGxujq6trQaIsVvKs1BZK8yi2tpj+eZUkmQdeGOHYcElazpsQ8fHR1TYuO/fUJcYojYdDx3sZ8WTRZzfgCloQNdlUZA1wzcctWK3xe8/Mhdd22/nDvky0hvnrIiHiQ4+L/MwwtSVqqvJDyOEh6urqFjU9TIFSgz/22GO89tprHDlyBJPJxFlnncWGDRvYuHEjmzdvTticNh1YrivmxDKBkQ7MldcuCALd3d2Mj49PasKnG3T6/X5cLtfkDVUZA5zNvOrmB03IcuI3k479j+Gxdcz5/xqNhis/eyZf/dKHEn7tdKJv2MWrb/fQMSjhDpkJS2ZUai3l2S7+6eJ8igpyUmYR3z5g55HXPIiqeeJZT8otVuRCQ4WRzWusVK4wTppV1dXVpa3TPBckSeJEh43dR510DERx+HRxeUjEIkvv5ebPr6CqNDn36VgMjgV58vVRakqNbF07kQQTDyRJoqenh/Hx8ZRMvqbHroVCoUlSQ6PL4Dev+BlwZc451ZMqgTHQ+jpjPbvmXfP8g/9Mfm7qRTBMnDelE9fY2DhFFqHEmMaORUqSNMUoNF5S43cvD/LWYTkpM12YiAbWECInQ2RtrZFrLlpc8kCSJB566CF++9vfcvvtt3PuuecyMjLCgQMH2L9/PzU1NVx11VWLegwKRFHksccemzQkPPvss7n33ntnvL/SDbn++ut59913eeutt2ZcB93d3ezbt4/e3l6+9a1v8bOf/YxvfvObS/J7LDKWCYwkMZ9BuMfjoa2tDZ1ON+ltJMvylNrC4XBMuV8ajUasVutkbTHbs7R/NMCvX/DikysTlrLNBpPUw3euyU1qGiFdkCSJXQcH2HnQzpjPQkjORWUoQIq6+HD9KBd+qDBlw79wVOK+50Zpt829yZ2QWzjJ0HopzRNoqtKzZU0WyBOx5gaDgbq6ukWZgo2FPxBi16ExjnSEGXLqCco5k3KLeCBGg6wqmkjwSMcUwZ922egZjnJarZFNTda4ZR5+v5/W1laMRuNkuk6imN48UnzclGdp17CGZ/dYUM+RZpMIZFnCourllsuzyc85dUaYwWCQ5uZmjEbjjM68ItNSphMCgQA6nW6ypojXUNfuCnP7ky58VCVNgIgRP1rZSX5mmE9ty+D0htQlYvMhNnb97rvvxmq10tLSwv79+zlw4AC33XbbkjRHluuKuLFMYKQD0wkMSZIYGBigr6+PiooKysrK5jXojEWseZXb7SYQCEyO1P/6rdMQkyAwug8/i3Pk2Cz/o2L92hp+cPPHyc1OfZObLGLN/0pLS6ecL5fbRzj0wQMm2eSTvuEAdz05jCOYmdQNVRLDGDUhygq1rK4y8sltBUtuHCqKIoeax9hz3EX3kIgzoJ/wkFBPLUTTmeAhiBK/fqafA53aKZIMxBCZRoGyAjWrq81sXZtNXvbUAkJxjJ4vEz5ZxGbJ//k9G/vbJDwhI5LaPJnQEgutIRNTRvImVP0trzLeu2feNa/87gYsmakz9G63m5aWFgoKCqiqqorrvCVKanQO+PjvJ8YIiukhXMxaH7deWZQWsmwudHd3c8MNN9DU1MR//ud/kpmZnmNPFpIk8eMf/5gf/OAHAJhMJl544QXOP//8GWuDwSDFxcV8//vf55ZbbpnzNR999FGuv/56WlpaltQsbBGxTGAkidkIjFAoRFtbG+FwmIaGBqzWiSk9WZbnlaHGSrKUbrwgCJPdZ40+k0dfDzPgK0ejTX1zJYTsnLfWy+c+euq6zHBydL6zE5/PN+V8hSMThn9+3wf3y1gPCavVGnf3+Q9vj/PaocxZPREWgiyJCCE7mXovVUVw5ioTm1YvvYeP0+1n92EbRzsjjLgNhMlFa8ybIl+VZYlMernhUivF+ak/57qHAtz7gp+ItnLye5IYhaiTLKOfykKJdXUz/VZEUaS7uxuHwzFlojldUEiNcbuL378RYNRjJqrOQ2vMTUr2DBMGopdtC3HOxqVJxZoNsQaijY2Nk+a+CyESiUyRJi1Eajy1fYwdLXlo9al7mYlCmPr8Af7l0vSQZbPhVMWuz3c8y3VFXFgmMNIBJa9dGQPs6OggPz+fmpoatFptyiZaykbt8be0dA5rkLU5qBMoMvqOv4xtYP+U75WVFPL9mz7JyrpTW2C43W7a2tqwWCzU1tYuOGExfQzQ4/Egy/KMjZqy6QuGBX755ADNA/pZN7YJQwxx/iYtV3781N4EAoHAZO66K2TlUHuAnhERsz7KhZui5OVap+hek7kh79hn55HXvUiqhWUysiyjksNkGaOU5KnIN3tYWQEb1q1csrE7WZbx+QPsPTrOwTY//eMy3pARSZ2B3mTFmAqB0fwK4317513zxu9vQa/7/9k78/io6vP7v2fNnslC9oSQPWEzQABptf5w360btda2+nVptS6lVsW2KrTa1opiaZEirVW/olUQFaV+ixubKCEhYc++79tsmX3uvb8/4owJJGEyS0LbOa8Xf5A7uXPn5s69z+c85zlHiWHQwR/+t5VOrYLoMCfTk5TMzg7n7Dkx48b9uuZ4BwcHKSwsPK1T/+kwnNRwzXyKosiuY2FUdSf45fsgCXb+31kyfnhl4DoTgiDw4osv8tprr/H888/zrW99K2AFxu7du6moqODcc89l/vz5Hv/e66+/ztNPP82RI0d4+OGHeeyxx0b8/TZu3MgjjzxCaWkpubm5o+7DarVyySWXkJyczJtvvunzZzlDECQwvMRwg3Cn00lDQ4NbAZiQkDBq3PpEagvXs7R/QMtft9votyWfsmidKASHicLELn707SSPTD4DBVEU3Ylqnpr/nZx8MnyhNpof09F6Ay996EBQZ/jlmFWOFn50VSh506eOmHWNHzU0NKCJTaK6Xc6JZgd9xhBmp3ZTUhAy4nx4o4i1OURe2NJNvTYNhfL0tYHLGDM2zEyyxkKsuoclxclMnz45ySfwladLl47PKweoaRfpGwzHKZ+GMjR23OtKFOxkxbTykxuS/GIg+uURLa/vlIMEcREWspJgXn44s3OjxjWdNRgMVFVVuT3bfD1vo5EaVoeS9yrSkcJyfNq3G7Z27rlKRcGMwH0fOjs7+elPfzopseve1BbBumJcBAkMf8DhcKDVaqmuriYsLIy8vDxCQ0NHSDrHM+icKARBpLJKx4EqC829SgbtkaCOHVMC2F79Ed1fyd+jIiN54H/O55LzCnw+DqtN4M9vtdLWJzI9Uc7cvAiWzIklIuz0CyOXL4jdbic/P9+nbqproebqLLmSTw7UhVLWqEGm8Edkq0BespWffjeDcA8+X6Dg6j709/eTn58/KovucDhOKcQmYozZ1Wfh2dc76DN5p1ZxQZIk5JKV4hy47zuZp/+FAECSJIyDZl7/1MmJbs8SQkbDaCTgydjz9kNs+aST7V86kSlOJRhd50MTLjA9ScHsnHAWzxoiNVzEZ6AM71wQRRGtzsD+w70cqbfS3i9j0B6GJA+f8MIlOmSQR25JISUhcOZtNTU13H///ZSUlPDkk0/6xXNmLJjNZtatW8euXbv4+OOPWbJkCa+++ioZGZ4vUMrKyjh06BC33347H330EXV1dSxbtoyLLrqIhQsXsm7dujE9AUpLS1myZAm7du3inHOmdpzPjwgSGF7CpZpobW2ltbWVzMxM0tLSPFZzegO90cqu8j6ONtro1ofhkMejCj19p1YUnMSrm7n3uji/yOOPNxh5dYcFtVIkJxnmF4YzJ/f0EnJJkujr66O+vt7nRDX4WlLvUq5YrVackpoPK+MxyvJPG93pCQRrH1eUmLnsG1MXUwlDfkvV1dWEh4eTk5NzykjG8LQovV6P0WiccKraji/72FYafoop7EQhOG0ohH5uu0Qe8NGCMY9BEGjt0LK3coCqFgc6m+YrE9khUkNma+HHV4ZQmOW7EmHQ5ODZN/vpt2eO+pwWnFbkTu0QqZEM8wvCmZUdhSSJ1NXVYTQa3eamgYLdbqexbYD9R/TUd8KAZcgoVBkSM7HkEIeFuWkd3PVt7+u100EURTZt2sS6desmJXbd19oiWFeMiiCB4Q9UVVW5F5TR0UM309NJOv0Nq83JvsNaDtXZ6RhQYxGjkas1yGRyOut309u0lxuvWsQ9t3zDL+/3jx0d7Chzgnwkgy5JInLJSlykQFaKinkFkZTM1LgjGQVBcHsi5OTkBMygx+Fw8FlpF5U1gz4nn0Spjdx3QxK5fuiMGAYdqFVyQkMmVlS51D319fUjxmw8xWiF2HBjzOjoaNRqNRu2tlFaoxg5LuIlJNFBSZ7A3df7JyXDW5hMJt7eaaC83fvOQPPRbfS3V4z7mvnfvG7CcbeSJCETzISrrGSnhVKcH8XCWZpxlRr+hiiK6PVGvjjcy5E6y1ekRuhX6SejxIsJNq5YrOSGCwNXYDidTtatW8eWLVtYu3Yt3/zmNwP2XsOh0+lQqVRcccUVALz00ktkZ2d7ta/t27ezbNkyBEHAbrezfv16br/99jELjbvvvpvPP/+cw4cPe338ZyCCBIaXcDqd7Nmzh4SEBLKysvyi5vQGbd2D7C7vo7pNpN8UgaRKQKn++lmotDdz++WhzMz2faHWr7Px561a+mzTTyEHXCahCZFW8tLlLJoVRVbq14Tm4OAgNTU1qNVqcnNzA6L8kySJzp5Bdn51PnxJPhEcFgoSOvjxtf5Rq/RpbV6RR8MTPAoKCtw1rCcYyxjzZEVsR5+NP28dnHCCx5jva+3ilgtEFs2aushsSZLo6OigpaWF7OxsEhMThzy/2rWcqNeRlWhzN9OGn4+J+q28t6uHHYcnHncrOK1Itl40oYMUTA9xkxqTGQ/scDhoah3gy6M66jpgwBLxFakxunJFaW/h/uvDJxy1OhG0tbXxwAMPkJaWxurVqyctdt1ftUWwrnAjSGD4AxaLxX1DmooCwwXXjFtnZydZWVmow2LYW6mnobmTb84CwWFFqVSOmPOcqDv5l4cHePlDPXbJc3m7JAqo5FY0YXZiw4wsnhXD0iXZk76onWjyiUw0c+P/C+fSb/g+ZiOKIhvfbefLEzKQK1FgJT5KJDtVxfyCSOYValAqRj8fLrOqkJAQ8vLy/BYn5ZqJNhgM9Pbr2bQzBJOY4PP1KkkSceEmfvbdFNISpy5abfisbLcwn4+PeN+paTryLgMdh8Z9Td7CH3q9fxck0cE3ikTuvNY/smRv0dfXx7HjVfQORtHQJaetX8agLZSoUDu3XxZKRmrsqI7t/sCJEye4//77Oeecc1i1atWkjSC5YsuMRiMpKSmsXr2aO++8093BPXToEPv27SMnJ4eLL77Y4/1+9tlnrFmzhg8++IBrrrmG5557jqysrBGvaWtrY+7cuTz11FPcfffdfv1cU4wggeEDTCaTm7gIhJrTU5jNZmprawHIzc2lsdPGF4f1RKitFKSYsdvtp3hTTeTe4BQkNr7bxbHOZBRqz2uLoUhGLdEqHUlRBi45Zzo50ydXyTBa8gnqBJRjJJ/420uirdvCn98xYpZlIjrMqNCSGG0jL13B4lmRZCSNdRwSnZ2dNDc3+1X5N9wYU6/XU1lrYm/TLFRhvv9dBIeJ4vRu7rjGd1NNXzA4OEhVVRWRkZHk5uaOe60LgjBi3MLlt+Lyj4iOjiYiIuKUeri128zat0d6hPgCydrFXVcwIu54siEIArW1tTS1DdBljKGpW8GAJQKnLJqixHZuWBpDVFQUERERfr+/iaLIK6+8woYNG3jmmWcmNXY9ELXFf3ldAUECwz9wOp04nc4pIy5cUVKNjY0kJSUxffr0MWWTrvEC17iFxWIhNDR0BKkx2gK5tcvM2re66DP558YSKh/kidtTPU6zCBSa2vr5cFcjzb0KtJYwbGI4oKAgWcdtVyYQH+ev5BMjwjheEpLoRCW3kRAtkZehZkFhFDOzI2loaECr1QbErOqUY5AkevuN7Kno5ViDlS6tHIvzNPG2J0EmWvjO0nAuXuIfZc3L77dhtUsU50ewoOhrJc/p4DIQdUXSfVSp5p9l3hM/TYe3MtB5ZNzX+EpgRKmMPHhzCtMD2H04HRwOBzU1NTgcDgoLR/qXjOXYfroYuom899q1a9m2bRvr1q1j0aJF/vpYHsHpdKJUKlm5ciWbNm1i69atzJkzBxj67K+//jrvvvsuBw8epK+vj48++ojFixd7vP+2tjY+/PBDzj//fHJycujo6EAQBDIyMnjhhRf4xS9+QXNzs9to8D8EQQLDB9jtdkRRnFQ153A4HA4aGhrQ6/Xk5uaOOSMuSRJms3nEeIEgCCMWaWPFxH+wt5f/Oxjh81gBgCg6KZzWzE9uCJw6zBMIgsCu0kZKjxrot0RjFoaSTyR7H5edNcC3FiT4nHzicIi8sLWb2v7xvSScNgOhMh3JMQ4KM5UsmR1NiNJOdXU1kZGRHnmP+QpRFDlS00vpMQONXXL09uhxSZ6T4SJ9fnpjDIlxvo8odfVZef0jLRkJQ0oeTzv+w5siBQUHSxYFAAAgAElEQVQFXt+rnU6nm9QwGo0jTGQjI6N4d59IVe90/8TdOq3MTGrnx9cmT6r64mS4xuxTU1PJyMgYcR9zrUuGp58oFIoR9w5fSI2Wlhbuu+8+cnJyeOaZZ4iK8l0tNhEEsrb4L60rIEhg+AcffPABkZGRzJkzZ8KKBl+h1+upra11zy1ONILLlebgIjQMBgN2u929KFGHRvLK/xmo6Qj1k+mfjXNmy7jtqtQpHSsQBMEdU5mbm8u0aUPFk8szwWz6mjF3JZ+4CB5PF2ntPRae/0en16SPKDhQyy2kxMkpmB7CJUsSTkn6CDQkSaK9S8+eil6qmmx065VYhTDkypEPVkl0MivDzv03ZaBWeT9z7MLBKh0b3tPiGKb0kUQBpczKtGiJ7DQV8/OjOKsgeoRyxWYbiqQTBGHEAvzDMiX/d9D7c9d4aAvarmPjvsZbAkMSbFy+WMmNARzJ8AQu8zaXHNaTa3Y4qeEqPrwhNY4ePcr999/PhRdeyGOPPRbwKMHxkJmZyQ033MCvf/1rIiIi3AtHh8PBwMAAb7zxBo888giff/45JSUlI3735Iz28fDmm29y3333MXv2bOrq6rjsssvYsGFDID7SVCJIYHgJvV7Ptm3bWLBgAenp6SgUiklVc7a1tdHe3k5mZiYpKSkTfu/hJsJ6vd4tp3fdF9r6lbyxS4HoJxNMub2NH16snDJPBBdcikm1Wk1eXp77XmazO7FaTCPOx/DkE1cn3pPz/OG+PraXeeclIUkSTpuWMLme9HiRuTlqLlgU2Fj40SAIAuXHeiivGqS5R4HRoUEWknAKGSNYe7jxHDvnzfePweKL73ZyuD0FxTDyxGk3EoKOxGg7BdOVLJoVSdpJ3k6upkhqauqER3g9gYvUOFTdz8cHJXS2qK/GtbxfbCvtLdx7bThZaVPXFHE6ndTW1mKxWCgqKiIszDNSxuFwnGIU6iI1XMTo6b4vgiDwt7/9jZdfftkduz6VCSOTUVv8l9QVECQw/IPXXnuNHTt2cOTIEdRqNfPmzaOkpISSkhJyc3MDslC3WCzU1dXhcDh8NsE8Ga5uilar48VtWtoGwr32j3DvUxTISrTy05vSiY6cvPn+U47jKy+JhoYGd3f+dH+f0ZJPRFEcs7vkcAq8sLmNykal37wk5uc4ufuGjDHHTCYDDoeD+vp6jEYj4dGplFebqGlxYLBInD97kNyM0SM7JwKTxckz/9tCc79n19tw5UpyjJ2ECC3/b3E2yclJI173QamKjyq9/1s0VL6FrvvEmNtlMnjgrm9zrNFGt1aO2RkGivHTXyRJIiXaxEPfTyc22ndiqrvfyh9e60BnkhMbIZCZrGRuXiSLZmnGjfy12WxUVVWhUCjIz8/3eUTJRWoM7zAJguAmNSIjh8xh4+LisNvtPPvss+zYsYP169dPKPnDn3BJPN977z1uvfVWtmzZwgUXXDDqa8877zySkpJ49dVX3WbNw//Ornx2T3D48GGeffZZtmzZgkaj4f777+fuu+/+T+qWBAkML9Hf38/atWs5cOCAO5K9pKSEBQsWsGDBAmJjx09A8AbDn4+uGGdfTDBPhmuRdrSuny2fh+NUJKAM8e1ad1r7ufgsI9ecN7WJasPVKp5250dLPnGN+brGcYY3xerbTKx/z4xD5b+xgu8uFVgyx7NIzUBBp9NRU1NDdLSGnsFwKmqstPUpiVSbuHS+hdiYr0eTwsI8V4QOR9lxHa9+LEMW6lmjwGnTEyrXkxBtIz6kn/x0gcXziyZtpBGGrqnjdX3sP2akqUeOwU1qjF/vO+1GvlXQx3cuShr3dZ7iX1/08/6BEBQyB/ERNnJSYX5BJEVZ4x+Hy5zcWxL0ZIxFarhqcYVCQXx8PEqlkoaGBu6//35mz57N7373O59T3bzFVNQW/wV1BQQJDP9CkiQMBgNlZWXs37+f0tJS6uvrSUpKYv78+W5Sw5NIr7HgdDppamqiv7+fnJwct3Ig0DCa7Owq6+JQrYmOfhlmR6jHowVRaiM/uT6R/EzfZVuGQQd/fLMN/aBIVoqK4oJIFs7UeNT1d5l8hYSEkJub61OXd6zu0on2MHYdjwKF74y3JElMizDx05um1ktCkiS6urpoamoa80HkWrS6lDxGoxFgBMlzOsns1k87+eALByh8KxAk0UmowsqPvh1PccHQDXtbqYpPfCAw6iv+gb6nesztcrmMXZt/7v6/KIp09erZc7CHI7Um+gZDhsaTviI1ZIKZ710UzvmL/FN0/+/2dj6tlJApTiUfJElEIVmJjRSHSI3cCBbO0hCqVrhNyPLy8gJ6LxlOarS2tnL//fdjsVjcoyoPPfQQixYtmpCBXCCwdOlSYmJiWL9+PcnJyacUEFVVVcycOZMPPviAyy+/HPi6QDly5Ajbtm3j008/JSEhgccee4xZs2Z59L5Op5NnnnmGd955h9/+9rdceOGFAfl8U4AggeEHiKJIY2Oju64oKytzJwu46oq5c+d63N0cDQaDgdraWkJDQ8nJyZm0hVpdi569lVrqOiR0lkhQJ4zojo8FwWEhP6GDH13rn4jKsmN63tptIzJUIC9NzqKZkeSkn37RM9zM0R9eEsMNt11jvsjV7DgcQ5+zAPko9/iJwmkfZP70Hm6/emq9JOx2O3V1dVitVgoKCkZdZPqaqjZocvDcm/302jOR+xARDOC06UiMGGDF9xP9cs15A4fDwZGaXr44rKOpW45ZjAV1Ikr1UEc/QmrgwZtimRbj+/e3X2fj2Td1DDJj1PMrOMwoRC3TIq3kpMpZUBBBwYxI7PahESVRFCksLAyoonI4qbF582Zee+01lEol/f393HHHHdx8880UFRX5lYj1BlNRW/wH1xUQJDACD0mSaG9vp7S0lP3793PgwAF6enrIy8tzd1PmzZvn7kqebj+tra1kZGSQmjq1IxgAnb0mdpV1c7zRRrdOhk2KQD4sPlIumlm2NMKvfgi7DkunRFS6RgsSoiVy0of8I+bmDVNEfNUZMRgM5OfnB4yFFASBz0o7OVhl9Dn5RC6Z+f5FUZxX4h9pp9Hk8CrZYni0Wm5u7oRmZQVBcJM8LlJjNPOqpk4La97oxuT0j4pILpm57fJovnnW15LTd79Q8dkR7wmMuoOvY+itHXO7QiFn51sPjvhZT08P9fX1btJnaBxHy/4jA+Qm27HbTKcoeSIjIyf0oG1oN/HcG92YJ3juJElEJpiJDLWRlxHGvPxoSmZqJpyO4w1sNht/+MMf2LlzJw8++CAmk4ny8nIqKiqQy+Xs3LlzUs21Nm3aRFRUFNnZ2Zx77rm88MIL3HLLLSNe5+p83HPPPezdu5edO3eO8APo7+9n8eLFyOVybr31Vo4ePcoXX3zBli1bWLBgwYSOyW63+82o9wxAkMAIEBwOB0ePHuXLL7+ktLSUw4cPI5fLmTdvnrthUlBQcNr7idVqpb6+HqvVSn5+/qTPh58MSZIoP95H6TEjTT0KBh3RKEITkSuG7t+SKKCRN3PfDbF+8UPoGbCxdosWgzgD2Uk1lWu0IEljp3C6giVzNCPe06UciImJISsrK2BeEl29Rj490EfNV0kw3iafSKJAjLKZB26IJT7G93M3aHYSHqqYsLfCcNInKytrwk09m802gtSwWq0jvNyio6MJCQlhy6c9fHYs1meVDwyduzhVM8uXxaGJmrr7s9PppK6uDpPJRGFhIREREdjtdg5V9dLdP0hGnNVN8gyvLSaqXNn8cTc7q6ZNeITF6TCDvYf4CCtFM0JYUBBBfmbg4luHwxW7XlxczOWXX86xY8coKyujurqa2267jfvuu29SjgPOvNriP6yugCCBMTUQBIGqqip3N6WiogKHw8GcOXNYsGABJSUlzJo1y/0w/Oijj4iKiiI+Pt4dp3amwGazuRn0/Px8Ovqc7K3oZ9Bs45uFVhwOO2FhYSPcySf6kP+8coBX/k+Pk4kknzgJUViJDbcTF27knHkJnD3PPxFeE8FEk09c0aM/ui7dL+MiZce1bNymwy6FI5esxIQ7yUxWclb++KMFgiC4DUR9Masabb/DC4/S42b21KWOIL68hSQ6Kc5y8JNlp47abN2nYtdR74vL2rLXMPbXj7ldqZTz2ZtDBIbVaqW6utqjkYzhSp7hypWTY+hOJitFUWT9ljbK6pT+8aYRBYqz7Txwk3+kyWOhvLyc5cuXc9111/HQQw+dci+YyPiFPyCKIk8++SQrV64EIDw8nHfeeYeLLrrolNdaLBaSk5NZuXIly5cvd//cYDDwk5/8hAMHDvDxxx+Tnp6OxWLhqquuIisri40bN07WxzkTESQwJgmSJDE4OEh5ebm7WVJTU0N8fLx77GThwoVuBZ3BYGDv3r3ExcW51ZxTOR9+Mvr7+6mrqyM+Pp7UtOl8ebifilozuYkWUmLMSJLkXqBpNJpRkxzGg8MhsuHdbqp6UjxSfLjgtOkIk+uIUmlJjzVzxXnZJCdOrjRbkiSqGrV8cUjrTj6RnUa5Ilk7ueUCyS/Ro6I4lBpzpDMFZHIUwgBxEVZyUmUsLBzqwo8Fo9FIVVUV0dHR5OTk+KWedXm5uZ6jOp2ezfsisajPOoWU8gaitZublzqnfNTGNZLhidJnNCWPJ8qV1m4zf9xixqGa7pdjFqx93HaxgwWFgfuOeBK7Hqwt/uMQJDDOFFgsFiorK92Fx7Fjx5DJZNjtdmJjY/nDH/7A3Llzp1x14YIgCLS0tNDd3U12djYJCaPHb0qShMViGZF8MlpO+GhdovYeM2ve6KTfPL46xVOoZYM8dtvUjmMAtLQP8M/dTTR2gc4ajk0MRyYPQaPW8qOrNeRkxvvMlGoNdp7d1Ea7bmwFiCSJQ3GukSJZKUqKCyKZX6hBp+2nvr6e9PR00tPTA17U2mw29h/upbzKQEuPhN4SgiSPQDYBuWekysjPbkpmRtroJNeWvSr2HPeBwDjwKsaBxjG3q1QKPnljudv4Li8vj/h479QzJytXBgcHga/HcVr7FPz9/6wTIvTGg0pm4r7r45mdG7jxDavVym9/+1v279/PX/7yF49HK7zB7t27qaio4Nxzz52Qp8brr7/O008/zZEjR3jooYd4/PHHR0iaN27cyMMPP8yBAwfIzc11//yTTz7hyiuv5B//+AfXXHONW/a5YsUKPvroI8rLyydk7vkfhiCBMYVwjf8NV4B2dHQQHh5Ob28v1113HQ8++CAxMTFnzPVpMpmoqalBoVCQl5c35ljMaPGULpM/V8NkrK7z9r19fHjQOxPMkyGKArmxTTzwnak1YRZFkb1lzew7pKXPHI1F/Cr5RLRTNK2RH1ye6HPyCcDnlVr+sVuJPHRsfwXBYUIpakmIspGfPpT0kZagpr6+HoPBQGFhYcCVPpIk0d1rZG9lPydanPQZw3Eo4lGGeO4dIzitFCa08+PrklEqfP9+HK83srNykFlZISyaqSEs1LMax2azUV09NMJaUFDg9UjGaMqVkJAQdy2+dY+do10Zfkk/EQUnaZHNLP9OIiHqwCk7Jyt23du6AoK1RYAQJDDORPT29vLEE09QUVHBsmXLMBgMHDhwgKamJtLS0tydlAULFhAfHz+pF68rstVlgjl9+vQJPxBH80uQyWTuBVpoWCR/367lWKvaT91lJ3My7dy7zD8JGV4fx7Dc9eFeEq74UkmwuM/J8OQT1z9POxWvfNDOzkOj+yGc9hhFAblkJjEG8jJCWDwrmllTkBtuMlvZV9lNZY2J1l6JQVsokiLiFDJGEmxccbaSGy4Yv3h8c4+KfSe8JzBqSl9mUNs85na1WsHvf3YuGo2GnJwcv89buor1gQE9r/7LQKdWhU0KR+6DX4gkOinJc3L39f53VB+O/fv38/Of/5ybbrqJ5cuXB1RBZjabWbduHbt27eLjjz9myZIlvPrqq2RkeJ50UFZWRmVlJXfccQcfffQRdXV1LFu2jIsuuoiSkhJeeOEF92ew2Ww8+uijbN68mdbWVuBrt/BLL72UxMRENmzY4JM3wb85ggTGGYSdO3fy6KOPUlRUxMKFCzl27BgHDx7EYrEwa9YstwJ09uzZk54ENNwE09vY8OF+CXq9HovFQkhIiJvQ6NQqeGWHiFPtn+6yaO3mxnMcfMtPCRnewm63U1tbi81mG+ElYXcIDAzocdhNbpJneBLMRJJPerQ21m7WYRAzvVI1OG0GlNIAqbFOijJVnFus8Yt59UQgSRKtnTo+r9RS3SYyYArHqZiGKvTUa03laOEn14aTleq7n5nNIbL2rW5aDNPdo1Ci6ESyDxAdYmJ6gsjc3FAWFGlGeGsMHx3Pzc0lIcE/49jDYbVaMRqNlB8f4JNDKkxCDPKQBBRKHzzirN3cerEYUNWFw+Hgj3/8I++//z4vvPACCxcuDNh7+aOugGBt4WcECYwzEWvXriU5OZkbb7zxFAfalpYW9u/f7+6muByvXYVHcXGx1y7Np4PBYKCmpsbth+DPeSrXAq2/X8eL7w/SbYr2aXEGQ1/2+PBBln83hbTEqYuRgqFzV11dTXR0NNnZ2acdoxkr+SQyMtJdjJ08WlBZreMv7w5gl/wzb6jExB1XxrBo9tTKJvV6PdXV1YSERdLaH8qRegvtfTLUSgfXfUMgJVEzYu51NPxjt4ovqrwnMKr3v4RJ1zrmdpVSzrsb75xUE0pBEKhr7mdf5QC17Q76jZ6TGmGKQX723URy0gM3m2o2m/nNb35DZWUlL774IgUFBQF7r+HQ6XSoVCquuOIKAF566SWys7O96lRs376dZcuWIQgCdrud9evXc/vtt6NUKnE9J2fOnMn111/Pk08+ic1mIyQkhKqqKr73ve9x9dVX88QTT/j9M/4bIUhgnCGw2Wzce++9rFixgpycnFO2HTp0yD3WevToUUJCQkYkquXk5ASE6BRFkfb2dtra2vyWVjAcVqsVg8HAoep+3iubBiHJPi3OwGWC2c1tVyZP2P/Bnxged5uTkzOmEnY4XEkwrmbJ8OQTl3rl5NGCv23rpKIlGYXad9WfKDpJCmnmp8umEemFL5e/IIoira2tdHR0oI5M4WiDk7qOIVVs3rROLpj/tafGRL2phuOzsn7e3hfmkdpHFBzgGEATaiY1zk6sqpu5eZEU5OdO2uj4kGrayv4jvVTWWmgfUGEWYr8iNcav+UXBTk5sK/fe6B/Fylhwxa5fdNFF/OpXv5oUstWfdQUEaws/IEhg/LvD6XRy7NgxN6FRWVkJwFlnneUmNQoKCny6+Z3sczFZJl+NbQZ2H+ylutlGn1E55OPgoapAIZn4/iXRfGu+f0wwN/2znWONNrLT1JQURTI3L9qjYs7hcFBXV4fZbKagoMCnuNuxkk/kqgje3qugazDGp6hbFyTRwZJCkbuumxi77G+4zKoGBwcpLCw85dy55l5dhZjBYMBuH+m5EhUVhVqt5vVdKvZXe18sVX35V8z69jG3y+RKcuddjybMwb03JgWUGBgPTqeT6sZ+9h3qp6bVjs4cioOvzXUlwcG5syX+55r0gB2DJEns27ePhx9+mB/+8Ifcd999k+YA7pJYGo1GUlJSWL16NXfeeeeI929ubqa7u5tFixZ5vN/PPvuM559/nvfff5+rr76aNWvWkJWVhVarJTU1le3bt3P++efjdDpRKpU8+eSTvP/++6xcuZLLLrssKPP0DMHa4gyBJEno9XoOHDjgri3q6+tJSUkZkaiWmJjo03U93OdixowZk7JIczhFvjzcy8EqE619SsxiDIrQBI8SKkTRSbyqmQdujPeLeqBfZ2P9uwMoFVCQoWDJ7GiSp3nWuNFqtdTW1hIXF0dWVpZP99jR/BJCQkJo6Q/jk+MpyMNSvd73CNg6uO1iOcUFU5s25WqKjHXuxvKmmkiqWr/Oxpq3dBikTJ/qMlGwg2OAGdNMLL9paggzSZIYNFnYf7iXyhoT7Vo1NqYNfW++UpRgbedHVyqZmR249cFUxa4Hqq6AYG3hA4IExn8aXJ378vJySktLKS0tpbq6mpiYGDehUVJSQlpa2mkX4KIour+U4/lcTBYkSeJQdT/7Dg1Q3+FEZ1YjykZ6JUiCnW/Mkrj96tN/Pk9QflzHxvdPVTW4TEITY6AgI4TFszXkTv/6NcOlf964bHsKQRCoON7DZ+W6YaMW3iWfSJJEQqSJB29OJSl+8rLORzsO15jSRGPphnuuuP45HA7KOudQ1+d9ZOmJL17EYugcc7tcoSK3+FpuuSiCpQsnJ9p4LAwMDFBTU0NaWhrp6ekIgsDxul72H9WRm2QjTGV1z4q7/oWHh/vl+hwcHGTVqlWcOHGCF198ccQ852TA9ZBfuXIlmzZtYuvWrcyZMwcY6sSuXr2al19+GUmS0Ol0PP7449x7770eF/9tbW18+OGHXHjhhWRlZdHS0sIVV1zBtddey69//WtgyKRu0aJFnH/++Tz99NM+kZb/AQgSGP8hkCSJtra2EX4afX195Ofnu01C582b59FIgslkora2FrlcPq7PxWRh0Gxnd3kvh+utdOlDsROHMjRuxOeQ2dq49RIlxfm+L75FUeJv27o51JZ0iqphyCRUT2qck9lZKs6eoyF6mFLBZrNRW1uLw+GgoKCA8PDAqEutVivbdnVxvFnwKfkEhhQri7J6+OEVUxvb6nA4qK+vH5Hg4SlG81yRy+WjjuO8/q9uPq+deILHaJAkiShZEz9bFuOX5Bhv4Ypy7u/vp6ioiMjISIyDZr441Etbt4XiGWZ3A2n4OfGXUvvQoUM88MADXHHFFTz66KOTmqgR6LoCgrWFFwgSGP8NkCSJ3t7eEYVHW1sbM2bMcJMa8+fPdxt5iaLI/v37kclkJCcne+VzEUgMj0XNysrhWKOVshMGdEYnS+eYiAhhxKiFN8ZVAwY7z53GBPNkSIKdcLWdRI1AXKiehTMjKSmePOmfCzqDhd1l3RyuN9M5IMN8muQTGIq8/f7F/ottfXdnF9v22UGCqDAH6dMUzM4N5+zZMeN2riwWC1VVVajVavLy8vzykJIkib/vkHOo2fsi+cS+v2Axdo+5XaVS8c9X7puUGNKx4HA43HPQhYWF4y4Khmenu2TEvpAakiSxZ88eVqxYwZ133sndd989pfeMzMxMbrjhBlatWuV+yK9YsYI333yT7373uyxfvpytW7fypz/9iTfffNMnU9HHH3+cHTt2sHbtWrq6ulizZg3d3d1s2rSJefPm/Td3SCBIYPxHQxAETpw44a4rDh48iNPpZO7cuW6vrqKiIvfIZF9fHzU1NSiVSvLy8oiNndrxxJOh1+upqakZWoxqktl3WE9Vs5O4CBMLsgZHpDhoNBpCQkIm/N3eUzHAW3tU45pgDockioj2ASJVRuLDjSREaLnwG9NJT/Xs9/0FSZKobhzgiyN66jpAb41CUiegHC/5RBTRKJr46Y1+im01OVjzVh/dljRkTj0xYSZmJEFxfhhn5UWPObYwvCnizzEl1ziO6znarzXxTnk6ROT7vG8Ap7WfaxebuXCxf+oyb6HT6aiuriYpKWnc9cBYDaST/dwmkkRos9l4+umn2b17N3/5y1+YO3euvz7WhDGZdQUEa4vTIEhg/LdCFEXq6+vdM69lZWWYTCZSUlJoa2sjJyeHDRs2TOpM/+kwPDt8vIeQKIruh4pr1EKhUBAVFeUmNcZanImiyN/ea2ffcZlXJpin7tDKsv8XyqXf8L777w909hj5aF8bxxot6Cxh2KQI5IpQJNFJUeog935nOuFhvqsumjpNrHm9C6Nj9M6DJEnIJSuacIHMJAVzciM4e3YMoSFyWlpa6OrqIj8/f0QOtj/w8sdqKhq8J5KO730Bq6l3zO0x0WG8//d7vd6/Cx9+3kN0hJKFszQTMpx1xavNmDGD5ORkrx5qww3wXKSGSqUaUXiM5q9jNBr51a9+RXNzMy+++CIzZsyY8Hv7Ay6Z53vvvcett97Kli1buOCCCwCoqqpi/vz5rF69mnvuucf9OzNnzuTSSy/lueeeA4Y6w1VVVcydO9fjIqu3t5cVK1awZcsWUlJSyMvL48knn+Sss87y/4f890OQwPgvg9lspqKigtLSUneimquhcPz4cR588EFuvfXWSRsr8wSuMVmbzUZ+fv6YnU273e4eWdTr9dhsNnfH2VVbjHXfaO+18Oe3DZhkvo0UwJBXQojYyaPfi5rSrrwkSZQf62Z3eR/tAyFYiUMWkohCGYLT0sW1Zw9y/sJkv5DZWz/r4ZOjMShDRjd3FZw25M4B4iIs5KTAgsIIZmZHBaQpMh4sVjv7D/dQUePyj4gZOWrhAUTBSWpEMz9dluhxUsl40BrsfHxAx7z8CHIzJqY6cY3xFhUVeaX2kSQJs9k8YhzH4XAQERHhHvMd63vjil2//vrr+fnPfz4h4sNfmKq6AoK1xWkQJDCCGEJPTw+/+MUvOHToEBdffDFtbW0cOXIEpVLJ/Pnz3XOveXl5U1J46HQ6ampqiImJITs7e8KqBqfTOSLK1Ww2o1ar3UWHRqOh7ISJlz/UI8j8E0+pxMT/XKHh7DlnhkO53W53S04lSaK+RYfZbCJUYXYz5a6HykSTT5yCyJ/fauVQo2rCyTGSJCITzESH2smbHs78wkgWFE1sAX86vPSRmkON3hMYx/b8GZu5f8ztsZpwtr30E6/339RuYvUb3ZidQ4WzJAooZDbiowSyUtQU50ewoEiDSjnynNjtdqqrq5EkicLCQr8XZ67ZaBchaDabkclkvPbaa8yfP5+QkBD+9Kc/ce+993LHHXecEUqtpUuXEhMTw/r160lOTkYQBFasWMHmzZupqalBpVK5SZh58+Zx6aWX8rvf/Q6At99+m7/+9a+0tbUxe/Zsfv/735OZmenR+7o8WwoLCwP22f4NESQw/svx6aef8tBDD5Gbm0tubi6VlZU0NzeTnp7uTlNbsGABcXFxk95NdBmjd3V1eQPZnzAAACAASURBVDUmK0kSVqt1BKkhCAIRERHu2iI0LIKN7/VR3Zvqt3jKpNBm7l82bcRoyVSgv7+f2tpakpKSyMzMRC6XY3cIlB/rITXWweCgEaPROOaohSdobDfz53fNOFUTT44RHGYkey8JUVaKMtUsmhlFVtrkG7oPmqzsq+zhcL2VDm0IVikWReg05KPUSpK1i9sulpjnpwSPzZ/0sPNEvHucxWkfRI2OhCgbeekKFs+KZHryqefE9bdNT08nLS3Nr9/Nk0kNg8EwNOp6/DjNzc0UFxfz5ZdfUllZyYYNG5g5c6bf3ttbTFVdAcHaYgyMekFOrt49iDMCjz32GJdddhkbN250fwklScJgMFBeXs7+/ft58sknqa2tJSEhwT16snDhwoD5O8DQfFldXR0Oh4NZs2ZNaGZxOJRKJXFxcSM6+65MbL1ez6vb2znakYhc4Tt5IQl2zp0D/3N1ls/78uk4vppZdilqhhdnMpmM3MxYIHbE681mM3q9np6eHurr6xEE4ZRxnJMJrN0H+3n1X0ZEWTjeNJZkMjkoIzE4obwBDjXoCQuRU1ww8Ri9sSD6uDSSJHHc7QovjbVEUWT9222U1SqRyb/u+snkCkTC6R2E3loorXUivd+DUmZlWrREdqqKGYlOwukkLy+XxMTAKHzUajXTpk1j2rSvfT1MJhOLFy9my5Yt1NTUEBERwdtvv01TUxMlJSVcffXVkzo2JQgCmzZtIioqiuzsbMrLy3nhhRdITh6at3Y4HGzevJnbb78dtVrt7qgcOXKEyMjIEfeUOXPm8OMf/5iysjKeeuoprrrqKo8LDaVSGSwwgghiGBoaGli/fj1btmwhK+vr56HLX+vLL79k165drF69GoPBQGFhobu2OOusswKWqAZD4yx1dXUkJSWxcOFCrxozMpmMsLAwwsLC3PcbV0y8wWCgrrGN/92pQQrLQ6HyndyV2dq48xIlc/PHjw0PNKxWKzU1NUiS5P47uaBWKVhSPPL4hiefNDQ0eJR84nCIrHu7m7qBdBQq73ylFKpwUGWiFWFvvZPa9mYevCnEL6qGiSAyIpSLvzmdi7/5dV1WV3+EPms89Z3yr3xXYkiLaGPZZWpiYjTY7XafGhJt3Rae3zKIQzWD4eEhSnUkIpF026C7HvbWg9NuJAQdiRo7uakyEsN7iQ4TKC4uJjTU/35oMpmMiIgIIiIiSEkZulYkSSIuLo7m5mbWrFlDf38/MTExPPXUU5SUlHD++edPqvLgTKkrIFhbTARBAuO/EBs2bDjlZzKZDI1Gw/nnn8/5558PDN1kOjs73VGuL774It3d3eTm5roLj3nz5hEVFeVT4THcQDQnJ4dp06b5vZAJCQkhISGBhIQEfp47dMM6cLSf/Ue1NHUJ6K0hSLIIjzPPJUkkLcbMz76XTpwfHMrNFid/29ZObJSSxbM15E333LDHYDBQVVVFbGwsixYt8qg4G/5QSU0dch0f7sbd3t4+wo1bkkfw8g47faZoZDLfuxqS6GBxvsBd12X6vZM/vqjMk98Xxt3uFJzumFxP/SOO1Or589sDOIjwiPiRyRUIRNBthO5q+KI6BEmcgXqPiQRNAxct1nCen1J3xoIkSezdu5d169axfPlyfvjDHyKXy+ns7KS8vJyKigq+/e1vB/QYToZMJqOpqYmVK1cCEBYWRlLS1/PhTU1NtLW1uePPXNfW7t27MZlMFBcXA0Pf//z8fPLz8zl27BgxMTHcfPPNk/pZggjiPwnZ2dls3rz5lJ/L5XKysrLIysriu9/9LjC0IHAlqr3xxhs88sgjyGQyiouL3bVFfn6+z+So2WymuroapVIZkAWaXC4nKiqKqKgo0tLSKJkHA3odu8t7OdrooNcYikM+DVWo5wS906bnW4UDfOci//heVNYY2HnQRFGmmrNnR6GJ8qxeccW2dnR0uJsinkCpVBIbGzvC88Q1sqjX6+nq6nInn0RHR3OiTcW/Dk9DEZqDwg8rEsnayf9cDPMKp5b4GRwc5MSJE8TExPCtc88eUZcNqXmyMBgM6HQ6WlpasNvtXvlH/G1bJxWtKShUntUDSnUUAlF0WqCzHiAbp01P6Od6UmK03H6Vf1J3xoPFYuHvf/87lZWVbNq0iYKCApxOJydOnKC8vJyGhoZJJTCCdcW/J4IjJEFMCIIgUFNT4/bTOHjwIHa7ndmzZ7sLj1mzZnnEJkuSRF9fH/X19SNkiVMFk8XB3oM9VFQbaOsDk310Q0yVzMSdV8VQMtM/pmRbP+3kgy8coPi6uJIEO2EqO6nxMmZmhbJkTgwpCSMlqf6MbR0LLjfuzR93cbhRxORD8okLmhAjP/9eKmmJgXGj3/ChmuOt3ldCR3Y+i8M2OOb25IRo/vLUDSP8I4YbvkVHR7s7THaHwHOvt1DdHjoiQcdbSJJIVoKFh76fQVhI4PjngYEBVqxYgcFgYP369aSlpQXkfXbv3k1FRQXnnnvuhGPSXn/9dZ5++mmOHDnCww8/zG9+8xt27NjBfffdx1tvvUVJSQkwNDJ39913Y7Vaeeedd1Cr1YiiiFwup7m5mcsuu4wLL7yQtWvXuh3Ig/AKwRGSILyCK1GtrKzM7adRXV1NbGyse+xk0aJFHqdUOZ1OGhsb0Wq1Z4SBaEuHkd0V/dS0SQyYI5BUCShPSiQRBQfJYS08cOM0Iv0wLmIwOXj+rT56bZnu8YUhk1AtkWojGdME5uaEsGiWhhD1yGeTa4zXFXkbiFFiq9VKe+cAr31kps8U6VPyCQyNkMxN6+SOq6cmftR9HIJAY2MjAwMDFBUVERXlWTrJaKMWTqdzzFHfE42DbPjAgRTin2ez06bjygUGLvtG4JLVJjN23dvaIlhXnJEIemAEERhYrVYqKyvd7uRHjx4lLCyM+fPnu93Js7KyRpATXV1ddHZ2olKpyM3NDYh0zRcMDAxQW1uLMkRDQ3cIxxqtdOtkZMYPcuE8Rhh5nSyH9BS1LYP88a0etxfCaSFYiQp1kJ6gYPo0B/FhvcwqzPLayNFbDOgt7Cnv5ki9mY4BGRYPkk8AEK1cd24oV57rnxGIsuNa/va+FrmcIaJnRhhL5mp4p1RDVZv3D4vDnz2D024ec3t6Sgxv/PnOET8bbvhmMBiwWq00dKv55Fgc+GFUCUAumbnrKg2LZgeuGJckie3bt/Ob3/yGRx55hJtvvjlgpKLZbGbdunXs2rWLjz/+mCVLlvDqq6+SkZExof2UlZVRWVnJHXfcQXd3N4sXL+aXv/wld9459DdauXIl77zzDg8++CA/+MEP3PJPwO0o3tzcTEZGhrsACcIrBAmMIPwGV5qEK1GttLSUjo4OsrKyRiSqaTQa97NHFEXq6uro7+8nIyPD7/P8vkIQBJqbm+nt7cWhSOJ4s0RjlwyLQ8E3ctopzAz3ypfqZLyxo5u91XEoQ07vrSAKTnD0owk1MT1BIDFigPQ4O0VFE4se9RWSJFHVqOWLwzrqO0FnjYLTJJ+4ECo0cf8NUaQl+MF3RJTY8E4Xx9ujiFSbyUgQmJsTysKZ0acQPSfDFWuekpLC9OnTfb72XMTeSFJD4OOjcfQ4Z6FQ+iG5TRSJUzXy85v8Q5yNhcHBQVauXEl1dTUbNmwIaOy6P2qLYF1xRiFIYAQxOZAkCa1WS1lZGV9++SUHDhygsbGRtLQ0Zs2aRUNDAy0tLWzbts3vCRS+wmq1UltbiyAIFBQUjBpP6TI7dEkirVYroaGhI0iN8RQoFpuT599opabDt668K+UjLtLJgzenkjwtMIoGT9DZY2R3eS9H6k306BXYpUjkytCvjlMka5qJn9+SSXiY7yy02eLkmddaaOobXQkSFnlqd2siOPTp0wgO65jbM9PieG3t7ePuQ5IkdHoTew72cLjeMizi1vO4Uve+RIGZ6TZ+enPGKcae/kRfXx8PPfQQTqeTdevWuec/AwmdTodKpXJLM1966SWys7O9jgyTJIlVq1axYcMGrrrqKgYGBtxRZ7feeisRERHuQmNgYIBbb70VnU7H7t27g0WG7wgSGEEEFC6CwkVolJeXYzabmTlzJikpKezYsYPrrruOn/3sZ1OSYjAeent7qa+vHzOufrgvlau+EEXRndyg0WhOGxN/tN7AX//pRApJ9+lYBacVhaClKM3Mj6+bulGMoeSTXkqPGWjoArMQizx0KPkEwGkd4PL5Rq44x7PxltOhokrP33fIkIWe+uwTBQc4tGhCTcxIkijODaO4cCjO1eFwUFNTg91uP22sua8QRZHqxn6+OKynvkuG3hr5laJn4gpcwdrHsnOsfGt+4OpwSZLYvXs3jz76KHfddRc//vGPJ+U568/aIlhXTDmCBEYQUwen08kf//hH1q5dy1lnnYVOp0Or1ZKfn09JSQklJSUUFxd75CcQCAx3KJ/IvCd87U4+nNQYnvLhIjUUCgXv7+7mnb02kPtHcaKWDfLjb8f51QTTG9jtdmpqanA6nRQUFBAaGkp9i469lX0kRjtIirZgt9u9Tj5x4YM9PWzdYx33/IVFJqFUe19AVH78O0TBPub2rOnTeHXNbRPeryRJdPcZ2Xuwl+ONVjp1cqzO8dUrKkzcd0M8s3MDF3EsSRLvvvsuv//97/nVr37FsmXLJuU76HrgG41GUlJSWL16NXfeeecISanLG2fRokUT2veHH37Ixo0bycrKYunSpVx55ZWnvGbfvn0sXbqUt99+myuvvHJEByUIrxAkMIKYdLS1tXHvvfdSXV1NcXGxO0Zz3rx5bqVGbm7ulH23zWYzNTU1KBQK8vLyJqQ2dflSuUiNk1M+NBoN4eHhmCwCf3yrly5LJnI/GEmIgoPUiBYeWJZAeOjUSt+HqxoyMjJwChJfHurmRKOJhbk2HHYTMpmMqKgod601keQTALPVyZp/9NJlzRw1LWQsCE4bOPoJoY/cVDnfLI5nbp5/EkUmAkEQOFzTx4FjRhq7ZRjs0cjUCUPGpqNAFJ2khTez/KbE06pKfMFUxa4HqrYI1hVThiCBEcTUYfny5cjlch5//HE0mqEbvMu0x6XSqKioQJIk5s6d6y48ioqKAj47Nlo8mK8YLv3T6/V09hrY/HkUNpl/5gslwc635sBtV/vWafH5OCSJjo4OWlpaTkk/Ge21wztMRqPRnXwyvMM02s2+s9fCM5s60VlP32UIi0pGqfKeIKr46Ckk0Tnm9rwZibz07A+93v9wOJ1ODlRUU3Z8kG5jOH1GFVYhDJlcRWGyjjuuSUKj0QTsO9DT08ODDz6ISqVi7dq1AUs4GQ2uudCVK1eyadMmtm7dypw5c4AhJdTq1at5+eWXh9QsOh2PP/44995774SKAVe3xdUFqa+vR6VSkZCQwMqVK3nllVfo6uoK1Ef8b0OQwAhiUqHX67nwwgt59NFHufbaa5HJZO5EtbKyMvdYa11dHYmJie66oqSkJKCJajC0iGpqaqKvr4/8/Hy/+XC4YuJd//Yft1HRc9aEjELHg8zWzh2XK5idEzjS3BOc3BQZT9XgSj5x1VsnJ59ER0ePmXLzz8/72F4ehTLUP38fhb2VJ37ouVlqoKDX6/nX7hO09IXTMxiJyalBFpKAZNfy7ZIBlhQnTJjo8RSSJPHpp5/yq1/9ip/85CeTHrse6NoiWFdMOoIERhBTB09YSNcC9+DBg5SWllJaWkpVVRXR0dEjCo/09HS/3AwtFgs1NTUA5OfnB1T2B6AftLPzQBdHak10aIe8I2TKib2nJEkkR5v4+ffSiY/x/QHpFEQ+Ke1jdk7UhE01BwcHqaqqIioqipycHK8W2cOTT1ykhkwmGxHn+sZHOr6okiOTeyYJ9pnA2PGbcaNUC3OS2fiH73u9fxd0Oh1VVVWnzMtKkoRWZ8BqMY2QEruInujoaKKionxi9UVRZMuWLTz77LOsWrXKXfxPBTIzM7nhhhtYtWqV24h2xYoV7jnS5cuXu+Wab775JrNmzXL/7kTloM8//zxPPPEEM2fO5MSJEzzwwAOsWrUqaLLlHwQJjCAmHZ7WFh0dHe5EtQMHDtDb23tKolpkZKRffAt6e3tpaGggNTXVb/XKeKhq1LHvkNbtHSELSUShnNgz0Gk38o3cXr53qX9GB5s7zTR3Wlk4UzOhKFNJkmhvb6e1tZWcnByvSfXhyScGg2FE8kl0dDRWIZQX3rNikc/wav8nQ3BamZXUzo+unVoTUVEU3cRZYWEh0dFfE1E2mx2DwYjJNET2mEwmVCqVR0SPp9DpdPzyl7+ku7ubDRs2TNjTyp+YrNoiWFcEHEECI4h/P7iSSlxGXgcOHKC1tZXp06dTUlLidiiPjY31+GYzPLY1Ly+P+PjAxlGOh7auQXaV93KiyUqvQY5NjECuGJ2YUEhmbr08mm+e5Z95xc8rB/j7hwbEr2JRJcH2lUmonDk54Zw9J2bUOC1BEGhoaECr1Z7ygPQHXMknBoOBLZ9pOdoaNaHkE18JjIP/WjXu9ln5qfzld9/zev9Op5O6ujpMJhNFRUWEh5/epGw0ogdwz0dHR0efdj7aha6uLpYvX050dDTPP//8lFz/rkXHe++9x6233sqWLVu44IILAKiqqmL+/PmsXr2ae+65x/07M2fO5NJLL+W5554bdV+e4vDhw6xZs4a33nqLpKQkfvSjH3HPPfd47BYfxJgIEhhB/NtAEASqq6tHJKo5HA7mzJkzIlFtIl4aJpOJmpoa1Go1ubm5hISEBPATjA1BECk71k/pcSMtvQpMQgyKkIRRx0skUSBO1cTyZfF+UQ04BYl1b3dR25eGQhn6lUnowNfeEXmhFBdoUCpOvV34oykyHlyjvl09Ol7+JASbPM2n5BMXlI4W7r02nKxU3yPmfYHBYKCqqoqEhASP1cR2u32EesVisYyZqjYeJElix44dPPHEE/zsZz/jBz/4wZR4P0xVbRGsKwKKIIERxH8GRFGksbHR3U0pKytjcHCQoqIid+Exd+7cURUVpzPSmmr09fWx68saWgciaR9QojWpcBJC7jQt370wipgYjcf54GNhwGBn9f+20WkYXz7oMgnVhDvJTFZSnBtJTopAW+tQZykjI2PSuvY6g4U95T0cqjMNM8QcvVPgC4EhSRIVO3497mvOmpnO7LO+SdeAk/yMoRi63OmeGWj19fVRW1vL9OnTPY4EHAuCIJxCasjl8hGkRkREhPsaF0WRN954gz/96U889dRTXHnllVPu0L906VJiYmJYv349ycnJCILAihUr2Lx5MzU1NahUKvcxzps3j0suuYTf//73AHz22Wds376d3bt3M2PGDFatWkVRUZHH7+10Onn66af517/+xcaNGykoKAjIZ/wvQpDACOLfGlarlYqKCnez5NixY4SHhzN//ny3AnTGjBmn1A3DY1vz8/OJiZlaT6qTIQgCx6tqKTtmoNsUQ48hHCuxyEQbFxa1s2hOnJsE9+WZsKdigDf3qFGEjq+aEJw25M4B4iLM5KbJmZ8fhkroRqfTUVhYOGmLPlfyyZdHdNR3DKlXJA+TT2BItfKtgj6+c1GSX46nvdfCxm06YiJg5gwVZ8/REO1BMoirqaTT6Zg5c6bP6TE2m23EmNJwo3rXv+HknCt23Wg0sn79elJTU316f39gqmqLYF0REAQJjDMFjY2NbN++HYCMjAyuueaaKT6if384HA6OHDni7qYcPnwYuVzuNvJKTExkzZo1fP/73+f6668/42JbrVYr1dXVyGQy8vPzRxyfJElYLJYR7uSeekecjFe3t/NZpYRsDJXH6SBJIgrJQny0SHaqmhvOT/LLKIs36OodZFdZD8ebrHTr5FiFcOTKUMKjUlCovOt8iaJA5UdPjvua8KgE0govH/EzSbATprKTGi+jMDOUJXM1pCV+XQQ5HA6qq6vd6TaBuv6GzwIbDAb27dvH3//+dwoKCmhubiY9PZ2NGzdOmepIEAQ2bdpEVFQU2dnZnHvuubzwwgvccsstwND3oLCwkNtvv53HHnvM3QE5cuQId999N5dffjm/+MUvOHToEEuXLqWgoIBbbrmFffv2UVFRwTvvvONVweBt6kkQIxAkMKYYwdrCv3Alqh04cMDt1dXU1ERaWppb/dnY2MjmzZt55ZVXJpXU9wSucZb6+nrS09NJT08fcXzD1Y56vR6TyYRCoXDXFRqNxqPue7/Oxpq3tBikGR4rJU+G025CJWlJ0tiYm63iinP84xc2UUiSxMETvRw4ZqSpW47REf3VSE7IsNeIRMuaWb4shvgY/6hsXtrWxcHW5BHGm5IoItq1RKqNpMcLzMkJYdFJIzlarZbq6uqANpUkSRpBauj1ep577jkGBgZITU3liy++YMWKFdx1111T1hQ8E2uLYF3hNwQJjDMBR48e5bzzzqOwsBCtVktjYyPf/va3WblyZZCp8yMkSWJwcJB9+/bxzDPPcPjwYbek01V4LFy4kJSUlCm9wQxPP5nIOIsoiphMphGGmOM5cR+rN7Du7T6s4sSjtkbDmWQi2tnZSXNzM9nZ2Ritav76SSwWp3dSTsFp59Anvxv3NeHRqaQVXHT6YxNsRIbYSYh2Ehem54Kz0yjM9U11MVGIosjGjRvZsmULhYWFGI1GamtriY2N5dJLL+Xhhx+etGNxHc+TTz7JypUrAQgLC+Pdd9/loouGzmdVVRWzZ8+mtLSU+fPnuwuAdevW8eKLL7JmzRrmzZvHd77zHUwmE3v27EEul6PVajnvvPO49tprWbVq/BGgIAKGIIExhQjWFpMD1zN769atrF27lvDwcMLCwsjKyhqRqOarl4CvsFgsVFVVoVKpyMvL83icZSzvCFddodFoRsTEv7K9i9LGRK9iPEeDzNbOXZcrmZkztdL74Sai2Tl5HKo2UF5ton1ASUFiH3OzRJ+ST1yoaR7k/7d33mFNne8bv08A2cqWoYAMAUE27t2qdVat1qqt46st2jrqQqvVOvqrpc66V911a1u1ztZVBwgiKspWlL33Ckme3x80R1JBGQkEfD/XxXXpIZzznuQk584z7mfrmTKQukW1Hi+RiEDCLDRXL4Ceeg5a6RdhcB8HNNetW9VFTUlLS8P8+fORk5ODtm3bIjw8HFlZWXBwcMDs2bPRqVOnel0P0xZNmkrfWMxdpB4pKCjA1KlTMXbsWGzatAnZ2dl48uQJRo4ciaSkJGzYsAEeHh4NvcwmAcdxSEpKwsKFCzFhwgRcuHABqqqqSElJ4f009uzZg+TkZNja2soYeTVv3rxehEd2djaioqJgbGyMDh061ChyLW0VqFhqKRaL+Qj5s2fPUFRUBDGp4Px9LSTlGYAT1F1gEBGMtAsw/zMLmOg3bBVLUVERwsPDoa2tDR8fH6iqqqIlAP0W6ijOrOVO32DeyVPNDBOnoo5CkToKs4A46OP+SQJH8bAyFmPx/6ygqqLYTEV8fDxmzJgBa2trnD9/np/+A5RP3omPj1fo8StDOolo6dKlOHz4MPz9/dG/f3/4+flh5cqViI2NhaWlJSSS8teB4zikpaXh6tWraNWqFXr27IlDhw4hLCwMR48ehUAggFAohL6+Ptzd3XH//n0ALPPBeLdg2qL+EAgE+O2333Dq1CmcOHECPj4+EIlEePLkCQIDA3Hs2DEsXLgQAODm5sZrC0dHx3ox9JOaOKanp8Pe3h4GBjXzzFJTU4OhoSGfTKmYfc/JycHLly8hFAqRlq+Jv8JbQ6BpA1U5FGGKhAXo0CYNEwbJx0S0thARUlJSEBcXBxsbG5iYmIDjOHT31kZ3b+mjrGX01vPnz1FYWAhVVVWZoMabglgiMWHLyRREZ7aCSg28UgQCVUDDBIUwQaEQSEwF7h4SAmVZGNJBiH6dFFu58qax6xKJBNHR0Q3i+8C0xbsHC2DUIyoqKigsLOTnDuvp6aFbt24IDg5Gx44dsWDBApw4cULmiwaj9lhbW+PChQswNX11QzQzM8OHH37Il9ZKJBJERUUhMDAQf/75J1auXImSkhI4OzvzwsPFxUWuZlylpaWIjo5GWVlZlV4dtUFFRQX6+voy49qS0gpgn5oK8ctsZBaooYy0IFCpnX8GJynG2Pe18H4HW7msVySW1OpLvNSENS0tDQ4ODq/1G1cnBlEVb5o+IoWrQ4mkqZ4Is8e0VmjwQiKRYM+ePfjll1+wZs0avP/++6/dcCsKVHkg7ZGtCWPHjsXYsWMRHByM0NBQqKmpwdvbGxKJBA8ePIC3d7la3Lp1K6KiorB48WJwHIeLFy/Czs4OPXr0AADeDyY4OBhDhgwBACYwGO8UTFvULyNHjsSsWbP4pIOqqirc3Nzg5uaGL774gh+jLp2otnr1akRGRkJPT09mopqFhYVcS+6lI+FNTU3h4+Mjl31zHAcNDQ1oaGjwE0GICAGP0mCTnoOEzCIUS/SgqmEETlDzyVhEEuhyLzB7nB6M9OUTvBCJqVKT0LdRVFSEiIgIaGpqwtvb+41eY5XpLWn1Sl5eHlJSUl6bfCI1xAx+moP9f6lAoGGLSnxVa4xEXIpeziXo10mxY9ClY9ebNWuGq1evwtjYWOb3AoFArtVetdEVANMW7wosgFGPSCQSpKenIzo6GkD5G0EoFKJVq1a4efMmPDw84O/vjx9++KGBV9o0UFdXlwleVIZAIICjoyMcHR0xYcIEAOUBhocPHyIwMBA7d+7E48ePoampyftpeHt7w9bWtsbigIiQkJCAhISEOo0HqwnmJjqYOOxV5QUR4f7TDAQ8zsbzZDFyitQg4bTfKDxIIoajRSlmj22NZmq1H90ppUwkxs9H4vEkvhk4lKGFpgjWpqpwtdNGRxc9aGlW/bGUm5vLu2xXJdDqUpterQBGLXp8OUkxPu2rjT4+NrVZVrWJi4vD9OnT0a5dO9y+fZsfHaYo8vPz8ccff+D8+fOIjo7G+PHjMX369Brd5KViHgBMTEwwceJELF26FEFBQcjKyuJLtYcMGYLstkaxIAAAIABJREFU7Gzcvn0bc+fOBVD+XlVXV0dISAhvYMZgvGswbVG/vG00pHQUeI8ePfgvQ1I/CmkF6MGDB5GQkAArKyv+M9DT0xN6eno1/pJUUlKCqKgoEBHc3d0V7vHFcRw6u7VEZ7dX5pV5+Xm4EZKOsGelSM3ThJAzgKr6m6fDiUsy8FGXYvT2lo8JZvTLAmw9I0SZwPhfk9Bi2JoBXo7aaGdTdVVAxVZeBwcHmaBETfhv9QpQfo+StuMkJCTgz2BVpEm8IdCo+9cvIoIO4jD3Uz0Y6ilOT9b32HV56AqAaYumDvPAqGfWrVuH1atXY8eOHRg6dCiA8l67Zs2aYcOGDdizZw+uXLnCl63JG4lEonSTN5QdIkJOTg6Cg4N5d/Jnz57B1NQUnp6e8PHx4Y1Cq3rNcnNzERkZCQMDA7Rp06ZGYx8VTalQhOv3EnH3USbS85qhSKQNqGiB4zg0Qx4+H6ILDydjuVw3tx5kYd+FPEgElXtUEEmgghIY6kjQxlwNng468HRqAZCEHz3q6Oj4RpftH46rIzWnds+vsCQPYTfWv/ExuoY2MLXpXq39EUnQxrgY8z9rDU11xcWLxWIxdu3ahQMHDmDDhg3o2bNnvWQKpk2bhj/++AP9+vVD+/btsWXLFowaNQr+/v512u+FCxewa9cutGnTBr1798bgwYMBAM+ePYO9vT0iIyNhZ2fHf3ZOnToVYWFh2LhxIzw9PeVxaoyawzwwGpCG1BZMV9QOiUSCZ8+eyUxUKywsRLt27WQmqlUVkJBIJIiPj0dycjLs7OxgZNQwxpdVkZhagEt3EhAVL0GB2ACkVu6VIRYJYaEVg68+MkFz3bqPHhWJCZtPpCAmq5WM2WZFxGVFUJVkwVi3FG1bq6CTiw5at9TiR48aGhqiTZs2Cr+OiQhRcdm486h2k0+kiEpzMMgzDwO7KvY1T0lJwddff40WLVrU29h1RekKgGmLRgrzwKhvkpKS8OzZM2RmZqJfv37Q1NTEqFGjcOfOHaxatQpqamoYMGAAb4ikp6eHsrIyaGlpyV1gZGVlwcDAAAKBoEazjRnl2QZ9fX307duXNwSSVlNIhcfmzZuRmZmJtm3b8iahHh4eKCoqwvfff48xY8bA1dW1zuOt5I1EIkFyUgJaqKZg5idt+X7ZnLxShEZkwMa0GfLy0nHv3nPenVz6U5PrNLegDP4H4pGcqw2uiuAFUF7dIIEW0guB9GjgXnQZ6EwKBFQEQx3A2aYlNPXFaPeGQgYJ1f69U50KjFaGYpi1yCiffCLRgkClcnEpoCJMGdQcnVwV29MbExODmTNnwt3dHbdv3663a+zy5cvYv38/Nm3ahMmTJwMob9v6/PPPMXHiRDg5OfFeLC4uLjXa94ABAzBgwIDX+k1LSkpgbm6Oq1evws7ODs2aNUN8fDwOHjyIb7/9Fs7OznI9RwZDGVEWbcF0Rd0QCASws7ODnZ0dxo0bB6A86CSdqLZv3z48evQIqqqq8PT05Me52tvb4+rVq7hz5w4+/fRT+Pj4KN1zX1xcjLSkaHSwV8Ong9ry12J4bCKKi4vQQlOMmOgIlJaWQlNTk/eNqOmY+Nuh2ThyUw0qb2nHUFHTAkELaUIgLRa4FQuISnMhEBXCwtAM7W00oWdYJrepIlXBcRwc2hjAoc0rb5LyySdx/04+Ufl38olxpcEYIgkMVOMw73+G0NFWXPCiocauK1JXAExbNCVYBYaCePToEQYPHgxtbW0kJibC0NAQCxYswPjx4xEZGYklS5YgMTER8+bNw7hx41BaWoqlS5fi9u3bOH/+PJo3by63tYSHh6NHjx749NNPsX59eXaZiQ35IxaLER4ezo9yvXLlCgoKCtClSxe899578PHxgZOTU41uzopEWhViaGgIa2vrt14PZWVlyM/P58shi4qKZPo7W7RoUalXyIm/knE+UARORT7CgJMUw3doc3RwqbzMc+VRDWTk1S6LUlqUhSf/bHrjY4b1d8fcL/ry2bPIZxlIzmuBZ8kSZOSrQSjRgEWLHEwaoAsDg3JRpgjzNpFIhG3btuHYsWPYuHEjunXrJvdjvIlu3brBxMQEe/fu5XvrY2Ji0KFDB/z999/w8PDAqlWrcOnSJaSnp2Po0KFYtmxZnf1kZsyYgQcPHmDdunUICQnBzp07oampiTNnzjTYeFgGAFaBUS8oi7ZguqJ+ICLk5+fzFaC3bt1CYGAgjI2N0adPH3Tv3h0+Pj4wNTVViv78iu0Ybdu2fauJqHRMfMXJJ2KxGNra2nxQQ1dX97XrKjdfiPXHs5BVZl0nX6pX65CgOReHxeONZcaUNgRFRUV4HPYECZnqiM/SQkKmGookegAE6Gb3Aj099NGiRYtaTz55G4mJiZg1axZMTU2xdu3aWrfU1IaG0hUA0xZKDBujWl9kZGSgZ8+eGDp0KKZNm4YWLVpgzpw5CAgIQP/+/bFixQrExcVh8+bN2L17NxwcHKCjo4Po6Gj+DSov4uPjMWzYMJSUlKCkpAQjRozA6tWrATCxoSjCwsIwffp0uLm5YeHChYiNjcW9e/cQFBSEp0+fQldXl8+keHl5wcrKql7Lb8vKyhATE4OioqK3tmO8jYr9nXl5eSgtLYWWlhaaN2+O/FIN7DpXhEKRfBypSSKGg3kJ5oyzfKMXx4ojGsjMr93zWVKYgae3trzxMaMGeWHCR16IiIhAy5YtYWlpKfP6ERGKior450QqyHR0dPhgT2WCrCZERERg5syZ6Ny5M1asWCE3I9jqEh0dDQcHB5w/fx4ffPABv/3kyZP4/vvvsXLlSgwZMgTBwcFITEzEoUOHcOrUKcTHx8PConrj4qoiOTkZCxcuxLlz52BhYYHOnTvDz88PtrbyMZdl1BoWwFAwyqItmK6of4gIu3btwtatW7FkyRJ06tQJQUFBfMIkLS3ttYlqurq69RrUyMnJQWRkJIyNjWFtbV1rXVPZmHgA/ISPm48kuBVjClV1+ZjSiksyMbxTEd7r0LBfUqXBn9TU1EoNyitOPsnLy0NhYSFfGVudySfVOf7Bgwexfft2fopHfV4/DakrAKYtlBjWQlJfpKeno7CwEMOHD4elpSUA4JdffsHKlStx8uRJaGlp4bvvvsP69esxceJE/P333zAxMUHv3r1hZ2cnt3UQEY4ePQoTExPMnz8fISEh2LSpPLu8evVqqKioMLGhANLT0/mZ0kD55BNpdpyIkJmZyQuPo0eP4uXLl2jdujUf0PDy8oKBgYHcbxxEhNTUVDx//hzW1tZwdHSs8zHU1dVhYmIi405eVFSEtPQcHLqUjcISDZCKpFbGlxVpxhXiq1EGaG9v9tbHvjkm+7a/fXsLSUF+LqKjo+Hi4lJp8IfjOGhra0NbWxtmZuXrrSjIkpKSZASZVHxoa2u/VfCJRCJs3LgRv//+O7Zs2YKOHTvW4izrzpEjR2Braws3Nzd+W1lZGZ48eYLS0lJ+BrxUSG/YsAFjx47lRYa0fJOIQEQ1ErpmZmbYv38/RCIREhISYG1tLddzYzCUFWXQFkxXNBwcx+HWrVu8ObOFhQWGDRsGoPzLrXSi2tmzZ7F8+XKUlpbCxcUFXl5e8PHxgbOzM9/KIU/KysoQHR2NkpKSKu+LNaGqMfH5+fm4E5qOu5E6IDlcXhKxCBbaLzBrvAk0Neo3CfBf8vPzER4eDkNDwyoNyt82+SQ1NfW1yljp5JO38fLlS8ycORM2Nja4efNmg0wsakhdATBt0dhgAQwFUFpaCqFQiLy8PACvRgEtWbIExcXF+PXXX9G/f390794dnTp14t+U8objOHz22WcwMTFBnz594OnpCSLC5s2bQURYs2YNExsKoHfv3lX+juM4GBkZ8X14wKu57YGBgbhx4wbWrFmDvLw8ODo68i7Kbm5u0NDQqHXAQToeTEND463jweqC9Mt7G21t/DSr/KZSUCjEzZA0hEYVIDEDKCrTAFSqlyUgSRk6OUrgO6JNtdeg6CkkGhrN4OXlVaPX4k2CLC8vDy9evEBBQQFUVFRk5shX7Fl/+vQpZsyYgT59+uD27dtyHe1bUxITE+Hq6iojcsLCwnD9+nV07NgRxsbGvLFfcHAwbt68iRs3bry2n2vXruHw4cMwNjbG2LFj0b59+2qvQVVVlQkMxjuFMmgLpisaBo7j8Pnnn1f5exUVFTg5OcHJyQkTJ04EUH69hIaGIiAgANu2bUNYWBg0NTXh6enJV2rY2NjUulKCiJCSkoK4uDhYW1srtI1FRUUFenp6GNhLDwN7lW+LjU/BrdAsxCQSsot1gGbGUKmmGSaVJGNyfw7uDm9PilSHqBcF2HuhCDoaYrRtJUBHF11Ymr59LdJW1OzsbDg5OclohOpQ1eQTaUtOQkIC7zNSsd1XqgErjl1fu3Yt3nvvvQZrRVIGXQEwbdFYYC0kckIkEoGI+A+Fnj17QiwW49atWwBejeQBgO7du8PAwAB//PFHva8zIyMD+/btw6ZNmzBq1CisWbMGAPD7779j6NChzElcSZBGnQMCAhAUFITQ0FAIBAK4u7vzwsPBweGtAlEaHElPT6+0JLGhSM0sxvWgFDx5XoLUHAFKJVoQ/McjQ7dZPuaNNUPraoiAinz3qwZyCmt3HYtL0vDwxrY3PmbKmG6YMLJzrfb/NkQiEZ9Nyc3NxZw5c1BaWgoDAwPExcVhw4YNGDRoUIP3Oq9btw4//fQTYmNj+Wybn58fLl68iJ07d6JTp058NsTX1xcBAQF4+PDha/s5evQo7t+/jzt37uDu3bs4deoUhg8fXt+nw5APrIVEATQGbcF0ReNAOlFNWgEqnahmbm7O6wovLy8YGxu/9R5TMSlib2+vFN5eRIQHEVkIDMvlzTBVNIwhUHlVdSIWlcC5ZSJ8h5tCIKj7fVQkJmw5mYLozNcnoIiEedBADkz1y+BkpYrOLs1lTEKlLTempqawtLRU2H2diFBSUsK35AQGBmLNmjWwsLBAZmYm7OzssHXrVr5itKFguoJRBcwDQ1E8ffoUy5cvR1JSEqytrfHxxx/DwsICo0ePhqurK06dOgXgVW/o0qVLERgYiEuXLsl9Lf91J1dXV4dAIIBEIgHHceA4Dunp6bzL76hRoyAWi/Hzzz8jISEB5ubmcltLTEwMjhw5guLiYrRp0wYTJ05UiptcY4SIUFBQgPv37/N+GpGRkdDX1+dFh4+PD8zNzfmb4N27dyEQCGBiYlLvPhvVQerFUVxcDEdHRySkl+FWSDqi4oWwMCiBt20pNDQ0ZNzJq1P+uuSQBvKKaneuxfmpCL+z/Y2PmfZZT4wd1qFW+68pjx49wty5c2FnZwdra2uEhITg5cuXaNWqFX788ccaZxbkRVhYGCZMmIAPP/wQAwcOxKFDh3DkyBHMmDED3377Lf+4+Ph4uLm5YdWqVfD19a10X/n5+di9ezcWLFiA3NzcevfzYMgNFsCQM8qiLZiuaLoQEeLj4xEQEMBri6ysLLRt25bXFh4eHnw1YHFxMe7evQttbW2lSopUJDc3FxERETAxMYGZeSsEPMpESGQR0nM5dLVPh1FziUz7po6OTq30UfDTHOz/SwUCjZbVejwRQVyaAy3VXOg1y4G5XgGG9LGHkYF8fMKqi1gsxo4dO3D69Gn07NkT+fn5ePDgAUpKStClSxe+Jay+YbqCUQUsgKEIoqKi0KFDBwwePBh2dna4cuUKioqK0K5dOwwePBiLFy+Gi4sLjhw5Ag0NDaioqGDChAkoLCzE0aNHoaKiIreo63/dyY2MjDB//nyMGDECLVu2lBEbGRkZ2Lt3LxYsWAB9fX1cvnwZXl5eclkHADx58gRdu3aFl5cXysrKEBwcjK5du2L+/Pno27dvg2eQmwJST4t79+7x2ZSkpCRYWFggPz8fQqEQBw4cgJWVldI932lpaYiNjYWVlRXMzMwqXZ80a1DRnbysrEzGnbx58+avVaEsOaiBvOLaBTCK8pIRcXdnlb9vpqaKnxZ/BK/2lrXaf3UpLS3F6tWrce3aNWzbtg3u7u7876QjfKXPQUNx+vRpLFq0CHl5ebCzs8PYsWPxxRdfyAjBzZs3Y8mSJXj27NlrTubSUtCMjAwMGzYM5ubmOH78OCs9b7ywAIYcURZtwXTFu4dIJOInqgUFBeHBgweQSCQwMzPD06dPMWzYMCxZskQhfhp1QSQSISYmBoWFhW80KJdIJHz7ptQkVCAQyJhhvmnkcHGJGBuOpyGpyAoCQd068SUSMUiYhR7tCvHx+yZ12ld1iI6OxqxZs+Dh4YH/+7//g5bWqwpXoVCIuLg4tG3bVuHrqAqmKxiVwAIY8oaIsGTJEkRERODkyZMAysvqdu7ciQMHDsDCwgJTpkzBN998g9LSUjg5OUFTUxMXLlzA3bt35Zo9rcqd/N69e3jvvffg5+cHc3NzmdnHkyZNwqlTpxAQEIB27drJbS0lJSX46KOPYGVlha1bt/JtDCNGjIC2tjbmz5/PG08x5AcRYe/evfjpp5/Qr18/iMViPHjwAEVFRXB2duZLRNu3b99g/gklJSWIjIyEiooK2rZtW2MBREQoLCzkgxr5+fkgIplsiv/vxsivZQCjMDcJkQG7Kv2ddWtTrF48DKbGis2WhISEYPbs2Rg2bBj8/PzqJbso7aWvDS9evICRkREvFh8/fgwTExM0b94cnTt3RteuXbFlS9WTXS5cuIBBgwYhODgYnp6evABhNDpYAENOKIu2YLqCAZSbx86ZMwfPnj1Dnz59EBUVhYiICOjq6vLVn97e3mjVqlWDfXZLkyKWlpYylajV5b/tm0VFRWjWrJlMUENDQwNXgzJx+q4WVDTkM7FEXFYEb6sUTBxsKpf9VYV07Prx48exceNGdO3aVaHHA5iuYMgNNoVE3nAch8TERCQnJ/PbtLS08Pnnn0NTUxO7d+/mew1/+OEHZGRkQEtLC0FBQXBycpLrWt7kTn769Gloa2tjwYIFfMb2l19+we+//44bN27IVWQAgIaGBnJyctClSxcA5RFRGxsbXLx4ESNHjsTq1athb28PZ2dnuR73XefQoUN48OABAgMDZUyQhEIhHj58iMDAQOzevRuPHz9Gs2bN4OHhwYsPOzs7hX64S6sGEhMTYW9vX+uZ2hzHQUdHBzo6OnxZslgsRkFBAXJzc/HixQtQmTqAWpa1VmLiqaqqBt9Pe+KTIfIbb1wZJSUlWLVqFe7cuYO9e/fCxcVFoccDysss//jjD5w/fx7R0dEYP348pk+fXiPxZ2VlJbO/bdu2Yffu3ejRowcePXqEffv2vfY30i88BQUFOH78OJycnHgzQCYyGO86yqItmK5gAMBXX32F0aNHY8SIEfy9gYiQkZGBoKAgBAQE4Ndff0V8fDwsLS1lJqrp6+srtDKmtLQUEREREAgE8PLyqnVViKqqKgwMDGBgYCCzb2lA4+XLeJy4o4tidVeoaMjnHqVW9gLzR+qgVUvFBi+kY9e7dOmCW7duKbydgukKRn3AKjBqifSNsmnTJhw6dAi//PKLzBeO3NxcrFixAtevX8c///zDl2lVzFTIk9DQUAwcOBAHDhzA+++/LxP5XLRoEY4dO4Z9+/ahe/fuAMCPW2rTpvrTHaoDEaG0tBQ9evSAq6srdu/eDaDc70BNTQ1paWnw8PBA//79sWfPHrkem1E9iAh5eXkIDg7mTUJjY2PRsmVLeHp68pNPWrZsKZdrtaCgAOHh4dDT04ONjU29lPHFpxTin9A8RCcCWUVaEKvoQUX17TftguyXiLq3l/+/o31r/PTNh9BvodgbflBQEObMmYOPP/4Yc+fOhapq/cSWp02bhj/++AP9+vVD+/btsWXLFowaNQr+/v512u+5c+ewY8cO/Pnnn/D09MQ333yDDz/88LXzCg0NRe/evbF69WpMmTIFIpGo3s6dIXdYBYYcUCZtwXQFoyZIJBI8f/4cgYGBuHfvHoKDg5Gfnw8nJye+AtTV1VUuX6CJCImJiYiPj4e9vT2MjIzkcAZvpkwkwb2wDNwPL0B8hioKxXpQ0TCqcRuJSJiPno6ZCm8Zaaix60xXMOQMayFRBLGxsejUqRMGDhyIn3/+WcbQKDk5GRYWFjIOuPIUGbV1J1dkL5j0/E6fPo1PPvkEu3btwoQJEwC8Kif77bffMG3aNNy6dQu2trasb1UJkIqBin4aaWlpsLe3lzHy0tHRqfbrJRaL8fz5c2RlZcHR0bFB/RoA4HF0LgKfFCIuTYDcEh1ATR8CFdn2jPysOEQH7UezZuqY/fn7GNxHvlnE/1JcXIzvv/8eISEh2L59u9wrs97E5cuXMWzYMGzatAmTJ08GAJw6dQqff/45bt++DScnJzx79gxFRUW1rgZJTk7GkiVLwHEcli1bBgsLC/5zQCKRYPXq1Vi5ciUKCgrkeWqMhoEFMORIQ2kLpisY8qSsrAxhYWF8suThw4cQCATw8PDgEybVmahWkYKCAr6Fxc7OrkG9DQqLyvDPgzQ8iilBco46SmEAVQ3DKq8/LUkc5o5uASN9xbbxPn36FDNnzkTv3r2xdOnSemsbZrqCoQBYC4kisLW1xfHjxzFgwABoampi2bJlMDUtLwdTU1ODu7u7jMmMvG6qlbmTr1+/HqNHj8ZHH32EU6dOQV1dnRcVvXv3RmBgIADI/cNemgUBXp1f7969MXXqVCxZsgSqqqoYN24cn7mRTpbQ1dVVmMhghj01g+M4tGrVCq1atcKIESMAlD+HERERCAwMxO+//47vvvsOZWVlaN++PZ9NcXZ2rtSjISsrC1FRUTAzM4O3t7dSlO+1t2+B9vblrTUSiQQxsRG49yQH6UVGSMnVRKGoOSARoa2NKfy+6ApTE0OF9k3euXMHfn5++Oyzz7BmzZp6v15XrFiBDz74ACNHjuS3ubm5ASj/UgAAx44dw6VLl5Ceno6hQ4di2bJlNRJCZmZmfLZUyoYNGxAaGop+/frh8OHD+N///geAvWcZjIo0hLZguuLtsM+pmqGmpgYPDw94eHhg2rRpMhPVAgMD8eOPPyIqKgqGhoZ824mPj0+l5t7SCo/MzEylSIoAgLaWGj7oaoEP/rWUKC4uRmDwP4hKUkNKng4yCrUhVjECkRg+rWMxoLMBtDUkCqvGFgqFWL9+PS5evIitW7fK1US3OjBdwagvWABDDvTu3RsnTpzAqFGjkJycjJEjR8Ld3R2HDh1CUlISbG1t5Xq8qKgodOnSBYMHD8Z7772HK1euYOnSpWjXrh1WrFiBxYsXY+jQobw7OVBuiKOrqwuRSCTXySdhYWGYNm0atmzZAldXV367vr4+fH19UVJSglmzZiE9PZ2Pxt66dQsaGhoKMSdMT0+HsbExVFRU2AdXHVFRUYGzszOcnZ35m0FJSQnvs7F582Y8efIEOjo68PT0hJeXF2xtbbF27Vp06dIFkydPVsrRVfn5+QgPD4eRkRHGDvWQCVCUlbVEcfGHyMvLQ0JCAgoKCsBxHHR1dXkjL21t7Tq9fwoLC7F8+XI8efIEx44dg729vTxOq0ZER0fjzp07OH/+vIxfSmhoKCwtLZGQkAAPDw/07dsX7dq1w6FDh+Dv74/p06fDwsKiTsf+5JNPEBISgmnTpqGsrAwDBgxARkZGrX1RGIymSn1qC6Yr3gzTFvJBej/t1asXevXqBaC8wiYlJYWvAN2zZw+Sk5NhY2PDBzRyc3Oxfv167Nq1S2mSIhWRjqNNSkqCm4sDenWXnY5RXCJBUWFL5ObmIjk5ma8YkE5Ta9GiRZ2nujx69AgzZ87EwIED8c8//9T7lBimKxj1CWshkSMhISGYO3cuYmNjoaamBjU1NRw5cgQeHvIz/1MWd3IAiIuLQ79+/RATEwMrKyucPXsWLi4uMlnrmJgYHDt2DCtXroSpqSmaN2+O1NRUXLx4Ua7PCwCEh4fD2dkZH3/8MY4ePQqARV8VDREhKysL9+7dw549e/DXX3/ByckJOjo6vJeGt7c3DA2rLqmsL6QtLdnZ2fwaq/t3FUe5FhYWQk1NTWaUq4aGxlvPj4jwzz//YOHChZgyZQqmTZvWYNfmihUrcPDgQdy8eRNmZmYAyjOeP/zwA44ePYqbN2/C2NgYQPn5v//++7CwsMChQ4fktgaRSIQ9e/Zg0aJF0NbWxo0bN2BtbS23/TPqHdZCoiAUrS2YrngzTFvUPxKJBNHR0bh27Ro2b96M3NxctGrVCra2tnwFqIuLS4NNVKtIbXy+pL4uUl2Rm5vLj4mXBjR0dXWr5d1Qcez69u3b+YqH+obpCoaCYB4Y9UFeXh6ysrJQUFAAU1NThRgLTZo0CVFRUbh9+za/rbCwEIcOHcLu3bvRv39/LFiwQMadfOrUqXLtry8pKcEPP/yAsLAwzJ8/H8uXL8fjx49x6dKl18QGAERGRuL27dvQ1dWFj4+P3D9QkpKS8NFHH4GIEBkZiUGDBvEfikxoKJb8/HyMHTsWJiYmWL16NfT09PDy5UsEBgbyfhq5ublwcHDghYe7uzs0NTXrLaiRk5ODiIgImJubo3Xr1nU+rlAolAlqSLMpFYMaFbMf+fn5WLp0KWJjY7Fz507Y2NjU9ZTqhK+vLzIyMnDw4EHeBPDBgweYM2cOrKyssG/fPv49HBgYiC5duuDGjRvo1q0bgFfvqZycHDx8+BABAQHo378/3N3da7WeyMhItG7dWmYmPaPRwQIYCkTR2oLpisph2qLhuHbtGr7++mvMnz8f48aNk5modu/ePYSFhUFdXZ2vAPX29oatrW29VWdIR/lmZGTIpaWl4ph46Y9EIpEZE6+joyNzfg0xdr0qmK5gKAgWwGjsKJM7OQAcOXIEADBmzBhkZGRg3LhxCAsL48WG9LiKnr9MRNi7dy/OnDmDuXPnIiUlBVOmTMGQIUN4ocFciBUHEeH+/fvw9vau8jEikQhPnjzhAxqhoaEAynsjpcLDwcFcih93AAAevElEQVRB7q+RSCRCTEwMioqK+KyhIiAilJSUyAQ11q5di+LiYlhaWuL69euYOXMmpk+frhSlr+vWrcNPP/2E2NhYfs66n58fLl68iJ07d6JTp078+9fX1xcBAQF4+PChzD4KCgowYMAAPHv2DHZ2drh//z6GDx+OzZs3y5SPMt4ZWACjEcJ0RdUwbdGwPH/+HLq6ulUG64gIubm5/Ehh6UQ1MzMzmYlqJiYmcr9W8/LyEBERAWNjY1hZWSnsWpRIJMjPz+e1xYsXL7B8+XK4uLhAKBTixYsX2Lt3r0yrVUPBdAVDQbAARlOhoSefiMXiSsv2UlNTMX78eISFheHy5ctwdnaGUChEWFgYHB0dFRoFzcjIwPXr1zFy5EiIxWKcPn0aU6ZMwaBBg3D48GEALFuiTEgzDffv38e9e/dw7949REZGQk9Pjw9oeHt7w8LCotbCICMjA9HR0bC0tIS5uXm9t7BkZmZi0aJFePnyJSwtLREdHQ2JRAJ3d3dMmjQJnTt3rtf1VCQsLAwTJkzAhx9+iIEDB+LQoUM4cuQIZsyYgW+//ZZ/XHx8PNzc3LBq1Sr4+vryXxoyMzOxePFinDt3DsePH0eXLl0QEhKCkSNHYseOHejbt2+DnRujwWABjEYM0xWVw7RF44KIkJCQwPtp3Lt3D5mZmWjbti1vEurh4VFrLyuxWIxnz54hNzcXTk5O/Bf1+uTq1av46aefeN+M2NhYmJiYwMfHB4sXL26wigOmKxgKovI3KhG96YehpFy9epXU1dXJ19eXkpOT+e3p6enk4eFB165dk/sxnzx5Qh9//DF169aNxo8fT4cPH+Z/JxaLiYgoOTmZ+vfvT+bm5vTgwQOaOnUqeXt7U3Z2ttzX899jV6SkpIROnDhBzZs3pzFjxvDbDx48SC9evFDYWoiIJBIJSSQShR6jKSKRSCg1NZXOnj1L3377LfXr14+cnZ1p0KBBtHTpUjpz5gwlJCRQQUEBFRYWVvmTnZ1NgYGBdOfOHcrKynrjYxXxU1BQQL/99hu1b9+efvnlF5nrs7i4mAICAigiIqIBn+lyTp06RQ4ODmRmZkbdu3enbdu2vfZe2rRpE+np6VFWVpbM9hMnTpC5uTn9+uuvRFT+2gmFQurTpw9NmjSp3s6BoVS8TU8wbaHkMF0hizJpC6Yrao9IJKLHjx/T7t27ydfXl3x8fMjDw4MmTJhAGzdupLt371JOTs5b7+3x8fH0999/U0RExFt1iCJ+0tPTadasWdSjRw8KDw+XOceUlBQ6e/ZspddsfcJ0BUMBVKojWAVGI+bs2bMYNWoU+vfvL+NOvn//fgQFBaF169ZyO1ZUVBQ6dOiAwYMHw87ODleuXEFhYSE8PT2xZ88eAK+yEKmpqZg0aRIuXrwIbW1tXL16FT4+PnJbCyA7Yq0qSkpKcO7cOUyePBlDhgxBy5YtsX79esTFxcHS0lKu65EeT0NDA0KhsN7dn5sqEokEsbGxfCYlODgYhYWFaNeuHV+p4erqys//Pn36NMzMzGBnZ4eWLVvW+3qzs7PxzTffIDs7G9u3b6+zs3Z1kF53teXFixcwMjLiM0mPHz+GiYkJmjdvjs6dO6Nr167YsmULnyXJycnBwoULce/ePYSEhAB4VUbt6uqKAQMGwN/fX2El5gylhVVgNAHeZV0BKJ+2YLpCMRQVFeHBgwd8BejTp0+hq6vLt554eXnxrSGZmZm4cuUK2rZtq9BW1KogIty9e5cfuz5z5sx6qfipi7ZguoIhR1gFRlPk/v371KtXL2rdujXZ2NiQg4MDhYSEyPUYEomEFi9eTB999BG/rbCwkDZs2EDOzs708ccfyzxeKBTS+PHjycDAgJ48eSLXtRARPX78mLp160YPHz5862NLSkro6NGjxHEcGRgYUHBwsNzXQ0QUFhZGgwcPpp49e1K3bt3o3LlzlJOTo5BjveuUlpZScHAwbd68mcaPH08eHh7k5uZGzs7O1LNnT7p58ybl5eXVe9XFiRMnyMXFhfbv318vWZC8vDw6ePAgjRkzhry9vWnjxo11ztDl5eXRtGnTSE1Njd577z3iOI4ePHgg85ioqChq164dLV++nIjKXw8iori4ODI0NKT9+/fXaQ2MRgurwGgivIu6gkj5tAXTFfWHRCKh9PR0On/+PH333Xc0cOBAcnZ2Jm9vb7K0tKR58+bRixcv6r3yIi0tjb766ivq1asXRUVF1ctzIW9twXQFo45UqiOYyGgC5Obm0vPnz+nx48eUnp6ukGNMnDiRunTpIrOtsLCQduzYQW5ubvTNN9/w2zdu3EgqKip0//59ua/j+fPnZG9vTxzHkbW1NT1+/PitfzNlyhTS0dFRmOiJjo6mFi1akK+vL3333Xf02WefkaqqKs2ePfu1Mj+GfJFIJLRr1y5ycXGhH3/8kX744QcaPnw4ubi4UO/evWnevHl09OhRio2NVZjwePnyJX3yySc0bNgwSkpKqrdznzp1KpmZmdGECRNozZo11KZNG/Lz85PLvs+ePUuDBw8mjuPIy8uLTp48SUKhkIiIIiIiiOM4io6OJqLythgioqVLl5KHhwfdvn1bLmtgNDpYAKMJ8S7pCiLl0xZMVzQsaWlpNGbMGBo0aBBt27aNvv76a+ratSu1b9+eRo0aRT/++CP99ddflJGRoRBtUVBQQBcuXCA3NzfatGkTiUSiejt3RWkLpisYtYQFMBg1Rxp13bhxI3Xo0OG1m3pubi7NmTOHfHx8KC0tjYiIzpw5o5BIcXFxMS1ZsoSGDx9Od+7c4Xti3yQ0Tp8+TVZWVgqrvCAq/4B9//33Zbbt3LmTWrduTV9++SU9e/ZMYcd+17l8+TLNmDGD8vPzZbZLJBJKTEyk06dP04IFC6hPnz7k7OxMH374Ia1YsYLOnz9PycnJdRIeBQUFdPjwYXJxcaEjR47Ua3/ypUuXSFNTk3bv3s1vO3nyJOnr68v4a0hFQG1JSkqiyZMn05QpUygxMZGIiP7++2/S09OT+SIhFoupVatWNHv2bMrNza3TMRmNFhbAYFQLZdIVRMqpLZiuaFimT59Ov/3222vbhUIhPXjwgLZv306TJ08mLy8v8vb2pilTptC2bdsoKCiozhWgKSkp9MUXX9D7779f769zfWgLpisYNYQFMBi1JyYmhoyMjGj8+PGvGWclJSURx3F0+vRpha/j8OHDvMlXeno69evX741CIyMjgxISEhS6prlz51KvXr1IIpFQWVkZv33fvn1kaGhI/v7+RFS5IRij/hCJRPT06VPau3cvTZs2jTp27Eju7u702Wef0YYNG+jWrVuUnZ1dLYERFxdHH330EX388ceUmppa7+fStWtXGj58uEw5sTRjFxoaShKJhE6ePEmjR48mNzc3mjNnzmuGWbUlPz+fevbsyWdHIyIiaOrUqWRhYUGhoaFyOQajUcICGIwaoSy6gkj5tAXTFY0DiURCeXl5dO3aNfL396eRI0dS+/btqUePHjR79mw6dOgQRUVFVStZUlBQQGfPniVXV1favn17g7y2DaUtmK5gvAEWwGDUjYZwKCciKisro5KSkkp/l5KSwguNsLAwIiqPkIeEhLyWlVcUGzduJB0dHXr58iURverdIyLy9/cnTU1NiomJqZe1MGpGcXEx3b17lzZs2EDjxo0jNzc36tSpE3355Zf0yy+/0MOHDyk/P19GYOzfv59cXFzoxIkTDeIKHxUVRRzH0YULF2S2Hz9+nNzd3enatWu0bds2MjQ0pEGDBtH+/fupU6dONGTIELmVoe7fv5/09fXJ2dmZHBwcyN7ens6dOyeXfTMaLSyAwagxDaUriJRbWzBd0XiRSCSUkpJCZ86coUWLFlHfvn3J2dmZBg8eTN999x2dPXuWEhMTZYIaSUlJ9L///Y8++OADhU/Kq4qG1hZMVzCqgAUwGHXnzJkzpK6uTkOHDqUDBw7Qo0ePyM/Pj1q2bMnfaOWJMo9YkyIUCqlbt27k5eXF9wpLy+tycnLIysqKDh48qNA1sCyMfJBIJJSZmUmXLl2i5cuX0+DBg8nZ2Zn69etHM2fOpJ49e9LYsWMV1hNeHZYvX052dnYyfhtCoZCWLVtG7dq1o/Pnz5OxsTH5+/vz4vzWrVtkbm5OZ86c4f9GLBbXSXQIhULas2cP7d+/ny/zZrzTsAAGo1bUt64gUn5twXRF00IsFlNkZCQdOHCApk+fTp07dyY3NzcaM2YMffHFF9SuXbvXxq7XN8qgLZiuYFRCpTqCjVFl1JiQkBDMnTsXsbGxUFNTg5qaGo4cOQIPDw+5HkcZR6xFRkZix44dSEpKgru7O/r16wdPT09cu3YN8+fPh7a2Nn777TcYGBgAAHJzc9G1a1esWLECI0aMkPt6oqKikJmZic6dO/PjqBjyRSKRID4+HhcuXEBmZiYWLVrUoGO8fH19kZGRgYMHD0JLSwtA+Xty4cKF/Bi4zZs3Izk5WebvjIyMsGbNGkycOBEA8Pvvv+PAgQOwtbXFhAkT4OLiUqd1sevvnYeNUWXUmvrSFYDyaQumK95NhEIhHj16hN27d2PWrFlwcnJq0PUoo7Zg1x8DbIwqQ54o2qFcGUesPXnyhFq0aEGDBg2isWPHkrGxMXXp0oU2b95MRETnzp0jLy8vsrS0pDNnztClS5do0aJFZGJiQnFxcXJfT2RkJKmpqRHHcXT58mUiYhmTd4G1a9dSy5YtqaCggN82b948cnd3p3379pGrqyutWLGCiIjPkjx69IgsLCxk+sl37txJCxYsIFdXV+I4jq5cuVK/J8JoarAKDEadqI/JJ8qmLZiuYCgLTFswlBTWQsJoXCjTiDWpiJk8eTK/7fnz5zRlyhRydXWl1atXExFReHg4jR07loyMjMje3p7at29PISEhcl9Peno6DRkyhIYNG0bjx48ngUBAFy9eJCImNpo6jx8/Jk9PT1q+fDkFBQXRrFmzyMjIiPz9/SkgIIAEAgFvLCo1f/v++++pY8eOdOPGDZl9ZWZmkp+fH9nZ2VXZC85gVBMWwGA0CpRFWzBdwVAmmLZgKCmV6ghWl8NQOujftiZPT0+IRCKEhYXxv9PS0sInn3yC9957D3/99RfS09MBANbW1ggPD4enp6dC1qSmpobk5GRIJBJ+jdbW1li+fDl69uyJY8eO4dixY3B0dMSvv/6KW7du4caNG7h27ZpCSmCTk5Ohq6sLX19frFq1ClOmTMHAgQNx8eJFCAQCiMViuR+ToRy4uLhg8eLFOHz4MIYOHYqQkBAsX74cfn5+CAoKgpWVFQwNDUFEUFVVRUFBAf766y/Y29vz12JZWRkAICEhATdv3sSgQYOgrq7OrhsGg9FkUTZtwXQFQ5lg2oLRqKgqskEsS8JoYJRlxJpIJCKhUEiTJk2ioUOHUkFBAUkkEj4jERcXR3379qXBgwfzf1Mf0ykePXrE/zs+Pp4+//xzEggEdP78eSJ6ZaQkFAoVvhZG7ajLLHWi8muvYrnn0aNHqWXLljLZwnXr1pGzszP9+uuvRCSbSdu6dSuZm5vzpdEsy8aoA6wCg9EoUAZtwXQFQ5EwbcFoQrAWEkbjo6FHrFXk+vXrpKKiQuvWreO3ST+UAwICiOM4evDggcLW8zYSExN5sSEdgzVv3jw6fPiwwoUPuznVjLy8PDp48CCNGTOGvL29aePGjXJ5jXJzc6l79+40efJkCggIoJUrV1KzZs1o2bJl/Fx36XX94sULGj58OA0YMICI6kccM5o0LIDBaDQ05Fj4ijBd8WaYtqgZTFswmiAsgMFonDTEiLXIyEhaunQpRUVFyWxfs2YNCQQC2rZtm8z2sLAwateuHUVGRipkPRERETR79mwaPXo0rVq1SiYKXlEQScWGuro6DRgwgDiOo4cPHypkTYWFhSQUCqmoqEgh+2/KTJ06lczMzGjChAm0Zs0aatOmDfn5+dVpn1KREBQURN27dycTExPq2bOnTD93RX777TeysrKiEydOEBHJZY47452GBTAYjYr61hZMV1QPpi1qD9MWjCYIC2AwGi/379+nXr16UevWrcnGxoYcHBwUYmJFRBQdHU1GRkbEcRzNnDmTnj9/zv+usLCQli9fThzH0YIFCygwMJDS0tJo4cKFZGNjQykpKXJfT2Uu5d26daO1a9fyj6koNp4/f07W1tZkYGCgMJHx+PFj6tGjB3l7e1ObNm1oy5YtFB0drZBjNTUuXbpEmpqatHv3bn7byZMnSV9fnyIiIvhtdS0BzczMfK08WloSmp+fTzNnziRnZ+c6HYPBqAALYDAaHfWlLZiuqB5MW9Qepi0YTRQWwGA0bupjxFpBQQFNnjyZxo8fT9u3byctLS368ssvZcSGWCymAwcOkKmpKZmampKDgwNZWFgoRPS8yaXcw8ODVq5cKbMusVhMX3/9NampqdHjx4/lvh4iomfPnpG+vj599dVXtGfPHlqwYAGZmprSmDFj6J9//lHIMZsSXbt2peHDh/Nll0Tl4rZFixYUGhpKEomETp48SaNHjyY3NzeaM2cOZWVlyeXYX331FQ0fPpz8/f3Jw8ODvv/+eyJiGRKGXGABDEajRNHagumK6sG0Rd1g2oLRRGEBDAbjbRQVFdHmzZvp8OHDRFReCicVG8+ePZN57PPnz+nGjRt08eJFSkhIUNia+vbtS5MmTSKiV6V8iYmJNGPGDOrQoQMdOnSIf2xkZCQNGjRIYdUpROXGTd26dZPZdvLkSerYsSMNGzaMAgMDFXbsxk5UVBRxHMf3Eks5fvw4ubu707Vr12jbtm1kaGhIgwYNov3791OnTp1oyJAhchECkZGRNHr0aFJXVyeO42jRokWUmprKelQZ8oAFMBiMSmC6onowbVF7mLZgNGFYAIPBqA4VnZeJiE6dOkVaWlo0bdo0PmNSVlZGL168UOg6qutSPmTIEJm/y8/PV+i61qxZQ87OzpSTkyNzczp79iy5u7vTjBkzqLCwkN24KmH58uVkZ2dHSUlJ/DahUEjLli2jdu3a0fnz58nY2Jj8/f352em3bt0ic3NzOnPmjNzWUVZWRtu3byd9fX2ytbVV+DXDeCdgAQwGowqYrng7TFvUHqYtGE2YSnWEoKHHuDIYyoa2tjYAQCwWg4gwYsQIHDhwAPv378fq1asRHR2NBQsWYPbs2SgsLCyPBMoRkUgEAFBRUYGamhomTJiAP//8Ezt37gTHcRAIBJBIJLCyssLKlStx7tw5hIaG8uvQ0dGR63r+S+vWrRETE4OIiAhwHAehUAgAGDx4MGbNmoXt27cjPDwcHMcpdB2NkcTERLi6uqJFixb8tsePH+P27dtwdHRESEgIVFRU4OfnB3V1dQBA165dUVpaioyMDJn9/PHHH1i6dClCQ0NrvA5VVVX4+voiKysLly9fVvg1w2AwGO8yTFe8HaYtag/TFox3jqoiG8SyJAyGTGbi1KlT1KJFC7KxsSFVVVWFjDZTNpfyilTMeowYMYIsLCx4czFpRJ+IyNHRkfz9/RW+nsbI2rVrqWXLljLZuHnz5pG7uzvt27ePXF1dacWKFUT06jl99OgRmZub02+//UZERLGxsWRjY0O2trbUp08f0tHRoWnTplFhYWH9nxCD8QpWgcFgVAOmK2Rh2qLuMG3BaMKwCgwGo6ZIMxP0b8akQ4cOyMnJwYMHD+Du7i7XY8XExKBr165YuXIlNm/ejLi4OP5306ZNw3fffYcvv/wSCxcuxL1795Ceno5Dhw6hpKREJuouT1JTU/Hy5UsA5c+FRCIBAKxYsQKWlpbo0KEDXrx4wUf0S0pKoKOjAyMjI4Wsp7HTr18/WFhYYO3atQgODsbXX3+Nffv2YcyYMXB0dERYWBh8fX0BlGfKAODMmTMwNzeHpaUlkpKSMGfOHOjo6OD69ev4+++/ce7cOZw9exbh4eENeWoMBoPBqAbvuq4AmLaQN0xbMN45qopsEMuSMBg8IpGIZs+erbD558rmUk5E9PTpU9LQ0KABAwZQfHz8a78PCgqiXr16UYsWLWjTpk108OBBWrBgARkYGFBMTIxC1kRUnk06deqUwvavaE6dOkUODg5kZmZG3bt3py1bthAR0aZNm6hNmzYkEon4jFR+fj716tWLxo0bRyKRiH7++Wdq164d/fnnn/z+0tPTycPDg5YuXdog58Ng/AurwGAwasC7qCuIlFNbNHZdQcS0BaPJUqmOUG3oAAqD0VhwdnZGSEgIXF1d5b5vgUAADw8PGBgYYMyYMWjZsiXGjRsHAJg3bx7atGkDgUCAzz77DN27d8fLly9RXFwMFxcXWFhYyH09qamp+Pzzz9GzZ0+EhITA19cXO3bsQKtWrfjHeHt749SpU/jhhx+wZcsWEBEMDAzw119/wdbWVu5rAoDo6Gh4eHiguLgYu3fvxv/+9z+FHEeRjBgxAiNGjMCLFy9gZGTE90YbGxujqKgIDx8+hKenJwBg165dSE1NxcyZM1FUVIQrV67A0dERAwcOBFDeT21kZISMjAzo6+sDKA9Ksx5hBoPBUH7eJV0BKKe2aAq6AmDagvGOUVVkg1iWhMGQQdHO18riUk5EdOHCBRozZgyFhITQkydPyMTEhAYOHFhptoSIKCEhgXJycmTmj8ub7OxsGjVqFI0ePZr8/PxIIBDQzp07FXa8+iY3N5e6d+9OkydPpoCAAFq5ciU1a9aMli5dSiUlJXTnzh1q3749bd++nYiISktLiag8m6WiokI3btxoyOUzGKwCg8GoIe+SriBSPm3R1HUFEdMWjEYPq8BgMOqCoiPPFV3KBQIBRowYASLC+PHjwXEcvv76a2zfvh1xcXE4cOAAtLS0FLYmb29vaGhowMPDAwDw999/o0+fPvD19cX27dvRunVrAOXO5qqqqgrL1lQkMzMT5ubm6NOnDwYNGgRdXV1MnToVRIQvvvhC4cdXJESE5s2bY926dZgzZw6GDh0KJycnzJ07F8uXLwcA5OfnIzY2Fh9++CH/NwCwfv16uLi4wMrKqsHWz2AwGIya8y7pCkD5tEVT1hUA0xaMJkxVkQ1iWRIGo8Gob5dyovIszJu2h4WFkbGxMZ8tKS0tpa1bt9Lly5cVsp7KiI6O5v9dWlpKK1asIIFAQDt27OC3i8VihVaC1AeZmZmUnZ0ts+3kyZOko6NDaWlp/LaUlBTS1NSkNWvWkFAorO9lMhgVYRUYDIYS0xC6gkj5tcW7oiuImLZgNEoq1REcvXnWtHwHUTMYjBpB//Yc9uvXD/fv38eNGzfg4uIi9+NERUXh119/xaeffgp7e3uZY1f899OnT9GrVy907NgRzZs3x4kTJxAeHq4wzwspEokEAsGroUnS9YhEIqxatQrLli3Dtm3b8MUXX2DevHkwNjbG3LlzoaraNIrMiAhpaWkYMmQIRo4cCT8/P9y8eRMbNmxAeHg4bt26BUNDw4ZeJuPdpiZpW6YtGIwGor50BaDc2uJd1xUA0xaMRkHl2qKqyAaxLAmD0eAo2qWcqDz7YGRkRBzH0cyZM2Ucyisi7dUNDQ0ljuPIwMCA7t+/r5A1EZVnAKrTl1tWVkYrV64kdXV16tKlC3EcR6GhoQpbV0OyefNm0tXVJWdnZ7K0tKTu3bvT3bt3G3pZDAYRq8BgMBoF9aEriJRTWzBdUTlMWzCUmFpVYDAYjAaE4zgVABMB3CeiUAXsXxvAzwDUANwBsA7APgCriSiukserA1gLYAKAjkT0VN5r+vc4TgBCAFwD8AURJbzl8doAbgNoDaA3ET1SxLqUAY7j1AB8DCAPwF9EVNzAS2IwGAxGI0HRuuLfYyidtmC64s0wbcFoTDSdOigGowlCRGKO4/aQ4iKNEgAPAGQR0RGO41IB/AoAHMdVJjRcAfQC0EeBwYuWAHYBuAHAE8AOjuN8qxIbHMcJAKz8d21uRPRYEetSFoioDP++RgDAcRynwOuDwWAwGE2IetAVgJJpC6Yr3g7TFozGBAtgMBhKjiJvIERUzHHcPiIq/Pf/v3Mc9xmAgyi/f/kT0Yt/b+YWRBTEcVx3IspW1JoAeAB4CWA1gFKUZ0veJDbMAWgC8HwXRMZ/YQKDwWAwGDVB0fcNJdQWTFfUEKYtGMoMayFhMBgA+LJSCRERx3EfATiA8pLPDQCmArABMFbRZYUcxxkBcCGi6//+3wXAVQBBAKYSUfy/2wVEJPn335qs3JHBYDAYDOVCGbQF0xUMRtOCBTAYDAYPV24NzhGRhOO4EQD2AMgEYAmgAxE9UNBxVYlIVNV2juOcUZ4xCQLgCyANwGQAz4jokiLWxGAwGAwGo+40hLZguoLBaLqwAAaDwXgNae8jx3GXAXgB6ElEYQo6VlsA4wAcIqLoisf/z1raAbgOIBDlJlOjADgRUawi1sVgMBgMBkN+1Je2YLqCwWjaMA8MBoNRGQKO41YDeB+AuwKDF3Yod/k2BKDHcdx6Ioqr2Hv5r8jgiOgpx3F9UW4Mlg2gExMZDAaDwWA0GhSuLZiuYDCaPv8PNuMV9mo9HhIAAAAASUVORK5CYII=\n", - "text/plain": [ - "
        " - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from qiskit.tools.visualization import plot_state_city\n", - "plot_state_city(outputstate)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Unitary backend" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Qiskit Aer also includes a `unitary_simulator` that works _provided all the elements in the circuit are unitary operations_. This backend calculates the $2^n \\times 2^n$ matrix representing the gates in the quantum circuit. " - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[ 0.707+0.j 0.707+0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j\n", - " 0. +0.j 0. +0.j]\n", - " [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j\n", - " 0.707+0.j -0.707+0.j]\n", - " [ 0. +0.j 0. +0.j 0.707+0.j 0.707+0.j 0. +0.j 0. +0.j\n", - " 0. +0.j 0. +0.j]\n", - " [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0.707+0.j -0.707+0.j\n", - " 0. +0.j 0. +0.j]\n", - " [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0.707+0.j 0.707+0.j\n", - " 0. +0.j 0. +0.j]\n", - " [ 0. +0.j 0. +0.j 0.707+0.j -0.707+0.j 0. +0.j 0. +0.j\n", - " 0. +0.j 0. +0.j]\n", - " [ 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j\n", - " 0.707+0.j 0.707+0.j]\n", - " [ 0.707+0.j -0.707+0.j 0. +0.j 0. +0.j 0. +0.j 0. +0.j\n", - " 0. +0.j 0. +0.j]]\n" - ] - } - ], - "source": [ - "# Run the quantum circuit on a unitary simulator backend\n", - "backend = BasicAer.get_backend('unitary_simulator')\n", - "job = execute(circ, backend)\n", - "result = job.result()\n", - "\n", - "# Show the results\n", - "print(result.get_unitary(circ, decimals=3))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### OpenQASM backend" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The simulators above are useful because they provide information about the state output by the ideal circuit and the matrix representation of the circuit. However, a real experiment terminates by _measuring_ each qubit (usually in the computational $|0\\rangle, |1\\rangle$ basis). Without measurement, we cannot gain information about the state. Measurements cause the quantum system to collapse into classical bits. \n", - "\n", - "For example, suppose we make independent measurements on each qubit of the three-qubit GHZ state\n", - "$$|\\psi\\rangle = |000\\rangle +|111\\rangle)/\\sqrt{2},$$\n", - "and let $xyz$ denote the bitstring that results. Recall that, under the qubit labeling used by Qiskit, $x$ would correspond to the outcome on qubit 2, $y$ to the outcome on qubit 1, and $z$ to the outcome on qubit 0. This representation of the bitstring puts the most significant bit (MSB) on the left, and the least significant bit (LSB) on the right. This is the standard ordering of binary bitstrings. We order the qubits in the same way, which is why Qiskit uses a non-standard tensor product order.\n", - "\n", - "The probability of obtaining outcome $xyz$ is given by\n", - "$$\\mathrm{Pr}(xyz) = |\\langle xyz | \\psi \\rangle |^{2}.$$\n", - "By explicit computation, we see there are only two bitstrings that will occur: $000$ and $111$. If the bitstring $000$ is obtained, the state of the qubits is $|000\\rangle$, and if the bitstring is $111$, the qubits are left in the state $|111\\rangle$. The probability of obtaining 000 or 111 is the same; namely, 1/2:\n", - "$$\\begin{align}\n", - "\\mathrm{Pr}(000) &= |\\langle 000 | \\psi \\rangle |^{2} = \\frac{1}{2}\\\\\n", - "\\mathrm{Pr}(111) &= |\\langle 111 | \\psi \\rangle |^{2} = \\frac{1}{2}.\n", - "\\end{align}$$\n", - "\n", - "To simulate a circuit that includes measurement, we need to add measurements to the original circuit above, and use a different Aer backend." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
                ┌───┐           ░       ┌─┐\n",
        -       "q_0: |0>┤ H ├──■────■───░───────┤M├\n",
        -       "        └───┘┌─┴─┐  │   ░    ┌─┐└╥┘\n",
        -       "q_1: |0>─────┤ X ├──┼───░────┤M├─╫─\n",
        -       "             └───┘┌─┴─┐ ░ ┌─┐└╥┘ ║ \n",
        -       "q_2: |0>──────────┤ X ├─░─┤M├─╫──╫─\n",
        -       "                  └───┘ ░ └╥┘ ║  ║ \n",
        -       " c_0: 0 ═══════════════════╬══╬══╩═\n",
        -       "                           ║  ║    \n",
        -       " c_1: 0 ═══════════════════╬══╩════\n",
        -       "                           ║       \n",
        -       " c_2: 0 ═══════════════════╩═══════\n",
        -       "                                   
        " - ], - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Create a Classical Register with 3 bits.\n", - "c = ClassicalRegister(3, 'c')\n", - "# Create a Quantum Circuit\n", - "meas = QuantumCircuit(q, c)\n", - "meas.barrier(q)\n", - "# map the quantum measurement to the classical bits\n", - "meas.measure(q,c)\n", - "\n", - "# The Qiskit circuit object supports composition using\n", - "# the addition operator.\n", - "qc = circ+meas\n", - "\n", - "#drawing the circuit\n", - "qc.draw()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This circuit adds a classical register, and three measurements that are used to map the outcome of qubits to the classical bits. \n", - "\n", - "To simulate this circuit, we use the ``qasm_simulator`` in Qiskit Aer. Each run of this circuit will yield either the bitstring 000 or 111. To build up statistics about the distribution of the bitstrings (to, e.g., estimate $\\mathrm{Pr}(000)$), we need to repeat the circuit many times. The number of times the circuit is repeated can be specified in the ``execute`` function, via the ``shots`` keyword." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "ExecuteTime": { - "end_time": "2018-09-29T00:04:28.595093Z", - "start_time": "2018-09-29T00:04:28.589162Z" - } - }, - "outputs": [], - "source": [ - "# Use Aer's qasm_simulator\n", - "backend_sim = BasicAer.get_backend('qasm_simulator')\n", - "\n", - "# Execute the circuit on the qasm simulator.\n", - "# We've set the number of repeats of the circuit\n", - "# to be 1024, which is the default.\n", - "job_sim = execute(qc, backend_sim, shots=1024)\n", - "\n", - "# Grab the results from the job.\n", - "result_sim = job_sim.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once you have a result object, you can access the counts via the function `get_counts(circuit)`. This gives you the _aggregated_ binary outcomes of the circuit you submitted." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "ExecuteTime": { - "end_time": "2018-09-29T00:04:30.559484Z", - "start_time": "2018-09-29T00:04:30.513862Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'111': 524, '000': 500}\n" - ] - } - ], - "source": [ - "counts = result_sim.get_counts(qc)\n", - "print(counts)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Approximately 50 percent of the time the output bitstring is 000. Qiskit Terra also provides a function `plot_histogram` which allows you to view the outcomes. " - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
        " - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from qiskit.tools.visualization import plot_histogram\n", - "plot_histogram(counts)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The estimated outcome probabilities $\\mathrm{Pr}(000)$ and $\\mathrm{Pr}(111)$ are computed by taking the aggregate counts and dividing by the number of shots (times the circuit was repeated). Try changing the ``shots`` keyword in the ``execute`` function and see how the estimated probabilities change." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Running circuits using the IBMQ provider \n", - "\n", - "To faciliate access to real quantum computing hardware, we have provided a simple API interface.\n", - "To access IBMQ devices, you'll need an API token. For the public IBM Q devices, you can generate an API token [here](https://quantumexperience.ng.bluemix.net/qx/account/advanced) (create an account if you don't already have one). For Q Network devices, login to the q-console, click your hub, group, and project, and expand \"Get Access\" to generate your API token and access url.\n", - "\n", - "Our IBMQ provider lets you run your circuit on real devices or on our HPC simulator. Currently, this provider exists within Qiskit, and can be imported as shown below. For details on the provider, see [The IBMQ Provider](the_ibmq_provider.ipynb)." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "ExecuteTime": { - "end_time": "2018-09-29T00:04:37.950277Z", - "start_time": "2018-09-29T00:04:37.947819Z" - } - }, - "outputs": [], - "source": [ - "from qiskit import IBMQ" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "After generating your API token, call, `IBMQ.save_account('MY_TOKEN')`. For Q Network users, you'll also need to include your access url: `IBMQ.save_account('MY_TOKEN', 'URL')`\n", - "\n", - "This will store your IBMQ credentials in a local file. Unless your registration information has changed, you only need to do this once. You may now load your accounts by calling," - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "ExecuteTime": { - "end_time": "2018-09-29T00:04:41.166242Z", - "start_time": "2018-09-29T00:04:40.072340Z" - } - }, - "outputs": [], - "source": [ - "IBMQ.load_accounts()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once your account has been loaded, you can view the list of backends available to you." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Available backends:\n" - ] - }, - { - "data": { - "text/plain": [ - "[,\n", - " ,\n", - " ,\n", - " ,\n", - " ]" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "print(\"Available backends:\")\n", - "IBMQ.backends()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Running circuits on real devices\n", - "\n", - "Today's quantum information processors are small and noisy, but are advancing at a fast pace. They provide a great opportunity to explore what [noisy, intermediate-scale quantum (NISQ)](https://arxiv.org/abs/1801.00862) computers can do." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The IBMQ provider uses a queue to allocate the devices to users. We now choose a device with the least busy queue which can support our program (has at least 3 qubits)." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "ExecuteTime": { - "end_time": "2018-09-29T00:04:50.410670Z", - "start_time": "2018-09-29T00:04:41.860767Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The best backend is ibmq_20_tokyo\n" - ] - } - ], - "source": [ - "from qiskit.providers.ibmq import least_busy\n", - "\n", - "large_enough_devices = IBMQ.backends(filters=lambda x: x.configuration().n_qubits > 4 and\n", - " not x.configuration().simulator)\n", - "backend = least_busy(large_enough_devices)\n", - "print(\"The best backend is \" + backend.name())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To run the circuit on the backend, we need to specify the number of shots and the number of credits we are willing to spend to run the circuit. Then, we execute the circuit on the backend using the ``execute`` function." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "ExecuteTime": { - "end_time": "2018-09-29T00:04:52.336262Z", - "start_time": "2018-09-29T00:04:51.755588Z" - }, - "scrolled": true - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "0746f2ad24234ec3b6823a9148cd1552", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HTML(value=\"

        Job Status: job is being initialized

        \")" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from qiskit.tools.monitor import job_monitor\n", - "shots = 1024 # Number of shots to run the program (experiment); maximum is 8192 shots.\n", - "max_credits = 3 # Maximum number of credits to spend on executions. \n", - "\n", - "job_exp = execute(qc, backend=backend, shots=shots, max_credits=max_credits)\n", - "job_monitor(job_exp)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "``job_exp`` has a ``.result()`` method that lets us get the results from running our circuit.\n", - "\n", - "
        \n", - "Note: When the .result() method is called, the code block will wait until the job has finished before releasing the cell.\n", - "
        " - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "ExecuteTime": { - "end_time": "2018-09-29T00:05:42.718830Z", - "start_time": "2018-09-29T00:05:42.296069Z" - } - }, - "outputs": [], - "source": [ - "result_exp = job_exp.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Like before, the counts from the execution can be obtained using ```get_counts(qc)``` " - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "ExecuteTime": { - "end_time": "2018-09-29T00:05:44.604801Z", - "start_time": "2018-09-29T00:05:44.599850Z" - } - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
        " - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "counts_exp = result_exp.get_counts(qc)\n", - "plot_histogram([counts_exp,counts])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Simulating circuits using a HPC simulator\n", - "\n", - "The IBMQ provider also comes with a remote optimized simulator called ``ibmq_qasm_simulator``. This remote simulator is capable of simulating up to 32 qubits. It can be used the \n", - "same way as the remote real backends. " - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "backend = IBMQ.get_backend('ibmq_qasm_simulator', hub=None)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "shots = 1024 # Number of shots to run the program (experiment); maximum is 8192 shots.\n", - "max_credits = 3 # Maximum number of credits to spend on executions. \n", - "\n", - "job_hpc = execute(qc, backend=backend, shots=shots, max_credits=max_credits)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "result_hpc = job_hpc.result()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
        " - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "counts_hpc = result_hpc.get_counts(qc)\n", - "plot_histogram(counts_hpc)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Retrieving a previously ran job\n", - "\n", - "If your experiment takes longer to run then you have time to wait around, or if you simply want to retrieve old jobs back, the IBMQ backends allow you to do that.\n", - "First you would need to note your job's ID:" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": { - "ExecuteTime": { - "end_time": "2018-09-29T00:05:57.842131Z", - "start_time": "2018-09-29T00:05:57.839227Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "JOB ID: 5c1a7275199f9700512a2d0f\n" - ] - } - ], - "source": [ - "jobID = job_exp.job_id()\n", - "\n", - "print('JOB ID: {}'.format(jobID)) " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Given a job ID, that job object can be later reconstructed from the backend using retrieve_job:" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Got a 400 code response to /api/Jobs/5c1a7275199f9700512a2d0f/status: {\"error\":{\"status\":400,\"message\":\"Generic error\",\"code\":\"GENERIC_ERROR\"}}\n", - "Got a 400 code response to /api/Jobs/5c1a7275199f9700512a2d0f/status: {\"error\":{\"status\":400,\"message\":\"Generic error\",\"code\":\"GENERIC_ERROR\"}}\n", - "Got a 400 code response to /api/Jobs/5c1a7275199f9700512a2d0f/status: {\"error\":{\"status\":400,\"message\":\"Generic error\",\"code\":\"GENERIC_ERROR\"}}\n", - "Got a 400 code response to /api/Jobs/5c1a7275199f9700512a2d0f/status: {\"error\":{\"status\":400,\"message\":\"Generic error\",\"code\":\"GENERIC_ERROR\"}}\n", - "Got a 400 code response to /api/Jobs/5c1a7275199f9700512a2d0f/status: {\"error\":{\"status\":400,\"message\":\"Generic error\",\"code\":\"GENERIC_ERROR\"}}\n" - ] - }, - { - "ename": "IBMQBackendError", - "evalue": "'Failed to get job \"5c1a7275199f9700512a2d0f\": {\\'status\\': 400, \\'message\\': \\'Generic error\\', \\'code\\': \\'GENERIC_ERROR\\'}'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mIBMQBackendError\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[0mjob_get\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbackend\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mretrieve_job\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mjobID\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m~/miniconda3/envs/Qiskitenv/lib/python3.6/site-packages/qiskit/providers/ibmq/ibmqbackend.py\u001b[0m in \u001b[0;36mretrieve_job\u001b[0;34m(self, job_id)\u001b[0m\n\u001b[1;32m 197\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'error'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mjob_info\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 198\u001b[0m raise IBMQBackendError('Failed to get job \"{}\": {}'\n\u001b[0;32m--> 199\u001b[0;31m .format(job_id, job_info['error']))\n\u001b[0m\u001b[1;32m 200\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mApiError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mex\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 201\u001b[0m raise IBMQBackendError('Failed to get job \"{}\":{}'\n", - "\u001b[0;31mIBMQBackendError\u001b[0m: 'Failed to get job \"5c1a7275199f9700512a2d0f\": {\\'status\\': 400, \\'message\\': \\'Generic error\\', \\'code\\': \\'GENERIC_ERROR\\'}'" - ] - } - ], - "source": [ - "job_get=backend.retrieve_job(jobID)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "and then the results can be obtained from the new job object. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "job_get.result().get_counts(qc)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "display_name": "Python 3", - "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.6.7" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} diff --git a/qiskit/basics/the_ibmq_provider.ipynb b/qiskit/basics/the_ibmq_provider.ipynb index a3ce8bbd9..87a727fb0 100644 --- a/qiskit/basics/the_ibmq_provider.ipynb +++ b/qiskit/basics/the_ibmq_provider.ipynb @@ -543,7 +543,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "only return backends that are real devices, have more than 10 qubits and are operational" + "only return backends that are real devices, have at most 5 qubits and are operational" ] }, { @@ -638,16 +638,16 @@ "At a minimum, backends use the following methods, inherited from BaseBackend:\n", "\n", "\n", - "- `provider` - returns the provider of the backend\n", + "- `provider` - returns the provider of the backend.\n", "- `name()` - gets the name of the backend.\n", "- `status()` - gets the status of the backend.\n", "- `configuration()` - gets the configuration of the backend.\n", - "- `properties()` - gets the properties of the backend.\n", + "- `properties()` - gets the properties of the backend.\n", "- `run()` - runs a qobj on the backend.\n", "\n", "For remote backends they must support the additional\n", "\n", - "- `jobs()` - returns a list of previous jobs executed by this user on this backend.\n", + "- `jobs()` - returns a list of previous jobs executed by this user on this backend.\n", "- `retrieve_job()` - returns a job by a job_id.\n", "\n", "In future updates they will introduce the following commands\n", diff --git a/qiskit/ignis/hamiltonian_and_gate_characterization.ipynb b/qiskit/ignis/hamiltonian_and_gate_characterization.ipynb new file mode 100644 index 000000000..d95eb297e --- /dev/null +++ b/qiskit/ignis/hamiltonian_and_gate_characterization.ipynb @@ -0,0 +1,749 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\\\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## _*Hamiltonian and Gate Characterization*_ \n", + "\n", + "* **Last Updated:** March 8, 2019\n", + "* **Requires:** qiskit-terra 0.7, qiskit-ignis 0.1, qiskit-aer 0.1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook gives examples to demonstrate how to user the ``characterization.hamiltonian`` and ``characterization.gates`` modules in ``qiskit-ignis``. For a theory background see the [Ignis Community Notebooks]( https://github.com/Qiskit/qiskit-tutorials/tree/master/community/ignis)." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import qiskit\n", + "from qiskit.providers.aer.noise.errors.standard_errors import coherent_unitary_error\n", + "from qiskit.providers.aer.noise import NoiseModel\n", + "\n", + "from qiskit.ignis.characterization.hamiltonian import ZZFitter, zz_circuits\n", + "\n", + "from qiskit.ignis.characterization.gates import (AmpCalFitter, ampcal_1Q_circuits, \n", + " AngleCalFitter, anglecal_1Q_circuits, \n", + " AmpCalCXFitter, ampcal_cx_circuits, \n", + " AngleCalCXFitter, anglecal_cx_circuits)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Measuring ZZ\n", + "\n", + "The ``characterization.hamiltonian.zz_circuits`` module builds the circuits to perform an experiment to measure ZZ between a pair of qubits. ZZ here is defined as the energy shift on the $|11\\rangle$ state,\n", + "\n", + "$$H=\\omega_0 (1-\\sigma_{Z,0})/2 +\\omega_1 (1-\\sigma_{Z,1})/2 + \\xi |11\\rangle\\langle 11|$$\n", + "\n", + "The experiment to measure $\\xi$ is to perform a Ramsey experiment on Q0 (H-t-H) and repeat the Ramsey with Q1 in the excited state. The difference in frequency between these experiments is the rate $\\xi$" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "ExecuteTime": { + "end_time": "2018-12-18T15:34:52.275440Z", + "start_time": "2018-12-18T15:32:05.667514Z" + } + }, + "outputs": [], + "source": [ + "# ZZ rates are typically ~ 100kHz so we want Ramsey oscillations around 1MHz\n", + "# 12 numbers ranging from 10 to 1000, logarithmically spaced\n", + "# extra point at 1500\n", + "num_of_gates = np.arange(0,150,5)\n", + "gate_time = 0.1\n", + "\n", + "# Select the qubits whose ZZ will be measured\n", + "qubits = [0]\n", + "spectators = [1]\n", + "\n", + "# Generate experiments\n", + "circs, xdata, osc_freq = zz_circuits(num_of_gates, gate_time, qubits, spectators, nosc=2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One of the features of the fitters are that we can split the circuits into multiple jobs and then give the results to the fitter as a list. Demonstrated below." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running the first 20 circuits\n", + "Running the rest of the circuits\n" + ] + } + ], + "source": [ + "# Set the simulator with ZZ\n", + "zz_unitary = np.eye(4,dtype=complex)\n", + "zz_unitary[3,3] = np.exp(1j*2*np.pi*0.02*gate_time)\n", + "error = coherent_unitary_error(zz_unitary)\n", + "noise_model = NoiseModel()\n", + "noise_model.add_nonlocal_quantum_error(error, 'id', [0], [0,1])\n", + "\n", + "# Run the simulator\n", + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "shots = 500\n", + "# For demonstration purposes split the execution into two jobs\n", + "print(\"Running the first 20 circuits\")\n", + "backend_result1 = qiskit.execute(circs[0:20], backend,\n", + " shots=shots, noise_model=noise_model).result()\n", + "print(\"Running the rest of the circuits\")\n", + "backend_result2 = qiskit.execute(circs[20:], backend,\n", + " shots=shots, noise_model=noise_model).result()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ZZ Rate: 19.470469 kHz\n" + ] + }, + { + "data": { + "image/png": "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vEZERGh6erpnMVRk1qxZCuibb75Z9oGnn3Zv9rff9iawo/XSS6qXXKJaVKRbtmw56tNkZmYGMagjZWRkaHR0tC5btqzM9qysLG3Xrp0uXLiwzPZt27apSzUqB+i2bdtUVfXaa6/VcePG6QUXXKAxMTE6YMAA3b59u9/jDh06pCNGjNA2bdpobGys9uvXT5OTk/Xuu+/WkJAQjYiI0OjoaL3llltUVXXChAnauXNnbdGihfbt21dXrVqlqqorVqzQ8PBwDQsL0+joaD3llFNUVTU9PV1Hjx6t8fHx2qlTJ506daoWFhb6jeWqq67SP//5zyX333//fe3QoYPffSv6PwbWaoA5jtXAmQbj+uuvZ8qUKQGv1dj9/zpQEBJZZlt+vluoIVi++uorPvjgA8aPH1/jSRmBn2sNzj4b6nkHctP4jRgxgry8PN544w2vQznC6tWradWqFeeff37ZB268EX7xC5gyxVW9NxRXXQX/+EfFXSaKR2OVvj3zjHvs4MGSbZEXXPDz4wsXusdTU/0fv2yZe3zPnoDDTExMJDc3l2Hl5qWMiYnh/PPP59133w34XJV5+eWXmTZtGmlpafTs2ZOpU6f63e/FF18kIyODPXv2cODAAZ577jkiIyN5+OGHOeuss3jqqadISkriqaeeAqB///6sX7+en376iauvvprLL7+c3NxczjvvPO6++26uvPJKsrOz2eCbhuraa68lLCyM7du3s27dOt59990Km2U3b95M7969S+737t2blJQUDhw4EJQyKc8SONNghISEMHPmTLp27RrQ/vHxMG/cBiI5SERIPpGRMG+e2x4sBw4coG/fvtwQrCVvbrnFffEYUw8MGDCAnj17snTpUq9DOcKECRP46KOPjlz7NDwcHn7YdXx99VVvgquma05ex4BT82p1oFWwpKamEhcXR1jYkesAdOzYkf379wfleYYNG8aAAQMICwtjxIgRrF+/3u9+4eHhHDhwgO3btxMaGsppp532c5O6HyNHjqRt27aEhYUxadIk8vLy+Oabb/zum5KSwooVK5g7dy7R0dG0b9+eiRMn8sorr/jdPzs7m9jY2JL7xX9nZWUFetnVYisxmAZnz549jBkzhkcffbTKpX5GzT6Vc1ZdzM7f3kj3P10W1OQN4Oyzz+aLL74Izsk2b3YZ5u23B+d8xtSQiDB16tSgTDoabOHh4Zxyyin+H7z8csjLg0svrdugjsLiOzfw2qbjECmiRw/3EdCvn58dV66s+CRRUSWPH/K36kBcXOXHV2Pqo7i4OFJTUyksLDwiiUtKSqJdu3YBn6sy8aU+rKOiosjOzva736hRo9izZw/Dhw8nPT2dkSNH8vDDD1fYIjJ79mzmz5/Pvn37EBEyMzNJTU31u+/u3bspKCigY8eOJduKiooqnCoqJiaGzMzMkvvFf9fWKhBWA2canKioKD799NPABjQ0a0b82rc4Y3bwk7cvvviCnJyc4J3w7rvdagt33x28cxpTQ9dddx1jPViWrjLjx4/ntddeq3iHkBC3eklERL0ezJD88XbGzO7FIaI4qJElA63qc8vvGWecQURExBHN6jk5OaxYsYJBgwbVaTzh4eFMmzaNLVu2kJiYyFtvvcWiRYuAIyfMXb16NbNmzWL58uWkpaWRnp5ObGxsyfdI+f27dOlCREQEqamppKenk56eTmZmJps3b/Yby4knnljS9AqwYcMGOnToQNu2bYN5ySUsgTMNTtu2bZk5cyarVq3i5ZdfrvqA4l9iK1a4VRqC8OmYl5fHhRdeyHXXXVfjcwHw8cfwz3+65tNaerMbc7TS0tLodWsv+szrQ3K2t+18KSkpzJs3jx9//LHqnd95B/r2dRNB1jfp6ey8eirhUnbS3mbNoLDQo5gCEBsby7Rp0xg/fjz/+c9/KCgoYNeuXVx++eXExcUxYsQIwA2QzM3NJT8/H4Dc3NxamVLjww8/ZOPGjRw+fJiWLVsSHh5OaGgoAB06dCgzt1xWVhZhYWG0a9eOwsJCHnjggTI1Zh06dGDXrl0lS8h17NiRoUOHMmnSJDIzMykqKuK7777jo48+8hvLNddcw4IFC9iyZQtpaWk89NBDwfuO8MMSONMgXX/99fTv358777yzzBuwUjt3wtKlcN99NX7+ZcuWkZKSwo033ljjcwFwzz3QsSPcdltwzmdMEI1/fjzbWm3jq6Sv6PHXHizeUAsTKgYgIyODCy+8kNDQUC644IKqD4iLg/Xr4S9/qf3gqmvsWLonJVLQrOykvfn54Kd7Wb0yefJkZsyYwZ133kmLFi3o3r07Bw8e5P333y9ZB3r37t1ERkZy4oknAm5y6OOOOy7osSQnJ3PZZZfRsmVLjj/+eAYNGlQyl9ttt93Ga6+9RteuXZkwYQLnnnsu559/Pr169SIhIYHmzZuXaQ69/PLLAVdJ0LdvXwAWLVpEfn4+J5xwAq1bt+ayyy4jKSnJbyznnXcekydP5uyzzyYhIYGEhATur83VQQIdrtoQbzaNiLdqu1w+++wzFRG95557AjugqEj1xhvdFAOvvHLUz1tUVKR9+vTR448/XouKiqp9vN9y+eYb1ffeO+qYGgN7H/nndbkkZSVp8webK9MpuUU+FKlJWUl1Gkd2drb+6le/0vDwcD1u4nHa87GegcUwfLhqVJTqvn21H2R1fP216iuv6KJFqiEhqqGhqpGRqosWVTzFRCBqexoRfxYsWKCdO3fW3bt31/lzB8KLMqmKTSNimrT+/fuzfPly/vSnPwV2gAg89RQMHAh//KP7ZX4UVq9ezbp167j99ttrvvJCcf+cXr3gt7+t2bmMqQU703bSLKxZmW2hhLIzbWedxrFmzRq+/PJLxjwzhm2ttrEjZ0dgtYEPPuiqtR58sG4CrcqWLe59/8tfwpVXMmoU/PADrF4NO3bAqFFeB1h9o0ePZsaMGSQmJnodSpNiCZxp0IqrzgsKCqoe0ACug8nrr7t+ZoH0n/NjxYoVtG3bllHB+KT9+9/dGo6BNgMbU8e6t+5OweGy/bRycnNIiE2o0ziGDBnCmk1rWJCygCItoogiDhUeYsxbYyrvl9ezpxsZ8PzzsHt33QXsz2efuT55s2eX2RwfD2ecEdwpjuraqFGjGD58uNdhNCmWwJkGb+/evfTu3bvCuXmO0KEDfP45PPLIUT3fzJkz2bhxI5GRkVXvXJmDB11/vJQUqKVh5sbUVHxMPPMumkeIhBAqoTQPbc6jZz1Kp5adav25CwsLGTlyJK/65nM72Owg4aFlp19Kjm4AACAASURBVIdoFtqs6trAe+91P9wCnEOyVuzb536sderkWgCMqSFL4EyD17FjR6KiorjzzjsDnzAxPt41qW7dCjNnBvxcxaOoSs8LdNSeeMJ9qD/6qC1Yb+q1Ub1H8cMdP7D6j6vZeftO7hx6J6rKlClTWLduXa08Z1FRETfccANLly5lj2+lAH+1gfmH8+neuorlVTp0gEsuce8zL6YVyc11c9JlZrrVFmykuQkCS+BMgxcaGsozzzxDUlISDzzwQPUOXrLEzbv2/PNV7pqZmUlCQkJwFmc+cMDVAF58MQS4NJgxXoqPieeMLmcQH+Pa+fbv38/LL7/MkCFDgp7EqSq33norL774Ivfffz933HFHSQzFtYEhhBAZFsm8i+aVxFSlxx93tWB1ncTdfLNrPl2yBE4+uW6f2zRalsCZRmHAgAFcf/31zJ07ly1btgR+4P33w9Chbgmr//2v0l0XLlxISkpKxbO/ByA5GTZvbkny9OcgKwtmzDjqcxnjpfbt27Ny5UpatGgR1CROVZk8eTLPPvsskydP5t577y3zeHFt4BOnPsGO23Ywqnc1+qKGhrr5Ft97LyixBuyKK9xUJr//fd0+r2nULIEzjcbMmTNp0aJFyaLFAQkNhVdegYQE+MMfKlzU+YeMH5i1dBb9z+5P//79jyq+xYvhmGNgwoRT6TH/bhbfnAhVLAVmTH3WvXv3WkniAMaNG8cjjzzid6R3fEw8J8aeGHjNW7GxY6FbNzdhtm+y1lqVnu7+Pf98mDSp9p/PNCmWwJlGIy4ujlWrVvHkk09W78DWrV2/lIMH/U41sGj9Iro83oV9v9nHhsEbjmoS0+RkNxCuqAiKikI4lCuM+fvpDWLxamMqU5zExcXFkVzDF3RGRgYiwqOPPspTTz1V82l6youIcO/xdetg+fLgnru8b76BX/zCNZsaUwssgTONykknnURoaCg//fRThYsf+3XCCfDf/7qBBT4pKSkkZycz9u2xaIhCc8jX/KqnLfBj586fV/Qq1qyZ225MQ9e9e3c2b97M+eefD7hErLqeffZZfvnLX7Jjxw5EJPjJW7Grr4bevd3I1NpadDQ93Q2aCA21Pq4BiomJKbPslamaJXCm0UlPT+f444+v/oCGfv3YnZLCrOnT6d2tG7169WJrytajm7agnO7doaCgbMfp/Hy33ZjGINz3C+W1116jZ8+efPnllwEfu2jRIsaNG0e/fv3o3LlzbYXohITAvHkkP/MGn3wWGvxa8MOH4aqr3Ky8r7/uumc0QgsXLuTkk08mKiqK+Ph4xo0bVyZx37RpE+eeey5xcXEBJePZ2dn06NEjqDEOHjyY+fPnB7z/9OnTS5bhOhrVveaasgTONDqtWrXioosuYs6cOQEPaFi9ejUDBw6kW7duTLn/fqJ37+ahESPo2qLr0U1bUNqGDcTfdxPz5GYiOUiLZgeJjIR58xr2xJ3G+NOvXz+io6MZMmQIX3zxRZX7v/baa/zxj39kyJAhvPrqqzRr1qzKY2pq8ben0+N3J3PeeUqPY3JZPGShG8QUjH5xU6bAf/4DTz/daGvfZs+ezV133cVjjz1GRkYGa9asYdeuXQwdOpSCAvd5GR4ezhVXXBGcUfsNRJ1fc6BrbjXEm62F6i0vy+XHH3/UVq1a6W9+8xu/65Wmp6frCy+8oOvWrVNV1TVr1ujJJ5+sM2bM0B0bN6qecopqq1aq336ri9Yv0siHIjV2ZqxGPhSpi9YvqvzJDx9W/fjjn9deXLZMNTpa9eqrNenFd/SpJ9dqUt0uI9kg2PvIv4ZYLjt37tRu3bppq1atdO3atRXu99FHH2lYWJgOHDhQs7Ozq/UcR1suSUluzVE3l4i7RZKjSXRQTUhQ/fOfVbdtO6pzq6rqY4+pjh9/9Mdr/V4LNSMjQ6Ojo3XZsmVltmdlZWm7du104cKFZbZv27ZNXapROUC3+cr92muv1XHjxukFF1ygMTExOmDAAN2+fbvf4w4dOqQjRozQNm3aaGxsrPbr10+Tk5P17rvv1pCQEI2IiNDo6Gi95ZZbVFV1woQJ2rlzZ23RooX27dtXV61apaqqK1as0PDwcA0LC9Po6Gg95ZRTVNV9V4wePVrj4+O1U6dOOnXqVC0sLKz0WgK55mCshepJYgWMA3YCucAXwFlV7D/It18usAMYG8jzWALnLa/L5emnn1ZA5y2dp4nfJ+qOH3foq6++qsOGDdOIiAgF9K677lJVPTLJ27FDtW1b1eOPV83I0KSsJE38PrHixbOLilQ//1x10iTVLl3cW2vGDPdYXp5qTk7Jrl6XS31l5eJfQy2XXbt2lSRxe/fu9btPdna23nbbbZqenl7t8x9tuSQmqrZsWTaBi21ZpIn3/lv1vPPcqvIvv+x23r9fddeuSs+XlOTOmbS38i/16vD35T5o0KAjbk8//bSqqubk5JRsO/PMM0v+fuGFF3yXsd/v8a+88oqqqn7//fcBx7ZixQoNDQ3VgoKCIx675ppr9Oqrry6z7WgTuNatW+unn36qBQUFevXVV+uVV17p97jnnntOL7roIs3JydHCwkJdu3atZmRkqKors+eff75MUrt48WJNTU3VgoIC/ctf/qIdOnTQQ4cOqarqtGnTdMSIEWXO/7vf/U5vuukmzc7O1pSUFO3fv78+99xzlV5LXSVwdd6EKiJXAn8FZgB9gERghYj4XeNERLoD//bt1weYCTwpIn+om4hNQzVmzBi6XtyVcd+O47yl5/GLJ37B5Q9eTmJiImPGjOGTTz5hpm8VhiP6K3TvDq++Ct9+64b/Z8fD3jPcv+UVFMCJJ0L//m4QRO/ebuTZrbe6x5s1g6ioWr5aY+qXhIQEVq5cyX333UenTm7ZreTsZD7Z8wnvffIemZmZREdHM3fuXGJjY+ssLtcftey2/AKh+7jzYcUKtzrK737nHliwwE07ctZZ8OyzkJpa5rjFi6FHDzjv3CJ6dClg8ZRNdXMRHkpNTSUuLo6wsLAjHuvYsSP79+8PyvMMGzaMAQMGEBYWxogRI1i/fr3f/cLDwzlw4ADbt28nNDSU0047jZYtW1Z43pEjR9K2bVvCwsKYNGkSeXl5fPPNN373TUlJYcWKFcydO5fo6Gjat2/PxIkTA1+2sZYd+T9Q++4AFqpq8dT340XkPOBm4M9+9h8L7FPV8b77X4vI6cCdwOu1Hq1psPYf2s+Pp//I4cLDZOZlQhhEXBbB2glrOSb2mKpPcPbZ8MorLE4awpgebhRpQQHMm76PUbnz3cLYCxa4By67zH3QX3qpm5bEGENCQgITJ04E4KF/PcRD6x8iLCSMnEM5nL7wdNbMW1PnMcXHu/6nY8a431b5+eX6o7Zv//POw4e7QQlLl8K4cTBhAlxwAbzxBsn7QxkzBg4dgkOEAM0ZM/cEzrm9dvq2rly5ssLHoqKiSh7PysqiRbm1lePi4io9vkuXLgHHERcXR2pqKoWFhUckcUlJSbRr1y7gc1UmvlQhRkVFVTirwKhRo9izZw/Dhw8nPT2dkSNH8vDDD5cMqilv9uzZzJ8/n3379iEiZGZmklouMS+2e/duCgoKyiydWFRUVK3yqk11WgMnIs2A04B3yz30LvCrCg47w8/+7wD9RMT//5AxwM60nTQLLdshunl4c77P/D7gcySfeRlj7mrNoUNuGcNDh2DMXa1InvasmwMkP9/t+MADMHq0JW/G+JGUlcR9n99HXlEeOYU5EA4bumyo9nQ8wTJqlBskumKF+3dURYs5JCS4pfY2bYING+COOyAuDkJD3dRARblldm/WPKTRTw10xhlnEBERwRtvvFFme05ODitWrGDQoEF1Gk94eDjTpk1jy5YtJCYm8tZbb7Fo0SLgyJaV1atXM2vWLJYvX05aWhrp6enExsYWd9U6Yv8uXboQERFBamoq6enppKenk5mZyebNm+vm4qpQ1zVwcUAokFJuewrw2wqOiQfe97N/mO98SaUfEJGbgJsAOnToUOmvjmDJzs6uk+dpaLwul5/yfyKvIK/MttyCXJK+TmLldysDOsfmzS0JCTmF0m+VsGbwz/uW0GtgKCQmVjsur8ulvrJy8a8xlMvmjM00D2/OoaJDJdtCCeX1D17nxNgTj+qcwSqXrVvdLSC+ee5YuZK0Hw5TkFe23iE39zBJSZ+ycmV+jWKKjY0lKyvrqI49fPjwUR8biJCQEKZMmcKtt95KWFgYgwcPZt++fdxxxx20adOGSy65hKysLFSVvLw80tLSALd2rogQERFR4bmzs7PJysqioKCAvLy8kus4ePAgqur3ulatWkXbtm355S9/iYgQGhpKQUEBWVlZtGnThq1bt5aUSUpKCqGhoURGRpKWlsbjjz9OZmYmBw8eJCsri9jYWL777jsyMjIICQkhJiaG3/zmN4wfP5577rmHmJgYdu3axb59+zjzzDOPiKU615ybm1vz12+gneWCcQM6AUq5QQvANGBrBcd8C9xbbtsg33niK3s+G8TgrfpQLtUeQVqO3xFrkVqjUaT1oVzqIysX/xpDuSRlJWnkQ5HKdEpukQ9FVjwoKAD1oVwW/b1AIyMOa2xskUZGqi6q3sdLherzKNRi8+fP1xNPPLFkQNigQYP0hx9+KHl8586d6vueLrklJCRUeD7KDWKYOnVqyWMffvihHnPMMX6Pe+mll7RXr14aFRWl7du31/Hjx5cMsEhMTNRjjz1WW7VqpePHj9fCwkIdPXq0tmjRQuPj43XWrFmakJCg7733nqqqpqam6sCBA7VVq1bap08fVXWjUMeOHavHHHOMtmzZUk899VR9uXiQSznVueYGNwoVaAYUApeX2/408FEFx6wCni637XKgAAiv7PksgfNWfSmXKkeQVmHRIpe0xcZqUD6k60u51DdWLv41lnKp6Y+p8upLuZSMQg3i1EANIYErbcGCBdq5c2fdvXt3nT93ILwok6oEI4Gr0yZUVc0XkS+Ac4BXSz10DhUPSPgE+H25befgLrLAz/7GlBEfE1/9Ra9LGTUKzjnHdXnr3t0m3zXmaIzqPYpzfnEOO9N20r119xq9J+uT+Hj7TBg9ejTh4eEkJibStavfCSVMLfBiFOrjwGIR+Qz4H26UaSfgOQARWQSgqtf49n8OuFVE5gLzgIHAdcBVdRu2acrsQ9qYmqvpjylTf42qcCSIqS11nsCp6jIRaQvcA3QENgEXqOpu3y5dy+2/U0QuAObgphrZB0xQVZtCxBhjjDFNkhc1cKjqM8AzFTw22M+2j4C+tRyWMcYYY0yDYIvZG2OMMfVMUVGR1yGYWqK+eedqyhI4Y4wxph6Jjo7mhx9+ID8/P2hf9qZ+UFUOHDhA8+bNa3wuT5pQjTHGGONf586dSU1NZffu3RQWFlbr2Nzc3KAkB41JfSuT5s2b07lz5xqfxxI4Y4wxph4JCQmhffv2tC+9LmuAVq5cSZ8+fWohqoarsZaJNaEaY4wxxjQwlsAZY4wxxjQwlsAZY4wxxjQwlsAZY4wxxjQw0piHKIvIfmB3lTvWXByQWgfP09BYufhn5eKflYt/Vi7+Wbn4Z+VypIZUJgmq2i6QHRt1AldXRGStqvbzOo76xsrFPysX/6xc/LNy8c/KxT8rlyM11jKxJlRjjDHGmAbGEjhjjDHGmAbGErjg+JvXAdRTVi7+Wbn4Z+Xin5WLf1Yu/lm5HKlRlon1gTPGGGOMaWCsBs4YY4wxpoGxBM4YY4wxpoGxBM6YWiYi4nUMxhhjGhdL4I6SiBwrIh28jqM+sUSlLBGJBdBSHU1FxN5z+C8He/0YY0zg7MukGkSkvYhMEpG9wHLgLRH5p4hcIyLRXsfnJREJU1UVkRa++036tSUi/YFXfK+XM0QkEkBVi0SkrcfheUpEegCXikin0tuLE92m+toRkVAR6SkiN4vIRb77ltSWU1wmVjamKo39NWKjUKtBRBYCJwBvAQeAtsCpwPHAXuBRVX3PswA9IiInAn8Czga+AKap6kYREW2iLzARmQFMAVYC4cBW4H2gFTAbaKmqRZ4F6CERWQbkAbeqaqaI/AI4E8gB3lTVw54G6BERuRW4FQgFMoHbVPVjX/nsbKqvl6oUf0k31c+a8pry525lSpeLiIQ0hveTJXAB8n1IZAEXqOqqUtu6AKcDNwIJwJWqut6zQD0gIp8DPwHvAr8HegG/VtVvSu0Trao5HoVY50RkILAYl6y1AoYCkcAxuNfRn4F1qrrLqxi9UOp9dI6qfiIitwCTgWygDa5V4F5gfmP4gA2Ur1xScGWxAZiE+5HYEugDdAD+Cjyhqge9itNLvprZ3wHtgCjgB+AjVf3R08DqARE5x/fnWlVN8zSYekJEfgNkAFsb63ePJXAB8tUyvQLcqKpr/DzeDEgE3lPVP9d1fF4RkWuBO4GzVDXd90X0LvCDql5X/KtHRIq/fL7zNOA6JCI3AWcB1wARwDnAG8B2XA1LLjC6iZXJb4EngFNwif4K4EHgE9yX8jDgD8DvVPVrr+KsayIyErgHOMHXzH4ssBl4HXgb+AXuR+IVqproXaTe8HXNWICr5S/CtXgocAj4CFiiqlubWu2Tr+vODGAk7v2TA4xX1ZebWlmUJiKtgCRcq8cW3OfL16r6jYjMAl5S1Q0NvYyaZF+To7QD+BGY4xvAUKbsVDUfeBE434vgPDQMeNuXvDXzvRlmAANF5Fhf8jYI96HSlBKVEOAFXOI2UVVzgTDch8pFuJnBtzWlMvHZDaTjapT6ApuABaq6WVU/B+YC+2h676MeuC+a4j47I3E1caNUdQnwDC6h+5034XluAnAcrgWkAzAC91rZDJwLPCoi7Rryl/FRGgv8HzAG16XnRWCyiLQq1VwoItJbREI9jLOudcf9QO6E+7x9Evfd/QCuu88x0PCb3S2BC5CqHgKm4prBFgHXiEiX4sELIhIFDMJ9ITUJIhIBFAAZvl8y+b7BDB8CO3EfLgA3Aa96FacXVLVIVQuAecA4EYkHxgFvqOp3qrpAVW/wNkpPbMe9Zv6G63JwENdHEABVTcElcF08ic47/wV+DTwsItOA64B/q2ohgKruxzWpNvcsQm+dB7zoS/JR1a2+xPYWXHPz8bguC03NDbjuBq/5mtZn4mom/1Rqn2HA7KbUt1RV1wG34d5DJ+I+e5NxfUxzgWtF5HYROdXDMGvMErhq8DWdjgS+B54F1uFGGv4d10m9CzDLuwjrXD6uti3fV9MmxV84uP46o0WkG3AhrtmsyVHVD4DHgdXAEGAJuBGHXsblFd8v3uG4jvqX4JpLHxSRviISJiKDcV/Wy7yL0hOfAI/hfgQOwCW4F4rIMQAi0gXXBP+yZxF6RETCcD+M/yAi7XzbQkUkVFUP+/okjwU6i0hvL2OtSyLSGdec/GnxNlVNxfW7HVX82sElud/WfYSe+w8wVERuVtV/qepo3I+gt3HNzbOBfl4GWFPWB+4oiUh7XGLye1xGvwl4VVW3ehqYh8qN8gkH3sT13YlW1a6eBuchX03lo7jak9t9tblNmq9P0xXAI7imn/W4QQyhuPfRHR6G5xnfdDOKq5X8B66j/k+4vpRJqnqhh+F5RkT+D1gKvAY87qupLf14F+Br4DhV/cGDEOucr1/288DzqvpCqf7GIcBnuFaPecB+4NimNmAKQEROw/0YvA5Xs/810F5VM3yVC6mqmu1ZgDVkCVwQNJYhycFS6oPkKtyH7nRVfcDruLzkG+QSo6o/eR1LfSMiCbh+TApsAz4uVZPbZImbJ28yboqVf+I6Xm/3Nqq650tIQoA/4mr8w3CJ3DJgD25AzMXA8ara36s4vSAivYAsVU3yDSALVdVC3+ju4cC/getVtaengXqguIZWRMYDPYEWuL6mQ4CiUq1GDTYJsgTO1BrfB0o/YIeqHvA6HmMaoob+JRNMvtGF1wFX4+bgzMLNKfgZMFNVP6346Map/OvDl/DG4PpV9gVuUtX5XsXnleL5AXE1+3/HJfkjVfUl76IKLkvgjDHG1Esi0hJXw1Q+QWmOS1JOAnKaWuLmr1z87DMFV2MZ3VS6bVRULr5peS4CFjamefIsgTPGGFMvicg8XO3aZ8BuVc30s09rVU1rSjWVAZZLNNCqqfQJhIDLJc432KPBswTOGGNMvVOqD20mbiDHe8A7wFe4icIPiUgMbmT3vaq60bNg61AF5fIfXLnsK1UuLwF3q2qTmNqqknLZiBsAlOMbJPQyjeT1YgmcMcaYekdEngcO40ZwDwOuxY1q/wbXOf8D3OS+f1XVZl7FWdeqUS5PqGp4RedpbJri68USOGOMMfWKb+63yUBLVZ1SavuJuCXFLsP1g2uFm+D3ek8CrWNWLv411XKxBM4YY0y9IyKtgQ7q1jhtBhSUG8xwJa45rK+qrvcqzrpm5eJfUyyXMK8DMMYYY8rzjRZM8/2dDyUjUMW3LFRLILexfBkHysrFv6ZYLpbAGWOMaRDKTZjeApjmVSz1iZWLf429XKwJ1RhjTIPjW67vsK2CU5aVi3+NsVwsgTPGGGOMaWBCvA7AGGOMMcZUjyVwxhhjjDENjCVwxhhjjDENjCVwxjRSIqIB3Hb59l1Y/LfXfLEUx7cyyOfdFazzmbJEZLqIVKtTtYi8X+r/ekltxWZMY2TTiBjTeJ1R7v6bwAZgeqlteb5/HwT+WgcxBSoZuBS3rmGw1LdrNDAeiMW9No0x1WAJnDGNlKquKX1fRPKA1PLbfft+V2eBBSbPX5w1EaxrFJEIVc2rek9TFVX9Gkpem8aYarAmVGPMEc2LItLN16w1VkRmikiyiGSJyBIRiRKRniLyjohki8h2EbnWzzl7i8g/RSRNRA6JyP9E5KwaxDjYF9PvRWSeiPzkO/ccEQkVkf4i8rGI5IjIZhE5t7Jr9G2LFpFHROQ7EcnzXefrItLB9/h1vuf8tYi8KiLpwKeljh8pIhtEJFdEUkVksYh0DOBawkTkQd/zFh/7sYicWW6/G8udf4GItPFzrrtEZItvv/0i8h8R+WWpfY4TkTdFJN33f7FGRM4rd57pvms9VkTe9v3f7haR+3wz2pfet4+IrPY93w8ici8gfq7zNhH52vecaSKyVkQurap8jDFVsxo4Y0xl/gysBK4FTgAeBYqAPsDzwF+Am4EXRGStqm4GEJG+wGpgHW4x6YPAWOB9EfmVqn5Rg5jmAm8AVwK/Bu7BfZb9FngM+MG37Q0RSVDVVH8nEbde4nvAqcBMYA2uOe9coDWQUmr3pbh1FC/zPRcichMwD1iGK6dOwAzgdBHpq6rZlVzDXcBEYCqwHrfMTz+gJDkTkUeAScATwJ+AY4CHgJN8ZXjYt+srwO995fI+btHuXwMdga0i0gn4GMgCbgUygFuAt0XkIlVdUS62N4EXgDnAxcD9wB7fNkQkDvgvrpn7Wlwz/J+AruXKdwQwG3gA91qIBE4pfY3GmBpQVbvZzW5N4AbsApZU8NhCYFep+90ABf5bbr83fNtHltrWGigEppXa9gHwNdCs1LZQ37b/V0WcZWIptX2w77n/Xm77l77tZ5badopv27WVXONo3z6XVBLLdb595pTbHopL8D4st/1M3/4TqrjGt4A3Knm8G3AYuK/c9oG+8//ed/83VT0fLskuBHqWi/8b4MtS26b7zvXHcsdvBN4tdf9hIB/oWmpbNJDqvlJKtj1V+vxH+9q0m93s5v9mTajGmMqUr53Z6vv3neIN6haR/hHoAiAikcAg4FWgyNfEF4ZrYnsfVzsU7JhyVPVjP3F2qeQ8Q4FkVf1nAM9ZvpP9cUB7XM1cCV8Mu3HXj4iEFF+/71b8mfs5cIGIPCwiZ/pqA0s7B9fFZWnp43HNt5n8XIZDcUnX85XE/mtgjapuLxXnYVyN4qki0rLc/m+Xu7+JsrVrZ/jO932p8+UA/yp33Oe+8z8pIr8VkahKYjTGVJMlcMaYyqSVu59fyfbmvr/b4Gp47gUKyt1uBVqX71MVhJjSS29Q1eI4m1Oxtrjm1kAklbvfpoLt4JoWix//O2Wv/+++7TNwC2tfgmtePCAiL/iaJ8ElhwDbObIMW/piL76Gn1T1UCWxt6kkTsHVoJb2U7n7eZQtx46UbV4uVn7bIlzz+um4hP8nEXlDRLpVEqsxJkDWB84YE2zpuH5yT+O+xI+g9WNB6VTgpAD3LT+/WXGSE+9n33hgre/v6bimxNLPiaoWALOAWSISD1wEPA5E4fr2HfDtP5QjE1ZKPZ4KtBGRyEqSuJ8qiVM5MmGrShLQwc/2MttUVXF9BOeJSGvctczG9Rk8vZrPaYwpx2rgjDFB5WtOWw30xvWBWlv+5nGIxd4F4kXk4qM49htcjdPw0htF5FdAAvARgKruKnftu8qfSFWTVXU+rnm5OKF8D5cEd/VXfqq6s9Q1CHBDJbF+BPxf6ZovEQnFJYrrVDWrmtf+ie98Jc3TIhKNG/Dgl6qmqeoyYDmBJ83GmEpYDZwxpjbcAawC3hGRBbhamzigLxCqqlO8DM5nCW6E7MsiMhPXv6wFbhTqXFXdWtGBqnpYRO7D1S4t8Z3rGFwH/234RmxWRET+gZtU+UtcDVsf4DxcjRWq+p2IzAKeEpHjcElYLq5P3znAfFX9UFU/FJHXgcd9CdV/gXBcv7e3VXUlbjTpdcB7IjIN14duHNALuDDw4ioxx3f8uyIynZ9HoZapARSRv+FGvn6C6yPZCxiFSzqNMTVkCZwxJuhU9UsR6Y/r5/UEbnqO/biE5TkvYyumqgUiMhQX402+fw8A/yOAZkVV/ZuIHMQlL/8AsoF/A5O18ilEwCW3l+Om84gCvsdN0fJwqfPfLSJf+/a5BdfcuQc3wndbqXMNx01Lci1wO26akM+B+b7z7PPNLzcLeBaIwE1dcqGq/qeq6/Rz3akiMgS3qsWLuDJ7Dvd9cl+pXf8H/BGXtMUC+3CJ7rTqPqcx5kjiuikYY0z9ICILcVOGlBiZFgAAAJ5JREFU9MR1pTpc6QGmwfINZgnBDdb4WFVHehySMQ2G9YEzxtRHCbgRlx94HYipVe/i/p8TvA7EmIbGauCMMfWKr7N98XQaWar6jXfRmNokIr1w06IAHCg1OMMYUwVL4IwxxhhjGhhrQjXGGGOMaWAsgTPGGGOMaWAsgTPGGGOMaWAsgTPGGGOMaWAsgTPGGGOMaWAsgTPGGGOMaWD+PzVR34FPR8DNAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "# Fit the data to an oscillation\n", + "\n", + "plt.figure(figsize=(10, 6))\n", + "initial_a = 1\n", + "initial_c = 0\n", + "initial_f = osc_freq \n", + "initial_phi = -np.pi/20\n", + "\n", + "# Instantiate the fitter\n", + "# pass the 2 results in as a list of results\n", + "fit = ZZFitter([backend_result1, backend_result2], xdata, qubits, spectators,\n", + " fit_p0=[initial_a, initial_f, initial_phi, initial_c],\n", + " fit_bounds=([-0.5, 0, -np.pi, -0.5],\n", + " [1.5, 2*osc_freq, np.pi, 1.5]))\n", + "\n", + "fit.plot_ZZ(0, ax=plt.gca())\n", + " \n", + "print(\"ZZ Rate: %f kHz\"%(fit.ZZ_rate()[0]*1e3))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Amplitude Error Characterization for Single Qubit Gates" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Measure the amplitude error in the single qubit gates. Here this measures the error in the $\\pi/2$ pulse. Note that we can run multiple amplitude calibrations in parallel. Here we measure on qubits 2 and 4. " + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "qubits = [4,2]\n", + "circs, xdata = ampcal_1Q_circuits(10, qubits)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This shows the sequence of the calibration, which is repeated application of Y90 (U2[0,0]). Note that the measurements are mapped to a minimal number of classical registers in order of the qubit list." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " \n", + "q5_0: |0>──────────────────────────────────────────────────────────────\n", + " \n", + "q5_1: |0>──────────────────────────────────────────────────────────────\n", + " ┌─────────┐┌─────────┐┌─────────┐┌─────────┐┌─────────┐ ┌─┐ \n", + "q5_2: |0>┤ U2(0,0) ├┤ U2(0,0) ├┤ U2(0,0) ├┤ U2(0,0) ├┤ U2(0,0) ├───┤M├─\n", + " └─────────┘└─────────┘└─────────┘└─────────┘└─────────┘ └╥┘ \n", + "q5_3: |0>───────────────────────────────────────────────────────────╫──\n", + " ┌─────────┐┌─────────┐┌─────────┐┌─────────┐┌─────────┐┌─┐ ║ \n", + "q5_4: |0>┤ U2(0,0) ├┤ U2(0,0) ├┤ U2(0,0) ├┤ U2(0,0) ├┤ U2(0,0) ├┤M├─╫──\n", + " └─────────┘└─────────┘└─────────┘└─────────┘└─────────┘└╥┘ ║ \n", + " c5_0: 0 ════════════════════════════════════════════════════════╩══╬══\n", + " ║ \n", + " c5_1: 0 ═══════════════════════════════════════════════════════════╩══\n", + " \n" + ] + } + ], + "source": [ + "print(circs[2])" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "# Set the simulator \n", + "# Add a rotation error\n", + "err_unitary = np.zeros([2,2],dtype=complex)\n", + "angle_err = 0.1\n", + "for i in range(2):\n", + " err_unitary[i,i] = np.cos(angle_err)\n", + " err_unitary[i,(i+1) % 2] = np.sin(angle_err)\n", + "err_unitary[0,1] *= -1.0\n", + "\n", + "error = coherent_unitary_error(err_unitary)\n", + "noise_model = NoiseModel()\n", + "noise_model.add_all_qubit_quantum_error(error, 'u2')\n", + "\n", + "# Run the simulator\n", + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "shots = 500\n", + "backend_result1 = qiskit.execute(circs, backend,\n", + " shots=shots, noise_model=noise_model).result()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rotation Error on U2: 0.099825 rads\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "# Fit the data to an oscillation\n", + "\n", + "plt.figure(figsize=(10, 6))\n", + "initial_theta = 0.02\n", + "initial_c = 0.5\n", + "initial_phi = 0.1\n", + "\n", + "\n", + "fit = AmpCalFitter(backend_result1, xdata, qubits,\n", + " fit_p0=[initial_theta, initial_c],\n", + " fit_bounds=([-np.pi, -1],\n", + " [np.pi, 1]))\n", + "\n", + "# plot the result for the number 1 indexed qubit.\n", + "# In this case that refers to Q2 since we passed in as [4, 2])\n", + "fit.plot(1, ax=plt.gca())\n", + " \n", + "print(\"Rotation Error on U2: %f rads\"%(fit.angle_err()[0]))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Angle Error Characterization for Single Qubit Gates" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Measure the angle between the X and Y gates" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "qubits = [0,1]\n", + "circs, xdata = anglecal_1Q_circuits(10, qubits, angleerr=0.1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Gate sequence for measureing the angle error" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌─────────┐┌──────────┐┌────────────────────┐┌────────────────────┐»\n", + "q6_0: |0>┤ U2(0,0) ├┤ U1(-0.2) ├┤ U2(-1.5708,1.5708) ├┤ U2(-1.5708,1.5708) ├»\n", + " ├─────────┤├──────────┤├────────────────────┤├────────────────────┤»\n", + "q6_1: |0>┤ U2(0,0) ├┤ U1(-0.2) ├┤ U2(-1.5708,1.5708) ├┤ U2(-1.5708,1.5708) ├»\n", + " └─────────┘└──────────┘└────────────────────┘└────────────────────┘»\n", + " c6_0: 0 ═══════════════════════════════════════════════════════════════════»\n", + " »\n", + " c6_1: 0 ═══════════════════════════════════════════════════════════════════»\n", + " »\n", + "« ┌─────────┐┌─────────┐┌─────────┐┌──────────┐┌────────────────────┐»\n", + "«q6_0: ┤ U1(0.2) ├┤ U2(0,0) ├┤ U2(0,0) ├┤ U1(-0.2) ├┤ U2(-1.5708,1.5708) ├»\n", + "« ├─────────┤├─────────┤├─────────┤├──────────┤├────────────────────┤»\n", + "«q6_1: ┤ U1(0.2) ├┤ U2(0,0) ├┤ U2(0,0) ├┤ U1(-0.2) ├┤ U2(-1.5708,1.5708) ├»\n", + "« └─────────┘└─────────┘└─────────┘└──────────┘└────────────────────┘»\n", + "«c6_0: ═══════════════════════════════════════════════════════════════════»\n", + "« »\n", + "«c6_1: ═══════════════════════════════════════════════════════════════════»\n", + "« »\n", + "« ┌────────────────────┐┌─────────┐┌─────────┐┌─────────┐┌──────────┐»\n", + "«q6_0: ┤ U2(-1.5708,1.5708) ├┤ U1(0.2) ├┤ U2(0,0) ├┤ U2(0,0) ├┤ U1(-0.1) ├»\n", + "« ├────────────────────┤├─────────┤├─────────┤├─────────┤├──────────┤»\n", + "«q6_1: ┤ U2(-1.5708,1.5708) ├┤ U1(0.2) ├┤ U2(0,0) ├┤ U2(0,0) ├┤ U1(-0.1) ├»\n", + "« └────────────────────┘└─────────┘└─────────┘└─────────┘└──────────┘»\n", + "«c6_0: ═══════════════════════════════════════════════════════════════════»\n", + "« »\n", + "«c6_1: ═══════════════════════════════════════════════════════════════════»\n", + "« »\n", + "« ┌────────────────────┐┌─┐ \n", + "«q6_0: ┤ U2(-1.5708,1.5708) ├┤M├────\n", + "« ├────────────────────┤└╥┘┌─┐ \n", + "«q6_1: ┤ U2(-1.5708,1.5708) ├─╫─┤M├─\n", + "« └────────────────────┘ ║ └╥┘ \n", + "«c6_0: ═══════════════════════╩══╬══\n", + "« ║ \n", + "«c6_1: ══════════════════════════╩══\n", + "« \n" + ] + } + ], + "source": [ + "#The U1 gates are added errors to test the procedure\n", + "print(circs[2])" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "# Set the simulator \n", + "# Run the simulator\n", + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "shots = 1000\n", + "backend_result1 = qiskit.execute(circs, backend,\n", + " shots=shots).result()" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Angle error between X and Y: 0.096252 rads\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "# Fit the data to an oscillation\n", + "\n", + "plt.figure(figsize=(10, 6))\n", + "initial_theta = 0.02\n", + "initial_c = 0.5\n", + "initial_phi = 0.01\n", + "\n", + "\n", + "fit = AngleCalFitter(backend_result1, xdata, qubits,\n", + " fit_p0=[initial_theta, initial_c],\n", + " fit_bounds=([-np.pi, -1],\n", + " [np.pi, 1]))\n", + "\n", + "fit.plot(0, ax=plt.gca())\n", + " \n", + "print(\"Angle error between X and Y: %f rads\"%(fit.angle_err()[0]))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Amplitude Error Characterization for CX Gates" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This looks for a rotation error in the CX gate, ie., if the gate is actually $CR_x(\\pi/2+\\delta)$ measure $\\delta$. This is very similar to the single qubit amplitude error calibration except we need to specify a control qubit (which is set to be in state $|1\\rangle$) and the rotation is a $\\pi$." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "# We can specify more than one CX gate to calibrate in parallel\n", + "# but these lists must be the same length and not contain\n", + "# any duplicate elements\n", + "qubits = [0,2]\n", + "controls = [1,3]\n", + "circs, xdata = ampcal_cx_circuits(15, qubits, controls)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Gate sequence to calibrate the amplitude of the CX gate on Q0-Q1 and Q2-Q3 in parallel" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌────────────────────┐┌───┐┌───┐┌─┐ \n", + "q7_0: |0>┤ U2(-1.5708,1.5708) ├┤ X ├┤ X ├┤M├────\n", + " ├────────────────────┤└─┬─┘└─┬─┘└╥┘ \n", + "q7_1: |0>┤ X ├──■────■───╫─────\n", + " ├────────────────────┤┌───┐┌───┐ ║ ┌─┐ \n", + "q7_2: |0>┤ U2(-1.5708,1.5708) ├┤ X ├┤ X ├─╫─┤M├─\n", + " ├────────────────────┤└─┬─┘└─┬─┘ ║ └╥┘ \n", + "q7_3: |0>┤ X ├──■────■───╫──╫──\n", + " └────────────────────┘ ║ ║ \n", + " c7_0: 0 ═════════════════════════════════╩══╬══\n", + " ║ \n", + " c7_1: 0 ════════════════════════════════════╩══\n", + " \n" + ] + } + ], + "source": [ + "print(circs[2])" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "# Set the simulator \n", + "# Add a rotation error on CX\n", + "# only if the control is in the excited state\n", + "err_unitary = np.eye(4,dtype=complex)\n", + "angle_err = 0.15\n", + "for i in range(2):\n", + " err_unitary[2+i,2+i] = np.cos(angle_err)\n", + " err_unitary[2+i,2+(i+1) % 2] = -1j*np.sin(angle_err)\n", + "\n", + "error = coherent_unitary_error(err_unitary)\n", + "noise_model = NoiseModel()\n", + "noise_model.add_nonlocal_quantum_error(error, 'cx', [1,0], [0,1])\n", + "\n", + "# Run the simulator\n", + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "shots = 1500\n", + "backend_result1 = qiskit.execute(circs, backend,\n", + " shots=shots, noise_model=noise_model).result()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rotation Error on CX: 0.149634 rads\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "# Fit the data to an oscillation\n", + "\n", + "plt.figure(figsize=(10, 6))\n", + "initial_theta = 0.02\n", + "initial_c = 0.5\n", + "initial_phi = 0.01\n", + "\n", + "\n", + "fit = AmpCalCXFitter(backend_result1, xdata, qubits,\n", + " fit_p0=[initial_theta, initial_c],\n", + " fit_bounds=([-np.pi, -1],\n", + " [np.pi, 1]))\n", + "\n", + "fit.plot(0, ax=plt.gca())\n", + " \n", + "print(\"Rotation Error on CX: %f rads\"%(fit.angle_err()[0]))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Angle Error Characterization for CX Gates" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Measure the angle error $\\theta$ in the CX gate, i.e., $CR_{\\cos(\\theta)X+\\sin(\\theta)Y}(\\pi/2)$ with respect to the angle of the single qubit gates." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "qubits = [0,2]\n", + "controls = [1,3]\n", + "circs, xdata = anglecal_cx_circuits(15, qubits, controls, angleerr=0.1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Gate sequence to calibrate the CX angle for Q0-Q1 and Q3-Q4 in parallel" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌─────────┐┌──────────┐┌───┐┌─────────┐┌───┐┌──────────┐┌───┐»\n", + "q8_0: |0>┤ U2(0,0) ├┤ U1(-0.1) ├┤ X ├┤ U1(0.1) ├┤ Y ├┤ U1(-0.1) ├┤ X ├»\n", + " ├─────────┤└──────────┘└─┬─┘└─────────┘└───┘└──────────┘└─┬─┘»\n", + "q8_1: |0>┤ X ├──────────────■────────────────────────────────■──»\n", + " ├─────────┤┌──────────┐┌───┐┌─────────┐┌───┐┌──────────┐┌───┐»\n", + "q8_2: |0>┤ U2(0,0) ├┤ U1(-0.1) ├┤ X ├┤ U1(0.1) ├┤ Y ├┤ U1(-0.1) ├┤ X ├»\n", + " ├─────────┤└──────────┘└─┬─┘└─────────┘└───┘└──────────┘└─┬─┘»\n", + "q8_3: |0>┤ X ├──────────────■────────────────────────────────■──»\n", + " └─────────┘ »\n", + " c8_0: 0 ═════════════════════════════════════════════════════════════»\n", + " »\n", + " c8_1: 0 ═════════════════════════════════════════════════════════════»\n", + " »\n", + "« ┌─────────┐┌───┐┌────────────────────┐┌─┐ \n", + "«q8_0: ┤ U1(0.1) ├┤ Y ├┤ U2(-1.5708,1.5708) ├┤M├────\n", + "« └─────────┘└───┘└────────────────────┘└╥┘ \n", + "«q8_1: ───────────────────────────────────────╫─────\n", + "« ┌─────────┐┌───┐┌────────────────────┐ ║ ┌─┐ \n", + "«q8_2: ┤ U1(0.1) ├┤ Y ├┤ U2(-1.5708,1.5708) ├─╫─┤M├─\n", + "« └─────────┘└───┘└────────────────────┘ ║ └╥┘ \n", + "«q8_3: ───────────────────────────────────────╫──╫──\n", + "« ║ ║ \n", + "«c8_0: ═══════════════════════════════════════╩══╬══\n", + "« ║ \n", + "«c8_1: ══════════════════════════════════════════╩══\n", + "« \n" + ] + } + ], + "source": [ + "print(circs[2])" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "# Set the simulator \n", + "# Run the simulator\n", + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "shots = 1000\n", + "backend_result1 = qiskit.execute(circs, backend,\n", + " shots=shots).result()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rotation Error on CX: 0.099962 rads\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnAAAAGaCAYAAACPJH7aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzsnXd4VGX2xz8nlBA6iBCkBUTFgqCCvcAq1m3q2kXRXQu46ypr2d+6K2Bb115RrCj2tqurIjbQVWwooAiIhN6CKB0CKe/vjzNXJsMkmUlm5t47cz7PM89kbnnfk5vJ3DPnPed7xDmHYRiGYRiGER7y/DbAMAzDMAzDSA5z4AzDMAzDMEKGOXCGYRiGYRghwxw4wzAMwzCMkGEOnGEYhmEYRsgwB84wDMMwDCNkmANnGIZhGIYRMsyBMwzDMAzDCBnmwBmGUSdE5EsR+cZvO+IRJNtEpLuI/EdEfhARJyJj/bapPojIkMjvMSDB4wdEjh+SXssMI7cwB84wQoiIvBi5Kb7j0/wNgT2BqfUcp6mIXCYiH4jIChHZGnF0xovI2SKS9GdUTbYlM5+InBC5xiPjjNNcRL4SkS0icngtJo0FjgD+BQwGxiT7O2UbItJXREaKSFES5+SJyOUiMltESkVksYjcLiLN0mepYQSXhn4bYBhGckQiHycD84G+PpmxB5BPPRw4EdkfeAnoDIwH7gB+BIqAU4BxQEtgdCpsS3Y+59wbIjINuFREbnfOrY+M0wB4Dr32ZzvnPqzhd8wHDgPuc87dluTvkS18CBQAZVHb+gIjgEnAggTHuRO4FPg3cDuwe+T1PiJylHOuMkX2GkYoMAfOMEJExHm4G3gKWAFcKSKdnHNLM2yK5zjWyYETkX2Ad4FNwKHOuckx+0cCw4FpqbCtHvPdCLwIDAVuiWy7FzgB+Jtz7plabOkACPBT0r9FDUTeB/nOuU2pHDcdRByr0vqMISJ7An8CXnHOnRy1fT5wD3A6UNvfwjCyCltCNYxwcRHQE/g/wMvxihuFiywvORHpKiI3i8h8EdkcyQ87NM7x/UXkTRFZJyKrReQREWklIptEZFzM4ftEnqfFjNFNREZH5ioVkbkicpOIFEQdk4/ebPOBX8Y6UwDOuQrn3K3ePhFpKyLXicinkSXPTZGltKvjLLNWsa0u80XxCjAbGC4iTUTkStSZe9g598/YcWKuxVhgYeTliMjf4ufcMRFpJyL3R5YCt0ae7xeRHWLG8XLOjhKRf4hIMeoQnVrL/F1E5AURWRv5m/5XRHYWkQUiMinm2JGROYrijLPd8REaRs5bGFlK/lpETo9zfpUcuIiz/Hhk98So6zK2hl/nDNQRvitm+8OoU352DecaRlZiETjDCAki0ha4HrjFObdUtiXp9wXeiHNKX2Atulw4E7gN2BG4AnhZRDo758oiYx8H/Ad1OG4DVgPnR84tYPtIW19gvnNuTZR9BwATInM+DiwD+gNXocuUZ0YOPQ/oBdzpnJuS4K9/NLrM+QbwBNAYOA24GXBsi47Fs60u8wEaPRKRf0bmfA74NfAWMCyB08egTuSd6LLfK5Hts0SkFTAZdcYfA75CHc+hwC9EZH9vyTaK24BGqNOyDviuuolFpDW6dNkFeBD9+x8BTET/nqngX0Az4AH0b3Ae8KyINHHOja3hvFeAjsCFwE3ArMj24hrO6Q9UAp9Hb3TOlUaWufvX5RcwjFDjnLOHPewRggdwP7AEaBp5nY/mFb1YzfE/ojfWc2K23xDZvkvkdSHqsH0MNIs6rjWwJnLswJgxVgMvR73eAVgJvO/ZF7XvX5Exdoq8norejHdJ4ndvFmdbI/Sm/1EttiU9X8x4DdF8QxcZq0US5xZFzhsZs/3GyPZhMdsviWy/PmrbkMi272KvbQ3z3hQ557yY7XdFtk+K2T4ysr0ozlgLoo+Psmch0Cpqe6vItp+AgqjtAyLHD4kzxoAEf59vgJJq9r0QGatxff/H7GGPMD1sCdUwQoCI9EaXT//PRfKenHNbgDnEWUIVkW5AW+AN59yTMbu3RJ43R56vQpP3f++c2+gd5DSC5S2R/rxUKiLdUecuevn0b5Ftw4GmkeXBdiLSDpgROWaXyOs+wDfOue8T/f09u0RpGRmnFeo05ldnW13ni6E70Dzy8yNu+8hYXTgR+AF4KGb7GGBVZH8sD7jEc95+C5QAsX/7fyVjZC084Jxb672I/Pwg0AZ12lJJU7a9b2MpjTrGMHIGW0I1jHBwNzAP+FREekZtXwQcIyItYhwLLw/suThj7QWsB5aKiKBLkR8552ZXM/dC59zqqNdVigQiY5yBRsRqKmpYA3RDc5mqXf6Lh4icii5b7s/2S4DPVmdbXeeLmndHdBm5AeoQXS4iDzrnKuoyXhTdgSnOufLojc65chH5Dtg3zjlzkhi/B/BFrJ3OueUisqaac5JlVpxtM6PmTyWbgPbV7GsSdYxh5AzmwBlGwBGRU4CBkZfV3cT3RpdAPTwH7tM4x+4HTHXOOREpBHYCno8zr6CSHB/H7PLG9pyk9mhO05OoFEd1zIw6t1ENx8XacQtwJfAm8BdgMRp12RmN+EQ7jbG2NUh2vqh5mwKvo3lkg4B+qHzFafhT8Zisg+Kq2S5JHAvV3yfinRNv7FSwDNhDRPIjkedoOgGrnHNb0zS3YQQSc+AMI8BEqjdvBd5h++U20IjTNZHnj2O2ryUmMTyS3N4D+G9kk7fsFE9D63i06CFWWqMv8IPbJl3SKvK8xDn3bi2/z9zIXL1FRJxzNTkOiEhntOjiGefcWTH7BkR+/KoG25KaL2rsPDSy15+I1puITEGrf/9PRJ5NdKxqmAfsJiINo6NwoiLEu0b214d5wK4i0iA6CiciHdn294rGkzlpS5Qum4g0QZ3zuXHO2QN4LWbb7lHz10Sy1+4LtJBlf+B/Mfb1RQs2DCOnsBw4wwg2VwFdgSuccy/FPlA9ONg+D24f4Ks4Tsa+aJTEc3oWA+XE5CyJSAdU7wy2XxbdJ2bbEjQ/6cTIDbUKkVy4BgDOuZ/QStKdURHW7RCRHiJyceRll4i9s2OOOQx17KCqA1fFtjrM53EvWnF6jYtovUXyz+5El6B/E2+sJPgP6hz/IWb7BZHt/67n+K+iGnTnxGy/uprjvcjuUTHbL6f6+8TQSDUtAJGfL0aXyj+oxb4Nkee2tRzn8Tzq9F0Ws/0C9EvI0wmOYxhZg0XgDCOgiEhX9Ib7inPu62oOKwYqiHLgIjpiXYizLMq23KqvAJxzZSLyGHChiLzJthv/xWy7yUYL4u6AdjL4+YbpnNskIvegy5xfiWrG/YAube0NHOic6xRlw1C01dVdEfmSiZHjOwKHo07EDZFjZ6DRoSsiUbGVaBTmyMj2LV5+Xjzb6jAfInIVmm8XT+vtvsjveQ3qhNWVW1BZlPtFZF/0Gu8D/B7N17ulhnMTHf9M4GER2Q/4FnXSD0KLJGJ5F3WSr4tcx/nAocCB1RxPZPtnkfePoDIiXYE/JFBs8QUaGb1GRNoAG1Hpl8/iHeyc+0ZE7gf+KCKvoMvpXieGDzARXyMX8bsM1h72sEf8B+qAVQK9aznue7SitGHk9VFotOKMOMc+i94sG0Rta4pKlCxHnbaJwDHoMuvSmPO9sU+P2Z6HRns+ReVLNqFOwMvAKXHsaAWMAqZH7NmILtP9F3Ued4g69qDIuJvQXKgxqHO4nqpyIXFtS2Y+VNG/Ei1caFjN9b4uMs/RCfwNi4gjIxLZtyPatmsJKgezJPJ3aBdz3BCSkNyIOq8r2jpsXeRa/ReNRC4gRkYkcvyuqMbdJjSK9kLkOlc5PsqeoyLXdBEagZ0BnBln3AHEyIhEtp+L5kVujewfW8vv0wDNgfwuMt9StB1ac7//V+1hDz8e4lx90jgMw8hGItWXS4DHnHND/bbHSB0isgBY4Jwb4LMphmHUA8uBM4wcRkQaRRLno7c1QTsPxGtdZBiGYQQAy4EzjNzmEOAREXkWXQrrjPaVLAKGOufqpJ9mGIZhpBdz4Awjt9mAOm5D0TyxNWiPziHOuf/VdKJhGIbhH5YDZxiGYRiGETIsB84wDMMwDCNkZPUSart27VxRUVHa59m4cSPNmjVL+zxhxa5P7dg1qhm7PrVj16hm7PrUjF2f2snENfryyy9XOed2TOTYrHbgioqKmDJlStrnmTRpEgMGDEj7PGHFrk/t2DWqGbs+tWPXqGbs+tSMXZ/aycQ1EpGFiR5rS6iGYRiGYRghwxw4wzAMwzCMkGEOnGEYhmEYRsgwB84wDMMwDCNkZHURg2EYhmEY4WDdunWsXLmSsrIyv02JS6tWrZg1a1a9x2nWrBmdO3cmL69+MTRz4AzDMAzD8JV169ZRUlJCp06dKCgoQET8Nmk71q9fT4sWLeo1RmVlJUuXLmXVqlW0b9++XmPZEqphGIZhGL6ycuVKOnXqRNOmTQPpvKWKvLw8OnTowNq1a+s/VgrsMQzDMAzDqDNlZWUUFBT4bUZGaNSoEeXl5fUexxw4wzAMwzB8J5sjb9Gk6vfMuAMnIoeLyGsislREnIgMSeCc3iLygYhsjpx3reTKX9owDMMwDCMGPyJwzYEZwJ+BzbUdLCItgXeAEqA/cClwJTA8jTYahmGEhhUr4NtvW7Jihd+WGEb28vTTT9O7d2+aNm1KYWEhw4YNq5LLduedd1JYWEirVq04//zz2bJlS1rtybgD55x70zn3N+fcS0BlAqecBTQFznXOzXDOvQz8CxhuUTjDMHKdceOgRw+4+uq96dFDXxuGkVpuv/12rr32Wm699VbWrl3Lp59+yoIFCzj66KMpKytjwoQJ3Hzzzbz33nssWLCAefPmMWLEiLTaFIYcuIOA/znnoqN1E4CdgCJfLDIMwwgAK1bARRc5Nm+GjRsbsnkzXHQRFokzjBSybt06RowYwa233sqxxx5Lo0aNKCoq4oUXXmD+/Pk888wzPPHEE/z+979nzz33pE2bNvzjH/9g7NixabUrDDpwhcCSmG0lUfvmR+8QkQuBCwE6dOjApEmT0m0fGzZsyMg8YcWuT+3YNaoZuz7x+fbbljSo3ANo8vO2vLxyXn75a/bcc51/hgUQew/VjN/Xp1WrVqxfv963+Wvi3XffpbS0lBNOOGE7G4866ijeeOMNZs2axdFHH/3z/p133pmSkhIWLFjADjvssN2YpaWl9b7eYXDgAFzMa6lmO865h4CHAPr16+cGDBiQXsuASZMmkYl5wopdn9qxa1Qzdn3i06sXXHl5VTmCysqGnHzyvhQW+mRUQLH3UM34fX1mzZq1vUhuPHtOPRWGDYNNm+D447ffP2SIPlatgt/9bvv9Q4fCaafB4sXQpUtCtm3atIl27dqRn5+/nY1du3blq6++YtOmTRQWFv68v0mTbV+q4on/NmnShH322Seh+asjDEuoK9BIWzSefHEJhmEYOUphIYw5/lUK2ETz/FIKCmDMGMx5M4wU0q5dO1atWhVXu2358uXsuOOONG/enHXrtkW9vZ/r27mhJsIQgfsE+JeINHHOlUa2DQKWAQt8s8owDCMADG79XwZxCdO7HUufD8aa82ZkDzUtMTZtWvP+du1q3p9g9A3goIMOIj8/n9dee41zzz335+0bN25k/Pjx3HDDDTjnmD59OqeeeioA06dPp0OHDnGXT1OFHzpwzUWkr4j0jczfNfK6a2T/P0XkvahTngE2AWNFZC8ROQn4K3CHc267JVTDMIycYuFCCinh8A3vmPNmGGmgVatWjBgxgiuvvJK33nqLsrIyFixYwCmnnEK7du0466yzOOecc3j00UeZOXMmq1ev5oYbbmDIkCFptcuPCFw/YGLU61GRxxPAEKAjsLO30zm3VkQGAfcDU4DVwO3AHRmy1zAMI7hcfjmUlJA/Zw5UVECDBn5bZBhZx1VXXUWzZs244oormDt3Llu2bOGII47g3XffpVmzZhx77LFcddVVDBw4kM2bN3PyySczatSotNrkhw7cJOecxHkMiewf4pwrijnnG+fc4c65Js65js65URZ9M4zcwERqa+HXv4Y//5m8igpYvtxvawwjaznnnHOYMWMGpaWlPProoxQXF1fJixs+fDglJSWsW7eOxx9/nPz8/LTaE4YiBsMwcpRx46BTJ7j00r4mUhuPDRtg8mTw8mwWLfLXHsPIEc4//3xuuukmJk+e7JsN5sAZhhFIVKQWKiuhsjLPRGrjMXUqHHIING7M/954Aw4+2G+LDCNnGDx4MKeffrpv85sDZxhGIJk/Hxo1qrqtcWPdbkRYuFCfd9uNiqZN/bUlwNgyvJGNmANnGEYg6d4dysqqbtu6VbcbETwHrmtXuj71FDz8sL/2BBBbhjeyFXPgDMMIJIWFKkpbkLeFVqyhoMCZSG0sCxZA+/ZQUEC7jz+Gl17y26JAYcvw4SJXahNT9XuaA2cYRmAZfEY58yq7MZ7jmPfOPAYP9tuigLFwIXTrBkBphw7q0Bk/Y8vw4aFRo0Zs3rzZbzMyQllZGQ0b1l/FLQydGAzDyFUWLaKQEgopgY3FRElEGgA33qg9IYHSwkL49FMNN+XZd3OwZfgw0b59e5YuXUqnTp0oKChARGo/KYRUVlZSUlJCq1at6j2WOXCGYQSX4uJtP1t0aXv69//5x9IOHWDLFli50taZI3jL8Beds4lGDSopa9zcluEDSsuWLQFYtmwZZbFed0AoLS2t0qS+rjRr1ox27drVexxz4AzDCC7RDpyte1Vl3ToYPx4OPxw6dtQIXKtWUFJiHkoUg88oZ9CQXZh85AUc/MRIuzQBpmXLlj87ckFk0qRJ7LPPPn6b8TMWZzcMI7gUF0N+PjNGjYKoJtIGMGsWnH46fPklAD8deCCsWQN9+vhsWMBYvJjCymWcMOVeCtfN8dsaw0gZFoEzDCO4DBkCBx7Iqh12gF69/LYmWHhLypEiBrI0Z6jeRCK3+T/9BF98Abvu6rNBhpEaLAJnGEZw2XNPOPlkCpYuhRdf9NuaYOFpwHkOHMCwYXD77f7YE1T69oVXXtGf58711xbDSCHmwBmGEUycU6dt4UJ2nDgRTj3154pLA43AtWkD0TlDn34K773nm0mBpG1bOPFELfIwB87IIsyBMwwjmKxcqU7bq69qgj5sizoZei2KiqpuKyqyat1Y3n4bJk1ic6dO5sAZWYXlwBmGEUy8m23PnpR6umbz58Puu/tnU5B48EEtWoimWzeYMEGjl5YTp4wcCU2asLlTJ9p8/bXf1hhGyrAInGEYwcSTENl5520ROIsubaNLF+jdu+q2oiJdZl61yheTAsn8+dC9O3MvucSkaIyswhw4wzCCSXGxRpGKitjati3k55sD57FuHdx2G8yJkcXYdVfYa6/tI3O5yubN2vi0e3cq8/MtKmlkFebAGYYRTIqLNcqUn6+toT78EK64wm+rgsHcuXDllTBjRtXtxx0H33wDu+zij11Bw3P4u3en4dq1KktjRR5GlmA5cIZhBJObb9boicf++/tnS9DwijliixiMqnhLpt27U7l+PTzxBPTsCUce6a9dhpECLAJnGEYw6dwZ+vXb9nrKFLjzTv/sCRKxIr7R/PKXMGpURs0JLAMHwtdfQ9++uoTauTN8/73fVhlGSjAHzjCM4LFx4/Y5Xu+9B8OHw/r1/tkVFBYuhObNVeMslsWLf26vlfMUFGihR9Om+rpnT5MSMbIGc+AMwwge33+vOV7Rsg/ecqEVMqgD161b/KT8bt3sGnmMGwcvvLDttTlwRhZhDpxhGMEjSkLkZ7p312dzTuC55+Cdd+LvKyoywWOPO++EsWO3vd5jD41alpb6ZpJhpApz4AzDCB7xHDgvAmdaXlqZ27Fj/H3duqnMiEmJ/KwB9zOXXw6zZkGTJv7ZZBgpwhw4wzCCR3ExtGtXtc/njjtqLlOuO3AbNsCf/wxffBF//957q5zIxo2ZtStorFmjj2gHzjCyCHPgDMMIHvPmVY2+geZ7ffcd3HKLPzYFhfnz4Z579BrFY9AgePNN6NQps3YFjSgJkZ8pL1cJkQce8Mcmw0gh5sAZhhE8Xn8d/vOf7bd37gyNGmXeniDh5bfFkxAxtrFokT5HO3ANG+oSanXRS8MIEebAGYYRPPLzwet/Gs1778Ff/pJ5e4KEV8RRk4jvXnvBVVdlwprg8pvfwOrV2/eLtUpUI0swB84wjGCxZAlcdhnMnr39vqlT4Y47cjtBf+FCdXDbt6/+GOfMSQFo3Xr7iO0uu5iYr5EVmANnGD5z8MFwwQX7VekaldPMmAF33w2rVm2/z7TgNKpUVKT9YaujWzeTErnlFhg9evvtPXtqi7YNGzJvk2GkEHPgDMNHxo2Dzz6DefOa0aOHvs554kmIeHj5TLlcifrII9qwviaKinLbyQXVf3v33e2377OPFnqsXZtxkwwjlZgDZxg+sWIFXHQRVFZCZWUemzfr65yPxBUXq1xIvBw4i8AptRVydOsGP/2Uu23HnNP3SDwJkWOPhbfftipdI/SYA2cYPjF//vb34caNczu4BKgD16NH/DZRbdtCq1bw44+ZtysIbN4MJ51UfRcGjwMPhAsvhC1bMmNX0Cgp0WtlGnBGFtPQbwMMI1fp3h3Kyqpu27rV7jmsXat5SvEQgR9+yF0pkYUL4d//VieuJo44Qh+5SjwNuGgOPVQFj+PlyBlGSLAInGH4RGEhjBmjueh5eZUUFOjreCuHOcWkSfDSS9Xvz1XnDZLTgKuogE2b0mtPUPnpJ2jevOZvQzNnZs4ew0gD5sAZho8MPmguS0c8xOgb/8e8eTB4sN8WBYQGDarf98orcOqpmueUa3gOXE0acKDXpk0bGDEi7SYFkhNO0H6wu+8ef79pwRlZgDlwhuEn779P4YiL6NN1qUXeAL78Ek4+GebMqf6YRYvgxRc1ypJrLFyo3QR22qnm40S02X0uS4mIxM+jBHXgli7N3QilkRWYA2cYfjJ1KgC73nGHz4YEhOnTNcJWk8aZF33KxWqPvDzo27fmCKVHt265W617+eVw/fXV799lF32urp+sYYQAc+AMw0+mTQOgWS46I/EoLlbnpKYcLy+vKRedk+uvT7yPZ1FR7kbgXn1Ve55WR58+cP75WvZtGCHFHDjD8IuKCvj6awDyf/opt9tDeRQXq/NWU6FCLkfgkqFbN1i5MveWCcvLdZm9pgKGXr3g0Udh110zZ5dhpBhz4AzDLxYsgNLSbZIQ333nqzmBoLg4fgeGaFq1qj45PZvZuhUOOACefz6x4488UiN25eXptStoLF6sX45q0+NxLneFjmM48ohy3jtnVu69V0KO6cAZhl/svLPeQObM0byv2bP1Bp3LtGmjrY5qIxclIJYsgc8/TzyiduCB+sg1atOA8xg4UJfr33sv/TYFnMMWP8Uxi59kxa1NKPy/8/w2x0gQc+AMw0+aNoW99mL5scfSsTZpiFzg7bf9tiC4JKMBBxphWr5cq1bbt0+fXUGjvFwjtLVFcrt0gQ8/zIxNAWbcOLhpwVncyW8pu7YpYzqbnFFYsCVUw/CLv/0N7rsPGjbku6uvzm3l/GQZOxYOOii3tOC8oo1EHf3KSj32zjvTZFBAOfpojdDWdp169tTl1tLSjJgVRLx+zGWuEetozebyxtaPOUSYA2cYfuAcPPLIzzIiOKf9G3OZ116D/ffXpcLaWL8ePv1Uk/RzhYULVdesc+fEjm/QQKNMuVitmwg9e+r/XQ5LiVg/5nCTlAMnIoUisr+IHB77SJeBhpGVLFumPT379gWg6PHH9WYb2xw1l5gxQyUy2rSp/dhclBLZYQeNLiUjfZGLUiKnnALDh9d+nKcFl8MdGeL3Y3bWjzkkJOTAiUgnEZkILAU+ASZGPSZFng3DSJSI/puXsL+5Uyf9JM3lr77FxdChAzRrVvuxuSgl8qc/wVtvJXdOt26558B9/HFikjy77aatxnr2TL9NAaWwEMbcuYkGUkGjvDIK2MSY339hXWFCQqJFDA8AewFXAd8AW9JmkWHkAt7S6d57A7Cpa1d9PXt27mpTJSIh4uE5cLkUgasL3bpptHfLFsjP99ua9LN5sxZuJBJCatUKRo5Mu0lBZ3CXSQxy5zPhj3dyzANXUdj8bGB/v80yEiDRJdTDgOHOududc2875z6IfSQzqYgME5H5IlIqIl+KyGG1HH+miEwTkU0iskJEnhIR+45ghJfycs33atkSgE1duuj22bN9NMpnknHgmjeHQYOgbdv02hQUKiqga1cYPTq5837zGy34yJViDy/amOga4OrVuf0/BzBzJoWUsPNRzSjcuz1MmeK3RUaCJOrAbQZSki0sIqcBdwM3AfsAk4HxItK1muMPAcYBTwB7Ar8F9gCeToU9huELI0fCZ5/9/LKieXNtPp6rN5PKStXAO/TQxM95+2248ML02RQkli/XislEeqBG07cvnHsuNGmSHruCRqIacB6XXALHHZc+e8LAzJnQoQPlLVtC//7qwOWKwx9yEnXgHgZSpQwzHBjrnHvYOTfLOfcnYDkwtJrjDwKWOOfudM7Nd859CtwL5LjiqZF13HADnH6631b4Q14evPRS7jhkyZKshIhHRYV+UciVSsumTbXQI9FIbs+e2nZrSw5nBc2cCXvsoT/366f5g8XF/tpkJESiDtxS4GAReV9ErhCR82MfiQwiIo2B/YBYtc63gYOrOe1joKOI/EqUdsDpwJsJ2m4YweKjj6B3b5g+ver288/Xm08uUpdv/Pfco5IalZWptydoJCvi6+EcHHIIPP546m0KIkccARMmkHAWfs+e+v7J1VxK52DWrG0O3NFHwxNPQLt2/tplJESiRQwPRp6LgAFx9jvgsQTGaQc0AGIFr0qAo+Kd4Jz7RETOQJdMC1Cb3wHOTWA+wwgeX36pkhmx6vgbN8I338Bee2mOVy5x773wz3/qEnKrVomd06gRLF2qy4udOqXXPr/xHIyucTNNqqdhQ702uVKJ6pxq5SVKtJTIbrulx6Yg4xy8/rrmkv7wg76/zjnHb6uMBEnUgUu1Kkzs122Js013iOwB3ANcD0wAOgK3AmOA7d5pInIhcCFAhw4dmDRpUsqMro4NGzZkZJ6wYtenKrvmzsxcAAAgAElEQVS99RY7tGnD5Nmzf25gv2HDBqaPHk2fq65i6l13sbZPH5+tzCw9J02icN06Pvrqq7g34Hjvobbr1rE38NUrr7Cud+/MGOoT7bdsoe2gQcz+/PNqj6nu/6xv69YwfTrTcuB/cN9hw9hYVMR3V1213b5416fRmjUcAswdP54licjXZCs//PDz9SlYtIimS5bw48HVLYrlLoG7lznnMvYAGgPlwCkx2+8HPqjmnHHAv2O2HYo6fF1qmm+//fZzmWDixIkZmSes2PWJoU8f5445psqmiRMnOrdggXPg3Jgx/tjlJ8cf71zfvtXujvsemjVLr9e4cemzK0RU+382eLBzXbtm1BbfaN3auWHD4u6Ke30qK5179FHnZs9Or11B5dNPnXvxRecqKrZdn0suca55c+cqKnw1LYhk4l4GTHEJ+lTJdmLYS0QuEZF/RKRA9krSWdwKfAkMitk1CK1GjUdToCJmm/c6iVi5YQSArVs1aTgi4FuFLl2goCA3K1GTkRDx8PLBciF/qT4dOoqKtD1Ztnf5WLNGH8kUeoho7mkuLp8CPPYYXHxx1ah3v36wYQPMmeOfXUZCJNqJoaGIPAVMRytARwH3AdNFZJyIJFPbfgcwRET+ICK7i8jdwE5E8uxE5EkReTLq+P8CvxGRoSLSIyIrcg/wlXNuURLzGob/rFsHp54KAwZsvy8vT28kuebAVVRolWSyDlxBAQwZkv3Cx85B69YwalTdzj/7bHjnneRyw8JIshIi0ee98Ubq7QkDXgVqrAMHpgcXAhLNgRsBnApcCzwFrAAKgbMj++ZFnmvFOfe8iOwA/B3NZ5sBHO+c87Jsu8YcP1ZEWgB/BG4H1qKtu7ZPcjCMoNOuHTz1VPX7e/Wqog+XE5SWwtCh8ItfJH9uLlRXlpTApk3aC7Uu7Lpr9ju5sC0Sm6wD9+ijcPPN2sUhtrN7NuMcfPut9o6NZvfdVY5lyhR1/o3AkqgDdzZwvXPuxqhtC4EbI9G380jQgQNwzo0G4kqKO+cGxNl2Lxr5M4xws369VphWFw254gq9WecSzZrB3XfX/fxsbxNVVwkRjy1b4L//1S8HeyWV9RIudtoJfv/75CO5PXtqFHjhwtzqi7pypXai8CREPBo0gH33hS++8McuI2ESzYHbCW1iH4/Jkf2GYdTGCSfA8cdXv3+//eCwGjvLZR/r19ddSPWGG6BFC70BZyv1deBAl+1ffjk19gSVAw6ARx7R5eZk8Jy2uXNTb1OQmTlTn2MdONDr+OqrmbXHSJpEHbhlwCHV7Ds4st8wjJqorIRp06BHj+qPKS3VjgTeh2sucOONetOtixPWvr0m5y9dmnq7gkJ9Hbj8fG3Tlu3FHqtX103UOVcduCOO0NzTQ+Lc2nfbzcR8Q0CiDtzTwDWR6tMeIlIgIt1F5P+Aa1CpD8MwamL+fI02xatA9ais1JyUbI+WRFNcrBW4yfb5hG35TtnsnOyzDwwfnrjAcTyKirJfzPeQQ+C005I/r0MHTWvINQcuL0//f5o23X5faal+sXr//czbZSRMog7cSOAltPr0e2ADMBe4MWq7YRg1MXWqPvftW/0xTZtqpCWXKlGLi+uee+RJRngViNnIUUfB7bfXb4xu3bLbyXVOf79kO1WA5qO+9RZceWXKzQo0t98OL7wQf1/jxnDLLboaYASWhBw451y5c+5MoDdaDXpt5Hkv59xZzrksTkAxjBQxbZpGmWpLJO/VK3ccOOfqpgHn0bWr3oCz2TlZurT+Gm7dusHixdmbK1hSolWkyVagehxySPa3Y4vl1lu1b2w88vI0H9ekRAJNUkK+zrlvnXMPOOdujDznUKKOYdSTo47Sfp9NmtR8XK9e2mKrLg3ew8aPP6o2Xl0duPx8uOYaOOig1NoVFJzT98MVV9RvnD/+UfMqs1ULrq4acB6zZsGdd0J5eepsCjI//qhO7+67V39Mv34wfbqKjxuBpFoZERHpCix3zpVFfq4RE9U1jFoYMCC+gG8svXppY/ulS6Fz53Rb5S8NGmgkoC4acB7XX586e4LG6tWqip9Md4F4ZHt0qb4O3OTJmmf429/WfYwwMWuWPserQPXo10+dtxkzVFbECBw1ReDmA1629YLI65oehmFUx/r18PnnmhxcG6ecosuKHTum3y6/adNGo0t77133MbZs0Wq6bMRbGq6PhAjoF4I778xeba+99oIRI+ru6OZaJWqiDlyTJtmdnhByahLyPR8ojvo5B9ZzDCNNTJ4Mxx4LEyfWHoXbYYe6q+6HDe/mUJ8I04036qO0NPuU9FOhAQea0zR8uEYr+/evv11BY++96/clYJdd9Pn772FQbKvuLGT5cq28ranoo3t3TW/Itv+pLKJaB84590TUz2MzYo1hZCvTpulznz6JHf/QQypQe8YZ6bMpCIwYAe+9p83W60pRkcqvLFmSfctfqYrAFRSoXEa2SonMng077lj3Lz4dO+o1ypUI3LXXwl//qo59dYiY8xZwEm1m/76I9Kpm364iYmIxhlET06bpTbhNm8SOf+wxVUPPdupTgeqRzVIiAwZojmAqIrLdumWvA3f88VqoUVdEdBn1++9TZ1PQady49mNef107wySS+mFknESrUAcALavZ1wI4IiXWGEa2MnVqzQK+sXiVqNlOKhy4bBbz3WcfzRFMRfVotmrBlZfDokX1j76++Wb1umjZxLp16vC+917tx5aVwUcfaTWqETiSkRGpLgduZ1TY1zCMeGzcCHPm1CzgG8tuu2kV6vr16bPLbzZuhBUr6u/Ade6sS0HZGIH78ku9RqmgqEi14LJNnmbJEtW3q6lFXSJ07qzLqNnOrFkwfrxWN9dGv376bHpwgaRaB05EzhORD0XkQ9R5e8h7HfX4AngC+F+mDDaM0NGokX7bPeusxM/pFclYyOYonFc5Wl8HrlEjuP9++NWv6m9T0Dj6aLjuutSMdc018NNP2acFV18JEY+ZM7XQI1UOc1CpqYl9LJ07a79hc+ACSU0RuEqgIvKQmNfe40fgAeD36TXTMEJM48YwcGBy7aJ69dIbbbbmLIHeHJ57TnNs6svFF8P++9d/nCCxfr06XPUtYPBo1So7I0ypcuBKSlRq5dtv629TkJk5UwWwE7leIhqFMwcukNRWhfoEgIhMBIY653Kkv49hpJD//lc/MI8+OvFzdt1Vlxiz8Ybr0aZN3ZqPx6OkRJepU+EMBgXPea+viK/H6tUqI3LSSXDooakZMwgMGACPPgpdutRvnGgtuCOPrLdZgWXmTE3RaFiTilgURx8NH36old41Va0aGSehv6BzbmC6DTGMrOW66zT6kYwD16BBdjtvAJ9+qs8HHlj/sR58EEaN0n6Y+fn1Hy8IpEpCxKNhQ40wdeiQXQ5cjx71z38D7VbRpEn2S4m0apXce+rPf9aHETgSdMEVEekD7AZs18zROfdkqowyjKyhrAy++aZuEgdjx2r3htGjU25WIBgxQpcIU9EdoHt3Tc5ftGibKGvYSXUErkULaNs2+ypR339fna/ddqvfOHl5mo+Z7Q7cM8/U7bzy8sSjdkZGSFQHrrWIfAx8BTwLjI08Ho96GIYRy3ffaaunZCpQPWbN0qWhiorU2xUEUiEh4pGNWnDHH6832/btUzdmUVH25VWefTb861+pGatnT230blTlsMPgvPP8tsKIIdEF7ZuAHYDD0YKGE4FfAE8D84Asyx42jBQxdao+J6MB59GrlzaTzraICei3+YULU+/AZdO16t5dO3GkMu+oqCi7rtHmzdoWKlUdOF58UfO9spUXXtBuMMuWJXfeDjtkbx/dEJPoJ8MxqBMXSVphiXNuknPuHOBdwBbIDSMeX3+teTV1Wd7xpERmZ2Ht0KJF6sSlyoHr1EmXd7LJOXnrLZgxI7VjFhXBpk3ZowXnRRNT5cBle+uoadO0iGHHHZM7r18/XU1Yty49dhl1IlEHriMwzzlXAZSi3Rc8XgFOSLVhhpEV3HyzLoXWJXfEc/qy0YHz8oxS5cA1aACvvJJdyzxDhsBdd6V2zFtvVSc3W7TgUiUh4lFcDKeckr2yGTNnao5oso6qJ+j71Vept8moM4k6cCuA1pGfFwIHRe1LQtzKyDUGDIDLLqtD/le20KBB3ZPQ27aFPffUSFW2cfDB8PHHsO++qRvzV7/KngKGzZtVGiVVBQwe2SYDkWoHrmFDeOkljVRlI7NmJSbgG4t1ZAgkif43f8Q2p20cMEJExojI/cCtwIR0GGeEn61bYePGBlkvbh6XZctUYLY+wqAzZsDVV6fOpqDQvLk6cS1a1H5sosyeDc8+m7rx/GTRIn1OlYSIx4oVGmF6//3UjusXv/sdTJgAhYWpGa9zZxXezsam9lu2aOS7Lg5cu3Zw1VV1y+U10kaiDtwo4K3Iz7cC96PLpmcArwF/Sr1pRtgZNw4++wzmzWtGjx76Oqf44gsYMya7+5nWlRde0ObhqeSll+DMMzV6FXZSLSHi0aSJXqdsWQpr3171FVMVWWzQQDXlslFKZP16OP10OOSQup3/r39lt8BxCEnoXe+cK3bO/S/yc5lz7i/Ouc7OubbOuTOdc1Z3bVRhxQq46CJHZSVUVuaxeTNcdFH2txmswtSpmmvUu3fdx3jjDZUgWbUqdXYFgRtvhAceSO2Y3jJaNshkeL9DqiNwrVtDy5bZcY0AnnoKPvkktWP27JmdDly7dvD003DMMXU7v7JSl2A3bUqtXSEhiOlAWZYQYQSF+fOhUV5V/bLGjbNLpqtWpk3TQoRmzeo+hghMn55dTe2d02TxZHrDJkI2acGdfLLKWXTqlPqxs0lK5NJLUx/a79tXuxVkG6Wl9as+njRJl18//jhlJhn1o9rSOBG5NolxnHPu+hTYY2QJ3btDWWkF0W+xrVtTl2scCqZO1Tyv+hAtJVLXpY+gUVKifV5TVYHq4b25ssE5ads2fX1du3XLjmu0dq32d031h8r1WXorGzxYI6+ff163872CoylTYNCg1NkVEqLzuVOVcllfatI2GJnEOA7I0ne9URcKK5YypvJv/EEeppHbSqU0ZMyYJoF546edTZs0n6a+Sb/dumlvz2ySEiku1udUO3CFhXqtsiECN26cRt9+8YvUj927tzo/YSfVFajZjichUldat9bzc7AS1cvnBs3nHjNG/WG/qXYJ1TmXl8SjQSaNNkLAI48wmHEc12c5F7V9inmuO4NP+MlvqzJH06Ywbx5ceWX9xmnQAHbd1Ry4RMjLg8mTs6Nq929/gyfT1F76xhvhgw/SM3YmSZcDt2oVHHQQPPdcasf1k7IymDOnbhWo0fTrl3MOnOZzE8h8bsuBM1KPc/rhd+yxrGnVjR/bdKOQFdlx00iWVAimHn+8OnHZwlln6VJOjx6pH3vffbXtT5jZulUlaFJdwJBtzJunz6l24Fq3Vifl669TO66fzJ2repKpcOAWLYKVK1NjVwiYP3973eOg5HObA2ekHhHNs7j/fiZNgvMeaKg36zVr/LYsc1xxBVxwQWrGuvlmuP321IwVBBo0gK5d69adojY++0y7DYSZJUv06366HLj58zXCNCHk8p2XXKJVkW3apHbchg3VKcymStSZM/W5vg7ciSfCa6+pjmOO0L27BjCjCUo+d0IOnIhUikhFTY90G2qEjBYtfn6Hu0aNdNksm9oc1caECdpkO5VUVqZ2PL/45z/h+efTM/bEiSo4umFDesbPBOmSEPFo2RI+/VSdnzDTpIkW+aSjLdguu2SXA9ezp/5f1KUnczTdu2vHk6ZNU2NXCCgs1Jy3vDzIy6ukoEBfByGfO9EI3HVxHvcD3wOLIq8NQ3O1+vSpXig0W5po18TmzXpz7JsizaDvvlMNp//8JzXj+c0dd8B776VnbE9KJMxVlukS8fVo21albcKuBXfzzaqTmA569tRuDNnyedWnjwrx1kfSyOOLL7TvcA4xeDAccAD06LGRefOCUcAAiQv5jnTOjYp5XArsCcwCsqCkyUgJDz6ozkvnzlW3L1igy6gvvuiLWRllxgyoqEhd25lOneDHH7OjkGHdOk0ST3UBg0c2SImcdZYuc6YrAicSfikR51TuI11fBA48ULsOZENXD0itAO+998If/5iascLCpElM3rA3T1/zciAibx71yoFzzlUAo4HLUmOOEWo2boSxY7XXYvv2Vfd17qw37mzpwVgTXiPsVEXgmjfX65cNDly6KlA9skHMt1Ej/T3SkSPoUVQU7gjcypXqkKQrEemMMzTinQ1Lhd6XyREjUjNe//6aHrJ0aWrGCwPjx8Ps2WyJva/5TCqKGPKBtikYxwg7zz6r+lLDhm2/r2FDOPxwzVHKdlq21G/vqby59OplDlwitG8PBQXhji7ddRc880x65zjsMNhrr/TOkU4ypQGXDUuo8+drI/vdd0/NeP366XMuyYmMHw+HHkpFwBz6RIsYusZ59BSR3wI3Azn0lzTi4hzcf7+KhFbXfWDgQNUiWrYss7ZlmtNOg3ffTV2DbdjmwIX9hvLDD1qFmi4HTkTlJW65JT3jZ4J77oHXX0/vHH/9a/p05jJBuh24ykodO1VRKz9JVQWqR58++j+cKw7ckiXwzTdw3HF+W7IdicboF6DdFmIRoBi4JFUGGSHFOfjLX7T6tLqqME9VfuJEzfPJRpzTJYtUL38dd5xGlrZu1W4DYWXoUPjDH7YXVkolQUpSSZaKCli8WL8EGNXjVXinq9AjL0+dlDlz0jN+JvGqjVMVgWvaFPbcE778MjXjBZ233tLn447TNKAAkWiI4Pw4jzOBg4FezrmQ16Mb9SYvD84+G37zm+qP6dNHtZvSFX0JAnPmqBP72mupHff44zWqFGbnzSOdzhvA229rk/Mwsny5Cq6mW8T32281r/LNN9M7T7oYPhzWr09NVWV19OyZHVIiM2dqIVSrVqkb89VXc6cStXt3/dK5555+W7IdCYUJnHNj02yHEWZWrYLHH9c3eU2imnl5cN99mbPLD6ZNg9JSFapNNZs26dhtQ5xyeu65Gok999z0zTF9ulbKXXedquqHCS93L12RJY8ddtAk9DAXe6RbTLZnT9XLcy49WnOZ4pJLav5iXRfS/f4MEkceqY8AklSSjoi0FJGDReSUyHPLdBlmhIjHH1eRyERy2yorNZ/gpyztizp1qkaYUpVv4uEcdOwII0emdtxMsnUrPPXUtkKGdBFmKZGSkm0yH+mkQwcVwg3jNQJ1Sp59Nr1z9OypRVk//pjeedLN/vvDSSeldsw1a7TP84cfpnbcoLF0aaCrtRN24ETkWmAx8D/geeAjYLGI/D1NthlhoLJStd+OOCKxEPPMmbD33hqCz0amTtXr0LhxascVCX9T+wUL9P2S7iX0MIv5nnyyRlnrq5hfGyIaJQ7jNSovVyn8GTPSO8/BB6veWXl5eudJJz/9pOkcq1endtyCArj7bq3OzGbuvVcd+YB2dkm0CnUUMBJ13AYBvYGjgBeAUSIyMk32GUHn7be16m/o0MSO32MP7SqQjXIizqkDlyoB31jCLiWSbgkRDy8CF9blwcaNU1vBXB1h1YJbskSLPdItIbL//noDD3NRzGef6fLpt9+mdtz8fP0inu2VqBH5kKD2fk30U+IC4Hbn3IXOufedc99Gni8A7gQuTJ+JRqAZPVqXY048MbHj8/JgwAB14MIuiRFLRQX8+c/wu9+lZ/zddtMKxY0b0zN+usmUA9e2rea+rVmT3nnSwciRcPvtmZnr17+GQYMyM1cq8aKGmegmXlYWzveRhychkqoK1Gj69VMHLts+xz2WLoWvvw6kfIhHog5cK2BCNfveiuw3co3ycn1ceGFyS4YDB+q36HTnQmWahg3hmmu0YjQd9Oqlz2GVNnBOm4SnO6IhooU1o0ald5508NxzmjifCS65BG68MTNzpZJMifiCOj6XhFgla+ZM/YK9ww6pH7tfP3Vus+1z3CNaPiSgJOrAfQb0r2Zf/8h+I9do2FBlCJK9UUbrwWUTCxakVyfowAM17ySsSzp/+pM6n5mo6GvQIP1zpBrndEkz3QUM0ZSV6SNMbN6saRhduqR/ru7dwy0lMnNm6guqPPr1U8dw8eL0jO8348er/EqAO5Yk6sBdCpwvIleKSJGIFESer0I14f4oInneI33mGoFhy5Zt/7jJ3pB32w3eeANOPTX1dvnJlVeqk5UuOndWfbOOHdM3R7bw4ou6rB+m5Z2VK7WAIVMO3BdfaCVquhrCp4thw7SjR7r1BCHcWnDOqQOXjuVTUF3PH37QFZVs5P779XMkwBIyiTpbXwM7o22zioENked/RrZ/A5RFHltTb6YROF5+WZOgp05N/lwRXWZMpbBkEEhnAYPHggXw1VfpnSMdVFbCfvup5EwmWLJEm5GHSa7GKyjIlMZWx476dwljJWqm6NlT30Nheh9F89ln2iEnHYgE2rmpNx06wEEH+W1FjSTa7+c64rfSqhMiMgy4EugIfAtc5pz7Xw3HNwb+DgwGdgJKgNucc/ekyiYjSUaPhh499FtYXVixAh59FM48MzO5LOlm3TrNBTnvvPTO88c/qnMybVp650k1y5er41lampn5orXg0pH/kw7WrVOnKpMOXKNG4XPgfvlLfVx8cfrn6tlTn+fO1arUMCGyLW82XTz5pPbu/eyzcKYtVMeTT6pweibeY/Ug0U4MI1M1oYicBtwNDEO15IYB40VkD+fcompOexbogla7fg90AApSZZORJF9/DR9/rNVydZU72LgR/v537dwwbFhq7fOD6dP1Od0RuF69dMmrsjIzUhOpwluG8m6I6cZzgubP18hfGDjqqMTEsFNFgwaaRxYmKZHNmzX9IlPO1H77wc03hzPv9IMPdAn1wgvT51xVVmpP1Dlz0rdU6wd33KErRAF34JK+A4hIcxHpIiJ1bUI3HBjrnHvYOTfLOfcnYDkQV0hMRI5GNeeOd86945xb4Jz7zDk3qY7zG/XlgQc0d2bIkLqP0aOH3jyypZDBW0ru2ze98/TqpVGsRdV91wkomZIQ8QizmG8mKSoK1zXynM1MRe07d4arr05Pa7x08+yz+iU5nV/0+kdqG7NJD27ZMv1Cni41gRSSTCeGY0RkCrAGWACsFZHPRSRhIaHIUuh+wNsxu94GDq7mtN8CXwDDRWSJiHwvIveISDCV9bKdLVtU6uCMM+rXk1NEq1EnTtRvcWHnV7+CJ55If4GBtyQSNkHf4mKtWs7UjbB1a60eC1OU8vLLtUl7JhkyBM45J7Nz1gdPQqRHj8zNuXQpzJqVuflShVeBms48tV69oGnT7HLgQiAf4pHQEqqIHAO8AcwFrgdWoPlrpwFvisjxzrl3EhiqHdAAzWGLpgSNssWjB3AosAU4GWgN3Ivmwm2nmCoiFxIRFu7QoQOTJk1KwKz6sWHDhozMExQaP/QQUlnJlgR/5+quT4fCQnb/8Ue+ePxxNmYqMpNOunbVZYs6kOh7qNHatRwCzH39dZY0aVKnufxgpw0baHPwwXz70Ud1Or9O/2P33qvPIfnf7Pfaa5QWFjKjjvbW6Rp5UhwhuUY7TZjArsDk5cvZmqTNdf2c7jN8OHlbtjD1/vuTPtc3nOOQ6dP54fDDmVPPz+na6Lvzzsh77zE1JO+h2tjjySdp1a4dn/z443b/F4G71zvnan0AnwBvAnkx2/Mi2ycnOM5OaDHEYTHbRwCzqznnbWAz0Cpq29GRcTrUNN9+++3nMsHEiRMzMk9Yqfb6LFzoXH6+cy+8kFF7Us6WLc49+aRzS5bUeYik3kP//rdzixfXea4wkvX/Y5WVzrVo4dyll9Z5iDpdo/Jy/T/cuLHO82aUxx93br/9nKuoSPrUOr+HLrjAuXbt6nauX5SUOAfO3XVXwqfU+frceqtzQ4fW7dwgcuyxzl14YdxdmfgcAqa4BPwp51zCS6h9gPudc1XWuiKvRwOJJv6sAiqA2IzQ9mwflfNYDix1zq2N2ubFs0OYmBBiPvxQE61TlTPTtSusXQunnJKa8fxi1ixdhvpftYXUqeW3v9XcnDDhhx7bo4+q2GgYtODWrIH16zMr4gvw0Uc658cfZ3beujJkiC7XZXJpvGdPFegOU0ut77/X53SJ+EZzxRWqSpAtjB+ved4hINH/gi1Ay2r2tYjsrxXn3FbgSyA2b24QMLma0z4GdorJeds18hyi8qksYPRorThq3z51Y+bnp24sv/AKGNJdgeoxezY89lhm5koFP/2kOWlPPpnZeTdt0vfrDz9kdt664H0pyrQD5xV7hKkSNdPssos+h6ll1CGH6Jfjww/PzHzO6f9b2PHysUOSO5uolZOA60WkSumPiHQFRgLJlBLeAQwRkT+IyO4icje6tPpgZMwnRST6k/4Z4EfgcRHZU0QOQWVIXnLOrUxiXqM+rFih4r3nnadJq6li2jSVBKiLIHBQmDZNr0mmJDJefx1+/3tYvToz89WX4mLVOGtZ3XfANBGmStTycv0/yNR7yKNTJ5WYCMM1AujdG267LbNzen8TL6oVFlq2zMwXZOf0Gl1xRfrnSjeHHqoddUJCog7c1WjD+u9E5EMReV5EPkA12VpH9ieEc+554DJUmHcaWqBwvHPO+wrYlailUefcBrTAoRVajfoC8AHawsvIFI88ojeZVOvitG+vLX3efz+142aSqVNV0DhTQpa77abP332Xmfnqy7x5+pzpQhVPasKrXAwy/furGGpdhbHrSsOGuhwfhgjc2rUwY0bml8R79oSnn9abe1i49loYMyYzc4lo5DjslagrVsAnn9RPXSHDJOTAOefmAHsD9wD5wL5AEzQS1tc5l9RXE+fcaOdckXMu3zm3n3Puw6h9A5xzA2KO/845d7RzrqlzrpNz7hLn3Ppk5jTqQXm5fhgMGgS77lr78cmw007qkITVgXNOI3CZWj6F8EmJeEtPmZR+gHBF4PykW7dwOHCeI0m5W+8AACAASURBVJ7pzi0FBdoxJkx5pw8/rF8IMkW/fqqdtjXEnTQ9+ZAQ6L95JNpKC+fcciALYqRG0pSXq0bV3nunZ/yBA/Ubbnm5RgTChIhGwsrLMzdn9+7aAilMDlxhITSrq/Z3HWneHI49FnbcMbPz1oXzz9fuJM8/n/m5r7giHIUefjlwoJG/RYvCcXP/6SeNJmWigMGjXz913r75JjydT2IZP14DCum6z6WBpO6WItIS2AvoBCwBvnXOrUuHYUaAaNIkvQKjAwfCgw9qwvkBB6RvnnSR6TY7DRtqYnVYHLiDDtIPRj8YP96feZNl2jT/2jX96lf+zJssfjpwd92luacrVmR+7mTxRIcz7cCBLqOG0YErL4e334aTTkqv8HGKSdiBE5Frgb8AzQHvN1wvIrc6525Ih3FGAJg3T+UxTjtNHbl0MGAA/PrXoan8qcKLL8LixZlX0H/11XBElgD+8Ae/LQg+Cxf69+Vl/Xrtb9y7d+YLTZKhSxc4+WTtn5xpevaEkhK9Vi1aZH7+ZJg5U58z6cB1765tu8LovIF2GLrySji4uoZQwSShO6aIjEKrTZ9HJT96o4UFLwCjRGRkmuwz/Gb0aL0Bp1MDqX17dUi8vnph4skn/ZH06NlTmy0HnYoKrUD1izvugA4dgt2ubcMGXfbycvYyzeefa4L+V1/5M3+inHIKvPSSPxESrxI1DFIiGzZoS79M9m8Vgeuv3xaJCxvNmsHf/qbBhBCRaMjjAuB259yFzrn3nXPfRp4vAO4k0rrKyDI2b1bn5KSTMrO8s2IFlJWlf55UMnVqZgsYPObNg2uu0ehfkPnuO3U0X3jBn/mbNIGVK4O99OUVEGRaA84jLMUemcwzjcVz4ObO9c+GRLn8cu3fmukVjc2btYpzS0KysMHi3Xf9/aJZRxL9C7cCJlSz763IfiPbeP551RobNiz9c02YoN8aM1k5VV9++EE/KP1w4H78EW66KfhREy9ikcloQDRevlSQnZO8PF0azOSSVzRdumgEJciVqM6pvMOoUf7M70nghMGBA3+ilG+9pUuQ06Zlfu76sGKFKizcd5/fliRNog7cZ0B161v9I/uNbGP0aL2pZELNu39//dAJk5yI90HVN9FOcinE04ILeiGD58BlWgPOIwzRpd1316VBv6rfGjfWIpMgX6OVKzX/zC+NrhYttN3YBRf4M3+irF+vgtD//W/m544uZAgTEyKxqeOO89eOOpCoA3cpcL6IXCkiRSJSEHm+ChXU/aOI5HmP9JlrZIw1a3Q5c+jQzHyba9tWHaGJyTT18JnFi1XOww8HrmVLvemGwYFr0QLatfNnfm9ZMshivkHIz+vWLdgOnJ8VqB4HHww77ODf/Ikwa5YKo/vxnurcWfNNw+bAjR+vKUJ+fI7Xk0SrUL+OPN8ceUQjwDdRr10S4xpBpXVrXZ7L5AfBwIFw//2aS1FQkLl568r558PZZ2sEww969QqHA7fzzv6V5jdtqkU4nvhxEDnzTHWePv3UPxv+9a9g9yUOggP32WcwebLmmAUVPypQPUQ0CvfFF5mfu6548iG/+U2o5EM8EnW0rkMdMyMX2LBBqwdbtcpceyhQB+6OOzQR9he/yNy89cEv5w3UKXn9df/mT4RzzvE/qfnhh/2dvzYWLPBfmiLobaI8B86vSl3QRPe//x0uvDDzotSJMnOmOuJ+Obr9+mlEa8MGFdIOOlOmaJ53CJdPIUEHzjk3Ms12GEHioYe0l97332thQaY4/HB49FHVowo6mzbBCSfA1Ver2r8f3H578BNvTz/dbwuUjRuDe9NdsAB++Ut/bVixAiZN0vdy69b+2hKP/faDv/zF37+hV4k6b15wP6NmztT8WL862gwerF++gxzNjeaAA7R7hF8V4PXE8tWMqlRWaleEvn0z67yB5nWdf344BGq//lpveKWl/tnQpEmww/4bN8K33/ofgRs1Sp2Sigp/7YhHaakKxPp9A5k+Hc44Q29mQeSYY+C22/y1YZdd9DnIlag9eui18oudd9Yv4o0a+WdDMojAXnv5HwGvI+bAGVV57z2NvA0d6s/8JSW65LVxoz/zJ4pXgeqHhIjHxo1w7rnwn//4Z0NNfPaZfjh+/LG/dnTsqLkuy5b5a0c8Fi3SZ78dOG9pMqhSIkuX+u+Ae5XU33/vrx01cc89cMst/trwzjv+6T4mQ0kJnHfetrzBEGIOnFGV0aO1YvB3v/Nn/mnTNMfE75t+bUydqi19/NI3Ay30eOkl+OAD/2yoCS9S4ZeEiIfnnASxErVJE7jsMth3X3/t8N7HQaxErajQv+E//uGvHa1a6epAULsxuICkqd9/v/9/q0SYMAHGjvV3FaWemANnbGPlStUP+sMf/MthOOQQzd8IupzI1Km6zOznEmZenua7BLUStbhYl1I6d/bXjiCL+XbtCnfeqZFKPykoUAmIIEbglizRCKqfFage06frl9wg8swzKi3k99+wXz+YMwfWrvXXjtoYP17f8yGUD/EwuQ9jG+3bq2Pil2YXaOXS/vsH34Hr0sXf5VOPXr20ajeIFBfrTTeTlczxCHJ06aefVOqkSRO/LQmuFlwQJEQ8Mp0XnAwzZ2p3GL9t9Hpaf/WVKgsEkYoKlQ/51a8y33IshYTXciM99O7t/wfAL36h5d1B7k338ssqKeA3vXrpN+5Nm/y2ZHs8DTi/yc+HkSM1uhs0/vxn7cQQBB5/XHsfB40gOXCffAIXX6xalUFj5kwttPBT2gi0YhiCLej7+ef65Smk8iEeCTtwIrKPiLwiIqtEpFxE9o1sv0lEfNJRMFLGK6+ooOjq1X5bot/aKirgyy/9tiQ+Qck1AV162313/eYdNG6+Ga680m8rlBEj4Mgj/bZiexYs8DePMpo99tDIctCYP1+jJEG4TgsWwJgxKiUSNGbO9K+fbjTt2mnO4tdf13qob/z4o8rCDBrktyX1IiEHTkQOBT4BegHPxJxXCVycetOMjHLPPaoE37Kl35aoqGhJSXDD73/9K/TpEwxH7qSTVKrD7yrGeBxzTHD+hps2aV5O0Fi40F9x2mjmzoVbb9XIRJA49ljNEwyCNIWnBRc0KZEtW9SmoERzP/kEnnjCbyuq55e/1Gpiv3rrpohEI3A3AxOAPYHhMfu+AnwuoTLqxbffaiXjxRf7n68EugTQvr3fVlTPl1+qjUHWYPObFSu0ymvDBr8tUW66SaMT5eV+W7KNsjKVxwiK8z1nDlx1FXz3nd+WVOXgg+HSS/22QgmqA7d5s16joHSwKSwMbm5ZWVkw+g+ngESv8L7AA845x/YttVYBIVBeNarlwQc1T+j88/22ZBuffKIJpkGLBjinUidBqlwaPDg4NziP997TyMnixX5bonTvrsvyS5b4bck2lizRG0lQInCeI+l3FWMsn32mS15BoE0bbWgfNAeudWuNUgYl4r18OVxwQTALrJ57Th3MoL3P60CiDlwp0LSafR2BgNcLG9WyYYOGuk85xd/q01jKyrTP54cf+m1JVZYs0ZtJECpQPVatgo8+8tuKqhQXa4QyCInnEEwtuBYttB1aUIorPAcuSJWopaVw4IHBku7YbbfgFVitWgVbt/ptxTYKCuCRR4KpJjB+vH42BTHfM0kSdeA+Ai4Tkej1NS8S93vg/ZRaFSKOPmwzD18Y4nBsWRkMGwZ/+pPfllTlgANUWiFoHwBTp+pzkBy4Xr102StIywLFxdCpUzDkMSCYWnDt2sHw4eoQBIHmzTW6FKTIhGdLUKKUAP/7Hzz9tN9WVGXoUM3LDQqtW2tFbNAqUSsqNLXj2GODu8SbBInqwP0D+BiYDryEOm/nisgdwH5A//SYF3x+O+82ei97mxW3L6fwL2f5bU7ytGmj1YJBIz9fixmC5sAVFupSc5CaWffqpUn6S5YEo1IPgiMh4tGli35gBykCN3++Ot1Buk5B04ILkoSIRxBv/DNnwq67+m1FVfr1C97KwBdfZIV8iEdC70Tn3HTgcKAEuAYQ4I+R3Uc45wKW9ZoZxo2DP634O8cxnh5XnMi4QU9qRCsszJih4eQgRW6iGThQm2sHSSJj//3h0Uc1WhEUevXS5yAlnwfNgWvUSOUffvMbvy3ZxnXXwWGH+W1FVd58E1591W8rthFEB27KFK1iDEpLrbIyragMgoRINP36aQ5sSYnflmxj/Hh1wEMuH+KRcCcG59xXwJEi0gRoC6xxzgVQPTQzrFgBF10ElZXCRvRmftG7v2PQwDMofHWMLkUEnZtv1tZZy5ZBs2Z+W7M9Rx2leXArV2oPwiCwYIFGKYJUgbr77nD00f4LeEYzfrzmwQSJP/zBbwuqEiQJEY8OHfy2oCrz52s03m9x8WjKy+GNN7RqPwhfUoqL1YkLmgPXv79W7S5bFpz31bHHqlRWGO7PCZCoDtxjItIdwDlX6pxb5jlvItJNRAIo351e5s/fXpaocUFD5s/cHLzKyXisXAkvvgjnnhtM5w002jV5Muy5p9+WKKtXayTgttv8tqQq7dtrXscRR/htyTb69g1ObpfHsmXBWpJfuDA4EiIeU6dqRXNQPsPOOw+efTZYy5a77KLPQalEnTlTn4PmwB12mEYGg5QvfNBB8Je/+G1Fykj0v2II1UuFtAPOTYk1IaJ79+1XS7fSmO5TXtR/cOeCl8AZzWOPadXS0KF+W1I7paV+W6BMm6bPe+/trx3VUVHhtwXKt9/Cww/D+vV+W1KVhx7SbgxbtvhtiaYtLF4cvAjcokVw773BWR7cfXc48US/rahK27aapP/9935bovTurQLMXiqFEZ9p0zQgENSUoTqQzNea6mTnC4EANoZLL4WFmlKTlwd5eZUUFOjrwh4RtZUnntAQ8o03BkOxP5qKCjV24MDgKHdXxzPP6Ifl8uV+W7LNgQuSBpzH1VdDjx5+W6GMHw8XXhgs0VxQZ8m5YGjTLV+u3wCDFoHzHMqgVKK++GLw2laJ6NJgUCJwu+wCV1wRzJWUu+6CffcNxj3w1luD92WgnlTrwInIiSLypIg8Gdk0ynsd9XgReBQIaNPK9DJ4sKpd9OixkXnz9PXPnHYanH22Njw//XTYuNE3O7dj4UK9uYYh+rbrrhoxmTTJb0t0ealjx+Dkc0TTtq1GT4KgT1VcrNXNbdr4bUlVvET4IFSitmwJL7yguYtBIkhacGvXwqmnwksv+W3J9hxwQHDaMH38sSZlB5EGDfRzc9kyf+3w5EOOOSZYy/H1pKYihq6AVyLlgL5A7NrDFmAy8H+pNy0cNG4MzZpVUFgYs6OgAJ58Upfbrr5a29S8+mowZB569AjGTSwR9tkHWrWC99+HM87w15Zp04KVzxFNdCVqf59VfYJWgeoRJC24Fi1UPDtotG6t/29BiMAFsQLV4777/LZAqajQYq9LLglebi5oJSpoOlGnTv7ZMWWKCrBniXyIR7WuqHPubudcd+dcd2ARcJz3OurRyzl3Uq7KiIAGhu66a1r8nSJw5ZVasbRoEcyenVHb4rJunea+NWyoj6DToIEm5wch+fy66+Cyy/y2Ij5ewUAQ3mNBdeA6ddL3fBC+vHzzTTCiyvHo3h3WrPHbim1/p6CkBgSRBQs0RzhoBQweffroZ7jf+eBe94UskQ/xSFQHrntEC86oC8cdpx9G3nLJN9/4Z8uNN+rNdXOI0hYHDlSnwO/cpd/+NrgfADvvrM6J3w5cWZlGb4LowDVoAK+9Fgw5kfvu0+XBIPLFFypy6TdBjsB99506J++88//tnXeYVOX1xz9ngaULCFIUYSGLoKJEwYYNVNCoiYVYkp+FqBEsqIkxscQaS9TYDYrGiGISe4kF7CB2URB1AXXZXRHpHQQW2Pf3x5kbhmF29+7uvXPvzJzP88wzO7eeeWd27rnnPed7orUjrhWoHi1aQN+++p2KkokTVdUgTu0iA6BOIRgRaQf0Arbqj+Oci1nTypixzTb6/MEH2vvwvPPg9tu31iIJk3XrVIT24IPjp9FVE0cfrbY3bRqdDV99pTIiAwfGM4eiSRNNZN5772jtaNw4vvk4EJ8plDhKiHjEJTJfVqa/m3HLpQS1afp0mDEj2ps6z4GLczHar38dfQ74q6/G+3epnvj6T02I9/4TOBHtwpCORtUsN5LZe2/tf3jbbeoUPPVU5kQFn35a8wDOPTcz5wuK4mK49NJobbjvPs1pjMPUUnXcdFPUFug0RZzvcktK4NNPUyqOIqCiIj76hqlMnAh33aVSQ1E6T5dfrp9TnESzPbbbTvMYo65ELSnR1IA2baK1oyb++MeoLdCb/7jeMDUAv6GEK4FBqN6b10brLLTJfSlwdBjG5SSNGmmy6SOPqCbNXntlbkp19GjNlTrkkMycL0iWLdNcwqjK0adO1SmTOEbfPDxtsSj14N58E66+Oj7afak8+yycdlq0KQTOxTsCt3QpPP989MUeXbpEH1GuDhGV74jagbviCr2xjDuVlVpVHAVXXQU33xzNuUPG79VoGHAd8Hji9UfOuYedcwejDe6PCMO4nOa00+Cdd/RC99Zb4Z/viy90+vacc+J5R1sb//63TqVGkYBeVQWffx7fClSPceO0yjnKJP3x4/XHMk5tvZKJg87ZokXqQMbVgYuDlIhzeqM7rZoCsThQXBy9mO9OO8X/hnzjRo3KRzFDUFWlsydffpn5c2cAvw5cN+Ar59wmYAOQrBj4T+CkoA3LC/beW79YF1ygr7/+OrwIU9++Gh05PUubZgwerM9RVKN++63mcMRRwDeZOFSifvutVg3GNVIZBymRtm31ZmrYsOhsqAnPgYvSyV24UCv434lxavXgwdqaKapZgcWLNac57rldjRuroxlFIcOUKTpOccl9DRi/v7JLINGxHeYA/ZLWdQCyKCM+Zmy7rUbE5s7V6dQTTwwn4VNE79Tatg3+2Jlg551VQDcKB86LAsQ9AhcHB660VCMTccWLwEUZpSwshH33jVYXqybat1dV/yid3DhXoHqMHKnTl1HNaHzyiVZURx0F9MOAAZp7muk2Vp58SNwEswPCrwP3IeBdvZ4B/iIil4nIJcCtaC6c0RC2317n6p99VqtUg7z7/ec/Vb8stXlrNiECgwapA5fpO96jjlK187gmnXu0a6dOblQOnHPa9iiOEiIeXbqoAxWlc/LBB3rhj2tPRhG94GayQj6VbHDgPKLKOY27hEgyAwZoDlyme+yOH6+BkTgXVjUAvw7czYB3VbgeeAvNibsZmA1kWVljDBGBiy/WRP3ycv3CBzF94Jz2gPvww2h/kIPgkEO0JUum7zhbtlT5kLjmdSXTp090DtySJfp9i7MDV1CgkYsoq5r/9S9Nm4jrNDNoJeqtt0Z3fs+B8yKmcWTpUp1Buf/+aM4/YwZ07Jg5FYOG4HWHyaSg76ZNmg4QV73FAPAlI+KcmwJMSfy9ChgmIk2Bps65GDRfzCGOOAI+/hh+8QtNSj/ooIYdb+JEvaCPHRuEddEybBgceKBWf2WS66/XEHxcK+KSufji6CICHTro9H/cmtinsvvu0Z6/oiLejkkcKCtT56RVq9q3jYp27bS6MqopzJKS7Ii+gdp5003a2D5TNGoETzyRufNFgK9bQBG5SkS2T17mnFvvnFspIl1E5KpwzMtTdtoJPvpoc7+977+v//Tn6NF6l5gLdyHt22suXCZzTubNgyuv1GmvbODnP9eOEVEhEv9I7/vvw403Rnf+OEuIeLzwgs4CrIzo/vzvf4fPPovm3H4R0XzPKKREnMsuB65JE416e3m6mSDOmp0B4TeGfzXQtZp12yfWG0HSpo2KD65bp1OHQ4ao/EBd+OEHeO45OOOM7Oq8UBPvvgvnn5+5PDivgCHuFage69ersxlFZdrYsXD22dFV5fll0iTVz1q9OvPndk5TJOLuwK1fr0nnUVWiFhbGt8gjmagcOBE975//nPlz15dlyzQnLRMzBFVVGgi55JLwzxUhfh24mkIe7YD1AdhipKNZMxVG/egjzSOYPt3/vhs2qJL5yJHh2ZdpvvlG786/+ioz58s2B27ePM3Xe+mlzJ/79df1EXedwSilRJYvh1Wr4j+FGqUW3KZNmiP4bhbUxhUXa+FOFGkLHTpoUU628OKLcOSR2kc2bD77TAMe2fK7XU+qzYETkUFAskLgCBFJ7bjQHDgKyNDVNE/5v//Tu4ljj9WL86OPwvHH175f9+7w8MPh25dJkvXg+vYN/3xTp+oFP86tapLp1k2d/igKGUpL413A4OE5T+XlmfkOJdOmjaZExD0iHqXg8dy5cM89sNtucMABmT9/XRgyRKOq69ZpsVOmmDBBb+ovvzz+KQseAwbo85Qp4U/95rh8iEdNEbiDgT8nHg74TdJr7zEKWAdcEK6ZBnvtpV/83XZThfLaJAimTNEpkFyjqEgfmdKDKy2Nv/5bMgUF6uybA1c9XgQuCi24ggKdGtx228yfuy507Kg3AlFE4LJJQuTQQ7XzSCadN9AcxbvuUpHcbKF3bx2nTFSijh+vDuN224V/rgip9tN3zl0LXAsgIlXAvs65jzNlmJGGLl3UcVm9Wi8Ey5frP3C6Sq3LLtPODrNnazVOLjF4sPZqrKoKX4phypRocqUaQp8+mXfeV65UxfNscOA6dtQI2HffZf7cb72lOYp//GO8IyciOt3VuXPmz51NDhzo70NlZWadcq+AIe7pCsk0aqRVqGE7cEuXanQym/ID64mvq59zrsCct5jQrJnmPjinU6sDB24dSZg1C954A0aMyD3nDdSBa99eizTCRgRatw7/PEHSp49+JzLZUH7xYo38ZbLKrL6IqPN2yy2ZP/dLL2kFbDZETp55Bv7wh8yft6xMb8x23DHz564rzql49g03ZPa82VSBmsyAAZqWEqbUUNOmmjr0q1+Fd46Y4FdGZGBy/puItBeR/4jIFyLyNxGpk5cgIueKSJmIrBORT0XkQJ/7HSAiG0UkNzvT1gURuPBCmDNHp1cnTty87v779e7+zDMjMy9UTjlFixm6VlcYHRBPPgm/+Y02Hs8mTj1Vvw+ZdN579tQbh2OOydw5G0KHDtFELzwJkWyKnGSaJUv0fzsbhLNF9LufyUrURYv0hikbHbjzzlOd0zBnTlq2hNNO0xvZHKcunRj6J72+FTgS+Bo4B7jc7wlF5CTgLuBGtD3X+8B4EelWy37tgEeBN/2eK+cZOlT/GTp21GTa0aNVSPXhh+GXv9Q7w1zEu/iFLVfx6qsaMWnWLNzzBE1xsQoex3mKLmrGj4dzI2ggkw0SIh4PP6xTqGH0Zq6Je++NRpqjvvTqlVl7Kyo0BSAbHbif/ETzuMNy4KqqYMwYLYTJA/yOYh8SnRhEpAnwS+B3zrlhwBXAr+twzt8DY51zDzrnZjjnRgHzUEewJh4CHgGyRFE1Q/TqpW2yDj9cp2befVcdm3NqG84sZ8wYfe9hhuKnTdMy9GyMljz9NEyenLnzXXklnHxy5s7XUL78Eu67T/szZpJs6sLQtCksWBBNrmA23XwUF2sBT6Z62w4YoHl3hx6amfMFzRNPhNchYepUlc16661wjh8z/DpwrQBPkntvoCXgCU19BtQYPfMQkUI0kvdayqrXgIE17Hcu0Bntw2qkss02WpX03nvqyP3wQ/zL7xtKmzb6ozl1ajjH37BBL/LZVIGazMUXwwMPZO58778fnehrfYhCC+7HH9VhzJYIXBRacOvWqVzSa6mXiBhTXKzCx99/n7lzFhRkb37zAw+okkIYjB+vz4cfHs7xY4bfTNq5QD9gMvAz4Evn3MLEunbAjz6P0wFoBCxIWb4AOCzdDiKyG9rpYV/n3CapJRoiImcDZwN06tSJicm5YSGxevXqjJzHF1FII9RCGONTWFjIQKD0H/9gTghTPC1LS9mrspKSpk1ZmIXfod07dqTxJ5/wWYa+l/t+9RUrdtuNGSGdL+jxab1kCf2BL158kSXLlgV23NqQCROQjRupCmGcgh6jwkWLGAh8/frr/JAh3brm333HPi+8wIxddmFBwDlwYf1ON2/WjG0vuIAFU6eycfbswI+fSvG997K+fXvmBJykn6nrWM+OHen6zjtMfu01XMCf8R6PP4707s1nJSVa6BEwsbrWAzjnan0Af0EjcE+jztolSeuuBd73eZztUU25A1OWXw3MTLN9U1Qk+NSkZdegDmSt5+vfv7/LBG+//XZGzpOthDY+u+zi3OGHh3PsSZOc693buRkzwjl+CoGP0ahRzrVq5VxVVbDHTcf69c4VFDh31VWhnSLw8Vm82Dlw7s47gz1uhAQ+Rps2OdekiXN/+lOwx62J8eP1c5k8OfBD58zvdOfOzg0fHvhhMzY+Tz6pn/GUKcEed8kS/R268spgj5tEJsYImOJ8+DfOOd9TqNeghQxNgb8Ctyet6wc85fM4i4FN6HRoMh3ZOioH0AXYBXg4UX26EbgK2DXxOrdllo2aGTxYc/42bAj+2AcdpGK42VrJ1KeP5slkQmqlvFzzf7JBA85j221ViiaTzdpfflnzc370O2ERMQUF2kc5k8ny2aYB5/H11zBjRvjnWbZM+xxnYwGDR3JHhiCZMkXzv3/2s2CPG2N8TaE65zYBaYVunHPH+j2Zc65SRD4FhrCl0zcEeCbNLnOB3VKWnZvY/jig3O+5jRzk+OM10XrNGmjbNmpr4oXneM6cGX5T8MpKOOQQ2HXXcM8TJCIqx5DJApV33tHKztGjM3fOhnL//Zk9X1mZ/k9nU49PgOOOUx3E554L9zyek5jNDlxRkd48ff11sMcdOhQWLoR27YI9boyJQk3ydmCciHwMvAeMRKdW7wcQkUcBnHOnOec2AFtovonIQmC9c8604PKdQw7RR9A4BzvvrJpFo0YFf/xMsO++2oWjm6/6oobRty+8mYXqPpmuLq6oUHHasLuHBE1lZeY02Ro1gv79s2+MioszIyXi5XVlswMnogVoYfSXeF6w5wAAIABJREFU7tAh+GPGmIz/lzjnngAuQnupTgMOAI50znklbN3wWdVqGFRWarVokJSXqyht06bBHjeTtGih01DZWqmWCR5/HH7xi/D1BD3Ky7NHQsTjtttUcyxTXT1uukmr6bONTEqJ7Lpr9lQyV0fQztu0aRqBy8Q0doyI5DbHOTfaOVfknGvqnOvvnHsnad0g59ygGva9xjnXNyOGGvHn8su1E8X69cEdc9o0ff7pT4M7ZhQ8/jjccUf45znhBJV+yDbmzYMXX9S8okzgdWHIJrbbTp2SOXOitiTeFBdrx5Z588I9z1ln6Q1rtkUoU/nmG/3dCEoG6uWX4fXXM9uPNgZk+bfAyHsOOkijAx9+GNwxp07VH8jdUtMvs4xXXoHbb699u4by1VfZKXbsRcMyoXO2caNGdHv2DP9cQZJJLbiVKzXB/fnnwz9X0BQX6/M330RrR7bQvLmKjQcVbR0/Xqfec7X7UDWYA2dkNwcdpM7W228Hd8xp07QIIEPaV6HRp4+Ki65eHd45qqo01y6bKlA9PAcuE9qJjRurE3TFFeGfK0gy6eSWlcGnn4ZTVR42/fur4xnmTd+qVZoWEVYXg0yyww7qbAVRibpsGXzwQV5Vn3qYA5djDBqkj7yhbVvtlhCkA7fvvnDKKcEdLyq8StSgq72SmTtXp6+9CEQ2EUU3hmxjhx00jzITXTayVUIEdOrumGO0ujIsZs7U72q29WZOh4hGW4Nw4F5/XW8k89CBq7YKVUTq0kzMOeeytDFbblFZqakY8+drH+q8YPBguPtufeNBRM0uv7zhx4gDvXvr88yZsOee4ZyjtFSfszEC17Yt9OuXmb6bzz0HDz0Ejz2WXZI3jRvr/8O++4Z/rmx24ECjQCtXhtfGKRcqUJMZMECnPlevhlat6n+cli3hiCNg772Dsy1LqElGpADtmuDRGxXgLUdFdzsBRWgj+lnhmGfUhXHj4KOP9OamZ0/t937qqVFblQF++1s4+uhgLsSrV+txsrkC1aO4WN9LmGK+bdvC6aer7Eo24hWshM2nn8KECQ27UEXFdddl5jxlZdC6dfYmot9wg6YshOnANW2avQ5uKvvtpzeWCxY07P/iqKP0kYdUO4WaqAYd7JwbDNwFbED7kfZ0zu3nnOsJ7JdYfldmzDWqY/58GDFCI8mbNmkwasQIXZ7z7LQTHHywRgsayn336UVkxYqGHytqmjbVvJk//CG8c/z0pzB2LHTtGt45coGKCp2ODOI7mmkqKzMzhbr99nohzsaCGNisBReWLE1Jif7WZeN3KB2HHw6ffNKw6P3y5fobl6f4zYH7C3Clc+7j5IXOuY/QNlvXB2yXUUfKyrYOQBUWxrK3fTh8+CHcc0/DjzNtms49hyEyGQVhRxJXrsycjloYPPCA5lCG/R4qKrJPA87jhhs0pF9ZGe55Lr0U/vOfcM8RJsXF2hUmrLvmAQPgl78M59hR0pD/vdGjVbw3U1JAMcOvA9cLWFTNuoVAFmYw5xY9emxdvFVZmTvR9lp58UX43e8afjc2bVr2678l8+KLKla7aVM4xz/kEE3ezlbWrdPPfFF1P28BkY0acB7du2to//vvo7Yk3niFPGF1ZLj6arjqqnCOHRVXXLG5N2p9GD9ehY3zqH1WMn4duDJgRDXrRmA9SSOnc2fNeSso0KKx5s31dV4VMmzapM3t68uPP2rC/x57BGdX1CxcqE5cWFNgpaXZPX2aiUpU5zT61q9feOcIEy9yGOY06sKF0LFjdktkhOnAVVaGdxMWJS1bwmef1S9lZfnyvJUP8fDrwF0L/FxEvhSRa0TknMTzl8BR6DSqETGnngr77KNSRLNn50kBg8fAgTqH3BA5kS+/1EhDLkXgkpvaB83Spfojmo0VqB6Z0DkTgUmT4OKLwztHmHiRwzAduNmzNQraokV45wiboiKVxTjxxOCP/dRT6uxkot9qJvGib599Vvd9X39dndojjwzWpizClwPnnHscOBxYAVwG/D3xvBw4PNHf1IgBhYWavpU3kTePFi1U6qAhDtz228Mtt2RGMiFThOnAZbOEiEcmxXyzlR13VCc0TCfXO3Y253w0bqyCvi1bBn/skhLt5tEtx9qE9++vz/XRgxs/Xqvg99knWJuyCN9Cvs65N5xz+wPNUTmR5s65A5xzb4ZmnVFnJk7UR15yyCF6Iahv4+2uXeGSS6BLl0DNipT27TXJd1YISj+54MC1bq0SNGHe8Tz5pE6fht0nMywKC7VAKMxIh+dAZ2uhh8frrwdTTJXKjBnQq5d+FrlE+/bqtNfHgbvkEq2Az5Wq3HpQn3feAnXiGgFVwZpjGA3gkkvgyis1CbA+vPuu/kjmWj+9Aw4Ipxp15501CTmbHTjQHMEwmTkTpk/PXn0zgPPOC/f4ZWWw3XbZqZOXzH//C488AuefH6wcSkmJJuvnIiNG1O9z33nn7NWfDAjfDpyIHA1cB3iZuHsBn4nIP4C3nHP/DsE+w/BPQ6YuNm2CoUNh5MjMNIDPJM89F85x+/XL3sT8VJwLT3+svFyjutksDr1ggTpZYaUX9O+fG9I9xcVaCb9okRZlBMH69Zr7dsIJwRwvbvzpT3Xf55VXtOhs2LDs1Q0MAF9TqCJyLPACsBj4E5A8YmXA6cGbZhj14J576qeVNGuWqh/nUgFD2MycqUUM2c6tt+rFNiwtuGzWgPO4+2448MDwKiFHjNDPIdvp1Uufgyw22LABrr02t6stly/Xoii//PWvqk+Yx84b+M+Buxp42Dk3FLgzZd2XQN9ArTKM+rJiBTzzDCxZUrf9vJZKuSQh4vHZZxop+/jj2retC4cdBhddFOwxo6BFC1i8ODwB1mzWgPPo3l2T6MNoy1ZVVf+81bgRhpRIq1aaqjBwYHDHjBOrVmku3P33+9t++XJ4//3cdmh94teB2xnwKk1Tb1OXAe0Ds8gwGsLgwfo8aVLd9ps6Vae4vKrNXKJNG83B+uqr4I65di3MnZv9+W8Qvhbc/vvDQQeFc+xMEabcyvffq3Dlo48Gf+xMU1SkYpxBVjWXl+sUdq7SurU6vp984m/7N97QSLA5cL4duJVAh2rWFVF9lwbDyCx77aURlbrKiUybBn37bt2PLBcoKtLqtSClRLwLVC44cGFLiTzyCJxzTjjHzhReBDEMB272bH3OhervwkJ1toLsmPDHP2ohUi4zYID/StTx4/WmdL/9wrUpC/DrwL0OXCYibZOWORFpCpwPjA/cMsOoD4WFmqvz1lt12++ee+Dee8OxKWoaNdLcnCAduFyQEPEIM7qUzX1ik/H0x8IQ8/Uc52zWgEumQ4fgK1B32SW448WRAQM0EusnjWHWLBgyJK/lQzz8OnBXoNpvs4B/oNOolwLTgK5YJwYjTgwbpj8IGzf636dPn9wS8E2lTx9z4KqjRQutPg7jIvn44yof4kWZspXmzeHpp+Hkk4M/dlmZOjy5IlI7fjycfXYwx9qwAb7+Oj8cOIBPP61928mTVf/N8Ccj4pwrF5E90ZZahwObgIOACcBVzrkQMlsNo5789rf68Mv06Zrgf/LJ2a9DVR2HHaYyK0HJZRxxhI5V+xxJf73vvnCOW14Oy5blhrbgsGHhHLesTEW0c0WkduZMePBBuOmmhv9/lJaqE5fremd77qn/g7vvXvu2IuF0u8hCfMcgnXPfA2eGaIthBIdzWpbu5wf0hRfg6qvhpJPCtysqRo7UR1D06ZNbBR/OwcqVwWuRVVTolFouXHBmzFDn5Ljjgj3uz3++uaVSLpBcidpQB66kRJ9zPQLXsqW/36cTTtCxuPba8G3KAvzqwL0lIml/rUVkJxGpY8KRYYTM8OH+k1ynTtUf3datQzUpcpyr27RyTbz6ari9MTPNVVdpJ4Cgdc5yQULEY+xYjVJXBdyA58QTc0OOxiNIKZG999Zxz3UHDrSq/amnqs8bXbFCRckrKzNrV4zxmwM3CNimmnWtgYMDscYwgqJfP/jmG/1RqI1p03JT/y2ZtWs1EhSEWOqmTRo18avblA107apTVUH3Ky0vz34RX4/u3fXiGaRe3saN6uhs2BDcMaOmRw+d5gvCgevaFU4/XfM0c51nn1VnvjqtQZMP2QrfzezZWv/N4yfA6gBsMYzg8PTgapMTWb5cc3ByvQND8+b6CKKQYc4cveDmQgGDR1hSIiecAL/4RbDHjApvjIKsRJ09Wyuk//Of4I4ZNc2awU47wZo1DT/WSy/pjWg+sNde+lydnMiECbDNNiYfkkS1DpyI/EZE3hGRd1Dn7QHvddLjE+ARYHKmDDYMX/TrB+3a1S4n4onb5noEDoKrRM2lClSPsMR8r7sOTjst2GNGRRhacLkmIeIxYwbcckvDjrFpk94AjBkTjE1xp18/lTxKJ+jrnFb3DhmSm1qd9aSmIoYqtNoUtPdp8muPJcB9wM3Bm2YYDaCgAA4+uPYI3P77axulXEgyr40+feCxxxpeieo5cF6uTy7gSVgEGYFbt06nCHOlstkcOP8EUeldXq7foXzIfwOdIejbN30Ebu1aOP54GDQo42bFmWodOOfcI2h0DRF5GzjHORegkJRhhMyFF6pzVlWlDl115IoURm307q2JwAsWQOfO9T9OaalKPuywQ3C2RU2zZnD99erQB8WLL2pOz+ef+5NHiDutWsF77+n0YFDMnq3fpe23D+6YceC111RG5LnnoG3b2rdPR75UoCYzYAA8//zWN5ktWsDdd0dnV0zxlQPnnBtszpuRdQwaBL/8Zc3O2+9/r2Kr+cABB2hbnoYyapReoBo1avix4sQVVwR7h+/liuWKQC1oQ/UO1XVVrAdlZRrZq+l/NBv58UeYOLFhhQyeA5frGnDJXHGFqgKk8uWXwVeI5wDVRuBE5DTgZefcksTfNeKcy4FOxEbOMX26tmg58sit161fry20LrkkHIX5uLHHHsHk+nXtqo9cY/Vq+O674CIeFRWadF3fCEwcmTxZL6ZB9XYdORKWLAnmWHGiVy99/vbbzV0G6kpJiUa5g9YmjDPpptJXrtTfrUsvhb/8JfM2xZiacuDGAvuieW5jazmOA8yBM+LH9dfDBx/ohTk1L+WrrzRHKdcrUJNZs0Yrb+s7/ekcjB6t+YV9+wZrW9T89a/6WLcumD6LFRW5IyHi8fzzqpg/cmQweV6HHtrwY8SRnj31uSEVpLfc4k8GKdcYPVrbz3k31W++qb/Thx0WrV0xpKa4dQ+016n3d02PniHaaBj1Z/BgjcB5iffJeKH6fKhA9TjoIDizAQ1VFi2C88/XH9Vco6hIp2m+/z6Y45WX546Ir0dRkSaUL1rU8GOtW6fTjMuWNfxYcaN5c41SN2QKtVMnbTGVbzz8sLYi8xg/XiPZAwdGZ1NMqdaBc85VOOcqk/6u8ZE5kw2jDhxyiD6nkxOZNk0Ts3NJDqM2GiolkosSIh7e9E1QlagXXAC/+U0wx4oLnkMahBbcrFl6g/XGGw0/VhwZNKj+BVILF2o0OJe6nfhlwABtal9VtVk+5LDDTD4kDX5bae0rIidWs+4EEdknWLMMIyB22gm6dEkvJ1JZCfvum3sJ1DXRp49efH/8sX7757ID5013BnXRPOus4PuGRk2QUiK5KiHiMW4c3H57/fb97DO47DIVzc43BgzQavnSUk1z+f57675QDX6vXDcBu1azbufEesOIHyJ6l//ee1v32BszRqsp8wmvAf3XX9dv/9JSHdNcvOjuuKM680FE4Fau1EhnrvVtNAcuM+SjhIhHoujjumOmMOTcXvD663DMMREbFU/8OnD9gA+rWfcxkAMiR0bOcuut+oOYLuk6iETsbKJ3b32u7zRqaakWQDRrFpxNcaGwEB56CIYNa/ix3n5b5R+mT2/4seJE27bqvP3udw0/VlkZtG6tCeu5yHvvqdj1tGm1b5tKSQl07Jg/GpXJ7LILtGpFs9VLWLyqKfP7HgbbbRe1VbHErwPXrIZtGwF5IGNvZC3bb7+1Gv5//6tJsUElrGcLO+2k0in1lTa47z6YNClYm+LE8OHa0qeheDliuVbEAPqegqjSLS/f3Pg9F2ndWm946hPtLinJL/23ZJo0YdxdS7ls7nnM+nwdPXtUMW5c1EbFE78O3Ayguo7MvwBmBWOOYYTEvffC1Vdvfv3hh9pzL9/u7Jo10yrS+rbBatlys0RCLjJnjk7ZNJSKCq1EDFL0Ni48+6z2eG0o11+vNxO5ipcnWp9K1NLS/Jw+BebPhxHnN6GqSljrmrF2XQEjRuhyY0v8OnD3A78VkVtFZCcRaSEivUTkVuBMYHR4JhpGAEyZAn//u1Y2gU5r7LILNG0arV1RMGdO7T1i07FmDfzhD5pgnas89BAcfnjDc9c8CZFcjC5NmgR/+9vWOaV1ZffdVdYmV2nZUqP/9XHgvv9eW3HlIWVl0KRgy64LhYXBtinOFfy20noQuB34HRqNWwXMTLy+wzn3QGgWGkYQDB6siu9ffqmvp07NLwHfZO64A446arMz65fSUrjttoZpW8WdoiJ1TL77rmHHqajIzelT0DFataph+m0rV8Kjj+a+UG1xcf3EfJs0ya8ODEn06AEbNm5541NZabUu6fCtn+Cc+wPQGzgXuBI4B9jJOXdJSLYZRnAMHqzPb7+tsfj58/NLwDeZPn1UjLWuEgW5LCHi4V0lGlpl+Ze/aIu2XCQILbgZM+D003M7mgtw9NGw33512+f557Xf8Pr14dgUczp3VoGApqynsGADzZvr686do7YsftQpE9U5VwqkkbQ3jJjTrZvmbr31lv6oHnts3X9YcwVPSmTmzLpFifLBgfO04Bo6X5PLulXJenn1vQnKFwmR+jjxr74KTzwBd98dvD1ZwqmnF3DfmKasXas6vua8pcevkO/NIpLW2ROR7UTkpWDNMowQ+PnPeeuD5gw68yfw3HOwT57qTyc7cHWhtFQlH3KpOXsqO+ygFZYNicAtXaqFECtWBGZWrOjeXfXyFi6s/zE8By7XesWmo6pKe3n6paRE83NzMX+yDrz/vma6mPNWPX6nUEcB74nIFrfeIjIUmA7k6VyUkVXceSd/Ln6cH5evz++Kpu22g3bt6u7ALViQ29E3UOftlVfg7LPrf4wPP4ShQ1VFPhfZdludgh8xov7HKCvT72GqvE+uMWOGFjO88IL/fTwHzjBqwa8Dtw/QCpgqIqeJSBMRuR0YD0xBhX4NI9aMGwcffQQzP19Pz66V+astJKIRyD/9qW77PfssvPNOODbFiSFDGlaA4OWG5Wp0SUTLAhtCWVnuT5+CNrRft85/IcOiRbB4sTlwhi/8VqF+AfQHHgceBr4DRgIXOed+7pxbHJ6JhtFw5s/XgEFVFaxiG9ZuKsxvbaGDD66fg5GLHRhS+eILePjh+u9fUaEOTi7P/dx/P1xwQf33HzdOq1BzndatoVMn/5Xb8+ZpSzdz4Awf1KUKdR3wPlAJdAK+AV4MyS7DCJSyMq3MTyavtYXKy2H0aJWD8MOcOXDyyblfNQhaBXjGGTpNWB/Kyzf3Vc1VvviCBoWwO3fe3NYt1yku9u/A7b67StgMHRquTUZO4LeIobWI/Bt4CI3ADQQKgWki8qsQ7TOMQOjRAzZs2HJZXmsLTZ8O552nOTp+mDFDK+NWrw7XrjjgfSnqqwVXUZG706ceRUWwfHn9CjUWLYIbb8xtPcFk6uLAGUYd8HuLOB0YCgxzzp3rnPsQ2BN4CviXiDxSl5OKyLkiUiYi60TkUxE5sIZtjxeR10RkkYisEpGPRKS6tl6GkRZPW6igABo1wrSF6lqJmg8SIh7JMhn1YcwYuPnmoKyJJw3RgispgSuugNmzg7Uprhx3nBbF+OlcccYZdc9NNfIWvw5cOdDPOfe8t8A5t9Y591vgBOBovycUkZOAu4Ab0erV94HxItKtml0OBt4Cjkps/wrwXE1On2Gk49RTVTlkt9302nHqqVFbFCE9emjFpV8H7ttv1evt0iVcu+KAF4Gr7/z67rtD//7B2RNHGuLAeeOayz11kznmGLjqKn+yIBMmNEyexcgr/Ar5HuJc+tsH59wzIvJRHc75e2Bsoj0XwCgROQLt7HBZmuNfmLLoWhE5CjgWmFyH8xoG778ftQUxoUkTndqpSwSuZ8/czuvy6NJFEyTrE4FbtAhefBGOOEL7YOYqRUX6/uqTJ1hWps5Mt+ru2XMM57SytHFjle+pjmXLtIjBChgMn/itQq029isiBcCPfo4jIoVoNetrKateQ/Pq/NIaaEAjPsMw6NPHfw5cYSH0yxO1oIICVRC94oq67/v553DmmfXrf5lNdOqkfUxPPLHu+5aVqbxGQ6VIsoWVK6FjR/jHP2rezvtf3Hnn8G0ycoJqI3AishQ4zDn3WeK1AC+g0iHJyQt7odOgjXycr0NiuwUpyxcAh/kxWETOA7oC+ariZRjB8Pe/q8yBH558Mlxb4kZ9oyDelGKuNrIPgoqK/KoeatMGOnSovZChpESfLQJn+KSmKdS2KesL0Fy3awI4b2pET9Is2woRGQbcCpzsnEubfCEiZwNnA3Tq1ImJEyc2zFIfrF69OiPnyVZsfGrHxqhmMj0+baZPp+20aVScdlqd9iuaNInuBQW88+23uIa046oHmR6jorFjaT5nDjOuvLJO+8lVV9FozRo2Zvj7HuX/2B6dOlH1ySd8XsP5t/vuO3bYfXemlZXVvwK6AdhvUO3Eboycc2kfQBWwd9LrRolle6Zstw+wqbrjpGxbCGwETkhZ/ndgUi37DkOnan/p51zOOfr37+8ywdtvv52R82QrNj61E8kYLV7s3GWXOffRRzVv99FHzg0c6Nz06ZmxKw0ZH58bb3QOnFu9um77nXqqc926hWNTLWR8jM4+27kOHTJ7zgYQ6e/Qqac6t+OO0Z3fB/Y7XTuZGCNgivPp42Q0I9k5Vwl8CgxJWTUEnYZNi4icCDwGDHfOPR2ehYaRRzRqBDfdBLXdUZaUaPVHPnRh8KivlEhFRf5MnxYVaXL+mjX+95kzB845J3f7xFZHcbG+95qKPvzIjBhGElGUlN0ODBeRs0RkZxG5C9geuB9ARB4Vkf/1WBGRk4F/AZcC74hI58Rj2whsN4zcoW1bFcKrrRK1tFQT+/PFMYHNOVp1deCefhrGjg3amnhSHymRkhJtw7V0aTg2xZVf/AIeeqj69atWaa5cTdsYRgq1yYjsICKeWE+jpGXLk7bpWpcTOueeEJH2wJ+BLsCXwJFuc05bam35yISddyYeHpOAQXU5t2EYKfTp48+B69Ytf6oGof4RuO2200c+4I1RRYX/xHtPAy6fihgAfvpTfVTHzJnqxLVvnzmbjKynNgcu3XTl8ymvfRUgJOOcGw2MrmbdoJpeG4YRIH36aIss56oXGi0tzY8ODMl06qRTxnPm+N9n4UK47z749a+hV6/wbIsLPXqoMnYjPwIECcrK9EYglzXy0uGcStO0agU77bT1eqtANepBTQ7cbzJmhWEY0dCnD1RVaU/Ltm3Tb9O7t+bw5BMiKqrapo3/fWbMgGuugf33zw8HrksX+PDDuu1TVqaRu3wQhE5GBIYMUd28++7ben1JiTq2+dKdwgiEah0451yd+psahpGFnHceXHBBzW1+Hn20+nW5THUObXWYBlztrF2bfzcDHjU1tS8p0Rulxn6bIxmG/1ZahmHkInbBqJ6XXtK2WGPG+Nvey5fbccfQTIodI0eq4zp+vL/tX3wxf6sti4ur7+U3dChs3JhZe4ysJ8/i2IZhbMXIkXD33enXPfOMRpRKSzNrUxyYMQMeeECnl/1QUaFVvfkkt7JhA0ybVrd9/DR1z0WKi1Wgd/36rdeNGgW/+13mbTKyGnPgDCPf+fBDePXV9Ou++UYvOh07ZtamOJBcZemHuXM375MvFBXB/Pmwbl3t286aBUcfrcn8+UhxseabplY2r1mjjewNo46YA2cY+U5NUiKlpeq8+e2Zmkt4zpgnfVEbr7wCEyaEZk4s8cbIT+unmTPh5Zfzd6rwsMPgtddghx22XP7CC7Dttpub2RuGT8yBM4x8p08fdVLSRVHyUULEo65acAUFdatazQXqIuabrxpwHl26aCVqq1ZbLi8pUSmWfP0/M+qNOXCGke/06aOJ5d98s/W60tL8lTbo0EFFef20ilq0CM46Cz79NHy74kSvXnDCCbDNNrVvO3u2Oi/5LFb76qvw5ptbLisp0XHMJ6FsIxCsBM0w8p1ddoFdd1Ul+GSc0xZA++wTjV1RIwILFvhLuv/mG22DdPzx4dsVJ7p0gSef9LdtWZlG3/K1iAHg8sv1puDQQzcvKynR/z/DqCPmwBlGvrP77vDll1svF4F77sm8PXHCr7OR7xpwGzZAkyY1b9OuXX4WwyTTqxdMmbL59fr1qg13wgnR2WRkLTaFahhGetaty9+Ec49//QuOOqr27bw8uXx04I45Bg45pPbtHn3UmrUXF+t3ZcMGfV1VpZ0Zjj02UrOM7MQcOMMw4E9/gp/9bMtlDz4IzZvD4sXR2BQHFizQ6tLaZB4qKjS3KzVBPR9o185/oUe+U1wMmzZtHq/mzeG3v4X+/SM1y8hOzIEzDEOnciZP3lIlv7QUmjbN76Rzr2KyNgdl/fr86H+aju7dVQOvsrL6bT77DPr1g08+yZxdccRrI+a11PrqK30YRj0wB84wDO3DuGaNXog9PAmRfE4696sF9/DD1bdJynW6d1fH//vvq9/mm29g+nSNOOUz/fur3ptXxHDttToFbRj1wBw4wzBUSgS2FPT99lvTpqqLFly+Orp+xshzgPOtU0UqzZvr/5onGTJjhlaBG0Y9MAfOMIytHbiqKr3oelM++UrbtrDnnjqVXB1LlsDhh2+t75Uv7Lwz/P732ge2OsrKVD4jH3MEU3nqKRgzRguEZs0yB86oNyYjYhiGXnyPPXbzRXjDBrj6athvv2jtihqR2sVy3rBLAAAb7ElEQVR5y8q0RdK552bGprjRpQvcdlvN25SVWfTN48kn4fPPYdAg/T8zB86oJ+bAGYahjspzz21+3bQpXHZZdPZkE/ksIeKxdi2sXAmdOqVfv9tu0KJFZm2KK8XF8PzzmhMIGsE0jHpgDpxhGJuprNT8nAULNDqwww75m9vlMXq0anVNn55+LDwR33yOMA0ZAo0bw8SJ6dfXFqHLJ4qLdfq0qAheftm6MBj1xnLgDMNQRo/WKMmqVXDXXSqhsWlT1FZFz4YN2qmiOj28igrtBdq2bWbtihPdu1ff0D5ZmsbYLDezbBkceaRFJo16Yw6cYRhKly7qsM2apRIiRUUaVcl3aquybN0a9t8/U9bEk6IimDMnfeeOd95Rsd8PPsi4WbHEKwy64YYt22oZRh0xB84wDMWrRPUcuHyXEPHwxHyr04K74Qbt1pDPdO+uzv8PP2y9rqwMli/XKlQDunThsL1WMGmyMP8fL0VtjZHFmANnGIbyk59Ao0YqJWIO3GbqogWXr9Q0RmVlmjvYrVsmLYot4x4TJk5pxS/c8/T8558ZNy5qi4xsxRw4wzCUwkLo2VM7Cixfbg6cxzbbqFr+9ttvvW7FCpWBePrpzNsVJ3bfHe64I30hR1kZdO26Wbw2j5k/H0aMgE2ugJW0Ze2GxowYocsNo65YgothGJsZNUqjcMOHw157RW1NfHj++fTLy8tVTT/fE/U7d4aLLkq/rrx88zR0nlNWBk2aqOqKR2GhLq9JB9kw0mEOnGEYmxk1ioED9QIzfjzYNSUJ57aWETEJkc2UlcG6dVvrmh15pBZ6GPTooUXNyVRWmn9r1A+bQjUM43+Me6SKTz7cRMn0jfTsieXnePz1r7DttltH2jwHLp9FfD1+9Su44IKtl196KZx3XubtiSGdO2sXrYICDXQ3b66vLfpm1Adz4AzDALz8HMdG14jKqsasXYvl53i0bq15gQsWbLm8vFyvwlZhqVHI1CKG9ethzZoorIktp54Kc+fC5Mkwe7a+Noz6YA6cYRhAIj+ncMspQi8/J+/xpkhTB6OoCI4/3rpVgEYhv/sOqqo2L5s4URvYv/9+ZGbFkc6dtc2wRd6MhmAOnGEYQCI/Z+OWPwmWn5PAG4TUCNOoUfDYYxk3J5YUFekXJjlk6zm8JiFiGIFjDpxhGMDm/JxGUkXjRlWWn5OMl+OWGoHL9+rTZNJpwZWVaRg3nQSLYRgNwhw4wzD+x6mnwvc/FPDO5ALLz0mmZUtNxN9tt83L1qyBNm3ggQeisytODBigeni9e29eVlamzm+BXWoMI2hMRsQwjC3o3Nmibmm5994tX1dUwKpVmuNlaCHHsGFbLisrszl4wwgJc+AMwzD84BwsXQrt2+tr04Dbmvfe04KOgQP19TnnmAacYYSEOXCGYRh+uOIK+NvfVKy2oMA04NJx4YXQoQNMmKCvzzgjWnsMI4exxATDMAw/dOumMvo//KCvy8u1L1KXLpGaFSuKijY7titXapuxyspITTKMXMUcOMMwDD+kSonssQece64l6CfTvbuOj3Pw9tuwyy7w+edRW2UYOYn98hiGYfghVcz3pJPgzjsjMyeWFBXpFPPChZvHyYoYDCMUzIEzDMPwg5fr5kXgVq6MzJTY4o1RRYU6cK1abS76MAwjUMyBMwzD8EOzZnDTTTBokPb4bNMGbrwxaqvixYEHwocfQt++myVErM2YYYSCVaEahmH45dJL9fnbb/V5hx2isyWOtGsH++yjf5eVQc+e0dpjGDmMOXCGYRh+WbFCpwcXLtTXJiGyNU8+qVOnN98MLVpEbY1h5Cw2hWoYhuGXW26BPfeE0lJ9bQ7c1tx4I4weDUceqdPNhmGEgjlwhmEYfunRAzZt0o4DBQXQtWvUFsWPoiL4+GN4/XVYvTpqawwjZzEHzjAMwy+elEj37nDddSrka2xJ9+6waBEMHbpZSsQwjMCxHDjDMAy/eJpmPXvCb34TrS1xJbk3rGnAGUZoWATOMAzDLzvuqLIYEybY9GB1JOcFtmoVnR2GkeOYA2cYhuGXwkL45z+10vKvf43amngydCjzdzqID3oPZ/78qI0xjNzFHDjDMIw6MH/XQ/mAfZnftk/UpsSScc+1ouc3Ezhi9r307AnjxkVtkWHkJpE4cCJyroiUicg6EflURA6sZfuDE9utE5HZIjIyU7YahmF4jBsHPffvwhGMp+cVvzLnJIX582HECFjrmrNyQ0vWrtXXFokzjODJuAMnIicBdwE3AnsA7wPjRaRbNdv3AF5JbLcHcBNwj4gMy4zFhmEYSc7JhsaspC1rKxuZc5JCWdnWhbmFhVaMahhhEEUE7vfAWOfcg865Gc65UcA84Jxqth8J/OCcG5XY/kHgEeAPGbLXMAzDnBMf9OgBGzZsuayy0opRDSMMMurAiUgh0B94LWXVa8DAanbbL832rwIDRMREmAzDyAjmnNRO584wZgw0bw5t2ujzmDG63DCMYBHnXOZOJrI9MBc42Dn3TtLyq4D/c871TrPP18BjzrnrkpYdBEwCtnfOzUvZ/mzgbIBOnTr1f/zxx0N5L8msXr2aVlYuXy02PrVjY1QzcRmf117ryO2396ZxY8fGjcLvfz+LoUMXRm0WEJ8xAli6tJB585rRpcs6tt22MmpzgHiNTxyx8amdTIzR4MGDP3XODfCzbVRCvqleo6RZVtv26ZbjnHsAeABgwIABblAGevFNnDiRTJwnW7HxqR0bo5qJy/gMGgQXXKDTpj16QOfOuwC7RG0WEJ8xiis2PjVj41M7cRujTDtwi4FNQGpAvSOwoJp95lez/UZgSaDWGYZh1ELnzjYlaBhG9GQ0B845Vwl8CgxJWTUErTJNxwfAYWm2n+Kc25Bme8MwDMMwjJwmiirU24HhInKWiOwsIncB2wP3A4jIoyLyaNL29wNdReTOxPZnAcOBv2XacMMwDMMwjDiQ8Rw459wTItIe+DPQBfgSONI5V5HYpFvK9mUiciRwByo18gNwgXPumQyabRiGYRiGERsiKWJwzo0GRlezblCaZZOAPUM2yzAMwzAMIyuwXqiGYRiGYRhZhjlwhmEYhmEYWYY5cIZhGIZhGFmGOXCGYRiGYRhZhjlwhmEYhmEYWYY5cIZhGIZhGFlGRpvZZxoRWQRU1Lphw+mAtgkz0mPjUzs2RjVj41M7NkY1Y+NTMzY+tZOJMerunNvOz4Y57cBlChGZ4pwbELUdccXGp3ZsjGrGxqd2bIxqxsanZmx8aiduY2RTqIZhGIZhGFmGOXCGYRiGYRhZhjlwwfBA1AbEHBuf2rExqhkbn9qxMaoZG5+asfGpnViNkeXAGYZhGIZhZBkWgTMMwzAMw8gyzIEzDMMwDMPIMsyBM4wIEBGJ2gbDMAwjezEHrp6ISC8R6RS1HXHEnJPqEZE2AC4p+VRE7P8wiXTjYd8pwzCMLbELRx0QkY4icrGIfA88CbwkIv8VkdNEpGXU9sUBEWnsnHMi0jrx2r5jCURkL+DxxHdoPxFpDuCcqxKR9hGbFwtEpCdwnIhsn7zcc3jt+wQi0khEikXkHBE5OvHaHNxq8MbGxsioD3H+3lgVah0QkbHALsBLwBKgPfBTYGfge+AW59zrkRkYMSKyK3AJMBj4FLjaOfeFiIizLxoiciNwKTARaALMBN4A2gK3Ads456oiMzAGiMgTwHrgfOfcShH5CXAAsAZ4zjm3KVIDY4CInA+cDzQCVgIXOufeTYxVWb5/h2rDuyDbb9LW2G91zSSPj4gURP2/Zg6cTxL/9KuAI51z7yQt2xHYB/gt0B04yTk3LTJDI0REPgGWAq8BxwI7AQc552YlbdPSObcmIhMjRUT2B8ahzlpbYCjQHNgB/W5dBkx1zpVHZWOUJP2PDXHOfSAi5wF/BFYD26IzBlcC/4j6hzMqEmO0AB2Xz4GL0ZvJbYA9gE7AXcDdzrkfo7IzDiSitccA2wEtgLnAJOfcwkgNixkiMiTx5xTn3LJIjYkZInIIsAKYGcfrljlwPklElx4Hfuuc+zDN+kLgfeB159xlmbYvakTkdOAPwIHOueWJC81rwFzn3HDvzkVEvItLaaQGR4SInA0cCJwGNAWGAM8C36LRlHXAGfk4PiJyGHA3sDvq/I8H/gJ8gF6AjweGAcc452ZEZWeUiMgpwJ+BXRJT772Ar4BngJeBn6A3kyc6596PztJoSaRwPITOBlShMyQOWAtMAh5zzs3M54hTIu3nRuAU9P9rDTDKOfeffB4XDxFpC8xDZ0lK0N+hGc65WSJyM/Bv59znUY5V3ueT1IHZwELgjkQBwxZj55yrBB4BfhaFcTHgeODlhPNWmPhC3wjsLyK9Es7bwegPRN45J/C/iMDDqOP2O+fcOqAx+iNxNKry/U2+jg9QASxHo0h7Al8CDznnvnLOfQLcCfxA/v6PAfRELyZeXs4paCTuVOfcY8Bo1KE7JhrzYsMFQG90xqQT8H/o9+cr4HDgFhHZLs+dlJHAvsAINB3oEeCPItI2aZpQRKSfiDSK0M6o6IHeUG+P/j7fg17/r0NThXaAaKfizYHziXNuLXAFOuX1KHCaiOzoFS+ISAvgYPSik1eISFNgA7AicTdSmShmeBsoQ38oAM4GnorKzqhxzlU55zYAY4BzRaQzcC7wrHOu1Dn3kHPurGitjJRv0e/RA2g6wo9oriAAzrkFqAO3YyTWxYO3gIOAG0TkamA48IpzbiOAc24ROqXaLDIL48ERwCMJxx/n3MyEg3seOu28M5rOkM+chaYjPJ2Ybr8JjVJekrTN8cBt+Zh76pybClyI/n/tiv5Wz0fzT9cBp4vIRSLy06hsNAeuDiSmTk8BvgPuA6aiVYX/RBPSdwRujs7CyKhEo22ViUibeBcUNB/nDBEpAo5Cp8jyGufcm8DtwGTgUOAx0OrCKO2KmsSd7Mlocv4v0OnSv4jIniLSWEQGoRfmJ6KzMnI+AG5Fbxb3Rp3do0RkBwAR2RGdlv9PZBZGjIg0Rm+kh4nIdolljUSkkXNuUyKHeSTQVUT6RWlrVIhIV3Rq+SNvmXNuMZqfe6r3fUId3q8zb2FsmAAMFZFznHMvOufOQG+QXkannW8DBkRlnOXA1RMR6Yg6JMei3viXwFPOuZmRGhYDUip1mgDPobk5LZ1z3SI1LiYkopa3oJGSixIRXoP/5S+dCPwVndqZhhYxNEL/x34foXmxICFB49AI5Qtogv5SNL9ynnPuqAjNixwR2Rf4F/A0cHsiepu8fkdgBtDbOTc3AhMjJZHT/SDwoHPu4aQc5QLgY3SmZAywCOiVr4VVACLSH71pHI7OAMwAOjrnViQCE4udc6sjsc0cuIYTh3LiOJL0o/Ar9Mf0GufcdVHbFRcShS+tnHNLo7YlrohIdzRnyQHfAO8mRXcNQFQz74+o3Mp/0eTqb6O1KjoSTkgB8Bt0ZqAx6sg9AcxBi2R+DuzsnNsrKjujRkR2AlY55+Ylis4aOec2Jqq/TwZeAc50zhVHamiEeFFbERkFFAOt0TzUQ4GqpBmnSBwpc+CM0En8OAwAZjvnlkRtj2HkIlY5uDWJSsLhwK9Rzc5VqM7gx8BNzrmPqt8790n9ziSc31ZoruWewNnOuX9EZV/UeJqB6AzAP1HH/xTn3L+js2oz5sAZhmEYOYGIbINGlVKdkmaoY9IXWJPPjlu6MUqzzaVo9LJlvqV3VDc+Ccmeo4GxcdHLMwfOMAzDyAlEZAwaXfsYqHDOrUyzTTvn3LJ8jVj6HKOWQNs8zQ/0Mz4dEkUfkWIOnGEYhpH1JOXarkQLOl4HXgWmo4Lia0WkFVr1faVz7ovIjI2IasZoAjpGPySN0b+By51zeSWLVcP4fIEWB61JFBD9hxh8h8yBMwzDMLIeEXkQ2IRWdx8PnI5Wv89CE/LfRMV973LOFUZlZ5TUYYzuds41qe44uUq2fYfMgTMMwzCymoT22x+BbZxzlyYt3xVtLfZLNA+uLSrwe2YkhkaIjVHNZOP4mANnGIZhZD0i0g7o5LTHaSGwIaWY4SR06mtP59y0qOyMEhujmsm28WkctQGGYRiG0VASlYHLEn9Xwv8qUCXRCmobYF0cLrxRYWNUM9k2PubAGYZhGDlJisB6a+DqqGyJKzZGNRPn8bEpVMMwDCPnSbT122Rdc6rHxqhm4jY+5sAZhmEYhmFkGQVRG2AYhmEYhmHUDXPgDMMwDMMwsgxz4AzDMAzDMLIMc+AMIyJEZLiIOBFZntAfSl7XOLHumgjsuiZx7lhXqYtIgYjcKSLzRKRKRJ6vZftWInKpiHwiIitFpFJEvhORp0TkGBGRethwkYgcX/93kfaY3vfCe1SKSKmI3CgizYI8V30RkUGJ70lByvKihM3Dk5YNF5Ez0hzDe59FoRtsGDmIOXCGET1tgD9FbUQW8kvgQuBWYH9URT0tIrID2pz6T2h/w5OAIagkQEvgeWDvethwEdpyJwxOAPYDjkJ7el6Gvtc4MAgdu9RryDzU5peTlg0HtnLgEtvsl9jHMIw6Eus7bMPIE14DRonInc65+VEbkwlEpKlzbn0DD7Nz4vlOH2X9/wI6AgOcc6VJyycBD4vIYcCKBtoTNNOcc98m/n5dRHoBZ4rIhXGRMUgl8Zl+6HPbRcCicC0yjNzFInCGET3XJ56vqGkjb2ozzfKxIlKe9NqbxhopIjeJyHwRWSUij4lICxEpFpFXRWS1iHwrIqdXc8qdReRtEfkxMU15XZopsw4icp+IzBWR9SIyU0TOTtnGmyo7KDFduRz4qJb3eoSIfCAia0VkhYg8LyK9k9aXA9ckXm5KnbZLOda+wMHADSnO2/9wzr3hnJuZtM9eIvK0iHyfsGFWYgqzeYoN3YH/S5ruHJu0vp+I/FdEliWO8Z6IHFjT+66Fz4DmQIeU99dDRP4lIosSn8E0ETkuZRtvWny3hn6miWl9T8x0g/feE+u2mEIVkYno2O+fNEYTE+u2mkIVkSYicr2IlCemjssTr5skbeOdY0TC/nmiaQgvikjXlPfyaxGZmviurxCRL0RkRN2H3jDih0XgDCN65gH3AheJyN+ccxUBHfcyYCJwOrALcAtQBewBPAj8DTgHjUBNcc59lbL/88A/gZuAw4ErE/tfAyAi2wDvoU7FNUBZYrv7EhG2e1KO9y+0j+AvqeG3R0SOQKfX3kKnOlsB1wHvishPnXNzgeOAC9Dpuf0Su6Z1zoBDE88vVXfONHQDpgFjgVXArsBVQE/g5MQ2xwGvAJ+z2ZlclHgPewKTgaloI+wfgZHAGyIy0Dn3aR1s8ShCo4RLvAUisiPqDC8Efpc4/0nAMyJyrHPuvynHCOIz/QfQFTgTOADYVIPN5wKPAY0Az3FaWcP2jwAnAjcC76Kf7Z/Rcf91yraXAe+j07MdgdvQ79jBifdyQOLcdwOXoAGLPmgzcsPIfpxz9rCHPSJ4oM6HA4qBbYHlwD8T6xon1l2TtP01+i+71XHGAuVJr4sS+76Vst2zieWnJC1rB2wErk49D3Bpyv4Pos5M28TrK4F1QK802y0GGqe8zzt8jssU4Btv/8SyHsAG4PakZdenG480x7svcf6mKcsLEuPsPQqq2V8S609BnZ32SevKgcfS7PMmMAMoTFrWKLHseZ/fi96J87ZDnZSNwPkp2z6EOm3tU5a/jk7BhvWZesdrnLKd990bnrRsIvBuDe+zKPG6Lynf+cTyPyeW755yjkkp2/0hsXz7pNdLw/wftoc9onzYFKphxADn3FI0gnBa8lRhAxmf8tqbInw16bzL0OjNjmn2fzLl9eNoNKxv4vURaPSnTLRqtrFo5eqrQHs06pfMc7UZLCItgT2BJ5xzG5PsLEMjQwfXdox0h61m+WjUKfQe1yXZsY2I3CwipcD6xPpxiWP1quU9NE/Y+RRQlTQuArwBHOTT7pmJ8y5FHbUxzrl7U7Y5Ao0CrkjzGfRLRNSSCfozDRJvXB5LWe69Tv3sX055/UXiuVvi+ROgnWjqwNEiYpE3I6cwB84w4sMd6MX6uto29MmylNeVNSxPJ0+xoJrXOySeO6IX3Q0pj6cS69un7O+n2rAd6uik23Y+GqmsK3MSz91Slt8I7JV4pPIwOuV5N1qtuhdwXmJdbVIe26LRtivZemzOR50KP7+9xyXOeyTq+J0rIqelbNMROC3Nebxq1dTPIOjPNEi8zzb1s5+fst5jacprryimGYBzbhJaybsjevOwSETeEJHdgzHXMKLFcuAMIyY451aLyE1oJC6dXMQ6ABEpdM5VJi0P66LaCZid8hpgbuJ5CRq9u7Ca/WelvPbTeHlZYrvOadZ1Jin/qw68lXg+GnWS1RjnvgO+A5AkCThRrbVj0Km8u5KW7+bzfMvRqda/A4+m28D5qyL90iWqUEXkLWA6cKuIPOOcW5PYZgmaa3dzNcf4IeV10J9pkHgOWWe2zGf0vgt1/uydc08DT4tIK1T65GZggoh09fkZGEZssQicYcSL0ejF9Po067ziBm+6i8S00MCQbDkx5fXJwGrgy8TrCWhS+HfOuSlpHqvqesKEY/IpcIKINPKWi0h39H1OqscxP0CdnCtE5Cc+dmmKRtA2pCwfnmbb9WjCf/L51iTO1w/4LN3Y1OM9rEcT8TuihQEeE4Ddga+q+QxSpVqC+ky94zandrYao2rwPtuTU5b/X+L5HR/HSItzbrVz7iVgDNCFcCOJhpERLAJnGDHCObdeRK4DHkizejxahfigiFyNOhp/RC/AYfDbxFTfJ2gl4lloVGp5Yv0daMXjZBG5A43OtEQdgAOdc8fU87xXovlNL4nIaDRH61r0vd9Wz2P+Gi0smJI45mRgDbAdMDSxzSoA59wKEfkQuFhE5qHJ+2eweZoxmRLgQBE5Gp3qW+ycKwd+jzocr4rIQ+i0YAc0v6+Rc+7Sur4B59x/ReQT4A8icq9zbi1aGfsx8I6I3IsWVbRDnfyezrlUAd2gPtOSxPPFIjIe2FSDY1qCTv+ehEbWVjnntorkOee+EpH/ANck8u7eR6tQrwT+45yb7nOoAEj8H3UC3kYjkV3RyuVpTjXoDCO7ibqKwh72yNcHSVWoKcsbA1+TviLvAPTi+2Nim1Oovgr1rJR9ryF95WA5SZWUSdv1RS9+a1Hn5C+kVGqizsIdqNxEJTr9Nhm4qLb3WcvYHAF8kDj3CuAFoHfKNr6qUJO2bw1cjkb4ViXs/Q7N7/p5yrZFqMO8KvGe7kU7IjhgUNJ2fRLv98fEurFJ63ZGiwQWolGo74H/AkfW53uRWDc0se53Scu6otIecxPvaR5ahZpcbRz0Z9oInSJeiE4Xu5Tv3vCkbTujhRarEusmprzPoqRtmyQ+1wo0AlqReN3Ex/d7UPLnw+YOFvMS4z8HLQbZPur/fXvYI4iHOOcnLcUwDMPIVpLEd5u4pOpewzCyF8uBMwzDMAzDyDLMgTMMwzAMw8gybArVMAzDMAwjy7AInGEYhmEYRpZhDpxhGIZhGEaWYQ6cYRiGYRhGlmEOnGEYhmEYRpZhDpxhGIZhGEaWYQ6cYRiGYRhGlvH/KiTqdjfrC4oAAAAASUVORK5CYII=\n", + "text/plain": [ + "
        " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "# Fit the data to an oscillation\n", + "\n", + "plt.figure(figsize=(10, 6))\n", + "initial_theta = 0.02\n", + "initial_c = 0.5\n", + "initial_phi = 0.01\n", + "\n", + "\n", + "fit = AngleCalCXFitter(backend_result1, xdata, qubits,\n", + " fit_p0=[initial_theta, initial_c],\n", + " fit_bounds=([-np.pi, -1],\n", + " [np.pi, 1]))\n", + "\n", + "fit.plot(0, ax=plt.gca())\n", + " \n", + "print(\"Rotation Error on CX: %f rads\"%(fit.angle_err()[0]))\n", + "plt.show()" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "hide_input": false, + "kernelspec": { + "display_name": "Python 3", + "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.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/qiskit/ignis/measurement_error_mitigation.ipynb b/qiskit/ignis/measurement_error_mitigation.ipynb new file mode 100644 index 000000000..1feb6c3df --- /dev/null +++ b/qiskit/ignis/measurement_error_mitigation.ipynb @@ -0,0 +1,456 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\\\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Measurement Error Mitigation\n", + "\n", + "* **Last Updated:** Feb 25, 2019\n", + "* **Requires:** qiskit-terra 0.7, qiskit-ignis 0.1, qiskit-aer 0.1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "The measurement calibration is used to mitigate measurement errors. \n", + "The main idea is to prepare all $2^n$ basis input states and compute the probability of measuring counts in the other basis states. \n", + "From these calibrations, it is possible to correct the average results of another experiment of interest. This notebook gives examples for how to use the ``ignis.mitigation.measurement`` module." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Import general libraries (needed for functions)\n", + "import numpy as np\n", + "import time\n", + "\n", + "# Import Qiskit classes\n", + "import qiskit \n", + "from qiskit import QuantumRegister, QuantumCircuit, ClassicalRegister, Aer\n", + "from qiskit.providers.aer import noise\n", + "from qiskit.tools.visualization import plot_histogram\n", + "\n", + "# Import measurement calibration functions\n", + "from qiskit.ignis.mitigation.measurement import (complete_meas_cal,\n", + " CompleteMeasFitter, MeasurementFilter)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3 Qubit Example of the Calibration Matrices" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Assume that we would like to generate a calibration matrix for the 3 qubits Q2, Q3 and Q4 in a 5-qubit Quantum Register [Q0,Q1,Q2,Q3,Q4]. \n", + "\n", + "Since we have 3 qubits, there are $2^3=8$ possible quantum states." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generating Measurement Calibration Circuits\n", + "\n", + "First, we generate a list of measurement calibration circuits for the full Hilbert space. \n", + "Each circuit creates a basis state. \n", + "If there are $n=3$ qubits, then we get $2^3=8$ calibration circuits." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following function **complete_meas_cal** returns a list **meas_calibs** of QuantumCircuit objects containing the calibration circuits, \n", + "and a list **state_labels** of the calibration state labels.\n", + "\n", + "The input to this function can be given in one of the following three forms:\n", + "\n", + "- **qubit_list:** A list of qubits to perform the measurement correction on, or:\n", + "- **qr (QuantumRegister):** A quantum register, or:\n", + "- **cr (ClassicalRegister):** A classical register.\n", + "\n", + "In addition, one can provide a string **circlabel**, which is added at the beginning of the circuit names for unique identification.\n", + "\n", + "For example, in our case, the input is a 5-qubit QuantumRegister containing the qubits Q2,Q3,Q4:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Generate the calibration circuits\n", + "qr = qiskit.QuantumRegister(5)\n", + "meas_calibs, state_labels = complete_meas_cal(qubit_list=[2,3,4], qr=qr, circlabel='mcal')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Print the $2^3=8$ state labels (for the 3 qubits Q2,Q3,Q4):" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['000', '001', '010', '011', '100', '101', '110', '111']" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "state_labels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Computing the Calibration Matrix\n", + "\n", + "If we do not apply any noise, then the calibration matrix is expected to be the $8 \\times 8$ identity matrix." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Execute the calibration circuits without noise\n", + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "job = qiskit.execute(meas_calibs, backend=backend, shots=1000)\n", + "cal_results = job.result()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1. 0. 0. 0. 0. 0. 0. 0.]\n", + " [0. 1. 0. 0. 0. 0. 0. 0.]\n", + " [0. 0. 1. 0. 0. 0. 0. 0.]\n", + " [0. 0. 0. 1. 0. 0. 0. 0.]\n", + " [0. 0. 0. 0. 1. 0. 0. 0.]\n", + " [0. 0. 0. 0. 0. 1. 0. 0.]\n", + " [0. 0. 0. 0. 0. 0. 1. 0.]\n", + " [0. 0. 0. 0. 0. 0. 0. 1.]]\n" + ] + } + ], + "source": [ + "# The calibration matrix without noise is the identity matrix\n", + "meas_fitter = CompleteMeasFitter(cal_results, state_labels, circlabel='mcal')\n", + "print(meas_fitter.cal_matrix)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Assume that we apply some noise model from Qiskit Aer to the 5 qubits, \n", + "then the calibration matrix will have most of its mass on the main diagonal, with some additional 'noise'.\n", + "\n", + "Alternatively, we can execute the calibration circuits using IBMQ provider." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Generate a noise model for the 5 qubits\n", + "noise_model = noise.NoiseModel()\n", + "for qi in range(5):\n", + " read_err = noise.errors.readout_error.ReadoutError([[0.9, 0.1],[0.25,0.75]])\n", + " noise_model.add_readout_error(read_err, [qi])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Execute the calibration circuits\n", + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "job = qiskit.execute(meas_calibs, backend=backend, shots=1000, noise_model=noise_model)\n", + "cal_results = job.result()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0.729 0.204 0.212 0.052 0.2 0.056 0.064 0.022]\n", + " [0.088 0.614 0.018 0.166 0.028 0.166 0.009 0.044]\n", + " [0.081 0.024 0.619 0.178 0.028 0.005 0.151 0.044]\n", + " [0.005 0.064 0.051 0.516 0.003 0.007 0.016 0.139]\n", + " [0.074 0.013 0.021 0.003 0.592 0.18 0.17 0.039]\n", + " [0.013 0.072 0.002 0.012 0.073 0.508 0.017 0.153]\n", + " [0.01 0.002 0.069 0.019 0.07 0.018 0.518 0.13 ]\n", + " [0. 0.007 0.008 0.054 0.006 0.06 0.055 0.429]]\n" + ] + } + ], + "source": [ + "# Calculate the calibration matrix with the noise model\n", + "meas_fitter = CompleteMeasFitter(cal_results, state_labels, circlabel='mcal')\n", + "print(meas_fitter.cal_matrix)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plot the calibration matrix\n", + "meas_fitter.plot_calibration()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analyzing the Results\n", + "\n", + "We would like to compute the total measurement fidelity, and the measurement fidelity for a specific qubit, for example, Q0.\n", + "\n", + "Since the on-diagonal elements of the calibration matrix are the probabilities of measuring state 'x' given preparation of state 'x', \n", + "then the trace of this matrix is the average assignment fidelity.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average Measurement Fidelity: 0.565625\n", + "Average Measurement Fidelity of Q0: 0.829875\n" + ] + } + ], + "source": [ + "# What is the measurement fidelity?\n", + "print(\"Average Measurement Fidelity: %f\" % meas_fitter.readout_fidelity())\n", + "\n", + "# What is the measurement fidelity of Q0?\n", + "print(\"Average Measurement Fidelity of Q0: %f\" % meas_fitter.readout_fidelity(\n", + " label_list = [['000','001','010','011'],['100','101','110','111']]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Applying the Calibration\n", + "\n", + "We now perform another experiment and correct the measured results. \n", + "\n", + "## Correct Measurement Noise on a 3Q GHZ State\n", + "\n", + "As an example, we start with the 3-qubit GHZ state on the qubits Q2,Q3,Q4:\n", + "\n", + "$$ \\mid GHZ \\rangle = \\frac{\\mid{000} \\rangle + \\mid{111} \\rangle}{\\sqrt{2}}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Make a 3Q GHZ state\n", + "cr = ClassicalRegister(3)\n", + "ghz = QuantumCircuit(qr, cr)\n", + "ghz.h(qr[2])\n", + "ghz.cx(qr[2], qr[3])\n", + "ghz.cx(qr[3], qr[4])\n", + "ghz.measure(qr[2],cr[0])\n", + "ghz.measure(qr[3],cr[1])\n", + "ghz.measure(qr[4],cr[2])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now execute the calibration circuits (with the noise model above)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "job = qiskit.execute([ghz], backend=backend, shots=5000, noise_model=noise_model)\n", + "results = job.result()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now compute the results without any error mitigation and with the mitigation, namely after applying the calibration matrix to the results.\n", + "\n", + "There are two fitting methods for applying thr calibration (if none method is defined, then 'least_squares' is used). \n", + "- **'pseudo_inverse'**, which is a direct inversion of the calibration matrix, \n", + "- **'least_squares'**, which constrained to have physical probabilities.\n", + "\n", + "The raw data to be corrected can be given in a number of forms:\n", + "\n", + "- Form1: A counts dictionary from results.get_counts,\n", + "- Form2: A list of counts of length=len(state_labels),\n", + "- Form3: A list of counts of length=M*len(state_labels) where M is an integer (e.g. for use with the tomography data),\n", + "- Form4: A qiskit Result (e.g. results as above)." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "# Results without mitigation\n", + "raw_counts = results.get_counts()\n", + "\n", + "# Get the filter object\n", + "meas_filter = meas_fitter.filter\n", + "\n", + "# Results with mitigation\n", + "mitigated_results = meas_filter.apply(results)\n", + "mitigated_counts = mitigated_results.get_counts(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now plot the results with and without error mitigation:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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37//QIB9+/ZFXHLJJT3j4uLOPO20086cNWtWQkWzWFlZGdOmTevWsWPH5G7dup2RkZFxSmOOiRKbAKm4Olm8eDFr1qxhyZIlbN68+ZhyNV2d/OhHPyIzM5PMzEwWLFhAz549OeOMM2jXrl3l/MzMTLp3784FF1wQyN0SEWmQvLw8unbtWjmdkJBwTBKSk5PD7t27Offcc4+af+GFFxITE0NSUhJnnnkm1113HR07djyqzM6dO/nPf/5z1G9puPrHP/7R8a233vpk48aNG1asWNHhvPPO6/ub3/xmV35+/kdHjhzht7/97WlVyz/yyCO7U1NTv/nNb36zs7i4OPuZZ57ZWX2b11xzTc+YmJgjeXl5OU8//fRnixcvPqrZatiwYUUfffTRx/v378+eMmVKwWWXXXZ6cXGxTZky5eANN9yw5/vf//7+4uLi7C1btmwEuPTSSxMjIyP59NNPN2RnZ298++23T3nwwQdPBXjggQfi3nzzzVM+/PDDjVlZWRv//ve/d6weT30osQmQxlydVLVkyRLS09OPmb9t2zby8/MZNWqU32MXEQm0I0eOcOedd3LvvfcesywrK4uIiAg2btxIdnY2jz76KJ9//nnl8m+++YYrrriCefPm0b59+wBGHRzTp0//snv37mW9evUqHTZs2DcpKSlFo0eP/jYmJsZdcMEFX+fk5MTUZ3tlZWW89tprHX7961/vbteu3ZHU1NRDl1xyyVFPN585c2ZBly5dyqOiorjnnnv2lpSUWE5OTo0nri+++CJy1apVpzzxxBM727dvf6Rr165l119//d6XXnopFiAjI6PjjBkzvuzTp09p586dy2+77bY9DT8a6mMTMDVdnWRlHd2EWvXq5JFHHqlxOy+//DKLFi06Zn5GRgY//OEPMTP/Bi4i0gTi4+PZvXt35XRubi7x8fGV09988w2bNm2qrIX+8ssvmTp1Ks8++yxLlixhwoQJREVFERcXx/Dhw8nOziYxMZHS0lKuuOIKpkyZctLUYMfHx1fePtSqVasjnTt3rrz1qXXr1keKi4sj6rO93NzcyPLycuvdu3fldrt3735Up+K77rqr86JFi07Nz8+PAigqKor48ssva8wptm3bFl1WVmbx8fHJFfOcc9alS5cSgL1790b16NGjcvunn3764frEW51qbELE8a5OKqxdu5bWrVszcODAY5ZlZGQwefLkpgxRRMRvhgwZwvbt29mxYwclJSVkZGQwceLEyuXt27dn27Zt5OTkkJOTw9ChQ3n22WdJSUmhW7duZGZmAlBUVMTatWvp168fzjlmzZpFv379uO6664K1a82CmbnaliUkJJRFRES4zz77LKpi3hdffFF5G/hrr73W9g9/+EOX559/fvvXX3/9UWFh4Udt27Ytd87VuO3evXuXRkdHu4KCgo8KCws/Kiws/Oibb77J3rZt28cAp512WunOnTsrt799+/aWjdk3JTYBUp+rk+TkZNauXcvUqVMrOxBD7cnLhg0bKC8v5zvf+U7T7oSIiJ9ERkZy3333MWXKFEaOHMnFF19MUlIS8+bNq7GZvqqf/exnFBUVMWrUKCZMmMBPfvITBg0axL///W9eeOEF3nnnncqbKt58880A7VHzEhcXV1ZbAhEZGcl555339X//938nFBYWtsjOzm714osvdqpYfuDAgYjIyEjXpUuX0tLSUrv11lvji4qKKmuFOnfuXLZr167o8vJyAHr27Fk6evToA9OmTeteUFDQory8nI8//rjl0qVL2wKkp6fvf/zxx0/79NNPo/Lz8yPuu+++Lo3ZNzVFBUjVq5P4+HgyMjJ44oknKpdXXJ1UuOCCC/jlL39JSkoK4NXovPLKKyxduvSYbdfW70ZEJJSlpaWRlpZ21Lw77rijxrL//Oc/K9+3bduWhQsXHlNm5MiRFBQU+DXGcHXTTTftveaaa3o988wzcenp6fsWLlz4RdXlTz755M6f/OQnifHx8cmJiYmHLr744oKPPvqoDcDkyZMPvPTSSwcHDhx4RuvWrcuvvfbavRXNSgCXX355wQsvvBDbsWPH73Tr1u3wxo0bNy1evPjzWbNmdU1KShpcXFzcolu3biU333xzHsDs2bPzP/nkk1apqamD2rRpU3799dfvef/999s1dN+souroZJSSkuJWrlwZsL/35ptvcscdd1BeXs7UqVO55ZZbmDdvHikpKUyaNOmostUTm3fffZd77rmnxquPlJQUXnjhBfr16xeQ/RARCWexsbFZzrmhFdM5OTmfJycnf3W8dcLdjBkzuu7duzcqIyPj82DHApCTk3NqcnJyYk3LlNgEMLEREZHQp8QGsrOzW5WUlNiwYcO+XbVqVUx6enrfhx9+eMdPf/rTr4MdGxw/sVFTlIiIiBzl4MGD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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit.tools.visualization import *\n", + "plot_histogram([raw_counts, mitigated_counts], legend=['raw', 'mitigated'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/qiskit/ignis/process-tomography.ipynb b/qiskit/ignis/process-tomography.ipynb new file mode 100644 index 000000000..31ab5f546 --- /dev/null +++ b/qiskit/ignis/process-tomography.ipynb @@ -0,0 +1,400 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum Process Tomography\n", + "\n", + "* **Last Updated:** Feb 20, 2019\n", + "* **Requires:** qiskit-terra 0.7, qiskit-ignis 0.1, qiskit-aer 0.1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook contains examples for using the ``ignis.verification.tomography`` process tomography module." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Needed for functions\n", + "import numpy as np\n", + "import time\n", + "\n", + "# Import QISKit classes\n", + "import qiskit\n", + "from qiskit import QuantumRegister, QuantumCircuit, Aer\n", + "from qiskit.quantum_info import state_fidelity\n", + "from qiskit.tools.qi.qi import outer\n", + "\n", + "# Tomography functions\n", + "from qiskit.ignis.verification.tomography import process_tomography_circuits, ProcessTomographyFitter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1-qubit process tomography example" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{(('Zp',), ('X',)): {'0': 4000},\n", + " (('Zp',), ('Y',)): {'1': 1958, '0': 2042},\n", + " (('Zp',), ('Z',)): {'1': 2032, '0': 1968},\n", + " (('Zm',), ('X',)): {'1': 4000},\n", + " (('Zm',), ('Y',)): {'1': 1966, '0': 2034},\n", + " (('Zm',), ('Z',)): {'1': 2010, '0': 1990},\n", + " (('Xp',), ('X',)): {'1': 1977, '0': 2023},\n", + " (('Xp',), ('Y',)): {'1': 2019, '0': 1981},\n", + " (('Xp',), ('Z',)): {'0': 4000},\n", + " (('Yp',), ('X',)): {'1': 2000, '0': 2000},\n", + " (('Yp',), ('Y',)): {'1': 4000},\n", + " (('Yp',), ('Z',)): {'1': 2001, '0': 1999}}" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Process tomography of a Hadamard gate\n", + "q = QuantumRegister(1)\n", + "circ = QuantumCircuit(q)\n", + "circ.h(q[0])\n", + "\n", + "# Run circuit on unitary simulator to find ideal unitary\n", + "job = qiskit.execute(circ, Aer.get_backend('unitary_simulator'))\n", + "ideal_unitary = job.result().get_unitary(circ)\n", + "# convert to Choi-matrix in column-major convention\n", + "choi_ideal = outer(ideal_unitary.ravel(order='F'))\n", + "\n", + "# Generate process tomography circuits and run on qasm simulator\n", + "qpt_circs = process_tomography_circuits(circ, q)\n", + "job = qiskit.execute(qpt_circs, Aer.get_backend('qasm_simulator'), shots=4000)\n", + "\n", + "# Extract tomography data so that counts are indexed by measurement configuration\n", + "qpt_tomo = ProcessTomographyFitter(job.result(), qpt_circs)\n", + "qpt_tomo.data" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Least-Sq Fitter\n", + "fit time: 0.01952195167541504\n", + "fit fidelity: 0.9987076688352984\n", + "\n", + "CVXOPT Fitter\n", + "fit time: 0.17179584503173828\n", + "fit fidelity: 0.9999807714654682\n" + ] + } + ], + "source": [ + "# MLE Least-Squares tomographic reconstruction\n", + "t = time.time()\n", + "choi_lstsq = qpt_tomo.fit(method='lstsq')\n", + "print('Least-Sq Fitter')\n", + "print('fit time:', time.time() - t)\n", + "print('fit fidelity:', state_fidelity(choi_ideal / 2, choi_lstsq / 2))\n", + "\n", + "# CVXOPT Semidefinite-Program tomographic reconstruction\n", + "t = time.time()\n", + "choi_cvx = qpt_tomo.fit(method='cvx')\n", + "print('\\nCVXOPT Fitter')\n", + "print('fit time:', time.time() - t)\n", + "print('fit fidelity:', state_fidelity(choi_ideal / 2, choi_cvx / 2))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1-qubit process tomography of two-qubit swap gate\n", + "\n", + "We will prepare qubit-0 and measure qubit-1 so the reconstructed channel should be an identity" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{(('Zp',), ('X',)): {'1': 957, '0': 1043},\n", + " (('Zp',), ('Y',)): {'1': 1040, '0': 960},\n", + " (('Zp',), ('Z',)): {'0': 2000},\n", + " (('Zm',), ('X',)): {'1': 1014, '0': 986},\n", + " (('Zm',), ('Y',)): {'1': 984, '0': 1016},\n", + " (('Zm',), ('Z',)): {'1': 2000},\n", + " (('Xp',), ('X',)): {'0': 2000},\n", + " (('Xp',), ('Y',)): {'1': 987, '0': 1013},\n", + " (('Xp',), ('Z',)): {'1': 1000, '0': 1000},\n", + " (('Yp',), ('X',)): {'1': 974, '0': 1026},\n", + " (('Yp',), ('Y',)): {'0': 2000},\n", + " (('Yp',), ('Z',)): {'1': 1002, '0': 998}}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Process tomography of a Hadamard gate\n", + "q = QuantumRegister(2)\n", + "circ = QuantumCircuit(q)\n", + "circ.swap(q[0], q[1])\n", + "\n", + "# Ideal channel is a unitary\n", + "ideal_unitary = np.eye(2)\n", + "choi_ideal = outer(ideal_unitary.ravel(order='F'))\n", + "\n", + "# Generate process tomography circuits and run on qasm simulator\n", + "# We use the optional prepared_qubits kwarg to specify that the prepared qubit was different to measured qubit\n", + "qpt_circs = process_tomography_circuits(circ, q[1], prepared_qubits=q[0])\n", + "job = qiskit.execute(qpt_circs, Aer.get_backend('qasm_simulator'), shots=2000)\n", + "\n", + "# Extract tomography data so that counts are indexed by measurement configuration\n", + "qpt_tomo = ProcessTomographyFitter(job.result(), qpt_circs)\n", + "qpt_tomo.data" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Least-Sq Fitter\n", + "fit time: 0.025966882705688477\n", + "fit fidelity: 0.9923977898780681\n", + "\n", + "CVXOPT Fitter\n", + "fit time: 0.08938908576965332\n", + "fit fidelity: 0.9998687609514274\n" + ] + } + ], + "source": [ + "# Least-Squares tomographic reconstruction\n", + "t = time.time()\n", + "choi_lstsq = qpt_tomo.fit(method='lstsq')\n", + "print('Least-Sq Fitter')\n", + "print('fit time:', time.time() - t)\n", + "print('fit fidelity:', state_fidelity(choi_ideal / 2, choi_lstsq / 2))\n", + "\n", + "# CVXOPT Semidefinite-Program tomographic reconstruction\n", + "t = time.time()\n", + "choi_cvx = qpt_tomo.fit(method='cvx')\n", + "print('\\nCVXOPT Fitter')\n", + "print('fit time:', time.time() - t)\n", + "print('fit fidelity:', state_fidelity(choi_ideal / 2, choi_cvx / 2))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2-Qubit entangling circuit" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Least-Sq Fitter\n", + "fit time: 0.260530948638916\n", + "fit fidelity: 0.9846595786580632\n", + "\n", + "CVXOPT Fitter\n", + "fit time: 1.4202570915222168\n", + "fit fidelity: 0.9998839644883732\n" + ] + } + ], + "source": [ + "# Bell-state entangling circuit\n", + "q = QuantumRegister(2)\n", + "circ = QuantumCircuit(q)\n", + "circ.h(q[0])\n", + "circ.cx(q[0], q[1])\n", + "\n", + "# Run circuit on unitary simulator to find ideal unitary\n", + "job = qiskit.execute(circ, Aer.get_backend('unitary_simulator'))\n", + "ideal_unitary = job.result().get_unitary(circ)\n", + "# convert to Choi-matrix in column-major convention\n", + "choi_ideal = outer(ideal_unitary.ravel(order='F'))\n", + "\n", + "# Generate process tomography circuits and run on qasm simulator\n", + "qpt_circs = process_tomography_circuits(circ, q)\n", + "job = qiskit.execute(qpt_circs, Aer.get_backend('qasm_simulator'), shots=2000)\n", + "\n", + "# Extract tomography data so that counts are indexed by measurement configuration\n", + "qpt_tomo = ProcessTomographyFitter(job.result(), qpt_circs)\n", + "\n", + "t = time.time()\n", + "choi_lstsq = qpt_tomo.fit(method='lstsq')\n", + "print('Least-Sq Fitter')\n", + "print('fit time:', time.time() - t)\n", + "print('fit fidelity:', state_fidelity(choi_ideal / 4, choi_lstsq / 4))\n", + "\n", + "t = time.time()\n", + "choi_cvx = qpt_tomo.fit(method='cvx')\n", + "print('\\nCVXOPT Fitter')\n", + "print('fit time:', time.time() - t)\n", + "print('fit fidelity:', state_fidelity(choi_ideal / 4, choi_cvx / 4))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using SIC-POVM preparation basis" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{(('S0',), ('X',)): {'0': 2000},\n", + " (('S0',), ('Y',)): {'1': 1000, '0': 1000},\n", + " (('S0',), ('Z',)): {'1': 984, '0': 1016},\n", + " (('S1',), ('X',)): {'1': 1333, '0': 667},\n", + " (('S1',), ('Y',)): {'1': 994, '0': 1006},\n", + " (('S1',), ('Z',)): {'1': 58, '0': 1942},\n", + " (('S2',), ('X',)): {'1': 1322, '0': 678},\n", + " (('S2',), ('Y',)): {'1': 196, '0': 1804},\n", + " (('S2',), ('Z',)): {'1': 1466, '0': 534},\n", + " (('S3',), ('X',)): {'1': 1344, '0': 656},\n", + " (('S3',), ('Y',)): {'1': 1849, '0': 151},\n", + " (('S3',), ('Z',)): {'1': 1496, '0': 504}}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Process tomography of a Hadamard gate\n", + "q = QuantumRegister(1)\n", + "circ = QuantumCircuit(q)\n", + "circ.h(q[0])\n", + "\n", + "# Run circuit on unitary simulator to find ideal unitary\n", + "job = qiskit.execute(circ, Aer.get_backend('unitary_simulator'))\n", + "ideal_unitary = job.result().get_unitary(circ)\n", + "# convert to Choi-matrix in column-major convention\n", + "choi_ideal = outer(ideal_unitary.ravel(order='F'))\n", + "\n", + "# Generate process tomography circuits and run on qasm simulator\n", + "qpt_circs = process_tomography_circuits(circ, q, prep_labels='SIC', prep_basis='SIC')\n", + "job = qiskit.execute(qpt_circs, Aer.get_backend('qasm_simulator'), shots=2000)\n", + "\n", + "# Extract tomography data so that counts are indexed by measurement configuration\n", + "qpt_tomo = ProcessTomographyFitter(job.result(), qpt_circs, prep_basis='SIC')\n", + "qpt_tomo.data" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Least-Sq Fitter\n", + "fit time: 0.006691694259643555\n", + "fit fidelity: 0.995827952649389\n", + "\n", + "CVXOPT Fitter\n", + "fit time: 0.04699277877807617\n", + "fit fidelity: 0.9993767827558493\n" + ] + } + ], + "source": [ + "# MLE Least-Squares tomographic reconstruction\n", + "t = time.time()\n", + "choi_lstsq = qpt_tomo.fit(method='lstsq')\n", + "print('Least-Sq Fitter')\n", + "print('fit time:', time.time() - t)\n", + "print('fit fidelity:', state_fidelity(choi_ideal / 2, choi_lstsq / 2))\n", + "\n", + "# CVXOPT Semidefinite-Program tomographic reconstruction\n", + "t = time.time()\n", + "choi_cvx = qpt_tomo.fit(method='cvx')\n", + "\n", + "print('\\nCVXOPT Fitter')\n", + "print('fit time:', time.time() - t)\n", + "print('fit fidelity:', state_fidelity(choi_ideal / 2, choi_cvx / 2))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/qiskit/ignis/process_tomography.ipynb b/qiskit/ignis/process_tomography.ipynb deleted file mode 100644 index 7c58261ca..000000000 --- a/qiskit/ignis/process_tomography.ipynb +++ /dev/null @@ -1,772 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## _*Quantum Process Tomography*_ \n", - "\n", - "The latest version of this notebook is available on https://github.com/QISKit/qiskit-tutorial.\n", - "\n", - "***\n", - "### Contributors\n", - "Christopher J. Wood$^{1}$\n", - "\n", - "1. IBM T.J. Watson Research Center, Yorktown Heights, NY, USA" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Introduction\n", - "\n", - "In this notebook we demonstrate how to design and run experiments to perform quantum process tomography using Qiskit, and demonstrate this using both simulators, and the IBM Q Experience. This is implemented similarly to the [quantum state tomography](state_tomography.ipynb) example notebook.\n", - "\n", - "The functions used in this notebook to implement state tomography may be imported from the **`qiskit.tools.qcvv.tomography`** module.\n", - "\n", - "#### Reconstruction Methods\n", - "\n", - "State reconstruction may be done using a variety of methods. In this notebook, we implement two simple cases: \n", - "* Least squares fitting \n", - "* Fast maximum likelihood (*see [J Smolin, JM Gambetta, G Smith, Phys. Rev. Lett. 108, 070502](https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.108.070502), open access: [arXiv:1106.5458](https://arxiv.org/abs/1106.5458)*).\n", - "\n", - "Note that while the fast maximum likelihood method constrains the resulting channel to be positive, it does not enforce complete positivity of the final estimate." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:00:53.663060Z", - "start_time": "2018-12-18T15:00:52.158532Z" - } - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "import time\n", - "\n", - "# importing Qiskit\n", - "from qiskit import BasicAer, IBMQ\n", - "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit\n", - "from qiskit import execute\n", - "\n", - "# import backend utilities\n", - "from qiskit.providers import JobStatus\n", - "\n", - "# import tomography library\n", - "import qiskit.tools.qcvv.tomography as tomo\n", - "\n", - "# useful additional packages \n", - "from qiskit.tools.visualization import plot_state_city\n", - "from qiskit.tools.qi.qi import *\n", - "from qiskit.tools.jupyter import *\n", - "from qiskit.quantum_info import state_fidelity\n", - "from qiskit.providers.ibmq import least_busy" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:00:54.500832Z", - "start_time": "2018-12-18T15:00:53.665650Z" - } - }, - "outputs": [], - "source": [ - "# Load saved IBMQ accounts\n", - "IBMQ.load_accounts()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Building process tomography measurement circuits\n", - "\n", - "To perform quantum process tomography of an n-qubit quantum operation, we must construct a family of circuits that implements a tomographically complete set of preparations and measurements of each of those qubits. The **`tools.qcvv.tomography`** module contains functions to generate these measurement circuits for general n-qubit systems. \n", - "\n", - "#### Specifying the qubits, preparation basis, and measurement basis\n", - "\n", - "A process tomography experiment is specified by a **`process_tomography_set`** object: \n", - "```python\n", - "tomo_set = tomo.process_tomography_set(qubits, meas_basis, prep_basis)\n", - "```\n", - "where\n", - "- `qubits` is a list of the qubit indexes within a register (eg. [0, 1] for the first 2 qubits)\n", - "- `meas_basis` is the basis to measure each qubit in. The default value is `meas_basis='Pauli'`.\n", - "- `prep_basis` is the basis to measure each qubit in. The default value is `prep_basis='SIC'`.\n", - "\n", - "This contains information about which qubits we are constructing the quantum operation for, and what bases to prepare and measure these qubits in. The default preparation basis corresponds to preparing each qubit in each of the projectors of a symmetric informationally complete positive operator valued measurement (SIC-POVM):\n", - "\n", - "$$\n", - "\\begin{aligned}\n", - "\\left|S_0\\right\\rangle & = \\left|0\\right\\rangle \\\\\n", - "\\left|S_1\\right\\rangle & = \\frac{1}{\\sqrt{3}}\\left|0\\right\\rangle \n", - " + \\sqrt{\\frac{2}{3}}\\left|1\\right\\rangle \\\\\n", - "\\left|S_2\\right\\rangle & = \\frac{1}{\\sqrt{3}}\\left|0\\right\\rangle \n", - " + e^{-2i \\pi/3}\\sqrt{\\frac{2}{3}}\\left|1\\right\\rangle \\\\\n", - "\\left|S_3\\right\\rangle & = \\frac{1}{\\sqrt{3}}\\left|0\\right\\rangle \n", - " + e^{2i \\pi/3}\\sqrt{\\frac{2}{3}}\\left|1\\right\\rangle.\n", - "\\end{aligned}\n", - "$$\n", - "\n", - "The default measurement basis corresponds to performing quantum state tomography on each input state by measuring each qubit in the $X$, $Y$, and $Z$ Pauli bases. \n", - "\n", - "For $n$-qubits this gives a total of $4^n3^{n}$ circuits that must be run. Hence it is not recommended to perform process tomography for more than 2 or 3 qubits.\n", - "\n", - "#### Adding preparation and measurement circuits\n", - "\n", - "Once a process tomography set has been defined, the function to append the tomography circuits is:\n", - "```python\n", - "tomo_circuits = tomo.create_tomography_circuits(circuit, qr, cr, process_tomo_set)\n", - "```\n", - "where \n", - "- `'circuit'` is the preparation quantum circuit. \n", - "- `qr` is the quantum register to be measured.\n", - "- `cr` is the classical register to store the measurement results. \n", - "- `process_tomo_set` is a `process_tomography_set`.\n", - "\n", - "The function output, `tomo_circuits`, is a list of tomography circuits which is used to execute the tomography experiments. The prepared and measured qubits will be `qr[j]`, with corresponding measurement outcomes stored in classical bits `cr[j]`, where `j` corresponds to each qubit in the process tomography set.\n", - "\n", - "## Extracting process tomography measurement data\n", - "\n", - "After building the process tomography circuits and executing them on an available backend we must process the output results. This is done by the function\n", - "```python\n", - "tomo_data = tomo.tomography_data(results, 'name', process_tomo_set)\n", - "```\n", - "where\n", - "- `results` is the Result object returned from execution of `process_tomo_set` circuits.\n", - "- `name` is the name of the original circuit being measured via process tomography.\n", - "- `process_tomo_set` is the tomography set used for generation of tomography data.\n", - "\n", - "This returns a dictionary that stores the preparation basis, measurement basis, and measured counts, along with preparation and measurement basis configuration corresponding to each outcome.\n", - "\n", - "## Performing tomographic reconstruction\n", - "\n", - "Finally, we may perform the fitting of the tomographic data to reconstruct a description of the process matrix. This is done by the function\n", - "```python\n", - "tomo.fit_tomography_data(tomo_data, method)\n", - "```\n", - "where \n", - "- `tomo_data` is the data returned from `process_tomography_data`.\n", - "- `method` is the reconstruction method to use. The default value is `method='wizard'`.\n", - "\n", - "The return process matrix is a Choi matrix in the column vectorization convention. For a quantum process $\\mathcal E$ this is defined as the matrix\n", - "$J(\\mathcal E) = \\sum_{i,j} |i\\rangle\\langle j | \\otimes \\mathcal{E}(|i\\rangle\\langle j |)$. By default, the trace of the returned Choi matrix will be 1, but this can be changed with optional arguments. We also note that the default reconstruction method constrains the process matrix to be a completely positive (CP) map (by fitting a positive-semidefinite Choi matrix); however, it *does not* constrain it to be a trace-preserving (TP) map.\n", - "\n", - "\n", - "### Reconstruction Methods\n", - "Currently only two methods are available.\n", - "- `method='wizard'` (default) uses the fast maximum likelihood reconstruction from [1] to return a positive semidefinite process matrix.\n", - "- `method='leastsq'` does not constrain the returned matrix to be positive-semidefinite.\n", - "\n", - "Both of these methods are the same as for performing state tomography, as process tomography is implemented as state tomographic reconstruction of the Choi matrix.\n", - "\n", - "# Process Tomography Examples\n", - "\n", - "We now present two examples of 1- and 2-qubit quantum process tomography. We will consider reconstruction of a Hadamard gate and a CNOT gate.\n", - "\n", - "### Setting up the Quantum Program\n", - "\n", - "First we construct a quantum program with two circuits, one containing a single Hadamard gate on qubit 0, and one containing a single CNOT gate between qubits 0 and 1." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:00:54.509951Z", - "start_time": "2018-12-18T15:00:54.502586Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Creating registers\n", - "qr = QuantumRegister(2)\n", - "cr = ClassicalRegister(2)\n", - "\n", - "# hadamard on qubit-1 only\n", - "had = QuantumCircuit(qr, cr, name='had')\n", - "had.h(qr[1])\n", - "\n", - "# CNOT gate with qubit 1 control, qubit 0 target (target for ibmqx4)\n", - "cnot = QuantumCircuit(qr, cr, name='cnot')\n", - "cnot.cx(qr[1], qr[0])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Process tomography of a Hadamard gate\n", - "\n", - "We will first demonstrate a process tomography experiment for a single-qubit H gate.\n", - "\n", - "### Visualization of the ideal process\n", - "\n", - "The plots below show the Choi matrix for the Hadamard gate" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:00:54.823646Z", - "start_time": "2018-12-18T15:00:54.513162Z" - } - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
        " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "U_had = np.array([[1,1],[1,-1]])/np.sqrt(2)\n", - "# compute Choi-matrix from unitary\n", - "had_choi = outer(vectorize(U_had))\n", - "plot_state_city(had_choi)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Simulation of process tomography experiment\n", - "\n", - "Next, we build the process tomography circuits and execute them on the simulator backend" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:00:54.837652Z", - "start_time": "2018-12-18T15:00:54.826482Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tomography circuit names for \"had\" circuit:\n", - "had_prep_S0(1)_meas_X(1)\n", - "had_prep_S0(1)_meas_Y(1)\n", - "had_prep_S0(1)_meas_Z(1)\n", - "had_prep_S1(1)_meas_X(1)\n", - "had_prep_S1(1)_meas_Y(1)\n", - "had_prep_S1(1)_meas_Z(1)\n", - "had_prep_S2(1)_meas_X(1)\n", - "had_prep_S2(1)_meas_Y(1)\n", - "had_prep_S2(1)_meas_Z(1)\n", - "had_prep_S3(1)_meas_X(1)\n", - "had_prep_S3(1)_meas_Y(1)\n", - "had_prep_S3(1)_meas_Z(1)\n" - ] - } - ], - "source": [ - "# process tomography set for a quantum operation on qubit 1\n", - "had_tomo_set = tomo.process_tomography_set([1])\n", - "\n", - "# Generate process tomography preparation and measurement circuits\n", - "had_tomo_circuits = tomo.create_tomography_circuits(had, qr, cr, had_tomo_set)\n", - "print('Tomography circuit names for \"had\" circuit:')\n", - "for circuit in had_tomo_circuits:\n", - " print(circuit.name)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:00:55.064760Z", - "start_time": "2018-12-18T15:00:54.839129Z" - } - }, - "outputs": [], - "source": [ - "backend = BasicAer.get_backend('qasm_simulator')\n", - "shots = 1000\n", - "had_tomo_job = execute(had_tomo_circuits, shots=shots, backend=backend)\n", - "had_tomo_results = had_tomo_job.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next we fit the tomographic data" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:00:55.398652Z", - "start_time": "2018-12-18T15:00:55.066626Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Process Fidelity = 0.25000000000000006\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
        " - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "had_process_data = tomo.tomography_data(had_tomo_results, 'had', had_tomo_set)\n", - "had_choi_fit = tomo.fit_tomography_data(had_process_data, options={'trace':2})\n", - "print('Process Fidelity = ', state_fidelity(vectorize(U_had)/2, had_choi_fit))\n", - "plot_state_city(had_choi_fit)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Running process tomography on a real device\n", - "\n", - "Now we run tomography on the IBM Quantum Experience device." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:00:58.791973Z", - "start_time": "2018-12-18T15:00:55.400660Z" - } - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "6f6e977b06404184a475ef7c29c99a6b", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "VBox(children=(HTML(value=\"

        Job Status : job is being initialized

        \"),))" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%qiskit_job_status\n", - "\n", - "# Use the IBM Quantum Experience\n", - "backend = least_busy(IBMQ.backends(simulator=False))\n", - "\n", - "# Take 500 shots for each measurement basis\n", - "# Note: reduce this number for larger number of qubits\n", - "shots = 500\n", - "\n", - "# set max credits\n", - "max_credits = 8\n", - "\n", - "# Run the experiment\n", - "had_tomo_job_device = execute(had_tomo_circuits, backend=backend, shots=shots, max_credits=max_credits)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can monitor the status of your job, and ask for the result.\n", - "\n", - "Note: a call to job.result() blocks until the job execution is done and result is available." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:02:23.082571Z", - "start_time": "2018-12-18T15:00:58.794145Z" - } - }, - "outputs": [], - "source": [ - "# get result when it is done\n", - "had_tomo_results = had_tomo_job_device.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As before, we can extract the tomography data and reconstruct the choi matrix." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:02:23.403626Z", - "start_time": "2018-12-18T15:02:23.084223Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Process Fidelity = 0.9495897130692504\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
        " - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "had_process_data = tomo.tomography_data(had_tomo_results, had.name, had_tomo_set)\n", - "had_choi_fit = tomo.fit_tomography_data(had_process_data, options={'trace':2})\n", - "print('Process Fidelity = ', state_fidelity(vectorize(U_had)/2, had_choi_fit))\n", - "plot_state_city(had_choi_fit)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Process tomography of a CNOT gate\n", - "\n", - "We will demonstrate a process tomography experiment for a CNOT gate.\n", - "\n", - "### Visualization of the ideal process" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:02:25.822661Z", - "start_time": "2018-12-18T15:02:23.405629Z" - } - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
        " - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#unitary matrix for CNOT with qubit 1 as control and qubit 0 as target.\n", - "U_cnot = np.array([[1,0,0,0],[0,1,0,0],[0,0,0,1],[0,0,1,0]])\n", - "# compute Choi-matrix from unitary\n", - "cnot_choi = outer(vectorize(U_cnot))\n", - "plot_state_city(cnot_choi)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Simulation of process tomography experiment\n", - "\n", - "Our test circuit simply consists of a quantum program of two qubits with a single gate, the CNOT gate. Note that we must include a two-qubit register to record measurement outcomes.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:02:25.915574Z", - "start_time": "2018-12-18T15:02:25.823940Z" - } - }, - "outputs": [], - "source": [ - "# process tomography set for quantum operation on qubits 0 and 1\n", - "cnot_tomo_set = tomo.process_tomography_set([1, 0])\n", - "\n", - "# Generate process tomography circuits\n", - "cnot_tomo_circuits = tomo.create_tomography_circuits(cnot, qr, cr, cnot_tomo_set)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:02:46.469860Z", - "start_time": "2018-12-18T15:02:25.917414Z" - }, - "scrolled": true - }, - "outputs": [], - "source": [ - "backend = BasicAer.get_backend('qasm_simulator')\n", - "shots = 1000\n", - "cnot_tomo_job = execute(cnot_tomo_circuits, backend=backend, shots=shots)\n", - "cnot_tomo_results = cnot_tomo_job.result()\n", - "cnot_process_data = tomo.tomography_data(cnot_tomo_results, cnot.name, cnot_tomo_set)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we fit the data and plot the results" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:02:49.153252Z", - "start_time": "2018-12-18T15:02:46.471797Z" - }, - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Process Fidelity = 0.9875949545608183\n" - ] - }, - { - "data": { - "image/png": "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DjEZ+Zj1JSTkJIjDKE+2D1eJqOABHo6Cx26389prr/H222+L3euu51KlUpGfnz/k+zsTKioq2L9/P7t373YbZB0/fpysrCxWrVqFRqPhySefpKioiMzMTJ599lnGjh1LUlKSOEiRSCS0tbXx7bffkpiYyIUXXsg777xDUVERW7duRSqVYrFYCAsLY9KkSdTU1LBgwQLefvttxo0bx65du3j77bdJSUlh8eLFIpETzt3333+Pw+EQyVBeXh7FxcXs3LmT6upqLr/8clHO6d1F9uK/AV5u8Z8NpVLJJ5980u92iURCVFQU8+fPFxsMhAvagoICvvrqK1avXo1eryc5OZnm5mb8/f157733RtSU4XQ6aWxspL6+nrS0NKKioob9OeeahxAaGkpZWRn+/v5ER0ej1+vFDAmFQuEWjHmm9jZXy+1QQjr7btpA73BeGGpUV1ej1WpRqVRivpmwaz5cuAaljh071m14IFg5+1pgNBoNTU1NokLCte3DZrOJge55ef1zr4YDm80mKl/y8/PFTTObzSZaYIaT6zEYWlpauPfeewkODua7777rNxCKjo5m3rx5Z30srhiIVxw9epTk5GQuv/xyXnrpJVatWsUbb7xBTU0Nzz77LLfffjunTp0aFreQSCQit5g+fTp79uzh7bffZuLEifz0009s3LiR8PBwUlJSzsgrhNYYL7f418JrIfkFUFRUxIUXXkh2djbd3d1UV1czf/581q9fT0JCAkuWLGHfvn3MmjWL++67j8DAQNavX89HH33E/v373RKIhVovgRhs3bqVTZs2ER8fzwMPPCBelAj/IK47IKWlpUyfPp2rr74ai8VCV1cXX375JevXr+f3v//9qE1M/xexf/9+7rrrLtLS0khKSqKwsJDOzk4yMzPFkNDJkycPaQJus9k4deoUarWarKysYXWle4JQ6zVQ88lA6eSBgYGoVCoxjNJsNmMwGKitrcVkMpGWltZPXdKtc/LqJybUai1OpxSJtP+xOhwOelqOkxIl4aZfT6CttZGYmBjCw8PR6/VotVrau4x8WxyEpqeLyBAn2cn+TMuNJijAs5rlr/vGoLN4DvG0GNUU7dngdptEIu93Hvz8fIkIDyE2KpgZkwOxG9tQq9XI5XJRmhkYGIi/v7/bMKGpVcMHn5VS19SJVm/G6ZQhlcmRIMHhtKPwDSFl3GXkpkqY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\n", - "text/plain": [ - "
        " - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cnot_choi_fit = tomo.fit_tomography_data(cnot_process_data, options={'trace':4})\n", - "print('Process Fidelity = ', state_fidelity(vectorize(U_cnot)/2, cnot_choi_fit/4))\n", - "plot_state_city(cnot_choi_fit)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Running process tomography on a real device\n", - "\n", - "We now demonstrate running tomography on a real device. Note that 2-qubit process tomography requires evaluation of 144 circuits, so circuits may need to be submitted to the device in batches, and will require many credits for evaluation on the IBM Q Experience.\n", - "\n", - "We will break our submission up into 4 batches of 36 circuits for submission" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:02:56.618776Z", - "start_time": "2018-12-18T15:02:49.154656Z" - } - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "13e7ecaa39a349e68a7ecbe52ac9ee54", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "VBox(children=(HTML(value=\"

        Job Status [0]: job is queued

        \"), HTML(value=\"

        " - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cnot_process_data = tomo.tomography_data(cnot_tomo_results, 'cnot', cnot_tomo_set)\n", - "cnot_choi_fit = tomo.fit_tomography_data(cnot_process_data, options={'trace':4})\n", - "print('Process Fidelity = ', state_fidelity(vectorize(U_cnot)/2, cnot_choi_fit/4))\n", - "plot_state_city(cnot_choi_fit)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "anaconda-cloud": {}, - "hide_input": false, - "kernelspec": { - "display_name": "Python 3", - "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.7.0" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/qiskit/ignis/randomized_benchmarking.ipynb b/qiskit/ignis/randomized_benchmarking.ipynb new file mode 100644 index 000000000..99f993606 --- /dev/null +++ b/qiskit/ignis/randomized_benchmarking.ipynb @@ -0,0 +1,803 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\\\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Randomized Benchmarking\n", + "---\n", + "\n", + "* **Last Updated:** March 1, 2019\n", + "* **Requires:** qiskit-terra 0.7, qiskit-ignis 0.1, qiskit-aer 0.1\n", + "\n", + "\n", + "## Introduction\n", + "\n", + "**Randomization benchmarking (RB)** is a well-known technique to measure average gate performance by running sequences of random Clifford gates that should return the qubits to the initial state. \n", + "Qiskit Ignis has tools to generate one- and two-qubit Clifford gate sequences simultaneously. \n", + "\n", + "This notebook gives an example for how to use the ``ignis.verification.randomized_benchmarking`` module. This particular example shows how to run 2-qubit randomized benchmarking (RB) simulataneous with 1-qubit RB. There are also examples on how to use some of the companion functions for predicting RB fidelity." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#Import general libraries (needed for functions)\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from IPython import display\n", + "\n", + "#Import Qiskit classes classes\n", + "import qiskit\n", + "from qiskit.providers.aer.noise import NoiseModel\n", + "from qiskit.providers.aer.noise.errors.standard_errors import depolarizing_error, thermal_relaxation_error\n", + "\n", + "#Import the RB Functions\n", + "import qiskit.ignis.verification.randomized_benchmarking as rb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Select the Parameters of the RB Run\n", + "\n", + "First, wee need to choose the following parameters:\n", + "\n", + "- **nseeds:** The number of seeds. For each seed there you will get a separate list of output circuits in rb_circs.\n", + "- **length_vector:** The length vector of Clifford lengths. Must be in ascending order. RB sequences of increasing length grow on top of the previous sequences.\n", + "- **rb_pattern:** A list of the form [[i,j],[k],...] which will make simultaneous RB sequences where Qi,Qj are a 2-qubit RB sequence and Qk is a 1-qubit sequence, etc. The number of qubits is the sum of the entries. For 'regular' RB the qubit_pattern is just [[0]],[[0,1]].\n", + "- **length_multiplier:** If this is an array it scales each rb_sequence by the multiplier.\n", + "\n", + "In this example we have 3 qubits Q0,Q1,Q2. \n", + "We are running 2Q RB (on qubits Q0,Q2) and 1Q RB (on qubit Q1) simultaneously, \n", + "where there are twice as many 1Q Clifford gates." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#Number of qubits\n", + "nQ = 3\n", + "#There are 3 qubits: Q0,Q1,Q2.\n", + "#Number of seeds (random sequences)\n", + "nseeds = 5\n", + "#Number of Cliffords in the sequence (start, stop, steps)\n", + "nCliffs = np.arange(1,200,20)\n", + "#2Q RB on Q0,Q2 and 1Q RB on Q1\n", + "rb_pattern = [[0,2],[1]]\n", + "#Do three times as many 1Q Cliffords\n", + "length_multiplier = [1,3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generate RB sequences\n", + "\n", + "We generate RB sequences. We start with a small example (so it doesn't take too long to run).\n", + "\n", + "In order to generate the RB sequences **rb_circs**, which is a list of lists of quantum circuits, \n", + "we run the function **rb.randomized_benchmarking_seq**.\n", + "\n", + "This function returns:\n", + "\n", + "- **rb_circs:** A list of lists of circuits for the rb sequences (separate list for each seed).\n", + "- **xdata:** The Clifford lengths (with multiplier if applicable).\n", + "- **rb_opts_dict:** Option dictionary back out with default options appended." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "rb_opts = {}\n", + "rb_opts['length_vector'] = nCliffs\n", + "rb_opts['nseeds'] = nseeds\n", + "rb_opts['rb_pattern'] = rb_pattern\n", + "rb_opts['length_multiplier'] = length_multiplier\n", + "rb_circs, xdata = rb.randomized_benchmarking_seq(**rb_opts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As an example, we print the circuit corresponding to the first RB sequence" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌─────┐»\n", + "qr_0: |0>───────────────────────────────────────────────────────────┤ Sdg ├»\n", + " ░ ┌───┐┌───┐ ░ ┌───┐┌─────┐┌───┐ ░ ┌───┐┌───┐┌───┐┌─┐└─────┘»\n", + "qr_1: |0>──────░─┤ H ├┤ X ├─░─┤ H ├┤ Sdg ├┤ H ├─░─┤ X ├┤ H ├┤ S ├┤M├───────»\n", + " ┌───┐ ░ └───┘└───┘ ░ └───┘└─────┘└───┘ ░ └───┘└───┘└───┘└╥┘ »\n", + "qr_2: |0>┤ H ├────────────────────────────────────────────────────╫────────»\n", + " └───┘ ║ »\n", + " cr_0: 0 ═════════════════════════════════════════════════════════╬════════»\n", + " ║ »\n", + " cr_1: 0 ═════════════════════════════════════════════════════════╩════════»\n", + " »\n", + " cr_2: 0 ══════════════════════════════════════════════════════════════════»\n", + " »\n", + "« ┌───┐ ┌───┐ ┌───┐ ░ ┌───┐ ┌───┐ ┌───┐»\n", + "«qr_0: ┤ H ├──■──┤ X ├──■───────┤ Y ├─░─┤ Y ├───────■──┤ X ├──■──────────┤ H ├»\n", + "« └───┘ │ └─┬─┘ │ └───┘ ░ └───┘ │ └─┬─┘ │ └───┘»\n", + "«qr_1: ───────┼────┼────┼───────────────────────────┼────┼────┼───────────────»\n", + "« ┌─┴─┐ │ ┌─┴─┐┌───┐ ░ ┌───┐┌─┴─┐ │ ┌─┴─┐┌───┐┌─┐ »\n", + "«qr_2: ─────┤ X ├──■──┤ X ├┤ Z ├──────░──────┤ Z ├┤ X ├──■──┤ X ├┤ H ├┤M├─────»\n", + "« └───┘ └───┘└───┘ ░ └───┘└───┘ └───┘└───┘└╥┘ »\n", + "«cr_0: ════════════════════════════════════════════════════════════════╬══════»\n", + "« ║ »\n", + "«cr_1: ════════════════════════════════════════════════════════════════╬══════»\n", + "« ║ »\n", + "«cr_2: ════════════════════════════════════════════════════════════════╩══════»\n", + "« »\n", + "« ┌───┐┌─┐\n", + "«qr_0: ┤ S ├┤M├\n", + "« └───┘└╥┘\n", + "«qr_1: ──────╫─\n", + "« ║ \n", + "«qr_2: ──────╫─\n", + "« ║ \n", + "«cr_0: ══════╩═\n", + "« \n", + "«cr_1: ════════\n", + "« \n", + "«cr_2: ════════\n", + "« \n" + ] + } + ], + "source": [ + "print(rb_circs[0][0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Look at the Unitary for 1 Circuit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Unitary representing each RB circuit should be the identity (with a global phase),\n", + "since we multipy random Clifford elements, including a computed reversal gate. We simulate this using Aer unitary simulator." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "#Create a new circuit without the measurement\n", + "qc = qiskit.QuantumCircuit(*rb_circs[0][-1].qregs,*rb_circs[0][-1].cregs)\n", + "for i in rb_circs[0][-1][0:-nQ]:\n", + " qc._attach(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 0.+1.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", + " [ 0.-0.j 0.+1.j 0.+0.j 0.+0.j 0.-0.j 0.+0.j 0.+0.j 0.+0.j]\n", + " [ 0.+0.j 0.+0.j 0.+1.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", + " [ 0.+0.j 0.+0.j 0.-0.j 0.+1.j 0.+0.j 0.+0.j 0.-0.j 0.+0.j]\n", + " [ 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+1.j 0.+0.j 0.+0.j 0.+0.j]\n", + " [ 0.+0.j -0.-0.j 0.+0.j 0.+0.j 0.+0.j 0.+1.j 0.+0.j 0.+0.j]\n", + " [ 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+1.j 0.+0.j]\n", + " [ 0.+0.j 0.+0.j 0.+0.j 0.-0.j 0.+0.j 0.+0.j 0.+0.j 0.+1.j]]\n" + ] + } + ], + "source": [ + "#The Unitary is an identity (with a global phase)\n", + "backend = qiskit.Aer.get_backend('unitary_simulator')\n", + "basis_gates = ['u1','u2','u3','cx'] # use U,CX for now\n", + "basis_gates_str = ','.join(basis_gates)\n", + "job = qiskit.execute(qc, backend=backend, basis_gates=basis_gates_str)\n", + "print(np.around(job.result().get_unitary(),3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define the noise model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We define a noise model for the simulator. To simulate decay, we add depolarizing error probabilities to the CNOT and U gates." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "noise_model = NoiseModel()\n", + "p1Q = 0.002\n", + "p2Q = 0.01\n", + "noise_model.add_all_qubit_quantum_error(depolarizing_error(p1Q, 1), 'u2')\n", + "noise_model.add_all_qubit_quantum_error(depolarizing_error(2*p1Q, 1), 'u3')\n", + "noise_model.add_all_qubit_quantum_error(depolarizing_error(p2Q, 2), 'cx')\n", + "#noise_model = None" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Execute on Aer simulator\n", + "\n", + "We can execute the RB sequences either using Qiskit Aer Simulator (with some noise model) or using IBMQ provider, \n", + "and obtain a list of results **result_list**." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Compiling seed 0\n", + "Simulating seed 0\n", + "Compiling seed 1\n", + "Simulating seed 1\n", + "Compiling seed 2\n", + "Simulating seed 2\n", + "Compiling seed 3\n", + "Simulating seed 3\n", + "Compiling seed 4\n", + "Simulating seed 4\n", + "Finished Simulating\n" + ] + } + ], + "source": [ + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "basis_gates = ['u1','u2','u3','cx'] # use U,CX for now\n", + "basis_gates_str = ','.join(basis_gates)\n", + "shots = 200\n", + "result_list = []\n", + "qobj_list = []\n", + "import time\n", + "for rb_seed,rb_circ_seed in enumerate(rb_circs):\n", + " print('Compiling seed %d'%rb_seed)\n", + " qobj = qiskit.compile(rb_circ_seed, backend=backend, basis_gates=basis_gates_str, shots=shots)\n", + " print('Simulating seed %d'%rb_seed)\n", + " job = backend.run(qobj, noise_model=noise_model, backend_options={'max_parallel_experiments': 0})\n", + " result_list.append(job.result())\n", + " qobj_list.append(qobj) \n", + "print(\"Finished Simulating\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get statistics about the survival probabilities\n", + "\n", + "The results in **results_list** should fit to an exponentially decaying function $A \\cdot \\alpha ^ m + B$, where $m$ is the Clifford length.\n", + "\n", + "From $\\alpha$ we can calculate the **Error per Clifford (EPC)**:\n", + "$$ EPC = \\frac{2^n-1}{2^n} (1-\\alpha)$$\n", + "(where $n=nQ$ is the number of qubits)." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "#Create an RBFitter object with 1 seed of data\n", + "rbfit = rb.fitters.RBFitter(result_list[0], xdata, rb_opts['rb_pattern'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plot After 1 Seed" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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wYL06NGDEycuz6qxd+9el79zS5cudZTp06cPmzdv5scff8yRmFR6+fLBzJlWvpw40RpfjnPn4LfffB3adc0bORKssRRq1apFaGgoZcuW5a00AyC5+18fFhbmVM5Vjnz44YepWLEiISEhFC1alLvuuov4+HiPr3nevHkYY2jXrp3H+2QksxyZ2po1awgICKBGjRpO6/NSjkxJSeHOO++kTJkyBAcHU7JkSe6//37++uuvdGXnzJlDrVq1CA4OJjIykgceeMCxLS4ujlatWlG8eHHH7++QIUOuaBodu8xy5JEjR2jTpg1RUVEEBQVRunRp+vfvz3///ed0HFc5MrW+fftijEn3mcmVCxcuMHz4cMqXL09QUBBlypRhwoQJV3ahZJ4jPfnMe8cdd+Dv78/cuXMzP6FcheHAfbXk1FQddtu2WaOQFy4skpR0RYfOcfXr1xdAfvrppyzvC8iCBQs8Lv/DDz8IIEeOHMnyubJqz549EhoaKo8//rjExcXJ1KlTJSAgQBYuXOh2n23btkm+fPlk+PDhsnv3bomNjZUqVarIM8884yhz6tQpOXTokNPSokULadmypdO5g4KCZNCgQbJ7927ZunWrtG7dWipWrOh0vtatW8vLL7/stG7cuHHy2muvybhx4wSQxMTETK917ty5ki9fPpk1a5YkJibKypUrpVy5cvLQQw95+G65dunSJalRo4a0aNFCNm/eLMuXL5eSJUvK448/7iizadMmmTdvnmzfvl327Nkjs2fPltDQUJk4caLTse6991559tlnMzxfz5495bbbbkv3/v7777+OMmXLlpXhw4fLoUOHZPfu3TJ06FAB5JNPPhERkaSkJGnZsqUULFhQ3nnnHdmyZYvs2bNH5s+fLw0bNkz3t5mRxMREGTBggHz00UfSuHFj6dmzp0f7LV68WCIiImTixImyc+dOiYuLkzlz5ji2nzp1SgoXLiw9evSQ+Ph4iYuLk+7du0tERIScPHnSUe6pp56SmJgY+fzzzyUhIUG2bNki33zzjcfxu9OvXz8pWbKkLF++XDZv3iwtWrSQm266SS5duiQiIh988IEMGDBAfvjhB0lISJB58+ZJ/vz55dVXX3U6zsMPPyy9e/d2Wjd79mz57rvvJCEhQbZv3y69e/eW8PBw+fvvv93GM3DgQHn99dflp59+kt27d8vIkSPFz89PVq9efcXX2rZtW6lWrZqsW7dO1q1bJ9WqVZN27do5ticmJgogS5cudfqdS0rzj/qZZ56Rjh07ujxH06ZN7cOR3yzXQP66GktOTNXhyqhRIpAiAyLnSnJ0aZHoaJEzZ7J9riv1+eefCyB33nlntvbPizlyyZIl4u/vLxMnTpSEhAT5+uuvpWTJkvLuu+86ypw4cSLd//kKFSrIgw8+6HQ+Vzly8uTJsnr1aklMTJTNmzdL+/btJSoqSi5cuJDpNSckJEipUqWkWbNmcscdd3j6VrnlSY60O3bsmJQvX15uv/12qV69errteSVHJicny7hx42T9+vWyd+9eWbt2rTRu3Fjq16/vVO6dd96REiVKyOzZs2X37t3y66+/Ov1u7t69Wz766CPZtm2b7N27V7744gspVqyYDBo0yOP43cksRx49elTef/992bRpk+zdu1e+++47qVy5stx3331Ox3GVI+0WLFggtWrVkqioKHnrrbcyjalDhw5Sv359Wb58uSQmJsqGDRuy9LNyJ7Mc6clnXhFryr969eqlO358fLw9P+4Uqyrk+wTmrSWnK48iIo2q/SfdmS2H6t0h8vbbV3T8nOSu8vjtt9/KzTffLBEREVKoUCG5/fbbJS4uzqlM6sRo/xA2d+5cadq0qQQFBUnlypVl2bJljvL2xPjdd99JgwYNJCQkROrWrSubN292lDl69Kh06dJFSpUqJcHBwVKtWjX58MMPs3xdgwcPlhtuuMFpXe/evaVRo0Zu93nhhRekVq1aTuu+/PJLCQ4OdvpQn9r+/fvFz89P5s6d61i3YMEC8fPzc/yjERH5/vvvnT4U/PPPP2KMkW3btrk87saNGz2uPPbv31+aN2/utG748OFOCSolJUVGjx4tFSpUkODgYKlRo4bMnj07w+MuWbJEjDGyf/9+x7rZs2dLUFCQ/Pfff27369Chg3Tp0sVp3cyZM6VUqVIZnq9nz56ZJvSyZcum+0cbExPjON/o0aPFGCMbN25Mt29ycnKGcWfkjjvu8CgxXrp0SUqXLi1Tp051W8b+s92zZ49j3Z49ewRwxL1z504JCAhI9zeX1pdffil16tSRoKAgKVeunAwZMiRdxSe1EydOSGBgoFNldv/+/WKMkaVLl7rdb9CgQVKnTh2n6yxYsKB8/vnnGcb333//OSpnWVG/fn15+umnndZ9+OGHUrVqVQkKCpKYmBgZO3asJCcnuz1GXFycALJmzRrHuh9//FEA2blzp4hc/r/l6vcltVWrVkm+fPnkjIuKjFYesyajDzwXLog0vemUHKK49TEDrBqlj2RUedQcaUmbI7t27Sp33323U5kJEyZIdHS0pKSkuDzumjVrBJC1a9c61mWWI+1++eUXp79pdy5cuCANGjSQGTNmuMw13s6RHTp0kJEjR8qIESNcVh7zSo505YsvvhBAzp07JyIix48fl9DQUFm+fHmWjvPUU0+l+/29WjnSXtm1yyhH7t27V6KioiQuLs7lzyutZcuWSYECBTK9qeSNHJmWq8+8IiL79u0TQHbv3u20Pm3lUZutZtGLNT9nDj0osembXNF+9cyZMzz55JP8/PPPxMbGUrBgQdq3b59pk4DBgwczcOBAtm3bRuvWrbnrrrvSNUd44YUXeOONN9iyZQtFihShe/fuiFgj0Z4/f546derw9ddfs2PHDp544gn69u3LypUrHfvPmDEj0yad69ev5/bbb3da16ZNGzZt2sTFixdd7pOUlJRu/q6QkBDOnz/P5s2bXe7zwQcfUKhQIe69917Huvr16xMYGMj06dNJTk7m1KlTzJw5k/r16zs6D69Zs4agoKB0zVey4+abb2bbtm1s2LABsJrRfPnll/zf//2fo8ywYcP44IMPmDhxInFxcbzwwgv07duXb775xu1x169fT9WqVSldurRjXZs2bUhKSnL7fmzdupV169bRokULp/UNGjTgr7/+IiEh4Uou1aXg4GDHz3Tu3Lncdttt1KtXL105Pz8/ChQoAHj2O5Qdmzdv5s8//yRfvnzUqVOHEiVKcPvtt7N161ZHmcqVK1O0aFE++OADkpKSSEpKYtq0aZQpU8Y+7QNffPEFFSpUYOnSpVSoUIFy5crRs2fPdE2ju3fvzuOPP86OHTv48MMPWbhwIUOGDMkwvosXLzr9bZQuXZqqVatm2Lz05MmTFCpUyPH6119/5b///nP5PttduHCBqVOnUqBAAWrVqpXxG5fGqVOnnM43bdo0hgwZwqhRo4iPj+ftt99m9OjRTJo0ye0x1q9fT/78+WnSpIljXdOmTQkLC0t3rffccw/FihWjadOmLvuo1atXj0uXLjlGp1beERgIk+fkZ4T/K5dXvvEGHDzou6Dc0BxpSZsj3ZU5cOAA+/btc3ncadOmUb16dae/VU9y5JkzZ/joo48oU6YM5cqVc1sOYOjQoY7/o654M0dOmjSJw4cPM2zYMLfHyis5Mq1jx44xd+5cGjZs6Pi9Wb58OcnJyRw+fJhq1apRqlQpOnTokGGz3j/++IOlS5c6ffa4Wjny4MGDLFq0yOnc7nLkpUuX6Nq1K8OGDaNqVc8G6P7888+pX78+Y8eOJTo6mpiYGAYOHOjUNcnbOdLO1WdegDJlylC8eHFWrVqV8cXINXD301uLN548/hV3Qs4RdPluaiZ3ya4WT5utnj59Wvz8/OTHH390rMPFXdVXXnnFsT05OVliYmJk6NChInKLKmJgAAAgAElEQVT5rmrquzf2O45//vmn23N37tzZ6dH/okWLpHLlynLgwAG3+8TExMhLL73ktG7VqlUCyMGDB13us2zZMjHGyOzZs+XixYty4MABadasmQDy8ccfpytvf8r05JNPptu2evVqKV68uPj7+4sxRurUqSOHDx92bB83bpyUKVPGbfxZefIoIvLee+9JYGCgBAQECCA9evRw3OU9ffq0BAcHp2sG+MQTT8j//vc/t8d8+OGHpVWrVk7rUlJSxN/fP937UapUKcmXL5/4+fmle99FLj+B+u6779yer2fPnuLv7y9hYWFOy+DBgx1lUt+lu3jxonz00UcCyKRJk0REJCQkRAYOHOj2HHae/A6l5uld1Xnz5gkgZcqUkQULFsimTZukV69eUqBAAaffux07dkhMTIz4+fmJn5+fVKhQQX7//XfH9r59+0pQUJA0aNBAVq1aJatXr5YGDRpIgwYNHHcSmzVrJqPSPJVZvHixhIWFub3DP3fuXPH390+3vVWrVvLII4+43Gfz5s0SFBTk1GRo8eLFYoxxeVfzq6++krCwMDHGSFRUVJabxL/33nuSP39+2bt3r2Nd6dKlZdasWU7lxo0bJ1WrVnV7nFdffVXKly+fbn358uXltddeExGRI0eOyJgxY2T9+vWyceNGefHFF8XPz8/lE4dChQrJ9OnT063XJ49Z40lTq9dfuSTbuPFyvuzVK9vnuxJZabaqOdLKCVOmTJGQkBBZtmyZJCcny++//y5VqlQRQNatW5fumCdOnJCQkBAZP3680/qMcuTEiRMlLCxMAKlcuXK6px2u4i5btqwcP35cRNI/wfNmjvz111+lWLFijpYm7p485pUcaTd48GAJDQ0VQBo1auT0VO3111+XwMBAqVy5snz77bfy008/yR133CFlypRJ1/qjcePGEhQUJIA8/PDDTjnJ2zmyS5cuEhISIoC0a9dOzp4963QeVzlyyJAh0r59e8drT548tmnTRoKCguT//u//ZMOGDbJ06VKJiYmRe++911HGWzkytYw+84qI1K5dW4YNG+a0Tp88XqGoqgXZVPR/l1fMn++7YDyQkJBAt27dqFixIgUKFKB48eKkpKSwf//+DPdr3Lix43s/Pz8aNmxIXFycU5kbb7zR8X1UVBSA44lKcnIyr776KjfeeCNFihQhf/78LFq0yOm8HTp0YOfOnTk+79btt9/OmDFj6N+/P8HBwVSqVMnx9M7PL/2v/NKlS/nzzz95+OGHndb//fff9O7dmwceeICNGzcSGxtLeHg4nTp1cgw6cu7cuXR3Z7Nr1apVvPzyy0yaNIktW7awaNEiYmNjGTFiBGB1LD9//jxt27Ylf/78juX999933OX83//+51hvf/qVFT/++CObNm1i8uTJjB8/ntlpnq6HhIQA1nVnpHnz5mzbts1pGTRokFOZoUOHkj9/fkJCQujfvz+DBg2ib9++AI6785nx1u+Q/ec7dOhQOnbsSN26dZk6dSoFCxZ0jBh47tw5HnroIRo1asSGDRtYu3YttWvX5q677nJMnZOSkkJSUhKzZ8+mefPmNGvWjNmzZ/Pzzz+zceNGwLpD+uqrrzr9TLt168aZM2f4+++/ee2115y2Zfa368rvv//OHXfcwZNPPul0p/HcuXMEBga6/Lto1aoV27ZtY926dbRt25ZOnTpx6NAhj8732WefMWjQID7++GPKli0LWIMT/Pnnn/Tt29fpep5//nnH72+/fv2ctnkqMjKSZ555hkaNGlGvXj1GjRpF3759efPNN9OVDQkJyfT3V+WMZ5/zZ2qlty+vmDEDUj29vxZojnSdIx9++GEGDBjAXXfdRb58+WjUqBFdunRxKpPanDlzSElJoUePHk7rM8qR3bt3Z+vWraxatYpKlSpx3333cfbsWZdljxw5woMPPsjMmTOJiIhwWcZbOTIpKYnOnTszZswYypcvn2HZvJIj7QYNGsTWrVtZvnw5/v7+3H///Y7YUlJSuHjxIhMmTKBt27Y0aNCAuXPn8s8///DVV185HWf+/Pls2bKFjz/+mCVLljB69GjHNm/nyHHjxrFl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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(15, 6))\n", + "\n", + "for i in range(2):\n", + " ax = plt.subplot(1, 2, i+1)\n", + " pattern_ind = i\n", + "\n", + " # Plot the essence by calling plot_rb_data\n", + " rbfit.plot_rb_data(pattern_ind, ax=ax, add_label=True, show_plt=False)\n", + "\n", + " # Add title and label\n", + " ax.set_title('%d Qubit RB'%(len(rb_opts['rb_pattern'][i])), fontsize=18)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plot with the Rest of the Seeds \n", + "The plot is being updated after each seed" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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XV1d+dNPP2Vm5kGDBrGbmxufP38+S9jU1FROTU21GL8lTH17mOO7777jF154gbdt25alLthSrh9++CG3aNHCIM4JEyYYvGd7fveYqr/6rF692ubO45gxY7hJkyYW/eRV/Z0/fz4HBARY/K5gNl9/jTuPsmzVDL6+vrh69Sruurnhsqc3AMD94R34795nZ8myx927d/HRRx/hwIEDiIiIQIkSJdCpUyeDqXtTjBo1CkOHDsWhQ4fQtm1bdO7cGf/++6+BnzFjxuCrr77CwYMHUbp0afTq1QvMapo8LS0N9erVw7p163Ds2DEMGzYMAwYMwLZtj5YyLVmyxOqSzr1796Jdu3YGbu3bt0d0dDTS09NNhrl//z5cXFwM3FxdXZGWloaYmBiTYX766SeULFkSr7/+epZnr732GsqWLYumTZtm2feye/duODs7o3bt2mbzkFMePHiAtLQ0g+Vhn332GX766SfMmTMHx48fx5gxYzBgwACsX7/ebDx79+5FYGAgKlSooHNr37497t+/b7Y8YmNjsWfPHgQHBxu4N2jQAP/++y9Onz79mLnLiouLi+6drlixAm3atEFQUFAWfw4ODihevDgA2+pQTihdujQCAwOxfPlypKSkICMjAwsWLICHh0eWfc/Dhg2Dl5cXnn/+ecybNy9by4UAtXSrV69eGDx4MI4dO4ZFixYhPDwcY8eONRsmJiYG6enpBr+NChUqIDAwEHv27DEb7vbt2wb16ciRI7h165bJcjYOByDLUkVr3LlzxyDMwoULMXbsWEyaNAknTpzAN998g6lTp2Lu3Llm49i7dy+KFSuGJk2a6Ny0y4WM82rptwoos+MPHz7UWacW8oYxYwBfXyAqCijoW8FFRyqMdaQ5PxcuXMDZs2cN3IOCglCuXDm0bt0aO3YYWtqNjIzEM888A09PT51bTEwMzp8/j6JFi6JevXrw8fFBu3btEBsbazafWhITE+Hr64uAgAB07949yzaKfv36YefOnfjll18QFxeHPn36oFOnTjh8+LDZOPfu3YvmzZvD1dVV59a+fXtcvHjRoOzHjRsHf39/9Olj/ijYBg0a4MCBA0hNTbWal+zg5OQEJycnpKenIzMzEytXrkSvXr1Qvnz5LH5dXFx070671Dc7mPr2MEVsbCymTp2KZcuWmTxT3JZybdasGQ4dOoR9+9S39blz57B2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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "rbfit = rb.fitters.RBFitter(result_list[0], xdata, rb_opts['rb_pattern'])\n", + "\n", + "for seed_num, data in enumerate(result_list):#range(1,len(result_list)): \n", + " plt.figure(figsize=(15, 6))\n", + " axis = [plt.subplot(1, 2, 1), plt.subplot(1, 2, 2)]\n", + " \n", + " # Add another seed to the data\n", + " rbfit.add_data([data])\n", + " \n", + " for i in range(2):\n", + " pattern_ind = i\n", + "\n", + " # Plot the essence by calling plot_rb_data\n", + " rbfit.plot_rb_data(pattern_ind, ax=axis[i], add_label=True, show_plt=False)\n", + "\n", + " # Add title and label\n", + " axis[i].set_title('%d Qubit RB - after seed %d'%(len(rb_opts['rb_pattern'][i]), seed_num), fontsize=18)\n", + " \n", + " # Display\n", + " display.display(plt.gcf())\n", + " \n", + " # Clear display after each seed and close\n", + " display.clear_output(wait=True)\n", + " time.sleep(1.0)\n", + " plt.close()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Add more shots to the data" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Compiling seed 0\n", + "Simulating seed 0\n", + "Compiling seed 1\n", + "Simulating seed 1\n", + "Compiling seed 2\n", + "Simulating seed 2\n", + "Compiling seed 3\n", + "Simulating seed 3\n", + "Compiling seed 4\n", + "Simulating seed 4\n", + "Finished Simulating\n" + ] + } + ], + "source": [ + "shots = 200\n", + "result_list = []\n", + "qobj_list = []\n", + "for rb_seed,rb_circ_seed in enumerate(rb_circs):\n", + " print('Compiling seed %d'%rb_seed)\n", + " qobj = qiskit.compile(rb_circ_seed, backend=backend, basis_gates=basis_gates_str, shots=shots)\n", + " print('Simulating seed %d'%rb_seed)\n", + " job = backend.run(qobj, noise_model=noise_model, backend_options={'max_parallel_experiments': 0})\n", + " result_list.append(job.result())\n", + " qobj_list.append(qobj) \n", + "print(\"Finished Simulating\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#Add this data to the previous fit\n", + "rbfit.add_data(result_list)\n", + "\n", + "#Replot\n", + "plt.figure(figsize=(15, 6))\n", + "\n", + "for i in range(2):\n", + " ax = plt.subplot(1, 2, i+1)\n", + " pattern_ind = i\n", + "\n", + " # Plot the essence by calling plot_rb_data\n", + " rbfit.plot_rb_data(pattern_ind, ax=ax, add_label=True, show_plt=False)\n", + "\n", + " # Add title and label\n", + " ax.set_title('%d Qubit RB'%(len(rb_opts['rb_pattern'][i])), fontsize=18)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Predicted Gate Fidelity" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the known depolarizing errors on the simulation we can predict the **fidelity**. \n", + "First we need to count the number of **gates per Clifford**.\n", + "\n", + "The function **gates_per_clifford** takes a compiled qobj and outputs the number of basis gates in each circuit." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of u1 gates per Clifford: 1.545870\n", + "Number of u2 gates per Clifford: 1.785870\n", + "Number of u3 gates per Clifford: 0.476957\n", + "Number of cx gates per Clifford: 1.500652\n" + ] + } + ], + "source": [ + "#Count the number of single and 2Q gates in the 2Q Cliffords\n", + "gates_per_cliff = rb.rb_utils.gates_per_clifford(qobj_list,xdata[0],basis_gates,rb_opts['rb_pattern'][0])\n", + "for i in range(len(basis_gates)):\n", + " print(\"Number of %s gates per Clifford: %f\"%(basis_gates[i],\n", + " np.mean([gates_per_cliff[0][i],gates_per_cliff[0][i]])))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The **two qubit Clifford gate error** gives measured errors in the basis gates that were used to construct the Clifford. \n", + "It assumes that the error in the underlying gates is depolarizing. It outputs the error per a 2-qubit Clifford.\n", + "\n", + "The input to this function is:\n", + "- **ngates:** list of the number of gates per 2Q Clifford\n", + "- **gate_qubit:** list of the qubit corresponding to the gate (0, 1 or -1). -1 corresponds to the 2Q gate.\n", + "- **gate_err:** list of the gate errors" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Predicted 2Q Error per Clifford: 1.776097e-02\n" + ] + } + ], + "source": [ + "#Prepare lists of the number of qubits and the errors\n", + "ngates = np.zeros(7)\n", + "ngates[0:3] = gates_per_cliff[0][0:3]\n", + "ngates[3:6] = gates_per_cliff[1][0:3]\n", + "ngates[6] = gates_per_cliff[0][3]\n", + "gate_qubits = np.array([0,0,0,1,1,1,-1], dtype=int)\n", + "gate_errs = np.zeros(len(gate_qubits))\n", + "gate_errs[[1,4]] = p1Q/2 #convert from depolarizing error to epg (1Q)\n", + "gate_errs[[2,5]] = 2*p1Q/2 #convert from depolarizing error to epg (1Q)\n", + "gate_errs[6] = p2Q*3/4 #convert from depolarizing error to epg (2Q)\n", + "\n", + "#Calculate the predicted epc\n", + "pred_epc = rb.rb_utils.twoQ_clifford_error(ngates,gate_qubits,gate_errs)\n", + "print(\"Predicted 2Q Error per Clifford: %e\"%pred_epc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Run an RB Sequence with T1,T2 Errors\n", + "\n", + "We now choose RB sequences that contain only 2-qubit Cliffords.\n", + "\n", + "We execute these sequences as before, but with a noise model extened with T1/T2 thermal relaxation error, and fit the exponentially decaying curve. " + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "rb_opts2 = rb_opts.copy()\n", + "rb_opts2['rb_pattern'] = [[0,1]]\n", + "rb_opts2['length_multiplier'] = 1\n", + "rb_circs2, xdata2 = rb.randomized_benchmarking_seq(**rb_opts2)\n", + "\n", + "noise_model2 = NoiseModel()\n", + "\n", + "#Add T1/T2 noise to the simulation\n", + "t1 = 100.\n", + "t2 = 80.\n", + "gate1Q = 0.1\n", + "gate2Q = 0.5\n", + "noise_model2.add_all_qubit_quantum_error(thermal_relaxation_error(t1,t2,gate1Q), 'u2')\n", + "noise_model2.add_all_qubit_quantum_error(thermal_relaxation_error(t1,t2,2*gate1Q), 'u3')\n", + "noise_model2.add_all_qubit_quantum_error(\n", + " thermal_relaxation_error(t1,t2,gate2Q).kron(thermal_relaxation_error(t1,t2,gate2Q)), 'cx')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Compiling seed 0\n", + "Simulating seed 0\n", + "Compiling seed 1\n", + "Simulating seed 1\n", + "Compiling seed 2\n", + "Simulating seed 2\n", + "Compiling seed 3\n", + "Simulating seed 3\n", + "Compiling seed 4\n", + "Simulating seed 4\n", + "Finished Simulating\n" + ] + } + ], + "source": [ + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "basis_gates = ['u1','u2','u3','cx'] # use U,CX for now\n", + "basis_gates_str = ','.join(basis_gates)\n", + "shots = 500\n", + "result_list2 = []\n", + "qobj_list2 = []\n", + "for rb_seed,rb_circ_seed in enumerate(rb_circs2):\n", + " print('Compiling seed %d'%rb_seed)\n", + " qobj = qiskit.compile(rb_circ_seed, backend=backend, basis_gates=basis_gates_str, shots=shots)\n", + " print('Simulating seed %d'%rb_seed)\n", + " job = backend.run(qobj, noise_model=noise_model2, backend_options={'max_parallel_experiments': 0})\n", + " result_list2.append(job.result())\n", + " qobj_list2.append(qobj) \n", + "print(\"Finished Simulating\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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X9100018+eWXgQ7DZDI7fy/9/87cyBK4TFRs2ABOlKjivDh5kosr1gQ2IGOy2IoVK6hfvz7BwcFUq1aNt956K91tli5dSqNGjQgNDaVcuXI8/fTTXLx4MVmdRYsW0bBhQ0JDQylTpgydOnViz549GT72K6+8Qrt27bjyyivdZRs2bODWW2+lRIkSlChRgltuuYXvv/8+3bj37NnDXXfdRYkSJShSpAj16tVj165d6W6Xnoy04ahRoxAR+vXrl6x82LBhPPPMM87j/tJQtWpVRCTV8swzzwCwf//+ZOUlS5akWbNmrFixItl+jh49yoABA7jyyispVKgQFSpU4Pbbb2f+/PkZeu8rV67kjjvuoEKFCogI06ZNS3eblDEmLgsXLkxWL712jY+PZ9iwYURERBAcHExERATPPfdcqnPxUvzwww80b96cwoULU6FCBUaOHImqute/8847NG3alJIlS1KiRAlatmzJ6tWrU+3H0/k7YMAAIiMjCQ4OpmrVqj7FM2zYMK666iqKFi1KyZIlueWWW1i7du1lv09Iv52ff/75VJ9VuXLlUsXny/mb11kCl5mCgyny5mjmhtxLTf2JSfvaBToiY7JMTEwM7dq1o1GjRmzZsoUhQ4bwf//3f2n2BG3bto127drRunVrtmzZwsyZM/n666/dCUTifjt16kTTpk3ZsmULS5Ys4ezZs7Rr1y5ZnfSOfebMGd5991169uzpLouNjaVt27aEh4ezfv161q1bR/ny5WnTpg2nTp1K8702btyYiIgIli1bxo4dO3jppZcICQm51Obz+X0kWr9+PVOnTuXaa69Nta5du3acOnWKBQsWpHvM4cOHc/jw4WTLc889l6zOwoULOXz4MCtWrKB48eK0a9eOmJgYwEmg6tWrx6JFixg1ahTbt29nyZIltG/fnkcffTRD7z82NpZrrrmGN954g8KFC2do28QYE5dWrVq51/nSrqNHj2by5MlMnDiR3bt388YbbzB58mRGjRqVoThSOnnyJK1btyYsLIwNGzbwxhtvMHbsWCZMmOCuEx0dTZcuXVi2bBnfffcdtWrVok2bNvz888/uOp7OX4CEhAS6detG165dfY6pVq1aTJ48mR9++IHVq1cTERFB27ZtOXr06GW9V1/P31q1aiX7rH744Ydk6zNy/uZpqpprl/r166u/LF++3Ou6r79WBdXi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y44dO9x3ECYt93Ws2E8//cTQoUOZPn06BQoUSLNu4cKFUVXOnTuXZr2BAweydevWZEvKnr1mzZoREhJCaGgo33zzDdOmTaNu3bruXlxfjBo1KlmvbmYpU6YMTz75JDfffDORkZGMHDmS3r17M2bMmAztZ+bMmXz00UdMnz6dzZs389FHHzFlyhTee+89ADZv3oyqUrt27WSf3bx589yfaZ06ddzlt99++yW9nzfeeIO3336b2bNnU6xYMXe5p/P3crRs2ZKtW7eydu1a2rZtyz333OPuXfPX+Qtw++23c88993Dttddy6623MnfuXBISEvjwww+T1fP1/M3L7EkMfjSi8BiCeRUUYvs/Q8idnSCPP/rDeNehQwcqVqzI22+/TYUKFcifPz+1a9dO9xKqL5J+2SdegklMRMaNG8f48eN54403qFu3LiEhIQwdOtSd4PmqXLlyqQZBHz16lPz587svdXoycOBAnnjiCQ4fPkzJkiXZv38/Q4YMoVq1agBMnjyZokWLJvtC/uSTT6hUqRJr166lSZMmPh27TJky/P3338nqTJ8+nb1797JmzRr3A8CnT59OyZIlmTNnDg8++CAplSlTxv3ZJHX11VczY8YMwGnbsLAwVq1alWr7xC/lrVu3pipL730sWrSIY8eOJbu8Gx8fz8qVK3nrrbc4ffq0e37Bv/76i+Dg4HRvrChdujTVq1dPs8706dOpW7cuJUqUoHTp0u7yGjVqICLs2rWLzp07p7mPrNSgQQM++OAD92tfzo+nnnqKQYMGce+99wJQt25dDhw4wKhRo+jZsycJCQmICBs2bEiVPCdeHp0/f777UmFimbdjJ65L6vXXX2fYsGEsWLCAm266Kdk6T+fv5ShatCjVq1enevXq3HzzzdSoUYN3332XYcOG+e389SQkJIQ6deoku2EDfD9/8zJL4Pwo+LlBnHv7LYJj/yTkj/3EjX+Tgs8+FeiwTDb0559/snv3bqZMmeLu/di8ebNPUxisX7/efcedqvL9998TFRXl87FXr15Nx44deeihh9z72LNnT7LxS75o2LAhc+bMSVa2ePFiIiMj0+0tEhF3z+Bnn31GpUqVqFevHuDcfZeYXCVKfJ2YhPpy7BtuuCHVtBRnzpxBRNy9feD0/ImI1969ggULcuONN/LTTz8lK9+zZw9VqjjTCNWrV4+jR48SFBTk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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#Create an RBFitter object \n", + "rbfit = rb.RBFitter(result_list2, xdata2, rb_opts2['rb_pattern'])\n", + "\n", + "plt.figure(figsize=(10, 6))\n", + "ax = plt.gca()\n", + "\n", + "# Plot the essence by calling plot_rb_data\n", + "rbfit.plot_rb_data(0, ax=ax, add_label=True, show_plt=False)\n", + "\n", + "# Add title and label\n", + "ax.set_title('2 Qubit RB with T1/T2 noise', fontsize=18)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We count again the number of **gates per Clifford** as before, and calculate the **two qubit Clifford gate error**, using the predicted primitive gate errors from the coherence limit." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of u1 gates per Clifford: 1.462826\n", + "Number of u2 gates per Clifford: 1.712391\n", + "Number of u3 gates per Clifford: 0.489565\n", + "Number of cx gates per Clifford: 1.502609\n" + ] + } + ], + "source": [ + "#Count the number of single and 2Q gates in the 2Q Cliffords\n", + "gates_per_cliff = rb.rb_utils.gates_per_clifford(qobj_list2,xdata2[0],basis_gates,rb_opts2['rb_pattern'][0])\n", + "for i in range(len(basis_gates)):\n", + " print(\"Number of %s gates per Clifford: %f\"%(basis_gates[i],\n", + " np.mean([gates_per_cliff[0][i],gates_per_cliff[0][i]])))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Predicted 2Q Error per Clifford: 1.420023e-02\n" + ] + } + ], + "source": [ + "#Prepare lists of the number of qubits and the errors\n", + "ngates = np.zeros(7)\n", + "ngates[0:3] = gates_per_cliff[0][0:3]\n", + "ngates[3:6] = gates_per_cliff[1][0:3]\n", + "ngates[6] = gates_per_cliff[0][3]\n", + "gate_qubits = np.array([0,0,0,1,1,1,-1], dtype=int)\n", + "gate_errs = np.zeros(len(gate_qubits))\n", + "\n", + "#Here are the predicted primitive gate errors from the coherence limit\n", + "gate_errs[[1,4]] = rb.rb_utils.coherence_limit(1,[t1],[t2],gate1Q) \n", + "gate_errs[[2,5]] = rb.rb_utils.coherence_limit(1,[t1],[t2],2*gate1Q) \n", + "gate_errs[6] = rb.rb_utils.coherence_limit(2,[t1,t1],[t2,t2],gate2Q) \n", + "\n", + "#Calculate the predicted epc\n", + "pred_epc = rb.rb_utils.twoQ_clifford_error(ngates,gate_qubits,gate_errs)\n", + "print(\"Predicted 2Q Error per Clifford: %e\"%pred_epc)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/qiskit/ignis/readme.md b/qiskit/ignis/readme.md new file mode 100644 index 000000000..05f8dc590 --- /dev/null +++ b/qiskit/ignis/readme.md @@ -0,0 +1,3 @@ +# Qiskit Ignis Examples + +This collection of notebooks contains examples for how to use the various components of [Qiskit Ignis](https://github.com/Qiskit/qiskit-ignis). The examples are run on Qiskit Aer, but can easily be ported to any backend. diff --git a/qiskit/ignis/relaxation_and_decoherence.ipynb b/qiskit/ignis/relaxation_and_decoherence.ipynb index da7aa4c20..17b70a504 100644 --- a/qiskit/ignis/relaxation_and_decoherence.ipynb +++ b/qiskit/ignis/relaxation_and_decoherence.ipynb @@ -13,835 +13,332 @@ "source": [ "## _*Relaxation and Decoherence*_ \n", "\n", - "The latest version of this notebook is available on https://github.com/qiskit/qiskit-tutorial.\n", + "* **Last Updated:** Feb 25, 2019\n", + "* **Requires:** qiskit-terra 0.7, qiskit-ignis 0.1, qiskit-aer 0.1\n", "\n", - "***\n", - "### Contributors\n", - "Martin Sandberg, Hanhee Paik, Antonio Córcoles, Doug McClure, and Jay Gambetta" + "This notebook gives examples for how to use the ``ignis.characterization.coherence`` module for measuring $T_1$ and $T_2$" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 1, "metadata": {}, + "outputs": [], "source": [ - "## Introduction\n", - "\n", - "In an ideal world, quantum systems would be well-isolated from their environment, which prevents unwanted dynamics of the quantum information we encode in them. For example, suppose we prepared a qubit in the $|1\\rangle$ state, but through interaction with the environment, the state is flipped to $|0\\rangle$. That flip could affect the outcome of a quantum algorithm that's being run using that qubit, meaning the answers we get out of the quantum device would change. For this reason, we seek to isolate quantum computers from the surrounding environment.\n", - "\n", - "However, perfect isolation is not possible: after all, we have to be able to control the quantum computer, which means coupling it to external systems to manipulate quantum information. This tradeoff is sometimes referred to as the \"Tao of quantum computing\". Because our controls introduce coupling between qubits and the environment, we expect some unwanted interactions can occur.\n", - "\n", - "These unwanted interactions introduce _noise_ into the qubits, which affects their behavior. The rate of these interactions sets characteristic timescales over which information encoded in qubits can be reliably stored and manipulated. (If the interaction has a rate $\\Gamma$, the characteristic timescale is $\\sim 1/\\Gamma$.) In this tutorial, we discuss two timescales that arise from energy relaxation and decoherence -- usually referred to as $T_{1}$ and $T_{2}$, respectively -- and show how they can be measured.\n", - "\n", - "**Contents**\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", "\n", - "[Measuring $T_{1}$ time](#t1)\n", + "import qiskit\n", + "from qiskit.providers.aer.noise.errors.standard_errors import thermal_relaxation_error\n", + "from qiskit.providers.aer.noise import NoiseModel\n", "\n", - "Measuring $T_{2}^{\\star}$ time" + "from qiskit.ignis.characterization.coherence import T1Fitter, T2StarFitter, T2Fitter\n", + "from qiskit.ignis.characterization.coherence import t1_circuits, t2_circuits, t2star_circuits" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Code imports\n", - "==============" + "# Generation of coherence circuits" ] }, { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:13:54.475305Z", - "start_time": "2018-12-18T15:13:53.026353Z" - } - }, - "outputs": [], - "source": [ - "import qiskit as qk\n", - "import numpy as np\n", - "from scipy.optimize import curve_fit\n", - "from qiskit.tools.qcvv.fitters import exp_fit_fun, osc_fit_fun, plot_coherence\n", - "from qiskit.tools.monitor import job_monitor" - ] - }, - { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "# Load saved IBMQ accounts\n", - "qk.IBMQ.load_accounts()" + "This shows how to generate the circuits. The list of qubits specifies for which qubits to generate characterization circuits; these circuits will run in parallel. The discrete unit of time is the identity gate (``iden``) and so the user must specify the time of each identity gate if they would like the characterization parameters returned in units of time. This should be available from the backend." ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 2, "metadata": { "ExecuteTime": { - "end_time": "2018-12-18T15:14:17.723076Z", - "start_time": "2018-12-18T15:14:17.718577Z" - } - }, - "outputs": [], - "source": [ - "# backend and token settings\n", - "backend = qk.IBMQ.get_backend('ibmq_16_melbourne') # the device to run on\n", - "shots = 1024 # the number of shots in the experiment " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:14:18.563871Z", - "start_time": "2018-12-18T15:14:18.559513Z" + "end_time": "2018-12-18T15:34:52.275440Z", + "start_time": "2018-12-18T15:32:05.667514Z" } }, "outputs": [], "source": [ - "# function for padding with QId gates\n", - "def pad_QId(circuit,N,qr):\n", - " # circuit to add to, N = number of QId gates to add, qr = qubit reg\n", - " for ii in range(N):\n", - " circuit.barrier(qr)\n", - " circuit.iden(qr)\n", - " return circuit " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "" + "num_of_gates = (np.linspace(10, 300, 50)).astype(int)\n", + "gate_time = 0.1\n", + "\n", + "# Note that it is possible to measure several qubits in parallel\n", + "qubits = [0, 2]\n", + "\n", + "t1_circs, t1_xdata = t1_circuits(num_of_gates, gate_time, qubits)\n", + "t2star_circs, t2star_xdata, osc_freq = t2star_circuits(num_of_gates, gate_time, qubits, nosc=5)\n", + "t2echo_circs, t2echo_xdata = t2_circuits(np.floor(num_of_gates/2).astype(int), \n", + " gate_time, qubits)\n", + "t2cpmg_circs, t2cpmg_xdata = t2_circuits(np.floor(num_of_gates/6).astype(int), \n", + " gate_time, qubits, \n", + " n_echos=5, phase_alt_echo=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Measuring $T_1$ time\n", - "\n", - "**Theory**\n", - "\n", - "The $T_{1}$ time is the characteristic timescale over which the state of a qubit damps toward the $|0\\rangle$ state. Given an arbitrary initial single-qubit state $\\rho(0)$, represented by a $2\\times 2$ matrix as\n", - "$$\\rho(0) = \\begin{pmatrix}\\rho_{00} & \\rho_{01} \\\\ \\rho_{01}^{\\star} & \\rho_{11}\\end{pmatrix},$$\n", - "under amplitude damping noise, the state of the changes as\n", - "$$\\rho(t) = \\begin{pmatrix}\\rho_{00} + (1-e^{-\\Gamma_{1}t})\\rho_{11} & e^{-\\Gamma_{1}t/2}\\rho_{01} \\\\ e^{-\\Gamma_{1}t/2}\\rho_{01}^{\\star} & e^{-\\Gamma_{1} t}\\rho_{11}\\end{pmatrix} \\underset{t\\rightarrow \\infty}{\\longrightarrow} |0\\rangle\\langle 0|.$$\n", - "\n", - "Notice that amplitude damping noise also removes any coherences between $|0\\rangle$ and $|1\\rangle$ of the state (the off-diagonal elements.) The rate at which this _decoherence_ occurs is half that of $\\Gamma_{1}$.\n", - "\n", - "The time evolution of the state under amplitude damping noise can be derived as the continuous-time limit of an amplitude damping channel\n", - "$$\\mathcal{E}[\\rho] = M_{0} \\rho M_{0}^{\\dagger} + M_{1}\\rho M_{1}^{\\dagger},$$\n", - "where\n", - "$$M_{0} = \\begin{pmatrix} 1 & 0 \\\\0& \\sqrt{1-p}\\end{pmatrix}~,~M_{1} = \\begin{pmatrix} 0 & \\sqrt{p} \\\\ 0 & 0 \\end{pmatrix},$$\n", - "and the probability of decay $p$ is $\\Gamma_{1}\\Delta t$.\n", - "\n", - "The decay rate $\\Gamma_{1}$ sets a natural time scale for the decay process; namely, $\\Gamma^{-1}$. This number is often called the $T_{1}$ time. Notice the off-diagonal elements also decay, with characteristic decay rate $\\Gamma /2$.\n", - "\n", - "Notice that the probability of the qubit remaining in the $|1\\rangle$ state is given by\n", - "\n", - "$$P_{1}(t) = \\mathrm{Tr}\\left[|1\\rangle\\langle 1| \\rho(t)\\right] = e^{-\\Gamma_{1} t}\\rho_{11}.$$\n", - "\n", - "If the qubit was prepared in the $|1\\rangle$ state, then $P_{1}(t) =e^{-\\Gamma_{1} t}$.\n", - "\n", - "A simple way of estimating the $T_{1}$ time is to collect statistics about the decay curve for $P_{1}(t)$ when the qubit is initialized to $|1\\rangle$. This can be done by choosing a variety of times $t_{1}, t_{2}, \\cdots t_{N}$, and then running the following experiment many times:\n", - "* Prepare the qubit in $|1\\rangle$.\n", - "* Wait a delay time $t_{j}$.\n", - "* Measure the qubit in the $|0\\rangle, |1\\rangle$ basis.\n", - "\n", - "An estimate of $P_{1}(t_{j})$ is the number of times the qubit was observed to be in $|1\\rangle$, divided by the total number of times the experiment was repeated. Given several estimated values of $P_{1}$ for a variety of $(t_{j})$, we can fit the resulting decay curve is fit to an exponential and extract an estimate of $\\Gamma_{1}$, and hence, the $T_{1}$ time.\n", - "\n", - "The IBM Q Experience does not currently support delays of arbitrary length, so for now, we just append a series of identity operations after the initial excitation pulse. Each identity operation has the same duration of a single-qubit gate and is followed by a -shorter- buffer time. These parameters are backend-dependent.\n", - "\n", - "**Code**\n", - "\n", - "The code blocks below walk through constructing the requisite experiments to estimate the $T_{1}$ time of a qubit, sending those experiments to an IBMQ backend, and then fitting the data the backend sends back." + "# Backend execution" ] }, { "cell_type": "code", - "execution_count": 27, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:32:05.500425Z", - "start_time": "2018-12-18T15:32:05.401773Z" - } - }, + "execution_count": 3, + "metadata": {}, "outputs": [], "source": [ - "# Select qubit whose T1 is to be measured\n", - "qubit = 1\n", - "\n", - "# Creating registers\n", - "qr = qk.QuantumRegister(5)\n", - "cr = qk.ClassicalRegister(5)\n", - "\n", - "# the delay times are all set in terms of single-qubit gates\n", - "# so we need to calculate the time from these parameters\n", - "pulse_length=100 # single-qubit gate time \n", - "buffer_length=10 # spacing between pulses\n", - "unit = 'ns'\n", - "\n", - "steps = 10\n", - "gates_per_step = 120\n", - "max_gates = (steps-1)*gates_per_step+1\n", - "tot_length = buffer_length+pulse_length\n", - "time_per_step = gates_per_step*tot_length\n", - "qc_dict = {}\n", - "for ii in range(steps):\n", - " step_num = 'step_%s'%(str(ii))\n", - " qc_dict.update({step_num:qk.QuantumCircuit(qr, cr)})\n", - " qc_dict[step_num].x(qr[qubit])\n", - " qc_dict[step_num]=pad_QId(qc_dict[step_num],gates_per_step*ii,qr[qubit])\n", - " qc_dict[step_num].barrier(qr[qubit])\n", - " qc_dict[step_num].measure(qr[qubit], cr[qubit])\n", - "\n", - "circuits=list(qc_dict.values()) " - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:34:52.275440Z", - "start_time": "2018-12-18T15:32:05.667514Z" - } - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "7a0c65e28ea24723b2fb2c44bad820de", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HTML(value=\"

        Job Status: job is being initialized

        \")" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# run the program\n", - "t1_job = qk.execute(circuits, backend, shots=shots)\n", - "job_monitor(t1_job)" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:34:54.609895Z", - "start_time": "2018-12-18T15:34:53.795335Z" - } - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
        " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a: 0.84 ± 0.02\n", - "T1: 45.85 µs ± 3.27 µs\n", - "c: 0.07 ± 0.02\n" - ] - } - ], - "source": [ - "# arrange the data from the run\n", - "\n", - "result_t1 = t1_job.result()\n", - "keys_0_1=list(result_t1.get_counts(qc_dict['step_0']).keys())# get the key of the excited state '00010' \n", - "data=np.zeros(len(qc_dict.keys())) # numpy array for data\n", - "sigma_data = np.zeros(len(qc_dict.keys()))\n", - "\n", - "# change unit from ns to microseconds\n", - "plot_factor=1\n", - "if unit.find('ns')>-1:\n", - " plot_factor=1000\n", - " punit='$\\\\mu$s'\n", - "xvals=time_per_step*np.linspace(0,len(qc_dict.keys()),len(qc_dict.keys()))/plot_factor # calculate the time steps in microseconds \n", - "\n", - "for ii,key in enumerate(qc_dict.keys()):\n", - " # get the data in terms of counts for the excited state normalized to the total number of counts\n", - " data[ii]=float(result_t1.get_counts(qc_dict[key])[keys_0_1[0]])/shots\n", - " sigma_data[ii] = np.sqrt(data[ii]*(1-data[ii]))/np.sqrt(shots)\n", - "\n", - "# fit the data to an exponential \n", - "fitT1, fcov = curve_fit(exp_fit_fun, xvals, data, bounds=([-1,2,0], [1., 500, 1])) \n", - "ferr = np.sqrt(np.diag(fcov))\n", - "\n", - "plot_coherence(xvals, data, sigma_data, fitT1, exp_fit_fun, punit, 'T$_1$ ', qubit)\n", - "\n", - "print(\"a: \" + str(round(fitT1[0],2)) + u\" \\u00B1 \" + str(round(ferr[0],2)))\n", - "print(\"T1: \" + str(round(fitT1[1],2))+ \" µs\" + u\" \\u00B1 \" + str(round(ferr[1],2)) + ' µs')\n", - "print(\"c: \" + str(round(fitT1[2],2)) + u\" \\u00B1 \" + str(round(ferr[2],2)))" + "backend = qiskit.Aer.get_backend('qasm_simulator')\n", + "shots = 400\n", + "\n", + "# Let the simulator simulate the following times for qubits 0 and 2:\n", + "t_q0 = 25.0\n", + "t_q2 = 15.0\n", + "\n", + "# Define T1 and T2 noise:\n", + "t1_noise_model = NoiseModel()\n", + "t1_noise_model.add_quantum_error(\n", + " thermal_relaxation_error(t_q0, 2*t_q0, gate_time), \n", + " 'id', [0])\n", + "t1_noise_model.add_quantum_error(\n", + " thermal_relaxation_error(t_q2, 2*t_q2, gate_time), \n", + " 'id', [2])\n", + "\n", + "t2_noise_model = NoiseModel()\n", + "t2_noise_model.add_quantum_error(\n", + " thermal_relaxation_error(np.inf, t_q0, gate_time, 0.5), \n", + " 'id', [0])\n", + "t2_noise_model.add_quantum_error(\n", + " thermal_relaxation_error(np.inf, t_q2, gate_time, 0.5), \n", + " 'id', [2])\n", + "\n", + "# Run the simulator\n", + "t1_backend_result = qiskit.execute(t1_circs, backend, shots=shots,\n", + " noise_model=t1_noise_model).result()\n", + "t2star_backend_result = qiskit.execute(t2star_circs, backend, shots=shots,\n", + " noise_model=t2_noise_model).result()\n", + "t2echo_backend_result = qiskit.execute(t2echo_circs, backend, shots=shots,\n", + " noise_model=t2_noise_model).result()\n", + "\n", + "# It is possible to split the circuits into multiple jobs and then give the results to the fitter as a list:\n", + "t2cpmg_backend_result1 = qiskit.execute(t2cpmg_circs[0:5], backend,\n", + " shots=shots, noise_model=t2_noise_model).result()\n", + "t2cpmg_backend_result2 = qiskit.execute(t2cpmg_circs[5:], backend,\n", + " shots=shots, noise_model=t2_noise_model).result()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The last calibration of $T_1$ was measured to be" + "# Analysis of results" ] }, { "cell_type": "code", - "execution_count": 31, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:34:56.189527Z", - "start_time": "2018-12-18T15:34:54.612542Z" - } - }, + "execution_count": 4, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "72.38826037862532 µs\n" + "[26.143620848747997, 16.26382434256867]\n", + "[2.619261331895469, 0.8206964120794745]\n", + "{'0': [array([ 1.03482876, 26.14362085, -0.03473265]), array([ 1.03680633, 16.26382434, -0.04321923])]}\n", + "{'0': [array([0.05837844, 2.61926133, 0.06268629]), array([0.01840858, 0.82069641, 0.02241075])]}\n" ] - } - ], - "source": [ - "print(backend.properties().qubits[qubit][0].value, backend.properties().qubits[qubit][0].unit)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Measuring $T_2^*$ time\n", - "\n", - "**Theory**\n", - "\n", - "Amplitude damping noise affects the off-diagonal elements of the density matrix in addition to the on-diagonal elements. However, there are other noise processes that only affect the off-diagonal elements, while keeping the on-diagonal elements the same. These kinds of noise processes cause _decoherence_.\n", - "\n", - "As a simple example of decoherence, consider the pure superposition state\n", - "$$|\\psi(\\theta)\\rangle = \\frac{1}{\\sqrt{2}}\\left(|0\\rangle + e^{i\\theta}|1\\rangle\\right).$$\n", - "Expressed as a density matrix, this state is\n", - "$$\\rho(\\theta) = |\\psi(\\theta)\\rangle \\langle\\psi(\\theta)| = \\frac{1}{2}\\begin{pmatrix}1 & e^{-i\\theta} \\\\ e^{i\\theta} & 1\\end{pmatrix}.$$\n", - "\n", - "This state has _coherence_ between $|0\\rangle$ and $|1\\rangle$, which manifests itself in the non-zero off-diagonal terms. If the state had _decohered_, those off-diagonal terms would be zero:\n", - "$$\\rho_{\\mathrm{decohered}} = \\frac{1}{2}\\begin{pmatrix}1 & 0 \\\\ 0 & 1\\end{pmatrix}.$$\n", - "When the state has decohered, it can be written as a classical _mixture_:\n", - "$$\\rho_{\\mathrm{decohered}} = \\frac{1}{2}\\left(|0\\rangle \\langle 0| + |1\\rangle \\langle 1|\\right).$$\n", - "\n", - "One mechanism by which decoherence happens is _dephasing_. Under dephasing noise, the state of the qubit evolves as\n", - "$$\\rho(t) = \\begin{pmatrix}\\rho_{00} & e^{-\\Gamma_{2}t}\\rho_{01} \\\\ e^{-\\Gamma_{2}t}\\rho_{01}^{\\star} & \\rho_{11}\\end{pmatrix} \\underset{t\\rightarrow \\infty}{\\longrightarrow} \\begin{pmatrix}\\rho_{00} & 0\\\\ 0& \\rho_{11}\\end{pmatrix}.$$\n", - "\n", - "The time evolution of $\\rho$ under dephasing noise can be derived as the continuous-time limit of the following noise channel:\n", - "$$\\mathcal{E}[\\rho] = M_{0}\\rho M_{0}^{\\dagger} + M_{1} \\rho M_{1}^{\\dagger} + M_{2}\\rho M_{2}^{\\dagger},$$\n", - "where\n", - "$$M_{0} =\\sqrt{1-p}I~,~M_{1} = \\sqrt{p}\\begin{pmatrix}1 &0 \\\\ 0 & 0 \\end{pmatrix}~,~M_{2} = \\sqrt{p}\\begin{pmatrix}0 & 0 \\\\ 0 & 1\\end{pmatrix}.$$\n", - "\n", - "\n", - "The rate of decay in the coherences can be measured by the following experiment:\n", - "\n", - "* Prepare the qubit in the $|+\\rangle$ state, which can be done by initializing the qubit to $|0\\rangle$ and applying a Hadamard gate, $H$.\n", - "* Wait a delay time $t_{j}$.\n", - "* Measure the qubit in the $|\\pm\\rangle$ basis, which can be done by applying a Hadamard and then measuring in the computational basis.\n", - "\n", - "If decoherence processes are present, then after a delay time $t_{j}$, the state of the qubit is\n", - "\n", - "$$\\rho(t_{j}) = \\frac{1}{2}\\begin{pmatrix}1 & e^{-\\Gamma_{2}t_{j}} \\\\ e^{-\\Gamma_{2}t_{j}} & 1\\end{pmatrix}.$$\n", - "\n", - "Measuring in the $|\\pm\\rangle$ basis, the probability of observing the outcome $|+\\rangle$ is given by\n", - "\n", - "$$P_{+}(t_{j}) = \\mathrm{Tr}\\left(|+\\rangle \\langle + | \\rho(t_{j})\\right) = \\frac{1}{2}\\left(1 + e^{-\\Gamma_{2}t_{j}}\\right).$$\n", - "\n", - "Again, by estimating $P_{+}(t_{j})$ for a variety of $t_{j}$, we can then fit a decay curve to extract an estimate of $\\Gamma_{2}$.\n", - "\n", - "In the actual experiment, we change the phase of the pulse before the measurement in order to create oscillations in the observed dynamics of $P_{+}(t_{j})$. If we just did two Hadamard gates separated by a delay, we would observe a decay of characteristic time $T^*_2$, but with a strong dependence on any deviation of the calibrated qubit frequency from the actual one. By implementing the qubit pulses with different phases, we shift the frequency dependence into the oscillating feature of the dynamics, and can fit the decaying envelope for a more faithful measure of the coherence time." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:35:13.360868Z", - "start_time": "2018-12-18T15:35:13.088842Z" - } - }, - "outputs": [], - "source": [ - "# Select qubit on which to measure T2*\n", - "qubit = 1\n", - "\n", - "# Creating registers\n", - "qr = qk.QuantumRegister(5)\n", - "cr = qk.ClassicalRegister(5)\n", - "\n", - "steps = 35\n", - "gates_per_step = 20\n", - "max_gates = (steps-1)*gates_per_step+2\n", - "\n", - "num_osc = 5\n", - "tot_length = buffer_length+pulse_length\n", - "time_per_step = gates_per_step*tot_length\n", - "qc_dict = {}\n", - "for ii in range(steps):\n", - " step_num = 'step_%s'%(str(ii))\n", - " qc_dict.update({step_num:qk.QuantumCircuit(qr, cr)})\n", - " qc_dict[step_num].h(qr[qubit])\n", - " qc_dict[step_num]=pad_QId(qc_dict[step_num],gates_per_step*ii,qr[qubit])\n", - " qc_dict[step_num].u1(2*np.pi*num_osc*ii/(steps-1),qr[qubit])\n", - " qc_dict[step_num].h(qr[qubit])\n", - " qc_dict[step_num].barrier(qr[qubit])\n", - " qc_dict[step_num].measure(qr[qubit], cr[qubit])\n", - "circuits = list(qc_dict.values()) \n" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:40:20.706463Z", - "start_time": "2018-12-18T15:35:13.657405Z" - } - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "ba358c070a7e4a108ca8086cf7bfc4f6", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HTML(value=\"

        Job Status: job is being initialized

        \")" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# run the program\n", - "t2star_job = qk.execute(circuits, backend, shots=shots)\n", - "job_monitor(t2star_job)" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:40:21.986609Z", - "start_time": "2018-12-18T15:40:20.709506Z" - } - }, - "outputs": [ + }, { "data": { - "image/png": "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nDiRPXv2uC3nqMAYE5fIyIDSThRJOVlk3P8G7DXlqQ2GaFi6dCkvvvgin332GdOmTXNbzlGBMSYu0aoVFBSUPJYfV5VW/7sHWraEBx+E3btd0WYwVAaUKa/hKMaYuERKCqSlQRVyqUE2ycmQNrEKKcu/hAED4OGH4amn3JZpMHiOt956ixo1alCjRg2qVq1KfHz8of83a9aMvLw8unfvzm233cYFF1zAZZddZouOfv36UbVq1UNjt2/fvsTrL730Ej169KBKlSpcf/315fa1e/duLrnkEqpXr06LFi14++23bdFsJ8aYuEhqKmxu0odZ54xj0yb9f7p2hWnTYNUqGDNGN5w9Gx56CMydlsHAddddR3Z2NtnZ2dxzzz1ccMEFh/7/+++/U6VKFerWrUvLli25/vrrqVu3rm1aXnrppUNj//rrryVea9KkCffddx9/+9vfKuzn1ltvJSkpiR07djBlyhRGjRrF6tWr7ZJtC8aYuElODinbltG7t56plKBTJ2jYUP971iwYOxY2bHBaocHgaVasWMGJJ57otoygXHrppVx88cXUq1ev3HYHDhzggw8+4JFHHqFGjRr07duXwYMHk16Oe+djjz3GqFGjDv1/z549JCYmkpuby5NPPknTpk2pWbMm7du3Z/bs2Za9p/IwxsRNMjL0c9u25be76CL9vH69vXoMhhhjxYoVdO3aNao+LrjgAurUqRP0ccEFF5R77t133039+vXp06cP8+bNi2j8devWER8fT7t27Q4dO/HEE8udmaxatarE+16xYgXt27dny5YtvPTSS/z444/s37+fmTNnEk2BwHAw6VTcpFo1+Mc/4KSTym12zm3teJBetFq2jZTzHNJmMHicrKwsNm/eHLUx+eyzzyI678knn6RDhw4kJSXx7rvvcuGFF7JixQqOO+64sPrJzs6mdu3aJY7Vrl2b/fv3l3nOqlWruP322w/93z9Di4+PJy8vj19++YUGDRo4ZkjAGBN3adkSnnuu3Cbp6fDV8nos5EsKxiaT1sK3t2IwOEm/fgAkFxVBfLw+dvnlcMstcPAgnBfkLuf66/Vj1y4Itgk+ahQMGwa//w7NmoUtaeXKldSsWdOy3FLhcsoppxz693XXXcc777zD559/zujRo8Pqp0aNGmRlZZU4lpWVVWYer/z8fDZu3Ejnzp0PHVu5ciVdu3alTZs2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\n", + "image/png": "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wCN46xtOjlzIIk1PaWkpKSkp0Q5DJKxSUlLYtWtXtMMQkSZM+VHiUbjyYzTWOcwDrJbtowO0LQKObryoROKTWdD/1ESaJP2dFpFw0O8SiTfh+jut5+kiIiIiIiKi4lBEJNL69euX8Gv6jR49mptuuinaYYiISAxRfox+flRxKCIR9/TTT9OqVStatWpF8+bNSU5Orvjctm1bdu7cWa/j7dy5k4svvpgePXrQunVrDjnkEObPn19jvxdeeIG+ffvSsmVL9t13X957772Ax3v44YcZOHAgqampjB49uiGXWKuvvvpKa/qJiEgN4c6PEFpOCzU/nn/++XTq1Im99tqL3r1788QTT9Q7ntooP0afikMRibhRo0ZRVFREUVERN9xwA8OHD6/4vGnTJlJTU+t1vF27dtGtWzcWLFjA5s2bufPOOznrrLNYvnx5xT5vvfUWf/zjH3nqqafYsmUL7777Lr169Qp4vM6dO3PTTTdx0UUX7cllhpUmYRERiX/hzo9Qd06rT368/vrrWb58OT///DOvvvoqN910E5999lm9Ywon5cfwUnFYh6ws7yUijSM/P5+DDz54j47RsmVLbr31Vnr27ElSUhLDhw8nMzOzSsKaNGkSt9xyC0cccQRJSUl06dKFLl26BDze6aefzsiRI+nQoUNI5+/Zsyf33XcfBx10EC1btuTiiy9m7dq1nHjiibRu3ZrjjjuOn376qcr+b7/9NgArV67k9NNPZ++996ZDhw5cccUVVfa75557Ko67aNEisrKyaNu2Lf369ePVV1+tNa577rmHLl260Lp1a/bff3/++U9vlaA1a9ZwxhlnsPfee5OZmcm0adOqfC9YTEuWLKn1/D179uT+++/noIMOok2bNpx99tns2OEtT/v5559z6KGH0rp16yrt5aZMmRIwVoldJwzdxl8y74Dvv492KCJxKRz5EerOafXJj/369asoUM0MM+O7774Leu7Gyo8HHnig8mMjUXFYh+Ji2LwZCgujHYlIfMrPz+eQQw4Jad/LLruMyy67rM791q5dyzfffEO/fv0Ab9ryTz/9lPXr17PffvvRtWtXrrjiCrZv375HsVc2e/Zs3nrrLb755hvmzp3LiSeeyF133cX69espKyurkWDK4xo+fDg9evRg+fLlrF69mnPOOafKPs8//zzz5s1jw4YNnHbaaRx//PGsW7eO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\n", "text/plain": [ - "
        " + "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a: 0.48 ± 0.01\n", - "T2*: 51.14 µs ± 2.18 µs\n", - "f: 63.006kHz ± 140.469kHz\n", - "phi: 3.15 ± 0.03\n", - "c: 0.47 ± 0.0\n" - ] } ], "source": [ - "# arrange the data from the run\n", - "\n", - "result_t2star = t2star_job.result()\n", - "keys_0_1 = list(result_t2star.get_counts(qc_dict['step_0']).keys())# get the key of the excited state '00010' \n", - "\n", - "# change unit from ns to microseconds\n", - "plot_factor = 1\n", - "if unit.find('ns') > -1:\n", - " plot_factor = 1000\n", - " punit = '$\\\\mu$s'\n", - "xvals = time_per_step*np.linspace(0,len(qc_dict.keys()),len(qc_dict.keys()))/plot_factor # calculate the time steps \n", - "\n", + "# Fitting T1\n", "\n", - "data = np.zeros(len(qc_dict.keys())) # numpy array for data\n", - "sigma_data = np.zeros(len(qc_dict.keys()))\n", + "%matplotlib inline\n", "\n", - "for ii,key in enumerate(qc_dict.keys()):\n", - " # get the data in terms of counts for the excited state normalized to the total number of counts\n", - " data[ii] = float(result_t2star.get_counts(qc_dict[key])[keys_0_1[0]])/shots\n", - " sigma_data[ii] = np.sqrt(data[ii]*(1-data[ii]))/np.sqrt(shots)\n", - " \n", - "fitT2s, fcov = curve_fit(osc_fit_fun, xvals, data, p0=[0.5, 100, 1/10, np.pi, 0],\n", - " bounds=([0.3,0,0,0,0], [0.5, 200, 1/2,2*np.pi,1]))\n", - "ferr = np.sqrt(np.diag(fcov))\n", + "plt.figure(figsize=(15, 6))\n", "\n", - "plot_coherence(xvals, data, sigma_data, fitT2s, osc_fit_fun, punit, '$T_2^*$ ', qubit)\n", + "t1_fit = T1Fitter(t1_backend_result, t1_xdata, qubits,\n", + " fit_p0=[1, t_q0, 0],\n", + " fit_bounds=([0, 0, -1], [2, 40, 1]))\n", + "print(t1_fit.time())\n", + "print(t1_fit.time_err())\n", + "print(t1_fit.params)\n", + "print(t1_fit.params_err)\n", "\n", - "print(\"a: \" + str(round(fitT2s[0],2)) + u\" \\u00B1 \" + str(round(ferr[0],2)))\n", - "print(\"T2*: \" + str(round(fitT2s[1],2))+ \" µs\"+ u\" \\u00B1 \" + str(round(ferr[1],2)) + ' µs')\n", - "print(\"f: \" + str(round(10**3*fitT2s[2],3)) + 'kHz' + u\" \\u00B1 \" + str(round(10**6*ferr[2],3)) + 'kHz')\n", - "print(\"phi: \" + str(round(fitT2s[3],2)) + u\" \\u00B1 \" + str(round(ferr[3],2)))\n", - "print(\"c: \" + str(round(fitT2s[4],2)) + u\" \\u00B1 \" + str(round(ferr[4],2)))" + "for i in range(2):\n", + " ax = plt.subplot(1, 2, i+1)\n", + " t1_fit.plot(i, ax=ax)\n", + "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Measurement of $T_2$ Echo\n", - "\n", - "We have referred to the previous experiment's characteristic time as $T^*_2$ and not $T_2$ by analogy to nuclear magnetic resonance (NMR). Indeed, one can isolate different frequency components to the decoherence process by devising increasingly elaborated pulse sequences. To illustrate the analogy with NMR, one can think about an ensemble of nuclear spins precessing in an external DC magnetic field. Due to field inhomogeneities, each spin might precess with a slightly different Larmor frequency. This certainly will affect the observed coherence time of the ensemble. However, it is possible to echo away this low-frequency decoherence process by applying a pi-pulse to the system halfway through the delay. The effect of this pi-pulse is to reverse the direction of the precession of each individual spin due to field inhomogeneities. Thus, the spins that had precessed more now start precessing in the opposite direction faster than the spins that had precessed less, and after an equal delay, all the spins in the system recover the initial coherence, except for other, higher-frequency, decoherence mechanisms.\n", - "\n", - "Here, we are measuring only a single qubit rather than an ensemble of spins, but coherence measurements require averaging an ensemble of measurements in order to eliminate projection noise, and run-to-run fluctuations in the qubit's frequency will similarly manifest themselves as decoherence if they are not canceled out. By running this $T_2$ echo sequence, we can therefore remove low-frequency components of the decoherence." - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:41:40.359053Z", - "start_time": "2018-12-18T15:41:40.232218Z" - } - }, - "outputs": [], - "source": [ - "# Select qubit to measure T2 echo on\n", - "qubit = 1\n", - "\n", - "# Creating registers\n", - "qr = qk.QuantumRegister(5)\n", - "cr = qk.ClassicalRegister(5)\n", - "\n", - "steps = 18\n", - "gates_per_step = 28\n", - "tot_length = buffer_length+pulse_length\n", - "max_gates = (steps-1)*2*gates_per_step+3\n", - "time_per_step = (2*gates_per_step)*tot_length\n", - "qc_dict = {}\n", - "for ii in range(steps):\n", - " step_num = 'step_%s'%(str(ii))\n", - " qc_dict.update({step_num:qk.QuantumCircuit(qr, cr)})\n", - " qc_dict[step_num].h(qr[qubit])\n", - " qc_dict[step_num]=pad_QId(qc_dict[step_num],gates_per_step*ii,qr[qubit])\n", - " qc_dict[step_num].x(qr[qubit])\n", - " qc_dict[step_num]=pad_QId(qc_dict[step_num],gates_per_step*ii,qr[qubit])\n", - " qc_dict[step_num].h(qr[qubit])\n", - " qc_dict[step_num].barrier(qr[qubit])\n", - " qc_dict[step_num].measure(qr[qubit], cr[qubit])\n", - "circuits = list(qc_dict.values()) \n" + "Execute the backend again to get more statistics, and add the results to the previous ones:" ] }, { "cell_type": "code", - "execution_count": 37, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:45:23.869064Z", - "start_time": "2018-12-18T15:42:08.529361Z" - } - }, + "execution_count": 5, + "metadata": {}, "outputs": [ { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "12b52f1fe6254dbfa66a1b95cdc18099", - "version_major": 2, - "version_minor": 0 - }, + "image/png": "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v+acc86p/r5t2zbS09Mbdb49e/bQs2dPli1bxvbt25kyZQqjRo1i/fr11ftUnb+kpITi4mIyMjK44IILgp7rvPPO45xzzuGbb75h7ty5/PznP+fjjz/e39veLyrCIiIS/yKdHwG6d+/OrbfeyqWXXhpyn9mzZ1dfZ+3atSH3CzeXRpPyY2Spc7gPJ54IAwZAcXGsIxGJT6tWreLoo4/er3O0a9eO2267jT59+pCUlMQ555xDdnY2K1euDLr/woUL6dq1K0OGDKm37b///S+bNm3i+uuvJzk5mdNOO42TTjqJgoKCkNfv06cP06ZN46ijjqJdu3ZcdtllbNmyheHDh9OhQweGDh3Kt99+W2v/v//97wB8/vnnjBw5ki5dunDggQdy9dVX19pv6tSp1eddvXo1OTk5dOrUiSOOOIIXXnihwX8uU6dOpUePHnTo0IF+/frx6quvArBp0yZ+8pOf0KVLF7Kzs5k5c2at40LFtGbNmgav36dPH+655x6OOuooOnbsyIUXXkhZWRkA//nPf/jhD39Ihw4darVXuffee4PGKi2X8qNI84pEfgQYOXIkI0aM4MADD4xAVHs1lEurNFd+PPLII5Ufm4k6hw0oKIAVK2D1aujb1/suIpG1atUqjjnmmLD2nThxIhMnTtznflu2bOHjjz/miCOOCLr90UcfZezYsWFX9nLO8cEHHzS4z8KFC3nllVf4+OOPWbRoEcOHD+fOO+/kq6++wu/310sw4JVTP+ecc+jduzfr169n48aNjB49utY+Tz75JC+99BJbt27l/PPP54wzzuDLL79k1qxZXHTRRSGf8K5du5bZs2fz9ttv891337FkyRL69OmD3+/n3HPP5eijj2bjxo28+uqrzJgxgyVLljQYU0VFBeeee+4+r//000/zt7/9jaKiIt5//33mzZtHeXk5I0aMIDc3l2+++YYLLriAhQsX1op17ty59WKVlsvLj44175fTN9spP4o0g8bkx+uvvz6s/BjKpEmTyMzM5KSTTgp7zl+4uVT50dNq8qNzLm4/xx57rAvmtddeC9pe0+bNzmVkOAd7PxkZXntrEs69xhPd714fffRR9AJpou3btzszc//73/+q27Zt2+aOO+44165dO7d69erq9h07doR1zvLycnf66ae7K6+8Muj29evXu6SkJLdu3bqQx2dnZ7upU6e68vJy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\n", "text/plain": [ - "HTML(value=\"

        Job Status: job is being initialized

        \")" + "" ] }, - "metadata": {}, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" } ], "source": [ - "# run the program\n", - "t2echo_job = qk.execute(circuits, backend, shots=shots)\n", - "job_monitor(t2echo_job)" + "t1_backend_result_new = qiskit.execute(t1_circs, backend,\n", + " shots=shots, noise_model=t1_noise_model).result()\n", + "t1_fit.add_data(t1_backend_result_new)\n", + "\n", + "plt.figure(figsize=(15, 6))\n", + "for i in range(2):\n", + " ax = plt.subplot(1, 2, i+1)\n", + " t1_fit.plot(i, ax=ax) \n", + "plt.show()" ] }, { "cell_type": "code", - "execution_count": 39, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:46:24.309157Z", - "start_time": "2018-12-18T15:46:22.609333Z" - } - }, + "execution_count": 6, + "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZkAAAE5CAYAAABCuV0gAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzs3Xd4lFX68PHvnUAgFEFEEgGlqLCIK1URRQkqqKjYBXwFXHVBQBTR36oLig3LutZVFNxCcXdlFctaWLEQpImCoJFmIWCDACIlkBBI7veP8wxMhkmYTCbzZJL7c11zhXmeM2fOITD3nC6qijHGGFMRkvwugDHGmKrLgowxxpgKY0HGGGNMhbEgY4wxpsJYkDHGGFNhLMgYY4ypMBZkjDHGVBgLMsYYYyqMBRljTLUkIq1E5A0R2SwiKiJT/C5TVVTD7wKY8hOResB2Iv/S0EhVf63AIhlTLiLSEbgEmKKq6yrobaYAJwETgI3AdxGU6zDgFuBS4HggGVgHvA38WVU3VVBZE5bYtjKJT0QaAheGXB4OnAbcDuQEXd+jqq/Eq2zGRENErgX+AfRS1cwKyL8WkAc8q6o3R/iaNsB7QAvgNWAOsBc4FbgG90XvQlVdHOvyJjJryVQBqroNeCn4mojcCuQDT6vqPl8KZiqciCQDtVR1t99lSTBpgABbI0ksInWAt4BmwEWq+k7Q7ckiMhH4APiviPzWWjQH2JhMFSQiNYH2wJdVOcCIyLVeX/rZInKPiKwXkTwRWSwip3ppeorIfBHZJSIbROTuMPnUEpE/isgKEckXkW0i8paIdApJV19EHvTy3yIie0TkWxF5xPsQCk5bW0TuFZE1IrLbyzNLRB4LSXevV4eWYcq1TkQyw9T3HBG5W0S+w32RuCqKusT77y7wfmeJyO0i8p339/e1iAwJ/TvBtWIA5nivi2jMREQai8hzIvKDiBR4P58TkSOC0kwB1ntPxwfln1FK1tcDbYAnQwIMAKq6BPgj0AT4v0OVszqxlkzV1B6oBSzzuyBx8giub/xpIAW4DXjP+/D6GzAZ+Cfuw/h+EclW1Zdgf0D+H65rcTrwLNAA+D2wQETO9D5AwH2LvQGYCfwL2Af0BP4AdALODSrTc8B1wDTgSa98xwNnxaC+fwZqAi8CO4A1UdQlIF5/dwEPAanAJGAPrlt3ioh8q6oLvDSvAUcBQ730q7zrpY6ZiEgDYCFwHPB34HPc72U4cJaInKKqO733Xo77vbzuvR9B7xPOFd7PF0tJMwV4CrgcCzQHqKo9qtgD+B2gwFC/y1LB9bzWq+fnQErQ9X7e9X3AyUHXU4ANwKKga7d6ac8Nyfsw4HsgM+T1NcOU4wEvj1OCrm0F3o2gDvd6r20Z5t66kPcP1HcNUCdM+rLUJd5/d4H3Wxbyfs1wwebfJfxuM8rw72GC95oRIddHetcfCLrW0rt2b4R5/wLsiCBdlpdvPb//f1SWh3WXVU2dvZ9xb8l43S0D4/y2z6tqQdDzed7PT1T1s8BFL82nuBZFwDXAamCp19XSWEQa4z5U3wd6iEhq4PWquhdARGqIyOFe2g+8vLoF5bsdaC8iJ8aumvs9r+HHYCKuS0heFf53F2Ri8Pup6k/A1yH5RutSYDOu9RVsErDFux+tw3C/00MJpKlfjveqUqy7rGrqhPsmmhV8UdyMmmeBs3F9xxuA51T1qVi8qYgkASeGvm8crA1+oqq/ighAdpi0vwJHBD1vh+u+2VxK/o2BHwBEZARwI65LMvRL2uFBfx6N60LKEpG1uJlIbwFvqWrRIepzKF+XcL1MdfHE7e8u3Pt5fsHN2CqvVsASDRmHVNV9IrKGA1++orEDF2gO5TCgCBfUEJGRwBDcVOlPVDWjHGVISBZkqhjvg74DsEpV80Nu18CtB+iD+89+Eq7/fYOqzojB27fFjRWsiUFeZVFYxuvBBBcUx5SSZjOAiIwBHgdmA88APwMFuC6fKQQFHVV90xvM74sbtzkHN3g8T0TOCfo2X9oagpL+f5Y0kyziugSJy99dBPlKBO/np6+AM0XkOFX9NlwCb/JHW2B9oMWL+yL3CHAy0D0uJa1kLMhUPccD9XB97cWo6i4geIbQchF5BzgdKBZkRORS3GyZ44EfgZGqOte71wcYh/s2Xwj8RVUfADrivmWPEZEbcd96n1XVPwblewNucLkZbqD1RlX1c4LCN8CRwEcRtDAG4cZJzg9OKyLnhUusqltxU8tfEtc8eAQ3SeBiILBWKTCFtpGXdyDP2rjB77AfaDGoSyxU5PtFs4BvLdBWRGoEt2ZEpAZuZli4VlSkZgJn4iZ+3FlCmsG4rsL9ywlU9TWvDMeU470Tmo3JVD0Rj8d4//l6AF+GXB8GPAGMwH34PQr8R0Rqishg3PTSB3BrDX4LfOS9tCPQGvftrQ1wHnCXuMWigZbAaOAyoCHuP+7MaCsaI9OAdEr4Ni4iaUFPC3EffhJ0vwYhHzoikhyoc4C6UeHA76RR0K1A19c5IW99K2X//1mWusRCRb5frvezUampinsDF/RuCLn+e+/66+Uoz19xv6tbw32pEJHOwMN4XdDleJ8qx1oyVU9gfcJBLZkwnsENVE4LXPCmgT6GW3AWGPidLiLP4vrgnwH6q+r73r0cDuwo0BGYrKrTvLxWBOV7ODAeOFNVV3nXpgCPikhjVd1S1orGyNNAb+AxETkLFzB3AMfgxq7ygV5e2ldxHySzROQ1XP/71bhV38HqAxtE5L+4wLIJN14wHDeu8VZQ2g9wg+f3e2s5snGB/1S8fv0KqkssVOT7fYYb2xjr/dvZBWRr6avp/wRcCTznfegvw/1/uB7XhfunKMuCqu4WkX64KdvviMhMIBM39nkKrpX7K9BPVXNKzKgasiBT9XTCfdv+orREIvI47sPsrJDZRb1w3W1vegPAASm4VstmVX2vhGw74D6EAzoCP6nqNhG5EMhR1eByNcZ9EEW06roiqOpeEbkA12obBNzn3foZN5tqalDyx3CtmOtxH7Abcd2M/wBWBqXbjVsvcTauhVIP9w33v8DDqvpz0PsXisjFuOA9CjfGMxs3jrOAMihjXcqtIt9PVb8XkeuAO4DncWN9U4ESg4yqbheR071y9MNN5c8BXgDGq1sjEzVVXSMiHXB7l12GG2+r691eAfRQt/uGCWJ7l1VDIhL4ADxLVTeH3LseGBRuFox3b5iqnhLmXjrug7Shqm73ro0GzlbVi8TtRTVcVbsFveZuoKeqhnYVGZMQvO7SV3Cbed6mqk+UkG40cEl1nF1mYzLVjIg8g/t2fVCA8SwBuohIL3Fqi0h3b6bU50AHcVuRiIiki8gZ3us6AWsDAcbTmQPddp8CJ4pIZxFJEZEBuG+Ed8W+lsbEhzfBoD/wLvC4iAwPvu+tp6qN6zVK8v4/pfhQVN9YkKlGRKQFrkvmOCBbRHK9x6xAGq8762ZcF8NO3Mrt8bjdm5fhAsNk3MDsJ8Cx3ks7cPBkg06Ba6q6Ejfo/zpuXcRIio/7GJOQvEW6F6iqqOrzIbfH4XZ7fgw4w/vz7HiX0U/WXWaMMabCWEvGGGNMhbEgY4wxpsJU+ynMjRs31pYtW0b12l27dlG3bt1DJ0xAVrfEZHVLTIlYt6VLl25R1SMPla7aB5mWLVuyZEnokReRyczMJCMjI7YFqiSsbonJ6paYErFuIrL+0Kmsu8wYY0wF8iXIiMgIEckWd1zr0qC1FuHS9hSRhSLyi7jjYVeLyO0haQJHu4Y+ald8bYwxxpQk7t1lItIftyXHCGC+93OWiJygqt+HeUkubsuNLNx2HacDk0Rkt6pODEq3mwNrNgAIs9W9McaYOPJjTGYMMEVVA2dlj/J2NR1OmNXfqroUWBp0KVtELsMtbJpYPKlurKAyG2OMiUJcg4y3nUIX4M8ht2YDp0WYRycv7b0ht1K9gahkYDlwd3nOKSkqKmLLli1s27aNwsLw5yw1aNCAVatWRfsWlZrVLXK1a9emefPm1KxZM2Z5GlNVxLsl0xgXBEK3ws7h4PM0ihGRH3FnQtQA7lPVF4JurwGuw+08XB+39ckCEemgqt+EyWsoMBQgLS2NzMzMg96vTp06NGzYkMaNG1OjRg1CdiQGoLCwkOTk5NKKnbCsbpFRVbZv384XX3xBbm7uoV9QwXJzc8P+e64KrG6Jya8pzKF72UiYa6HOwG2ZfiruDJJsVZ0OoKqLgEX7MxNZiGvNjMLtw1X8zVUn4/bfomvXrhpu6uCqVas47rjjSEoqeW7Ezp07qV+//iGKnZisbpGrX78+ubm5dO3aNWZ5RisRp8JGyuqWmOIdZLbgThdMD7nehINbN8Woarb3xyzvxL17geklpC0UkSW4o4OjVlqAMSYgXCvXGOPE9VPUOxxrKe40vWC9gYVlyCoJqFXSTe889ZNw55sYY4wJkZHhHhXNj+6yJ3DH+X6KO/nvRqApbmt5RGQagKoO9p6Pwh1Ju8Z7/ZnA7QTNLBOR8bht57/BHYl7My7IFDvbwRhjTHzFPcio6gzvLPNxwFHAV0BfVQ1sUXBMyEuSgUeBlrjztL8D7sQLSp6GuDGWdNyZ9ctwZ8l/WkHVMMYYEwFfBh1UdaKqtlTVWqraRVU/DrqXEXxEqao+partVbWuqjZQ1c7e64uC0tyqqi28/Jqo6rneZIAqa+rUqdSrV4969epRu3ZtkpOT9z9v2LAhe/bs8buIZfLyyy/Trl076taty7HHHsu8efP23wvUK/BITk5m1KhRJea1detWLr30UurWrUuLFi3417/+FY8qGGPCqPYbZCaqIUOGMGTIEADuv/9+li5dyptvvulzqaLz/vvvc8cddzBjxgxOOeUUNmwoPpQWPDV4165dpKWlceWVV5aY38iRI0lJSSEnJ4fly5dzwQUX0KFDB9q3b19hdTDGhGfTp6qA5cuX06FDB7+LEbXx48dzzz33cOqpp5KUlESzZs1o1qxZ2LSvvvoqTZo04Ywzwm93t2vXLmbOnMkDDzxAvXr16NGjB/369WP69LATEZkwYQLDhx8Yuvv111+pWbMm+fluR6JHH32UZs2aUb9+fdq2bcuHH35YztoaUzkUFMD27bCxgvdJsZZMWYRMxUgtLISBA2HECNi9G/r2Pfg1117rHlu2wBVXHHx/+HDo3x9++AGOPjqqYi1fvpxrrrkmqtfG2oUXXsj8+fPD3uvRowdvv/12sWuFhYUsWbKEfv36cdxxx5Gfn88ll1zCY489Rmpq6kF5TJ06lcGDB5c4bfjrr78mOTmZNm3a7L/WoUMH5s6dGzZ9VlYWvXr12v98+fLltG3bltq1a7NmzRqeffZZPvvsM5o2bcq6detK3P3BmEQyfTosXgwi0Lo1TJoEgwZVzHtZSybB7dixg3Xr1tGxY8f91xYtWkT37t3p2bMnAwcOZO/evWXK89Zbb2Xp0qWHThjG22+/zbZt28I+QgMMQE5ODnv37uXVV19l3rx5LF++nGXLlvHggw8elPb7779n7ty5+7sJw8nNzaVBgwbFrjVo0ICdO3eGTZ+VlVXs7y64VZicnMyePXtYuXIle/fupWXLlhx77LFh8zEmUWzcCMOGQVERFBZCXp57XlEtGmvJlEXItg95wSvH69Q56H4xjRuXfj/KVswXX3xB/fr1adWq1f5rLVq04KOPPiI1NZWxY8fy5ptvckW4VlQJVqxYwR133BFVecoq0FoZNWoURx11FABjxozhwQcfZMKECcXSTps2jR49ehSra6h69eqxY8eOYtd27NgRdoV/QUEB3333Hb/97W/3X/viiy/2B53jjjuOp556invvvZcVK1Zw7rnn8sQTT9C0adPoKmsSUqADo6rs+pKdDTVruuASkJLirqeHLpOPAWvJJLjly5dz0kknFes+atq06f4P7xo1auzfuWD69OmcddZZdO3alTlz5gAwY8YMzjzzTE4//XT+85//ALBp0ybuv/9+TjzxRJ555hkAnnvuOU499VS6devGokUlT9w7//zzD5oNFnicf/75B6U//PDDad68eUSr5qdNm1ZqKwagTZs27Nu3j2++ObBl3RdffBF20H/lypU0a9aMOnXqAG4fsszMzGLjW1dffTXz589n/fr1iEjcgq8xFWLnTlqt/ZC9uwuKXS4ogFK+u5WPqlbrR5cuXTSclStXhr0ebMeOHYdMU9Guu+46vemmm8LeW7t2rZ588sm6Z88ezcrK0oEDB2pRUZFu375d+/btq8uWLdPzzjtPCwoKVFW1oKBAc3Jy9Nhjj9Uff/xRt27dqn369NHFixfrgAEDtKioSNetW6cXX3xxTOtw9913a9euXTUnJ0e3bt2qPXr00HHjxhVLs2DBAq1Tp05Ef+f9+/fXAQMGaG5urs6fP18PO+ww/eqrr/bfD+Qxbdo0rVevnn777be6e/duHTt2rAK6Zs0aVVVdvXq1fvjhh5qfn6979uzR3/3udzpkyJCw7xnJv5d4mDNnjt9FqDB+1a1nT/eoyHwqvG5vv616yimqycmqoNOShmgt8jU5WTU1VXXatLJnCSzRCD5jrSWT4IK7d4Lt2LGDIUOGMH36dFJSUnj99ddZuXIlvXr1ol+/fjRo0IC3336bMWPG7N+ivmbNmmRlZdG/f38OO+wwNm/eTOvWrXnjjTcYMWIEIkJSUlLYAfnyuPvuuzn55JNp06YN7dq1o1OnTowdO7ZYmqlTp3LZZZeF7fY6//zzeeihh/Y/nzhxInl5eTRp0oSBAwfy/PPPh23JZGVlce6553L++edz3HHHkZaWRuvWrfd30+3Zs4c777yTxo0bk56ezqZNm4q9jzGVzvbt8Pbb8H//ByefDAu93bpq1IBateCuu+CDDxi0cyKdu9fit7+FtWsrbtAfbEwm4S1ZsuSga/v27WPgwIHce++9tG3bFoBt27bx7LPP0qNHj/1p7rjjDoqKivY/r1GjBllZWXTu3BmAZcuWcdJJJ7F27VoKClzz+tlnn+Xiiy+OaR1q1qzJxIkTmThxYolpJk2aVOK9WbNmFXveqFEj3njjjUO+b1ZWFjfccAOvvvrq/mvBizxPOukkPv3UNo0wlUuxMSJVN0Vs3To3e3XZMjein5ICp54KgUk/557rHkFSUtyjIsZhgllLpgr697//zeLFi7n//vvJyMhgxowZDBs2jDvvvJNevXrRp08ftmzZwg033MD48ePp2bMnd93lDiUNnm0VCDLDhg3jnnvu4bTT3LlyAwYM8K1usZSVlUW7du38LoYxkdu5k+5b3mLEt2Ogc2f44x/d9aOOgsMPh7vvho8+gm3bYO5c6NnT3/JiLZkqadCgQQwK0/4NXb+Snp7OJ598Uuza3/72N8CdufLII4/sv75gwYIKKKl/fv31VzZt2sTxx5frNAhTDRQUuJlYGzdW/Lf+Ul18Mbz7Lg/v20eB1II2p0Hg32+tWvD++z4WrmQWZEy1dPjhh+/vAjSmJLFctBhxsPrhBxcwZs+Gn36CwD5+7dpBu3aMnnUuKxt0Z/ZHtaMrSJxZkDHGmDCCFy3CgUWLvXuXvUUTUbB66SV46CFYtco9P+oo6NPHRaeUFPB6FpZ/QkKxIGOMMWHEatFi2GD1+yJ6r5lI+qLX4QXv1JIaNdyi7Ouvd4P07du7qBQiVt138VpcakHGGGPCaNXqwOSsgGgWLYYNVnt2kD3hn6SftBs2bXIXBwxwj1LEc8+xWLHZZaUITO81pjRuXZqpatLT3Yd4UhIkJ0NqqnsecethzRp47DFarXj74GBVsx6tlr8BX3wBp58eUXbx3nMsVizIlKBu3br89NNPFBQU2IeIKZGq8ssvv1C7dmIMwpqyGTQIunUj8kWL8+bB7bdDmzbwm9/AH/5A+qf/DQpW6oLV32qQ3iGtTGUJtIiCBbrvKjNfustEZATwf7jjl1cAo1V1XglpewIPA22BOsB64K+q+ueQdJcDDwDH4o5oHquqr0dbxubNm7NlyxbWr1/Pvn37wqbJz8+vsh8uVrfI1a5dm+bNm8csP1O5lLpocft2WLoUzjrLPf/jH+HTT6FXL7jlFrjwQmjRgkHA889DXp4wa1Z0Yymx6r6Lt7gHGRHpDzwNjADmez9nicgJqvp9mJfkAs8AWcBu4HRgkojsVtWJXp7dgRnAeOA14DLgFRE5XVUXR1POpKQkmjRpQpMmTUpMk5mZSadOnaLJvtKzuhlTgrVr4a233CNwTtGWLdCgAfz97y6ChNn+qLwr7APdd9de68ZkUlLK2H3nEz+6y8YAU1T1RVVdpaqjgA3A8HCJVXWpqr6sqitUNVtVXwLeA4KPRhwNzFHVCV6eE4BM77oxxkQtSQtJLvKaEC++CMceC6NHw4YNcNttbppWvXru/vHHhw0wsVLm7rtKIK5BRkRSgC7A7JBbs4HTIsyjk5c2+KjD7mHyfC/SPI0x5ZeRcdDhsYmrsNC1Um66iVc+ac6ZW15z188+G558Er79FlascGtXTj/dzQyIk5QU12iq7C2YgHh3lzUGkoGckOs5wDmlvVBEfgSOxJX5PlV9Ieh2egl5hv01iMhQYChAWloamVFOGM/NzY36tZWd1S0x+Vm3bdvcnneZmcsrJP941C1pzx6OfeEFGn/8MbW2bqWwVi2KTu3GRVduPvDeHTu6Vfk//FCmvEv7+ylL3Sr67znW/FonEzpdS8JcC3UGUA84FXhURLJVdXo0earqZGAyQNeuXTUjyq9fmZmZRPvays7qlpj8rFvDhu5nRb1/hdStsBDmz3cB45pr3K7Gd9zhBu6vuorkvn05sl49jozBW5X291OWulX033OsxTvIbAEKObiF0YSDWyLFqGpgol6WiKQB9wKBILMxmjyNMdVQILD85z8wcybk5ECzZnD11W6e8eefu58xVkUbz4cU1zEZVS0AlgK9Q271BhaWIaskoFbQ80UxyNMYU1UVFh7Y12XcODd49I9/wBlnwIwZbuFkILBUQICJpczMxApYfnSXPQFMF5FPgQXAjUBT4AUAEZkGoKqDveejgGxgjff6M4HbgeATrp4GPhaRu4DXgUuBXkCPiq6MMcapNFviBxQWusWRr7ziWiyvvOKCyjXXQKdOcMEFULeu36Ws8uIeZFR1hogcAYzDLcb8Cuirquu9JMeEvCQZeBRoCezDLbS8Ey8oeXkuFJEBwIPAfV6a/tGukTHGlE2l2lNr+3Z4+GE2P/kSRxb85PaDueACqFPH3W/f3j1MXPgy8O8togx71q6qZoQ8fwp4KoI8XwVePVQ6Y0xsxXJL/Kht2uQWjpx6qgsqU6fydf2TmdjkccZ/dqG1WHxUuTsfjTGVnm97auXnuy6wiy6Cpk3dwL3q/jcfe+J/mdOkvwUYn1mQMcaUiy97ak2e7JpJV13lZoPddpvb5iVw/koV3XcvEVmQMcaUS7m3xA8RdueAtWtpMXWq6xIDaN7ctWBmz4bvv4dHH7VxlkrKDi0zxpTboEGBXYaJepfhg2zb5rrDpk2D+fNpKQJnnulmFvTt6x6lqHSz3aopCzLGmJgo7y7DxfIqzIMWLWDHDncuy8MP80nr1nS/6qqIXl+pZrtVcxZkjDH+y8lxiyNXrgSmUZCcCo8/7vYJ69IFRNgT4QrESjHbzexnQcYY4w9Vt3R90iR47TU3eyAjg5TCPBdkbrghqmwDs93y8g5cC8x2syATfzbwb4zxx5Qp7kTJ2bNh5EhYtQrmzCG3MJXt26M/uz5RT5CsqqwlY4yJiVJ7s1Rh0SJ44QV3JsuQIXDZZW5K2lVXuSlpxGYsJVFPkKyqrCVjTDVXoYeNbd8Ozz0HHTq4w73eeAM2b3b3GjRwwcYLMMFjKYWFB8ZSomnRJOIJklWVtWSMMRXnkktcE6dzZ7eAcuDAA0cVh4j1WEosZ7uZ6FmQMcbExq5d8K9/ubGWt96CRo3ggQfc6vuuXQ/5chtLqZqsu8wYUz4//wxjx8Ixx8DQobBz54GjiXv0iCjAQOx3DjCVg7VkjDHR27jxQBPk0kvh1lvd2EtgD7EyqpCdA4yvLMgYU82VafuVoiL36f/ll3DXXe4FTz4J554Lxx4bk/LEaiwlkU6PrMqsu8yYaiwwZTgry00Znj69hIR5eW7gvn17uPBC148VGKEfMSJmAcZUPRZkjKmmIp4y/MEHbrxl2DB3uuRLL8E33+yfemxMaay7zJhqqtQpw1u+cuMsnTpBu3ZuAH/0aLcLcpTjLaZ68qUlIyIjRCRbRPJFZKmInFFK2stEZLaIbBaRnSKyWET6haS5VkQ0zMNOLjKmBGGnDOcV0uquAW4V49ix7mKzZvD669CzZ1wCTGamjadUJXEPMiLSH3gaeAjoBCwEZonIMSW8pCfwEXCBl/5d4PUwgWk3cFTwQ1XzY18DY6qG4CnDtZIKSJV8JhVcS/qauTBhQikDNMZEzo/usjHAFFV90Xs+SkTOA4YDd4UmVtVbQi7dJyIXAJcA84on1Si31DOmGsrPZ9DAGjz/fA1OW/8qtzf4K+l3Xgv9/wq1avldOlNFxLUlIyIpQBdgdsit2cBpZciqPvBryLVUEVkvIj+KyNsi0qkcRTWm6srLg6efdjPC/vlPUlJg2bFXkr7iQxg82AKMial4t2QaA8lATsj1HOCcSDIQkZFAcyC4Lb8GuA74AheAbgEWiEgHVf0mTB5DgaEAaWlpZEbZAZybmxv1ays7q1tiKq1uSXl5NH3rLY55+WVSfv2VXzt2JHvnTrZt2wZA5tzlcSxp2VXX31vCU9W4PYCmgAJnhFwfD6yO4PWX48Ze+h0iXTKQBTxzqDy7dOmi0ZozZ07Ur63srG6JqdS69eqlCqrnnKM6d+7+yz17ukdlV21/b5UUsEQj+NyP98D/FqAQCF3L24SDWzfFiMjluNbLYFX9b2lpVbUQWAIcH31RjUlw27fDI4+4nwDjx8OCBfD++24qsjFxENfuMlUtEJGlQG/glaBbvYGZJb1ORK4CpgJDVPXVQ72PiAhwEq77zJjq5ddf4Zln4KmnYNs2aNkSBgxwU5DDqKq9NKZy8GN22RPAdBH5FFgA3IjrRnsBQESmAajqYO/5AFwL5nbgYxEJtIIKVHWrl2Y88AnwDXAYcDMuyAyPU5013B+uAAAgAElEQVSM8V9RES3//nd4803YscNtWDlunDvLxRifxD3IqOoMETkCGIdbz/IV0FdV13tJQtfL3Igr51PeI2AukOH9uSEwGdcNtx1YBpypqp9WRB2MqSwyMqBW4W7em1cHkpKov2aN26xy3Dg46SS/i2eMP9vKqOpEYGIJ9zJKe17Ca24Fbo1F2YxJGJs3M/y7R7lgw19h/RfQogVfTZhAz3MimqhpTFzYBpnGJJpdu9yK/GOP5Yofn2ThERft3+5Fa9h2hKZysX+RxiSSvDw44QT4/nu4+GJ+99PDfF+3HX1K2pTJGJ9ZS8aYyk4VPvnE/Tk11Z0+OW8evPEG39Zsx/btYbbnN6aSsCBjTGW2YIHbZr97d/jUm8cyejT06BH5gWPG+MiCjDGV0apVcMklLsBkZ7tTKYOmIpd04NjWrSk+FtqYg9mYjDGVTX4+nHEGFBTAgw+6lkvdusWSlHTg2IYNdoSSqVwsyBhTGezYAVOnwsiRULs2vPwydOgARx4ZNnnYA8cK4Kij7AglU7lYd5kxftqz58C2+zffDIsWuevnnFNigIHiB44lJ7v5AJMmQaNGBXEquDGRsSBjjB+KiuDf/4Z27Vx3WIcOsGQJnH56xFkMGgTdurmTkteudc+NqWysu8wYP+zb57Z+OewweO896N17/4LKskhJcY/00H3NjakkrCVjTLzk5MBtt8Hu3WT0SaH/kR/B559Dnz5RBRhjEoEFGWPKICPDPcpk3z639X7btvCXv7i1L0BO7RZuUMWYKsz+hRtTkebNgy5d4JZb4JRT3MrJ3r39LpUxcWNjMsZUFFU37rJtG8yc6c53iXG3mB04Zio7a8kYE0t797opyRs2uIDy0ktu9f5llxULMAUF2J5jplqwIGNMGZQaHObOdVu/jB4N//ynu3b00VCnTrFktueYqU4syBgToRKDw88/w9VXuxkBubnwxhtuFlkYJe05Zi0aU1VZkDEmAqUGh/Hj4bXX4J57YOVKuPjiEsdeAnuOBUtJcdeNqYp8CTIiMkJEskUkX0SWisgZpaS9TERmi8hmEdkpIotFpF+YdJeLyEoR2eP9vLRia2Gqk7DBIbnQBYcHH4QVK+C++9z+LqUoac+xVq1iW15jKou4BxkR6Q88DTwEdAIWArNEpKSz/XoCHwEXeOnfBV4PDkwi0h2YAfwT6Oj9fEVEulVUPUz1EjY45O1zwSEtze09FoGS9hyzFfumqvKjJTMGmKKqL6rqKlUdBWwAhodLrKq3qOojqvqpqn6rqvcBS4FLgpKNBuao6gQvzwlApnfdmHJLb1LEpCveJ5XdHMZ2UmvsZdJkiSo42J5jpjqJa5ARkRSgCzA75NZs4LQyZFUf+DXoefcweb5XxjyNKdnkyQya3oeZDX7Hye12sfaHmgy6LvoDwlJSoEEDa8GYqi/eizEbA8lATsj1HOCcSDIQkZFAcyB44md6CXmG/S8sIkOBoQBpaWlkRrmiLTc3N+rXVnZWN6CwkFqbN7MnPZ2k1q1pPG4cd/13DIiwenUmq1dHX4Zt2zoCkJm5PPpMwrDfW2KqynXza8W/hjyXMNcOIiKXA48BA1R1fbR5qupkYDJA165dNaPMm1E5mZmZRPvayq6q1S1QlczMCOu2ejVcd51bVLlihVvr0qcPDecF8jvE6w+hYcPY5BOqqv3eglndElO8g8wWoJCDWxhNOLglUowXYKYDg1X1vyG3N0aTpzEH2bcPnnjCTUeuU8et3j/EjLFoVNEvrcYcJK5jMqpagBu0D90hsDdulllYInIV8BJwraq+GibJorLmacxBtmyB006DO+6Avn3dmpdBg4qteXEtId9KaEzCibgl4w3aXwacB5wKNAVqA78Aa4C5wAxVXXmIrJ4ApovIp8AC4EYvrxe895kGoKqDvecDcC2Y24GPRSTQYilQ1a3en5/27t0FvA5cCvQCekRaP2No1AhatIDbb4crr7QzXoyJgUO2ZESkjoiMB37CtSa6AJ8CLwJ/wn2o5wEjgSwRmSsiJZ4hq6ozcFOLxwHLcYGgb9AYyzHeI+BGXDB8CjfVOfB4LSjPhcAAYAjwJTAY6K+qiw9VP1M9lLjn2PLlcNZZbmuYpCR45RW46ioLMMbESCQtme9wYx73AP9R1V9KSugFl2uA90TkNlWdFC6dqk4EJpZwL6O05yXxutHCdaWZai6w55iI23Ns9OgmZHTfAxMmwMMPwxFHwLp10LSp30U1psqJJMgMV9U3IslMVRcAC0TkXqBlOcplTEwE7zkGbs+xJ/7chptnnk361x/D4MHw5JOuq8wYE3OHDDKRBpiQ1+RgM7tMJRDYcywv78C1lKJ8src2IP2dd9wAvzGmwtjJmKZKC7vnWHIqrRa8BG0O86dQxlQjMZvCLCJdROTvscrPmFhIb7yPSee9Riq7qSu7SE2FMbetId0CjDFxEct1Mi1xs7uMqRx++AHOOotBr1/O3xrfwYknug0p+/TZ5HfJjKk27NAyUzUtWwYdOrif06czqf1fqN2orm1IaUycHXJMRkQK41EQY2KqXTvo1w/GjYPjjoO/+l0gY6qnSAb+9wGfAXMOka4dbqW9Mf746iv44x/hpZfgsMNgyhS/S2RMtRdJkMkCclT17tISeRtYWpAx8acKzz8Pt93mDmn57jvo1KlYEttvzBh/RDImsxToGmF+theHia9ffoFLL4WRI91+/l9+eVCAMcb4J5KWzDO4jSwP5V2gVfmKY0wZjRwJ777rtue/5Ra3/5gxptKIZMX/CmBFBOnygNCDxIyJvX37IDfXnfz12GPwhz9A585+l8oYE4Z97TOJZd066NkTBgxwYzFHH20BxphKLJKt/ss8mC8iR4nIqdEVyZgSvPIKdOzoZpENGWLb8RuTACJpyTwnIl+IyI0iUupWtSJyhohMBr4FTopJCY3ZtQt+/3t3zstvfuMWWA4c6HepjDERiGTg/zjcqZT3A38RkVXAF8BmYA9wONAaNwOtAfAx0Ns7SMyY8svPh/feg7vugvvuc9sqG2MSQiQD/7uB+0XkYQ4cv9yN4scvr8YdgTxDVVdXXHFNtfK//8HZZ7tDxVasgPr1/S6RMaaMIh74V9W9wIe4Q8xOUNWGqlpbVZup6tmqel+kAUZERohItojki8hSETmjlLRHici/RGS1iBSKyJQwaa4VEQ3zqB1p/Uwlsm8fjBkD55/PM+2eJyMDCzDGJKhIBv6TReReEdmGO4hsh4jMFJGG0byhiPTHtXoeAjoBC4FZInJMCS+pBWwBHgEWl5L1buCo4Ieq5kdTRuOjzZuhTx93WuWoUbzZdLjfJTLGlEMkYzI3AvcAmbg9zFrjto/ZAfwuivccA0xR1Re956NE5DxgOHBXaGJVXQfcDCAiV5SSr6rqxijKYyqL5cvh4oshJ8ftOzZkCIUZfhfKGFMekQSZ3wMvquqwwAURGQY8KyLDVLUg0jcTkRSgC/DnkFuzgdMizacEqSKyHkgGlgN3q+qycuZpopSR4X6Wec+w1FSYPx+6RrqTkTGmMotkTKY18ErItRm4D/MWZXy/xt7rckKu5wDlOeljDXAdcDEwEMgHFojI8eXI08TDvn3w2mvuzx07ugH+oABTUADbt8NGa6Mak5AiacnUw3WNBdvp/Yx2NFZDnkuYa5FnproIWLQ/M5GFuNbMKLyutmJvJjIUGAqQlpZGZpRb9Obm5kb92squvHXbtq0jAJmZy0tMU3P7dk647z4OX7aMz599lh3t2xe7P3t2Ez75pB0iSsuWypgxa2JyqqX93hKT1S1BqWqpD6AINwbTOuhxvHf9opDrrQ+RVwrufJorQ64/B8yNoCxv48ZzIin3P4BZh0rXpUsXjdacOXOifm1lV966de+u2rGj6oYNJST4/HPVFi1Ua9VS/cc/Drq9YYNqaqqq2zvGPVJTS8mvDOz3lpisbpULsEQj+CyOdArzq8A3QY/AVOU3Qq5/c4iAVoA7OqB3yK3euFlmMSEigttxYEOs8jSRmz4dFi+GrCxo3do9L+bll+H006GwEObNg2uvPSiP7OyD11ympLjrxpjEEUl3WTQzyErzBDBdRD7FHSFwI25h5wsAIjINQFUHB14gIh29Px4GFHnPC1R1pXd/PPAJLsgdhusiOwk3Y83E0caNMGwYFBW553l57nnv3pAeGHVLSoJTToEZMyAtLWw+rVrB3r3FrxUUuOvGmMQRyYr/qbF8Q1WdISJHAONw61m+AvqqauCYgHDrZUJniV2EO1agpfe8ITAZN3lgu5f+TFX9NJZlN4cWaIHk5R24lpIC2cu2kV44Hy680O1BdsUVpZ79kp4Okya5Ro6Iy2PSpKBAZYxJCJG0ZGJOVScCE0u4lxHmWqnb7arqrcCtMSmcKZewLZD8IloN7Q3b17it+hs1iuhwsUGD3KnKeXkwa5YFGGMSkZ0nY2Iq0AJJSoLkZEhN2cekohtIZyN8+KELMGWQkgINGliAMSZRWZAxMTdoEHQ7RRnf6C+sLWjOoO7fwZIlcPLJfhfNGBNnvnSXmaovpZbQInUT6aOugscfj3p7/qq6dMCY6sKCjImtn3+GDRuALvy95f0MfsZOrzSmOrMgY2JnxQo4/3yoUYPMNWvscDFjjI3JmBiZOxd69HBTy2bOtABjjAEsyJhYmDHDnQFz1FHwySfQqZPfJTLGVBIWZEz5qMJ//gPdurkt+luUdWNuY0xVZmMyJjqFhbBtGxxxhNucLCkJattp18aY4qwlY8ouLw+uvBLOOgvy86FOHQswxpiwLMiYstmyBc4+G954A667zoKLMaZU1l1mIrd2rZuivH49vPIKXH653yUyxlRyFmRM5IYOdS2ZDz9058EYY8whWJAxh6bq9tv/xz9g1y74zW/8LpExJkHYmIwp3YsvwoABbjbZ0UdbgDHGlIkFGVNMRoZ7oAr33OO6yHbsgD17fC6ZMSYRWXeZOUhy0V5+8+ij8N57cP317uQw2ybGGBMFCzKmmIICGLjqAdi2HO67D+6+243HGGNMFHzpLhORESKSLSL5IrJURM4oJe1RIvIvEVktIoUiMqWEdJeLyEoR2eP9vLTCKlBFTZ8OixfD7TvuoWWN75ne6h4LMMaYcol7kBGR/sDTwENAJ2AhMEtEjinhJbWALcAjwOIS8uwOzAD+CXT0fr4iIt1iW/qqa+NXWxh2/T6KiqCgqAZ79qUwbBhs3Oh3yYwxicyPlswYYIqqvqiqq1R1FLABGB4usaquU9WbVXUKsLWEPEcDc1R1gpfnBCDTu24OZeNGsvvdQs29u4pdTkmB7GyfymSMqRLiGmREJAXoAswOuTUbOK0cWXcPk+d75cyzevjpJ+jZk1YbF7G3Vr1itwoKoFUrn8pljKkS4j3w3xhIBnJCrucA55Qj3/QS8kwPl1hEhgJDAdLS0siM8iD53NzcqF9bGdTKyaHjmDHU3LaNDY8+wugNa3jkkXaIKDVqKKNHr2H16k2sXu13SWMr0X9vpbG6JaaqXDe/ZpdpyHMJc63C8lTVycBkgK5du2pGRkZUb5iZmUm0r60UXnrJ7aj80Ud06taNTkBmJuTlCXffvZDLLjsNOMHnQsZewv/eSmF1S0xVuW7xDjJbgEIObmE04eCWSFlsrIA8q669e926l2uucRteHnHE/lspKe7RqFGBjwU0xlQVcR2TUdUCYCnQO+RWb9wss2gtqoA8q6aVK93WMHPnuudBAcYYY2LNj+6yJ4DpIvIpsAC4EWgKvAAgItMAVHVw4AUi0tH742FAkfe8QFVXetefBj4WkbuA14FLgV5Aj4qvTgL58ks45xxIToYjjwybJNAtXEW7h40xcRb3IKOqM0TkCGAccBTwFdBXVdd7ScKtl1kW8vwiYD3Q0stzoYgMAB4E7gO+A/qrath1NdXS559D796QmgoffQRt2vhdImNMNeDLwL+qTgQmlnAvI8y1Qy47V9VXgVfLXbgEFRgzDNsC+eYbd5plgwYuwLRuHceSGWOqM9uFuTpo3drtpjx3rgUYY0xcWZCpIgoKYPv2kG1g5s2DH35wYzCPPgotWvhWPmNM9WRBpgoIbGyZleUaKtOnA7NnQ58+MGqU38UzxlRjttV/gtu4EYYNg6Ii9zwvD4bdUEhvvYH0E9q6ky2NMcYn1pJJcNnZB58nllKwk+zWZ7tB/hKmKhtjTDxYSybBtWrlFvAHK0iqTas3n4JGDfwplDHGeKwlk+DS02HSJEhKcuP7qbWVSc8Xkd7WAowxxn8WZKqAQY3e4ZWGN9D5xD2szRYGDa3jd5GMMQawIJP45s6FK66gfcFyGtfbQ3rYww2MMcYfNiaTyJYuhYsugpYtaTvvf7zb+DC/S2SMMcVYSyZRrV4N550HjRrB++9D48Z+l8gYYw5iQSZR7doFaWkuwDRv7ndpjDEmLOsuSzR5eW4n5S5d3Nb9SfY9wRhTedknVCLZtg26d4cJE9xzCzDGmErOPqUSxe7dcOGF7mTLrl39Lo0xxkTEussSQUEBXH45LFoEM2bAuef6XSJjjImIBZnKThUGD4b//Q/++le44gq/S2SMMRGzIFPZiUDfvnDKKXD99X6XxhhjysSXMRkRGSEi2SKSLyJLReSMQ6Tv6aXLF5G1InJjyP17RURDHhtLyi9hfPut+zl4MIwZ429ZjDEmCnEPMiLSH3gaeAjoBCwEZonIMSWkbwW866XrBDwM/EVELg9JugY4Kujx2wqpQLw88gi0bw/LlvldEmOMiZof3WVjgCmqGjhNa5SInAcMB+4Kk/5G4GdVDRzxuEpEugG3AzOD0u1T1cRvvQC88ALcdRdcfTV06OB3aYwxJmpxbcmISArQBZgdcms2cFoJL+seJv17QFcRCT6uq7WI/OR1w70sIq1jUugKlpHhHvv9+98wYoSbrjxliq2FMcYktHi3ZBoDyUBOyPUc4JwSXpMOfBAmfQ0vvw3AYuBaYDXQBBgHLBSR9qr6S2iGIjIUGAqQlpZGZmZmFFWB3NzcqF8bsHlzJwoKknjttSyO+WUFnYcPZ8dJJ/HlTTdRtGBBufIuj1jUrbKyuiUmq1uCUtW4PYCmgAJnhFwfD6wu4TVfA3eHXOvp5ZNewmvqAZuAMYcqU5cuXTRac+bMifq1qqrTpqkmJakmJ6umpqpOm1Ko+uc/q27fXq58Y6G8davMrG6JyepWuQBLNILP/Xi3ZLYAhbjWSbAmHNy6CdhYQvp9wEGtFABVzRWRFcDx0Re1Ym3cCMOGQVGRe56XB8OGJ9F77W2k2479xpgqIq4d/qpaACwFeofc6o2bPRbOIg7uSuuNi6J7w6RHRGoDv8F1pVVK2dlQs2bxaykpSna2P+UxxpiK4Meo8hPAtSJyg4i0E5Gncd1oLwCIyDQRmRaU/gWguYg85aW/ATf+8udAAhH5s7eWppU38+xVoC4wNU51KrNWrWBvgRa7VlAgtGrlU4GMMaYCxD3IqOoMYDRucH450APoq6rrvSTHeI9A+mygL3Cml34scLOqBk9fbg78G7dW5jVgD3BqUJ6VTnqjAia1eIhUdpOStI/UVJg0CTs+2RhTpfiyrYyqTgQmlnAvI8y1uUDnUvIbELPCxcvDDzNozb18efwJfFD3UmbNsgBjjKl6bO8yv4wZA23b8tiAS/0uiTHGVBhb6RdvCxa4o5Pr14cBidcAM8aYsrAgE09LlkDv3nDrrX6XxBhj4sKCTLz8+CP06wdNmsADD/hdGmOMiQsbk4mH3Fy46CL3c+FCSEvzu0TGGBMXFmTiYdQo+PJLeOcdOPFEv0tjjDFxY0EmHu6+G845B847z++SGGNMXFmQqUhLlkCXLtC6tXsYY0w1YwP/FeXDD6F7d3j8cb9LYowxvrEgUxFWr4YrroC2beH3v/e7NMYY4xsLMrG2ZYs71bJmTXj7bWjQwO8SGWOMb2xMJpZU3Sr+H3+EOXOgZUu/S2SMMb6yIBNLIjB2rGvNdO/ud2mMMcZ3FmRi5euvoU0b6NXL75IYY0ylYWMysTBzJrRrB//9r98lMcaYSsWCTHktWQKDBkG3btCnj9+lMcaYSsWCTDnU2rTJ7UmWlgZvvAG1a/tdJGOMqVRsTCZae/Zw4tix7myY9993uysbY4wpxpeWjIiMEJFsEckXkaUicsYh0vf00uWLyFoRubG8eZbXxl9r8W7nkWx8/nXb9NIYY0oQ9yAjIv2Bp4GHgE7AQmCWiBxTQvpWwLteuk7Aw8BfROTyaPMsr+nT3VZk179zE61/fzbTp1fEuxhjTOLzoyUzBpiiqi+q6ipVHQVsAIaXkP5G4GdVHeWlfxGYCtxejjyjtnEjDBsGeXmwa1cN8vLc840bY/1OxhiT+OIaZEQkBegCzA65NRs4rYSXdQ+T/j2gq4jUjDLPqGVnux1jgqWkuOvGGGOKi/fAf2MgGcgJuZ4DnFPCa9KBD8Kkr+HlJ2XNU0SGAkMB0tLSyMzMjKz0wNatKezZ0817Syc/v5ANGxaTmVkQcT6VXW5ubpn+XhKJ1S0xWd0Sk1+zyzTkuYS5dqj0getSSpqwearqZGAyQNeuXTUjI+MQxS3uxRddF1lS0j6KimowaVIyl10W80aTrzIzMynr30uisLolJqtbYop3kNkCFOJaJ8GacHBLJGBjCen3Ab/ggklZ8yyXQYOgd2+YOfNLLr+8M+mh72yMMQaI85iMqhYAS4HeIbd642aEhbOIg7u9egNLVHVvlHmWW3o6tG+/wwKMMcaUwo/usieA6SLyKbAAN3usKfACgIhMA1DVwV76F4CbROQpYBJwOnAtMDDSPI0xxvgj7kFGVWeIyBHAOOAo4Cugr6qu95IcE5I+W0T6Ak/ipiT/DNysqjPLkKcxxhgf+DLwr6oTgYkl3MsIc20u0DnaPI0xxvjDNsg0xhhTYSzIGGOMqTCiWtrylKpPRDYD0Y7dNMZNy66KrG6JyeqWmBKxbi1U9chDJar2QaY8RGSJqnb1uxwVweqWmKxuiakq1826y4wxxlQYCzLGGGMqjAWZ8pnsdwEqkNUtMVndElOVrZuNyRhjjKkw1pIxxhhTYSzIGGOMqTAWZIwxxlQYCzKm2hARCf5pjKl4FmSiICLHi0ia3+UwZaPeLBcNmu1iAcdUBiJSZT+LbXZZhESkCTAIuBXYjDuZcwPwKjBTVXf5WLyYEJETgBOABsAuYLGqZvtbqtgQkfZAO1zddgOfVKG6VeXfW5WtW3VhQSZCIjIF94/9bdyxz0cAHXEfXD8Cf1LV930rYDmJyJ3A/wOOB37C1bEIWAb8C3cYnGoC/oOxulndKisRORq4DjgZ+A5YgzsPK0tVfxURSeT6gQWZiHhdKjtxB6F9HHTtaKAb8HugBdBfVZf7VtAoeQe+rQP+T1Vf8P7hnwJ0B7oAtYG7VDXTt0JGyepmdausRKQVMBNIBT4DTgSaAFuBj4EnVfU7/0oYI6pqj0M8gPZAFnBqCfdTgCXAw36XNcr63Qh8VsK9DrguwR1Aa7/LanWzuiV63YLq8QLwFpAedO0Y4E7czvCbgYv9Lmd5H1V2sCnG1gKbgCe9Qf9if2+qWgBMBc73o3Ax8AvQWETOBBCRZBFJBlDVL4BrgJXAef4VMWpWN6tbZdUe+FhVN4pITRGpoarfq+ojqtoC+AC4UUSSEnmCigWZCKhqHjAW16ydBgwWkaNFpC6AiNQBeuL6UhPRO7iuiTEi8ltVLVTVwsBNVc3HTXQ4wqfylYfVzepWWX0I/D8Rqa+qe1V1nxdsUr37zwFtgFPUa+YkJL+bUon0wPWZzgDycAcMvQX8HfgeWAz81u8yRlGnwLhcT9w3w3zgNaAf0ArX/z0K+BVo6Xd5o6kf0AtYVdXqFvR7W1GV6gYkeT/Pqqq/N69+XYCfgc+BfmHut/XqXsfvspbnYQP/UfCmM18AXIL7R/AV8Iqqrva1YDEgIlfjZruchpvJk+P9fFZVn/azbGUlIg1UdXvQ82uAoUAnoAbuP3ii1i1JVYuCnv8/4AbcwPg+Evj3Fsr7N3k97t9kIVWgboFZYyJyHPAn4FTcF9f5wCzcTNbLgXWqepV/JS0/CzLlFPqfPdGISA3cf9yG6qZMJgG1cOsSTgAaAfNUNcfHYpaZiJwM3I/rkvgUWKKqu717JwCHA82AuQlYt9a4QPkJ8LMG/ScWkca4b8gNSMy6JQMtgT64dWhvq+tGSsb9W+wMNAQyE61uJRGR2sA53qMbbqzmF+BvwHRVjfZ4+ErBgkw15i1QvB3XLbEEuE9Vv/S3VLEhIg/hZulkAjWB1cB7uA+op1S1nn+lKx8RmQHsAW5S1R0icizuW/5u4PUE/9JzEzAS19LcAdyiqvO96b7rE7luAd4XuYuBI3HjvN/hJgDs8AKOAvVVdYuPxYwZCzLVmIh8hpuTPxvX9dcGOFNV1wSlqa+qO30qYtRE5HRgOvA4LrD0AergWi87cRM5lmqCrR4PWrPVW1UXichI4A+41fCNcGNQ9wKTNWigPBF4dcvB1ecL3BegLbjfX0fcGpKJwBOaoDtsiEh9XAulF67L7yfc72wXbjbZP1X1Gy9tQveSBFiQqaZEZAjuP/EZqrrN+w8+G/hJVa8N6jN+GnhGE3BRmIgMBc4ABuO6AHvjBpC/xX1LzgeuS6S6icg5wDPASbgvBbOAB4BFuCB6Ga4v/2JVXeVXOaPhjZmNA05Q1SIROR43qWEmbrbZsbiFz1ep6kL/Sho9ERkLXAXcoKqfichvgK5AD9yq/59x/yY3+1jMmLIpzNXXZcA7XoBJ8fr1HwJOF5HjvQDTExiVSB/CAV6XxD9wweVWdVNea+D6+S/EHXf7TQLWbT2wDUjDjU98BfxNVVeo6mfAU7gPqkRcs9UaN8MxsCbkGlyLZpCqvoRrxazAdTUlqvOAqd7vClVd7dVtJG5fxN/gWuBVhgWZakhEagF7ge1ei6XAWwg2B8jGrWT4fG0AAAbUSURBVLYGNxPrFb/KWR6qWqSqe4FJwAgRSQdGAK+p6neq+jdVvcHfUkblW9zvbjJuK6PduDEnALzB8J9xWx4lmo+AM4EJIjIeuBZ4V1X3AXjf7n/BbSmTcLxJNl8Bl4vIkd61ZBFJVrcO6GPc/73mItLBz7LGkgWZ6qkA12op8FosEviPDDwNXCciLXHTtJ/xp4ixoaofAk8A84CzgZdg/yymhOO1OAcAybh1I5cDD4hIZxGpISIZuG/LM/wrZdQWAY/h1v6cggukF4hIM9i/mWRv4N++lbAcvP9jU4F04HYRSdOQRabA17jZdVVi0B9sTMZwYM6+9+eawOu4/u+6qnqMr4WLAa/l9ifcN+DR6nZwSGjeAPJVwCO4Ve/LcQP/ybg1W2N8LF65eCveFddCexM3OL4VN762QVUv8LF4UfO6cJOA3+G+5NXA7cE2A/gBN852EdBOVU/2q5yxZkHG7Bc02D8Q+Cdwr6re73e5YkFEUoB6qrrV77LEmoi0AM7FfTB/A8wPapkmNJH/3969hVhZhWEc/z9qgWCmYoVpaJgWFJiT0oEOUthFdPCiEoK0sCijbrwIoawgKKluJrADaokXRnhRSCiiHUgCExtFO1jYoKYkmilO5il9u1hrw3bPaM3MXm6deX4wbL9v9l7fEsR3r3cdXl1OWm12K7AMWBIRWxvbq+6TNIiUDnyEtHKujbQsfR3poN1vG9e7+nKQsXbySrMJQGtE7Gt0f8yqR9vnI0kDgbaajbN9SKPrAaQjqw71pOBS4SBjZlaYpPdJo5R1pE2lBzt4z+DoIYXKqjnImJkVVJV+PkiaW1pFOn1iE2lf2mFJA0iLUuZExOaGdbYABxkzs4IkzSedD/gGaX/adNLCmp+B5aTz9a4GmiPiwkb1sxQHGTOzQvLemOeBgRExu+r+taTTCx4kzcsMIm3SnNGQjhbkIGNmVpCkwcBlEbElr3I8XrMAYCpp709TRGxsVD9L6dfoDpiZ9WQRsZ9UYI1IpdorK8uUN2IOBI70xAADDjJmZmddzenKFwEvN6ovpTldZmbWQPmUjRM94Vj/jjjImJlZMT4g08zMinGQMTOzYhxkzMysGAcZMzMrxkHGzMyKcZAxqyFpiqR2Rb8kvSLpnFiOKWmRpMg/XxVo/8Wq9nfWu33rPRxkzNqbAnRUWXIBcPNZ7suZ7Cb155kCbX+Y215eoG3rRbzj3+x/ioidwLn0rf5oRKwt0XBE7AJ2Sdpbon3rPTySMasiaRHpKPbhVemibfl3p6TLKteSrpG0UtIhSTskPZ5//6ikLZL+kvSlpNEdPG+cpGWS9ks6LOkbSbd1o/99JLVJeqnm/uDc1+n5eqykTyTtkXQk93tpPjXYrG78D8rsVK8ClwATgfvzvaP/8ZmlwHzgLVLq6gNJY4BJwGzgAqAZWALcWPmQpCZgDbCBdOz738DTwGpJt0TEd13o/1hSOd8NNffH59fK/c+AA8BM4A9gOHAP/uJpdeYgY1YlIn7NKaJjnUhFvRkRiwEkrQfuA54CrqyU2ZU0DGiWNDIitlc+B+wA7qw6nXcl8D0whzQ31FlN+bWl5v54UrD8SdJQYAzwQEQsq3rPki48z+yM/K3FrPtWVP6Qj3XfA6ytqeO+Jb9eASCpP3AHaRR0UlK/nKoSsBq4vYt9uQHYk+dUqjUBP0TEcWAf0ArMlfRkHnWZFeEgY9Z9+2uuj53mHqQqiABDgL6kEcvxmp9ngcG55khnNdF+FANpJLMBIBfMmgysB14HfpHUKmlmF55ndkZOl5k1xgHgJDAPWNzRGzp79LskAdcD79bcv5RUQ35eVdutwLT8mXGkwPaOpG0RsQKzOnGQMWvvKNC/5AMi4pCkNaT/4FvqVEtkNKlW/Ima+8+RshbtKi/mUc3GvPl0BnAdVek/s+5ykDFr70dgSE4frSeVxt1c4DmzgK+BlZIWAr8DQ0kpr74RMbuT7VUm/Z+Q9Btpbuhu0pJsgAmSWkiT/s3Ax8BWUtruMeAf4Isu/23MOuAgY9beAuAm4DXSyGA7MKreD4mIFkkTSaV33wYuBvaS5lTe60KTTcCfpGXTc0lLmT8FHgI+AqZGRLOk3aRVbbOAEcARYDNwbxeXTZudlitjmp2H8qbRScBVpKzXCUmrSBeT69C+SCOchcBdETGiu21a7+TVZWbnr5Gk1Wif5+vxQL1GIi/ktqfVqT3rpTySMTsPSRpFmr8BaCOlvLYBD0fE0jq0P4x0CgCkjambutum9U4OMmZmVozTZWZmVoyDjJmZFeMgY2ZmxTjImJlZMQ4yZmZWjIOMmZkV4yBjZmbFOMiYmVkx/wIJG8O3nJuy4gAAAABJRU5ErkJggg==\n", + "image/png": "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trZ+fOSRRwJaP0rjUAgRcLm5uQwdOtTrz02bNo1p06a1uF9BQQHr1q1j8ODBgFnfatWqVezatYu+ffvSvXt3rr32Wg4ePHjYZ9etW0dUVBT9+/ev3Xb00Ue3eOdw4cKFfPzxx6xbt453332XM844g/vuu49du3ZRU1NzWAXjjmvcuHH06tWLLVu2sGPHDiZNmlRvn1deeYX333+f3bt3M3HiRE477TQKCwuZPXs2kydPbrKHNy8vjyeeeIKVK1eyf/9+Fi9eTHp6OjU1NYwfP56jjz6aHTt28Omnn/Loo4+yePHiZmOqrKxk/PjxLR7/tdde48MPP2Tz5s388MMPzJs3j4qKCiZMmEBWVha//fYb5557LgsXLqz9zPr16xuNVQghwk1r68cbbrjBo/qxKbfddhvJyckcd9xxzc75Ky4uZubMmTz88MMely31o9Ga+jEvL4+5c+cGtH6UxmE4q6jg605nsjj1Ynj9dSgubvg2+/ZBfn6Q4hOOVFxczJYtW1pV+T311FM89dRTze5TWVnJ5MmTueSSSzjiiCMA01isrKzk9ddfZ9myZeTm5vLdd99x7733Hvb5kpIS2rVrV29b+/bt2b9/f7PHnT59OikpKaSlpXHCCScwevRohg0bRlxcHBMnTuS777477DMrVqxg586dPPjggyQkJBAXF8fxxx9fb5/rrruOHj16kJubS0lJCbfeeisxMTGcdNJJjBs3jldeeaXReCIjIykvL+fnn3+msrKS9PR0+vTpw8qVK9m1axczZ84kJiaG3r17c+WVV/Lqq682G9M333zj0fGvu+46unXrRseOHRk/fjy5ubl88803VFZWcv311xMdHc0555xTbzhSREREo7EKIUQ48aV+fOSRR1qsH5sya9YsNm3axI4dO7jqqqsYP348GzdubHTfO+64g8svv5zu3bt7XL7Uj4fi9bZ+bCpWf5LGYTjLy2Psbx9wUuGrcO65kJwM27cDMP/5KpYvh9WroXdvaGZEnRBe+f7770lMTCQjI8PysmtqasjKyiImJoYnnniidnt8fDxgKqiuXbuSnJzMjTfeyAcffHBYGW3btqW4QUdJcXExiYmJzR47JSWl3vEavi4pKTnsM9u3b6dXr15ERTW9qlCPHj0AM9SlR48eREQc+tru1asXO3bsAODll1+uTSZwxhln0LdvXx599FHuuusuunTpwqRJk9i5cydbt25l586dJCUl1T7uu+8+CgoKmo2ppeO7paam1v67TZs2lJSUsHPnTtLS0uot0NurV6/af/fp06fRWIUIpuY6SGU+ovAHf9aPzRk9ejSJiYnExsZyySWXcNxxxzVaP+bm5vLJJ59www03eFW+1I9Ga+rHvn378sADDwS0fpTGYTjbtYuSyHZcN3QZLFkCM2dC9+7k58PUK6upqYHqajh4EKZOlTuItuS+gqn7cPcsHjjQ+Pvz5pn3d+9u/P0FC8z7ro4Eb+Xm5jJkyJB6X4QrVqxg7NixnHjiiVxwwQVUVlZ6Xa7WunYuw8KFC4mOjq59r0OHDnTv3r3eMev+u67+/ftTVVXF+vXra7d9//33tUNUrdSjRw+2bdvW7GR6d5zdunVj+/bt1NTU1L63bdu22nmTkydPrk0m4M7UeuGFF/LFF1+wdetWlFLccsst9OjRg4yMDIqKimof+/fvr70QaCqmlo7fnK5du7Jjxw601vU+W1djsQoRLPPnIx2k4SDE6kh/1Y/eUkrV+752y87OZsuWLfTs2ZPU1FQeeughFi5cyDHHHGN5DFI/HnLeeecFtH6UxmE4O+kkThtZxDd6FPn9T4QZM0ApNm+GOtfVAMTEwObNwQlTOEtj8yl69OjBZ599xtKlS0lPT+ftt9/2utxrrrmGNWvW8O6779beKazr0ksvZfbs2RQWFrJ3714eeeQRxo0bd9h+CQkJnH322cycOZPS0lK+/PJL3n77bbKysryOqSWjRo2ia9eu3HrrrZSWllJWVsaXX37Z6L6jR4+mTZs2/Otf/6KyspLs7Gzefffdw+ZguOXl5fHZZ59RXl5OXFwc8fHxREREMGrUKBITE5k1axYHDx6kurqaH3/8kZUrVzYbk7fHr2vs2LFERUXx+OOPU1lZyRtvvMGKFStq31+/fn2jsQoRDPn5pkNUOkhFoPmrfqyqqqKsrIzq6mqqq6spKyurbeAUFRWxePHi2m0vv/wyS5cu5fTTTz+snKuuuoqNGzeSm5tLbm4uV199NWeeeWbtnDwrSf14KNYlS5YEtH6U2jeMzZ8Py1coVq9W9XpGMzKgUsXW27eiwmwXNpOdffjDPWG9TZvG33evgZSc3Pj7559v3ncN5/DW999/f1jl17Vr19oGXUxMTJNffFdffTVXX331Ydu3bt3KnDlzyM3NJTU1tXb4yMsvv1y7zx133MHIkSPp378/AwcOZNiwYdx+++2177snyIOZ23jw4EG6dOnCBRdcwNNPP+2XO4eRkZG8++67bNiwgZ49e9K9e3cWuHudG4iJieHdd99l0aJFJCcnM23aNF588cXaeZUNlZeXc+utt5KcnExqaiqFhYXcf//9REZG8t5775Gbm0tGRgbJyclcccUV7Nu3r9mYvD1+w9jfeOMN5s2bR8eOHVmwYAFnn312i7EKEQzSQRpGQqyO9KV+vP766xutHwHuvfde4uPjeeCBB3jppZeIj4+vnXNfWVnJjBkz6Ny5M8nJycyePZu33nqrXlI2d/3Ypk0bUlNTax/udRk7d+7s9bm2ROrHQ7Heeeedga0ftdaOfQwfPlw35vPPP290uxM1da6//qp1fGS5Bl37iI8327XW+sUXtY6hXLejSMfHm9d2EE6/W63rn+/PP/8cvEAssmXLFj1mzBhdUVFx2HvFxcVBiCh4wul8vT3Xpv7WgVU6BOoeuzwaqyPD+TvU7ddfTX3YVP2otdZjx2o9dGj9bXYQTr/fhudq9zqyufpRa6kznMyb87WifpQ7h2Fq82aIrqm/jkrdntGsLLi753O8z5lsyi3GDyPqhKinuLiYrKws5s2bV2++oBBCBFJqKsyZAxEREBkJ8fHmtTuXhMxHFIEm9aMIJGkchqmMlANU6vrZlhoOHf285xTuPOFzUvu3Qwh/qqqqYtKkSdx5550MGDAg2OEIIcJcVhaMHg1HHQWbNlHbQSrzEUWgSf0oAk0ah2EqtXQjc5hKlKpqtGcUoDyyDdUR0kMl/O+VV15h+fLl3HPPPWRmZjY5r0AIIQIlJgbat69fL8p8RBFoUj+KQGt68RDhbBs2kMVLLD7yb/wUeTSLFtWvAAGyP9cwfTq8chxccEFw4hRhISsryy/ZQIUQwmfPPAMpKTBxoknY1mAlAUnYJvxJ6kcRaHLnMJwNHszedumH9YzWUgrefBP8kKJYCCGECGUP/nAat66dAi+8AGefDRdeSGr0nmbnIwohhN1J4zBcTZwIP/5IaVT75vfr2xc2bAhMTEIIIUSIGBn5HaefFQNLl8Ldd8P//geDBpHV9s1G5yMKIYQTSOMwzLmX5WmSNA6FEEKEm927zeOII8wkw5kzYdUq6NYNzjmH3lXrmh51I4QQNiaNw3A1ciS4FvxuVt++UFAA+/f7PyYhhBAiFOTlmee6i1gffTSsWAEffsgvbfo3/jkhhLA5aRyGowMHTA9oTU3L+/brB927mwaiEEIIEQ7cjcOGSwdER8Opp9Kx/Feytt4L69YFPjYhhPAjaRyGo40bzXO/fi3ve845sH27uYMoQp7WOtghCOFX8jcuAqJnT5g8GdLTG327TfV+Lt9yB3zzTWDjEj6R7w/hZFb9fUvjMBytX2+epcHnKNHR0Rw8eDDYYQjhVwcPHiS64UJzDqOUmqaU2qyUKlNK5SilTmhh/wuVUrlKqQNKqXyl1EtKKZkN54tTToGXXjIpSRvx0hfpJmWpuz4VIS8yMpLKhuuQCOEglZWVREX5vkqhNA7DkTvBjKeNw0svNZnaREjr0qULO3bs4MCBA9I7KhxHa82BAwfYsWMHXbp0CXY4fqOUOh94DLgPGAZ8BSxSSvVsYv/jgPnAC8BgYAIwCHg5IAE71d69zb8fE2PuKkrj0DaSkpIoKCigxpMpNULYTE1NDQUFBbRv38IqBB7wvXkp7KdnTzjvPPD0DygvD7Zu9W9Mwmft2rUDYOfOnY7sHS0rKyMuLi7YYQRMOJ2vp+caHR1NSkpK7d+6Q90IzNNaP+t6PV0pdTpwDXBbI/uPBX7RWj/ier1ZKTUbmO3/UB2qogI6dzYZSmfObHo/yeZtK8nJyfzyyy/kueeTOozUGc7l6fkmJCSQnJzs8/GkcRiOJk0yD0/17dvCehciVLRr186xF87Z2dkMGzYs2GEETDidbzida3OUUjHAcOChBm99BBzbxMe+BO5TSo0H3gM6AZOAD/wVp+Nt3AjV1ZCR0fx+/frBd98FJibhs4iICHr2bPQGvCOE0/doOJ0rBP58pXEYjiorTcY1T/Xta+ZelJVBGPXUNCUz0zxLe1kIYbFkIBJomB66ADilsQ9orb9WSk3CDCONx9TrHwOXNLa/Uuoq4CqAlJQUsht8kZWUlBy2zckaO9/kL77gSCCntJT9zfwsIs88k+qJE21VGYTT7zeczhXC63zD6Vwh8OcrjcNwU1oKSUnw8MMwfbpnn+nTB7SGzZth4ED/xieEEMJjSqlBmCGk9wCLga7Ag8Ac4OKG+2ut5wJzAUaMGKEz3b1dLtnZ2TTc5mSNnq8rA+nwCy8Eh43ECKffbzidK4TX+YbTuULgz1cS0oSbjRuhqgq8SegwaBCMHWvuHAohhPCX3UA1kNJgewqQ38RnbgNWaK0f1Fr/oLVeDEwDspRS3f0XqoPl5UG3bi03DPftg6lT4eOPAxOXEEIEgNw5DDfuzGqerHHoNmwYfPWVf+IRQggBgNa6QimVA5wK/K/OW6cCC5v4WBtMg7Iu92vpAG6Nc86BMWNa3i8+Hp57DlJS4NRT/R+XEEIEQFAqDlnDKYi8XcZCHKaiwnQY5zfVjy+EEK33MDBFKXWFUmqgUuoxoBvwDIBS6kWl1It19n8X+KNS6hqlVG/X0haPA99qrbcFPHonOPNMc0ewJTEx0KuXLGchhHCUgDcOZQ2nIFu/3gwp9XYeRVaW6U0NE5mZhxLP1DV/PixfDqtXQ+/e5rUQQlhFa70AuB6YAeQCxwN/0Fq71xPq6Xq495+HWf7iWuBH4HVgHfDHwEXtIKWlJgOpp9Mo+vWT5SyEEI4SjDuHtWs4aa3XaK2nA79i1nBqTO0aTlrrzVrrbzCT70cHKF5nOfVUuPFG7z9XVRX2Kbvz801nck2NyXJ+8KB5LXcQhRBW0lo/pbVO11rHaq2Ha62X1nkvU2ud2WD/2VrrwVrrNlrrrlrryVrrXwIeuBPk5MAxx8CSJZ7t36+f6XTV2r9xCSFEgAS0cVhnDaePGrzV0hpOXZVS45WRjKzh1Hrnnw+33OL95/r0ga1bzTIYYWrz1/lER9af2hMTY5K4CiGEcIC1a83zEUd4tv+AAdCxI+zf77+YhBAigAKdkCboazhBeK2PUvdcVVUVMbt3U96lC0R41y+QWlXFEdXVLH/tNQ6mpfkhUmtY9bstKhoKQHZ2LgAdVq2i+91zqCj9AfNnaJSVVfPrr8vJzq7w+ZitEa5/y+EgnM43nM7VSRy55mtenkk006OHZ/tPn+75slBCCGEDIZ+t1Oo1nCC81kepd64//GCGlS5YAOed511BUVEwaxajO3VqfDJeiLDqd5uUZJ4zTzwR7r8f7rgDBg1i7sV7mXJbHG1r9lEZlcCcZ6M5++ymbnr7X6j9LfvzYjHUztXfwul8w+lcRYhbuxb69/e6A1Uc4shOAyHCSKC//WQNp2BqzTIWbgMGmAZl+/bWxhSiKiqg7LdS8k+fAjNmwAUXwPLlZN3cjdGjFc/FXcumE6eQlRXsSIUQQlhm7VpT33lKazjrLJg9238xCSFEAAX0zqGs4RRkvixj0bmzueMYBtwZSZVqQ++f5jInK4usF04BpQAzz7BNUiypP7xjLgxc24UQQtjcnDmQmOj5/krBTz9BQoIMLxVCOEIwGleyhlOwrF9vFuv1puJryNP03jZVPyOp4mBNHFNfP5X8gvoNwOUd/wBnn+34n4cQQoSVU06B0V4mQ+/bV9Y6FEI4RsAbh7KGUxCtX9+6u4ZuU6bAsGGWhROKNm+G6Oj62xrLSLq0859MD3N8POKQigrYt0+W9xBC2FBeHrz7rvedfu61DmU5CyGEAwQlIY3W+ingqSbey2xk22xMUhrhi7/+1bfKKyUFNm2C6mpoqbjsAAAgAElEQVQyT44EnDfhPCMDKis0cOhOYUWF2e5We841NbB3L3TqFMgQQ9ah4bjQu7dpO8ucTCGcq6LCrPeanw+pqcGOxgL/+59JPubtshR9+5pesd27zRQMIYSwMZmzF07OOgv+6MMN1759zdXAjh3WxRRiUlNhzi2biOcAsRGVxMebRk6jFz6ZmWbdSNFgOK65YJw6Ve4gCuFU7s6g1atNZ9D8+cGOyAJ5eWYJi7ZtvfvckCFwwglQXOyfuGxGRpAIYW/SOAwXe/bAl1/CgQOtL8M9JNWd2Mahsnp/ySZ6kzlgJ5s2NXP3a/BgWLXKtIjCRGZm4yuZeDocVwhhf47tDFq7Fo44wvvPnXQSLF0KffpYH5PNOLLTQIgwI43DcJGdDccfb3pGWytMGoesXUuy2kNlcrfmh0qNGGG6R53+8/BARgZUVtbf1nA4rhDCGRzZGaS1qR+9WcZC1OPYTgMhwow0DsOFO5OaLwlp0tLgb3+Do46yJqZQlZhITtIpVEdEN7/fyJHmedUq/8cU4lJTzfDbiAiIjKT54bhCCFtzZGfQr7+auYatuXMIcOaZcPnl1sZkM47sNBAiDEnjMFxYsYxFRAQ8+CCMHevsOQW33cYtQxa1vN+gQaYVtHKl/2OygawskwH+qKNofjiuEMLWHNkZ1KUL/PwznHtu6z5fWQk//GBtTDbjyE4DIcKQNA7Dha/LWLgdOMD8h/IdP6cgO9uDTKxRUfDoo/CnPwUgotDQUqdATAy0b2/zi0QhRIsc1xkUFQUDB5pGYmv062fq2TBezsKRnQZChCFpHIaLDRtM5eWj/BtmMfWmds6dU7BuHfTqBR995Nn+V11l5nKGAUk0IISoy1GdQW+8Ac8/3/rP9+tnes727LEuJhtyXKeBEGFIGofh4rXX4IYbfC5mc+IQoqmot81RcwrWroVt28wVjyfKymDJEigo8G9cQSaJBoQQjjZ3Ljz5ZOs/7x6Z457fH8Yc1WkgRBiSxmG4OP54sxaTjzKGd6SSmHrbHDWnYO1a8+xpxrotW8zaDos8mKNoY5JoQAjR0Kg9i7hs8x3BDsMaa9f6lqn0yCPhwguhTRvrYhJCiCCQxmE4WLMGFizwbY1Dl9RRPZnDVKJVlTPnFKxda04mKcmz/fv3N0l+HJ6UxtNEAx7N1RRCOMKQfcuYvO1++8+zO3AAtm5tfaZSgPR0ePllOPpoy8ISQohgkMZhOHjrLZg0yYwH9FWvXmRFvcq/uz3ozDkF3i6CHBEBw4c7fjkLSTQghGjoomuTiKQaSkuDHYpv3ENBfV3jUGtLOmGFECKYpHEYDjZs8H0ZC7eoKJgzh9UppzlzTsGJJ8KECd59ZsQI+P57cyvNwSTRgBCing4dzPPevcGNwwfXXz+UGZM3mRe+3DkEk7n6d7/zPSibkxEkQthbVLADCHWZmebZ1l9069dbkqm01mWXse5F64oLKQ884P1nRo6E8nL48Uc45hjrYwohMTHm0WSnQEUF7NoFaWkBjUsIEQTuxmFREfToEdxYfPBF8kSTadTX+YJdu8Jnn5k7iEpZE5wQQgSY3DlsTnk5Q4uy6Vy2PdiR+MbqxmF+PiN/W2z/eSYNlZdDVZX3nzvlFPjmGxg82PqY7GLVKnj7bRgzBq64ItjRCCECwd043LcvuHFYoV07MzLGF7KchRDCATxuHCqlLlFKfaiU+lkptanBY6M/gwya4mIe/f73HL/n7WBH0mqRBw9Cfj5zsy1sHL76Kg+uPp3shQ6rAF94wfQc79zp3ec6djTjLWNj/RNXqCstNVn6pk+HsWPh00+huDjYUQkRUGFZR/7ud2a0gM3Xer1m49/M97+vZDkLIYQDeNQ4VErdATwPdANygSUNHkv9FWBQuXpFEyt/C3IgrVcdG8v5o7fwQerl1hXqrgA3bLCuzFCwdq1Zr6E1EymXLoV//9v6mOzgr381fwsvvGAaiZWV8MEHwY5KiIAJ2zoyKurwNW5sRukaztr5NOTm+l6Ye4SO0+pGT+XnwyuvwPXXm2kWQghb8nQMxeXAY1pr31dRt5OoKEoi29Guyr6NQyIiKIjrZW2ZdRuHY8ZYW3YwrV1rlqaIaMVo648+MvMVp00zqTwd6rC5t++9Z9KW3nQT/P73JiNuly6HMuQKER7Cs44sL4cbb4Rx4+CMM4IdTat0qdxJfM0B3zOVglnb55ZbYNAg38uyA/fcym++gUsvPbROMJisrXPnBi82IUSreXoV3Al415+BhKqNUf3ZfqAj+fnBjqR1Eteu5YJts4ivLrGu0IwMUyFsdNhIKW+XsahrxAjTMLKi99kuiorgssvMul733GO2RUbCWWeZO4fl5cGNT4jACc86Mjoann7aNA5sKqV0G18zhvwuQ3wvLCbGdBIOH+57WaGsqMjUec8+a1537WquC2bNghUr4B//MJm/hRC25GnjcAkQdiu7zp8Po8uXcUfRX+nd27y2m6TcXKZuvtXa5DGxsSYznZOGzhw8CFu2tL5xOHKkeXb4eof1tG8PDz5oFn6uO9/yhhvgww9tP9xMCC+EZR1JRIRJ5FJUFOxIWmX+fHhl26mcziJ6Tx5rTR1fUgJ5eRYUFMK++AJycvjXvyPN6169TIfgzTebuvCOO+Cii4IboxCi1TxtHF4PXKqUulgplayUimj48GeQwZCfD1OnQjlxlOoEDh40r+12BzG6qIht9CS/tK21sf/3v/D3v1tYYJBVVsI//wn/7/+17vPdupm5iuHSODxwwNw9vuSSw7O0DhoExx7buuG5QthT2NWRtTp0sOU6h+46vopoikniYJmypo6/+WaToMxp2bzrWrWKGhSfdzm/6X1+/RV27AhcTEIIy3haYa0DjsRMuC8AKhs8HLf69+bNh9/4iIkx2+3k7Z+PYQBrWb1aWXv387jjYOBAiwoLAe3awW23tX4OpVIwciQ/vrW+dm1Mx1q3DtLT4f33m97nhx/g1luhpiZgYQkRRJbVkUqpaUqpzUqpMqVUjlLqhGb2naeU0o08Sn07HS8kJdmycei3Oj4clrPIyWFbmyM4GNm28fcrKsww00ceCWxcQghLeJqQ5h+Ag7vBDpeRYW4m1eX+vrOL/Hy4+cfrKCMOqqm9+3nqqa1LyFnPTz9BTg5cfLElsQbd1q3myqBr19aX8fLLXDuuicrSKSorzXCh6moYNqzp/X780cw/mTDBWUmLhGicJXWkUup84DFgGvCF63mRUmqQ1npbIx/5C3Brg21fEsjsqF262PIumd/q+LoJ25KTfSwsROXkkJd4StPvx8TAqFGwbFngYhJCWMajxqHW+i4/xxFyUlNNEsYrLqkkTpdSGd+eOXOU742qANq8GWJUJWU6rnabu2fU5/N4+224/XY491xnZOe87Tb4+mvfuo0TE0FZF1JIeuMNWLkSFiwwQ2mb8oc/mDT3b74pjUPheBbWkTcC87TWrkwfTFdKnQ5cA9zWyHH3AbUr0CuljgN6A1kWxdOyxYsDdigruev4Ky8uR0WAio1lzhwL6kb3chbr1zvzu6+6Gm64gU9fPLL5/U44Af71L7MObkJCYGITQljC63kQSqm2SqkeSimH3yKBrCy4s+d/+JAz2JS7n6zAVbeWyMiA8qg29bZZdvczJcU8FxRYUFgIWLvW92GylZXctvZiTst/0ZqYQtG335qxWBMnNr9fUhKcdJJpHNrwroIQrdXaOlIpFQMMBz5q8NZHwLEeFnMl8JPW+itvjh2usi7SrKMftyY/x6ZNWFPHZ2SY+dZOSthWV2Qk3HQTKzq1sHTJ8cdDVRUsXx6YuIQQlvF0WClKqf8H/BMYirk/opVS3wK3a60/9lN8Qafi4hjLNxC1G2gX7HC8kpoKN/41j1mzBqGUuWtoSc+ou3AwjcP0dAsKDKKaGpNdztfJgtHRHF20hOiaCsAhw20bWr3aNKI9yUQ6YYJZ99GKhrcQIc6COjIZiMTMWayrAGhmDF/t8dsD59HIHcYG+10FXAWQkpJCdoPFS0tKSg7b1pzOn39O52XL+HnmTI8/EyoiS0o4ge20jdzL2rXZ9Zbp80XqTTexv0cPSr34OQaKt7/fhuJ/+YXq+Hh27TqFiooI3nhjNR07Hj6lNrK6muOVYsv8+WwNUnIyX8/VbsLpfMPpXCHw5+tR49BV6b0PbADuAfKBrsD5wAdKqT84tYFYHNXR/OO336B37+AG460DB5i2dga/DryN3OiRLFpkUcMQnHXn8JdfTPbN1i5jUcdXCacSta+I/HwLf9ah5OGHzf8FT5x1Ftx5p1kPUxqHwsFCpI68CDMaqNm0Y1rrucBcgBEjRujMBp1i2dnZNNzWrC+/hM8/p8uHH5oeSDtZvx6Asva9vDvnloRwVjKvf78NjR/P/JxBrC34E0rBRRcdy5w5Tdx1XbiQjBEjyOjRo/XH84HP52oz4XS+4XSuEPjz9fTO4V2YoS3jtNa16QeVUv8A3gPuBhzZONwfXadxaDf5+XR/800GDDiLzckjrW2suBuHdlvbozHu7mIfG4fz58Ple58mXpdSmaGZM1fZbihyi7z5GaWlmb8PWdJCON9d+F5H7gaqgZQG21Mwjc2WXAks1FoHtrJKSjLPRUUmOY2dFBYCUBRtcdw7d8J335m518pZE9HzV2xj6p7XaxNRN5vorqXpB0KIkOTpVdvRwJN1Kz0A1+unMMNoHGljwhCuHrbcnhPLd+0CoCi6s/Vld+1q5p+d38w6R3Zx1FHwwgswZEiri3CvmVWpLV4zK5Rs2ADPPedd2vqICDPnsKqKzMyQ7lAXwhc+15Fa6wogBzi1wVunAs3OIVRKjXLF8Gxz+/lFhw7m2YbLWQCsjTuK3bFp1ha6YAGMG8dZx9uwU7k5O3eyubCN50uAFBXB3LnOnX8phEN52jgsp+kJd4mu9x1p0ReJPPPtKLMOnt24ekX3Wt0rCiYT5bBh0L699WUHWteuZkkOdw94KzhlXcxmffwxXHkllJR4/pk9e6BPH3OBEM60lsQ8zmZVHfkwMEUpdYVSaqBS6jGgG/AMgFLqRaVUYxmvrgLWa62zvQvbAu7vTTs2Do87jkkDlrI5oYXMm95yZSztfnC9teUGW04OGWymUtcfdNZkorvSUtNr+u67gYlPCGEJTxuH2cA9Sql6//2VUj0xw2k+tzasEKI1/Oc/8M03wY7Ee647h/ti/HDnEOB//4PXX/dP2YG0eDH8/LNPRThhXcwWrV5tOgO6d/f8Mx07mlbzW2/5L65QV10NJ58Mf/5zsCMR/pONBXWk1noBcD0wA8gFjgf+oLXe6tqlp+tR9xiJwCTgudaH74POnaFHD5OZ0oYefTQXy/M89OoFQOfy7RYXHGQ5OaSqQubMriQiwiQujY9vJtFdWpqpBL/4IuChCiFaz9PG4S1AeyBPKbVUKbVAKbUEWA8kud53JqXgL3+B114LdiTeKy5GK8Wrn3a2vvIDePJJePxxPxQcYFOmwIMP+lSEe80sjypMu1q92gzB9WYOjVJm3snnn9O20oZ3Fqwwbx58/jk8/TSsWXPY2zLc1hEsqyO11k9prdO11rFa6+Fa66V13svUWmc22H+/1rqt1vpf1pyKl0aOhG3bzNIFdnP33Qy56Sbry+3aFYBO5b9aX3YwTZkCCxeSdWUco0eb6qDFJUBOOAGWLZORE0LYiEeNQ631OmAI8DgQCxwDxAGPAUO11g4bO9FAx472TEhz/fUs+fhj/y1Am5Ji/0l1+/aZc7AgU2lWFoweDf9udyebzrvVWclotDaNwyNbMfxqwgSoqmLMbx9YH1cIabSRt38/3H47axNHcPvgtyz5OxOhJ+zrSLv66Sfi/JFxu2NHKlU0nSoc1jhMT69NMhMTYwaStNgBevzxZhTTevkvIIRdeLzOodb6V+BvfowldNm1cQjmNpa/pKTYfymLvDzzbNFSCzExcCxfk7pmnyXlhYydO01D+qijvP/sqFGQmsqgwmwWxk127jIfjXnxRSgo4NFh77C23Siz+p1wpLCtI6urYdw4mDQJLrkk2NF4p7CQig4daGN1uRER3HLUInbG92Gy1WUHy5498OabMH78oWzlnjjhBPOcmwv9+/snNiGEpSTHvCc6dTJfjHZzzz30eOUV/5WfmgrFxSaXtV1ZtIxFXYWxPc0wKydJS4Pdu2FyKy51IiKYP34B5+99htWrzXKh85tdic1Bpk2DL780DUOAhx6CCy8MbkxCWCkyEpYsgR9/DHYk3isspNKHRGTN+SbhZPLK020/uKbWV1+ZhGTeZh4dMMDcOTzvPP/EFWJkmoBwgibvHCqlPgOmaa3Xuv7dHK21Ptna0EJIx45mSJ3dvPUWSf5clNjde1hQYIab2NHatSZhioWZY/LjesGWfCgrg7g4y8oNuk6dWvWx/HyY+tKJVGmguoV1sZxk/35ITIRjjz20rbISXnkFrrvOnsvjiFpSR9aRlGTPbKWFhVS4Motaaf58WPFNNVGqmt69Y5peJN5OcnLMpPqhXq5cphQkJ/snJiGEXzR357DuAKgI1+umHs6+A/nII/Dpp8GOwnuFhVT4qVcUMD2BBQXQs2fL+4aqG24wvd4N16HwQWGs6+fxyy+WlRl0jz8Os2e36qNhscxHQ199ZbK6NszSN326ye44c2Zw4gpBmZlw/fW2XCpX6ki3Dh3s1zjUGo49lhKLhzq617yt1pGU18TUdobZ/g5iTo4ZYdOaHAYrV5qhxzt3Wh+XEMJyTd451Fr/vs6/MwMSTahKs3iB3EDQGnbt8tuQGcDcFUlM9F/5gdC5s3lYJDsbWDkI7j7TzMVxiv/7P/P/YPp0rz8aFst81FVTYzod2rY1a4HW1bYt3HIL/O1vJoPfCSdQUWHupobVXEwHkDqyDjs2DpWCd97h1+xsBlhYrLszrO5sC3dnmK3/f+fkwCmn1L70KgO61vD++6azLEyGlwphZx71ZiqlLlZKNTqmTCnVUSl1sbVhhZjcXLj3XjhwINiReG7/figvp6JDB/8do7TU3AFZtsx/x/Cnykq4/37r58qMHAnvvWfmWjhBZaVZgqE1yWg4tMxHLOUkUuzMZT4wDd59+yD/6TdhxQq4777aXvba9/KBa64xJz9zJvPnw/LlhN9cTIcJ+zryyCO9W//UwRzZGVZQAL/+CiNGtO7zw4ZBmzay3qEQNuHpUJfngT5NvJfhet+5vv0W7rijdlF5Wyguhm7dqOjY0X/HiIqCe+4xwzLtaNMm+Pvfze/XH5yyrtO6deZqp5WNQzDzbR7q9m/e50w25VXaf/5NA4caeZre0//A/PQZtZOMDmsALmwDzz5L/m2PMXWqudFYXWcupu2Hn4Wn8K4jn3nGZOa1k88+g7Q02q5bZ2mx7s6wKFVNe4qIj622f2dYSopJSHZxK/s4oqPNHGu7diQLEWY8bRw2l4A9AaiyIJbQ5W5g2Wk5i+7dYccOCusMA7FcbKxJRGDXq1k/ZCqtNWqUudJ3AvedVR8ahwDFid05gS9IPeisyYbuOUamkac4qOOZ+utd5BdGNHivTgNwxDg2Jw4Jv7mYzhXedaQd/for7NxJtR+ShmVlwaQjV7OIM9j0zMfO6Azr1MnU9611wgnw/fdmCIWD1RslIoRNNZetdChmIV+38UqphitgxwOTAGevbmrHxmGg2HmtQ3fj0B/DPyMinHOVv2cPtGvncyN6WxvX59euddR6V43OMYqLrP31NzX/KCNpL5WlCcChjMK2H37WChUVUFoaabs5l1JH1vH88yZp1apV/l1b10qFhQBU+mnqRUH7ATw7fA7/ObepG8o2ct990KULXHFF68vIzISPPzbXC+3bWxZaKHGPElHKjBJpmKXWvcSFV/M1hQiCJhuHwB+BO13/1sDtTey3B7jcyqBCjh0bh++8A88+S9RVV/n3OKmp9m4cdu3qn4qqVy/47jvryw2GadPg6qtNg9cHmxKO4i9HZ/NY5rCWd7aRluYYNfVeascE5rS/mSt/e4CqyFhiYpT9h595yX0xBQmNXkyFOKkj3YqKzNz84mKTnMYOCgshOpqqtm39UnxFZDyb2g4x943tbvZss/aQr43DL7+0LKRQU3eUCDSxZJPWROoqwLrs6EL4Q3NXe49i5kr0xgyZOdv1uu6jG9BFa/2On+MMLjs2Dn/8Ed57jxp/rnMI5s7hnj3+PYa/rF/vnyGlYJb32LbNOfMOfWwYgrlY+j7pd+YupIOkpsKcx8qI5wCxERX1Eu645x9FRJgbKvWS8cTEkDXrSLaQzgW9vmLTJls1jHxW92KqpibCjnMupY50czcI7ZSxtLDQ3A1TzY0I9s1p+S+ajlo727nT/KccPtya8hr2ljlEi0s2rVzJ86uO4t6fJgQ8NiG81eQVn9Z6n9Z6q9Z6C6aS+8D1uu4jX2unXP02IzXVVCSX26jzt7AQ2ralJjbWv8d54QXrs30GSnY2vPaaf8ru2RPKy+2VxKgxJSVmEff337ekuCFFS+E//7GkrFCSNXAVm+jNeb1WHNbIy8qC0aPNlM3DGoCXXEJ1XAI3774lrO4Ygv3Xv5Q6sg5347CoKLhxeGP4cL8vq3DeLw/Dc8/59Rh+l5NjnlubqbSuxx4zS0eVl/teVohpcgRJ6kG46SYYM4buB9fxZJ9HghOgEF7w6HaAq5Kr8HcwISsiwnyhRTU3CjfE7NplekX9LS7Orz2vfhUVBcnJ/il75EgzFNM9xsSufvwRvv4aqnzPp5GdDY8f+6pZ489p18s5OaRSQGlK70YbeTExZvTyYe9FR/N55/MZuH85lJUFJNRQYS6m6v8d2HXOZdjXke5EJXa6czhtGjz8sF8PsSemq0l8Y2c5OeYaaOhQ38vq2dNka3E3OB2k0VEiN20g9f8dDQ89BFdcwYRjd/FLm/7Oq/88kJl5aM6lCH0ejxVTSl2llPpOKXVAKVXd8OHPIEPCv/9tr0XICgstXdy9SatWwWWX2W/eYWEhb6ZdyxUjcv1T/pgx8PTT9p9Atnq1efYxU2mtI44wF5B2v6PaUE4Ou2O6sie2m9cf/abTmSzo/rf6WWvCQGoqzPnjIjMcV5Xbfv3LsK4ju3aFE080V8R24eeOu+xsGD3BAY3DkhKzTmGCBZMnjzvOPDt0vcPDRomc6ZqK9NlnMGcOpVHtGfnbYujbtzYhkhChyKPGoWsB39nASiAOs2bTS0AxsBH4h78CDBkvvggLFwY7Cs+lpFh3Qd+c/HyTqW7rVv8fy0qbNzNx55Mkl+/w3zGqqqC01H/lB8Lq1eaiID3dmvKOqJOx1ElWrSIvsXXDrn5sfxzP9r7fPok8rLJvH1kfTubljtfSo3e5redchn0d2b+/We/22GODHYnnkpJg5kz/HqNrV9NxaucRJA89BCtXWlNWly6mYbRihTXlhaARB5byl713mU6uUaNgzRr4/e9r3y+I7WlajvPmBS1GIVri6Z3D64H7gWtcr5/SWl+CmYh/EJONzdk6drRXQpqXXoJnn/X/cVJSzLPd7hzu3AnA7hjv7/R4rHNnmDHDf+UHwurVcOSRliSkAZzbOLz6ahalXtqqj2ZnQ/YHB0yCpHDSvj18/TXPH/EgCW1rbHvH0EXqSDspLYX9+8FPmUprde1qOgl37/bvcfzNyqkjAwfCunXWlRdKtObWvCmcWvDSoY7hOku7VFTA6qqB5I+ZAHPn2rvTQDiap1d8/YClQI3rEQOgtd4L/BP4i1+iCyV2axwGirtxaKMUg0Bt47A1wwA91q2byVhqZxkZJhe3Vbp3hzZtIC/PujJDwXXXce+PE5tcvyo7u4W1rSZPhnHjrI8rVC1fbubdHHEExdGdgh2NFaSOPOooeOCBYEfhGfeQPn/Py7/kEpPNOxBTPPxh8WIYO9baLFEXXggXX2xdeaFk0ya6lW3mte43HjYM171sz+rV0Pvb/zF/41j49NMgBSpE8zxtHB4EIlxZ1/IxvaFuJZh03c5mp8ZhUREccwy88Yb/j2XjO4fVRFIU7cdKu2dP+w23beg//4F77rGuvIgI0zD817+sKzPYNm6E7dt9K2PkSNObbqdsj6313ntmTu5LLwU7EitJHZmfb5/OMHfj0F1/+Utiorl2sGvStq+/NkNALWzcZj4zicz3/mZZeSHlk08A+LbDyfU21122p7oaDlZEMZW55D+2IBhRCtEiTxuHq4G+rn8vA/6ulBqrlBoJ3AU4bIxYIzp2NAv82iHLVEGBWYA9EAkuYmMhLc1+axeVlLArtjtaWTRcsjHutQ7tyl9/69271xtqY3t33ml6130xcqR5XrXK93hCWUGBSWB19NF+X0YgwKSO7NDBPtlK3Z2Z/r5zuH8/3H67fROwrFplpgJYOfxWazpW5DuzI+yTTyiM7c72+P71Nje6bE98JJtPuTKAwQnhOU+vjOcC7mwJdwBtgS+Ab4D+wF+tDy3E3Huv+aK3Qw+gOxNkoIay/PIL3H13YI5llcce4+xhm9i3z48jYnv2NL8Lu2ahfOQR6NXLZKuz0vLlZpkPu/5cGlq1yvcFot1riFmV+CEUaQ2XXmq+R//7X9Ox5BxSRyYl2eeCv0cPuPZa8x3tT1FRcN99sHSpf4/jLzk5vn+3NdC5YgdvfN0VXn3V0nJDQqdOdJl2LtlL6l8nNroGIjFkTBodwOCCq6IC/15vCUt5tHCf1npBnX9vUEoNBsYCbYCvtNY2n23tgYbdPqGs7nwKu1TWATZ/PixfEYFS0Lu3SaFveabEk082nQkWrBEYFD/8YL7RrU7asHWr+YFPmwZDhlhbdqAVF5vhoBde6Fs5HTpAv36ObRxmZsLEHU/ylw2L4MknYdCg2vfMfMxcIDNI0flO6kjsdedw2DCYPdv/x4mPN4mX7HhFvHOnidvixuHumG4cjGhDvBOT0jzzTKOb3WsgTpliLgliYlzL9pRtgXvmm7vLViV9C0Hu+ZZNXW+51z9sdlIfcMAAACAASURBVF6+CKhW/TVqrUu11p9ord8Ji0oPzGLgl19uUhCHukDfOXzySTNUzCby82HqpeWHxv8fNPMBLK+/x4yBv//dzDuxo9Wr/bMcipMyln73nbkjNqJ1y1jU89hj5u/FoQpje5hEFNdc0/LONheWdeTvfmefpSz27zcdX4HQ1aZrHZaWwh//eGhtQotoFcGO+L7Oy1h64ECzbx+2BmIWZj7nzJnw0UeBiTEIDptv6a/rLWGpJu8cKqW8Gm+htbbx5CoP7NljknNcdJHp+ghlHTqYSjo5OTDp8fPyTPKb//zH/8eywOY1ZURXl3GQQ8PaYmLMvABL0+lrDTt2mML9PbfFatXV8PPP/rmQ79fPdCE6oXGYk2OerehdP+MM38sIYV8m/xFe+GOww7CM1JEN2KljY+pUc5c+EPWjXRuH/frBW2/5pehf4vvTd933fik7aCZONMOI33+/yV1iYsyj9jpjwgRzbTBnDpkPnA447+6Ze75l3VkkfrneEpZq7s7hFmCzFw9n69jRPO+xwXJV550HX34ZuDk9KSlmMHlZWWCO56OM+HwqTab5WhUVZl6ApaqqzJy9J5+0uOAA2LDB/D79cecwPh7S053RODzvPHj9dWuyHpaVmU6Wn37yvawQc8KuN0gps3nm3sNtQepIeyosDFyHXdeu9hluW5cf1+Db3qa/aR3YLZFdU8rKYNky6Nu35X3riokx87DffZdO5Tv9E1uQNTrf0h/XW8JSzc05vAywQWrOAHE3Du2ynEUg1V3Oolev4MbigdTK7czhDi5T89ARkYfG/1vdixUdbdY6tONyFtHRZk7gmDH+KX/QIDNfz+66dzcPK2htGpu33AL//Kc1ZYaCffu46+dzeann7cA/gh2NlaSOrOvpp+HWW81ctQZrvIWcggLvL+Rb6/nn7ZWzwO38883PyeJkOhUV8L+4izn1oSGkOmUR+K+/NrfGTjnF+89eeSXMmsUf8v+P+b3usD62IGtyvqXcNQxpTTYOtdbzAhhH6LNT4/Dcc81dw0CtI2azxiE7dpDFS7w3ZAbr1AAWLfLjF5Vdl7Po3du/dzzfecf+E/D37zf/x8aPt6aBGB9v7tQ6LSnNsmVEUsN3Sb/nkmDHYiGpIxuIjDQdPkVFod84LCwM3PzImJiW9wlFmzdbnrfgUGKSAfS+bQBzOvohEVwwfPKJ+fv/3e+8/2yfPjB+PAnfOaCztAlZWabv6OBB/Hu9JSxj86uzAIqPh06d7JF5Mi/PTCYPlO7dzfyEQE3w91V1NaSlUZrQhfbt/fxFZcPGYWYm/GnsTv/+rdu9YQhmvuG0aSZxj1VGjTKNQzusp+qpzz9nGz35Sh0rSQicrINrJY9QH0JZXQ27dwduWGlurknEZLN6YN/3W3j7+3TLyms0McmVNc74Tvj0U/Pd3a5d6z7/9ts80+dBa2MKMTEx+P96S1jGo6UslFItZRrRWuvLLYgntO22SdK5wkL/DQdszLBh9so8NnkyTJ5MSWYAjtWzp5lHVlNjqwbRo99nwoVD4bXX/HOAzZth+nQzDO344/1zDH+zMhmN26hRMHeumfPpEPMXtuFK8qj6MdZ/y8YEmdV1pFJqGnAT0BX4Cbhea72smf1jgBlAFtANKAAe0lo/7ukxfZaUZJ5Dffmkqiqz9mCg7hz+9pu5ZXbppf5fV9EqJSW0r9pDQZx1I4EaTUyiy9i8uY39GwzXX+9Rjocmk8241s8287JtMPrKYhUV5u8iP18aj6HCo8YhcBKHz63oCCQCRa6Hx2xZ8dlFTU1ge0VF8849F4480nSV2qRxGFt9gLSDG2CQj2v3NSchwWR1O+00+zYOV60yF3tW/l8bOdI8r1xp5qvaXP76/UzdehvlxEGdNOannuq4iwDL6kil1PnAY8A04AvX8yKl1KBmMp6+CnQHrgLWAylAvDcn4DO73DmMjTXzegOla1fzbKeMpa558vlx6ZYV2WhikqoIZyQmmTTJ5yIm7niCazf8Bfb9Zm6xhQkz1Fi71kBUjuw8tCOPrla11ula64wGj/aYVYvzgT95esA6Fd99wDDgK0zF11yX2qvA6ZiKbwBwLvCDp8e0zL33ws03B/ywXtm71zREAt04nDAB7r8/sMdsralTzR2rQBgxwnzT2SghQfqBn4lA+ydTqVvnzuZi0s4ZS3NyLF8gmsGDTXr9Cy6wttwg2bw7kejEuHrb3GnMncTKOhK4EZintX5Wa71Gaz0d+BVodF0ZpdRpwMnAH7TWH2utt2itl2uts306KW+lpZm7Y+7GUKgqLoYtWwI3RcSOjcM2bViYNp0NbYdaVqQ7MUlEhJmeFx9ZzpykW+3fSbRkCaxZ43Mxa6KOYgWjyF/0nQVB2UN+Pky9qoaaGkV1tZI1EEOIT7cytNZLgUeA2V58zJ4VH5iLwQ8/DPhhvVJdbTIeHnlkYI+7dq1ZENwOPv/cXBwEQmWlyWS2fXtgjmeBjFLXHDp//g0pBUccYd/G4f79ZujniBHWlhsZabIouoYZ2V1GBlRW1a9mwimNubd1pGuUzHCg4arYHwFNjYOcAKwEblRK/aKUWq+Uelwp1baVYbdO165mrVur/09Y7YMPzB9goKZCtG8PcXH2ahxmZDC77+Nsa3OEpcXWWwj+hifI+u2x+uNM7ejqq+HGG30qYv58eHbdiZzOInpnHcf8+RbFFuI2v7iM6LL99bbFRGvHdR7akRXj3DZh7gC2yNYVH5iMpaGerbRLF1iwAE46KbDHTUkx2UpDnXth+m7dyM4OwIKzBw6YuS0LFvj5QNbpeWAtFSrG/6ne7dw4TEw03wVXX2192V99BVdcgbJD8qsWpN53HXOuWHnobkF8WKYx97iOBJKBSMzUiboKgKZ+ar2B44GjMXcor8WMtJnnbaA+0zr0k7YVFprnQI2uUQr697dXkqm9e4mq8U+CudrEJMPTzIaNG/1ynIDYscPUYa1ZwsLlUKIeRTFJHKyKduTds3rXW1VVcMstZNxyLpWq/lzNiv1lZHQuCXR4ogFP5xw2SikVBUwBfvHwI81VfE3973JXfOWYii8J0wvbDTjHu4h91LEj7NkT0EN6Tevg3HVISYHvvw/8cb1VXGwabGlpgTle+/Ymg5mNMtV91O5cvkoby4xdkf69iB850tx9q6iwZ7p3dwIOq23bBv/3fySMHu2f8gNlzx6YPZuse1N4evTIsExj3oo6sjUiMPMdL9Ra73Md91pgsVIqRWtdr75VSl2FmaJBSkoK2Q16yEpKSg7b5qljJ0yg8JRT2HDtta36fCBkrFxJz4gIlvzwA0RE+HS+HnvsMfPs997IlnlyvoPuvpv7l5dxYc+PeOON1XTsaF1DsajIDFX9MjaWhH//m+Lt26nxU7I/f/9uUxYvZiCwqn17Slp5nJ9+akdExBDqXo5HRFSxcOEPDB7s3fIWAflbtkC7H39k2IMPUn3WeG4YsI77HzoKpTTRkdU8UzkVPX0X2S3MC7bLuVol0OfrabbSzxrZHAP0BzoBfug+r2VpxQet/yH33LeP3mVlLF28mBoPMlMFQ7e33ybjuedYMX8+lUlJAfuD6ltVReqOHXwR5P+sLZ1vm61bGQX8XFREYYBiHdGpE2XffsuPfjie1b/fjz7qwos/D0epY3guvZobb8zjtNMKLSu/noED4R//MHfKPBBKlUGPV16hJjaWHWefbXnZcTU1jAFicnMZOtTkMXn00VzLj+NvyUuXcuT/Z++846Ossj/83JRJIZQkQCaEltARkKYRRYiK2CuW1TWuugr2trr2uq6LdddO1J+F2LCiq6uAQChSpRmU0JLQAwmdkJ77++POpJdJMu9774R5Pp9xzMzw3jOZyXvec8853wOsbNeOo0fV+8jIWF1nstikz7Y5eNFH5gFlKEGZqsSgehfrYheww+0fXbiboLpTYzNWSvk28DbAyJEjZVJSUrWDpaWlUfMxj2nfnq5t2tC1uf/eDj75BDp1IslVXdOi9+uDePJ+U/86l5uKH6I0K5RrrjnZqyIh7j21Uy65xDsHbADLP9v33oOOHRl5ww3NFpzr3x/uv7/6Y+XlgUyYMLzJG2nGf5d37lRCa0lJMGYMcUOG8E9g7kIoKBD8+GMAzjd6wDOpxN5wgxL0qwfj36uXsfv9epo5dAdoVTkMfA181oT+P+2OD1rwS962DdLSGDN8uNeHw3qNefPgyBFOOe88CA627wu1YQMcPEjSqaeq+jFNNPp+f/sNEhMZeP75DLQrMzNgABG7dlnyOXjz883JgXPPVclnKQVFRfCf/wzkzjsHGpHtMcoZ3HgjDB1KHyvskRLuvJNO2dl0cF1JGfO+m8JXX0F4OMMnTaLDVyozXN/7MOqzbR5e8ZFSymIhxArgTOCLKk+dCXxVzz/7BbhcCBEhpXTXY/V13W/xZF2vERlpvlrpnj32C7Z9+CF8+SX897/2rtsMcnJgUuaD9igM//STUlg/91wvH9gGpFSZ4DPOaJESuVuo57rrVNGXwwEpKcIIn+tVfvoJLroIZs2CMWNgyJCKpxwOdXM6gccfh5kzYeJENZKtWzd9Nh/DeBQcSimTvLGYzzu+5GTzNXb37FEO2m51zIkT1c10hgyBJUvsXbN7d/vXbAZqDpWkoKCyLNmtLGmJo5JSzfW74ALlEHyF/ftVn8xfLRrtKgSccAJtMzLAl/1iWpoaU+KLJcNNxFs+0sXLQKoQYhnK/92MaqOYAiCEmOpa81rX6z8BHgPeF0I8iWq9eAX4UkppUdq/Hjp0MH/O4S23qPYCO9m+Hb7/XkVaYfZOGGkqWRlFBFNEQZVJKJb5gWefVX7AF4NDIdRm88GDjb+2EZKT4a231Nfjx/+sxyl3oYSOWxGvvqraj4Y2ooAbHAwffaR8x5o1/uBQEy3qOWwmvuv4fIHcXP+MQ9O49Va48kp9/aAeEh8PJUUSqLTRUmVJIeDIEVjtYyWTK1eqeytVGRMTEevWEShLKRM6TtNNx534S0sDiopUr20LhBqOVaSU04QQ0ajZvrHAWpRat3sztHuN1x8RQoxD9eIvB/YD0wGb5vVUITJS9RGbzFln2b+me5xFTo7xUr3xQdsoofqMVW/6gWrV4337qqDZV+nQwWu95xXZsxfvU5uPf/xR8Vy1c6svsmePygbed5/yC43Rp4/ajQgPt942P3XicS5cCNFHCPGhEGKDECLfdf+BEKJJkoZSymnA3SjHtxolNlPT8XWv8vojKLGa9ijH9zkwD7ihKet6hexspQI6p672EkPYs0dPyWtGhjrRz5hh/9pN4fHHYexYe9ccPFid3Q0ODMFV3nLbb4RxFEdAqT3Kkj6mWJqUBFNuWqF+GD7cuoWeeILlH3zgM4FhLUJC4JdfajfTtGK85SMBpJRvumYnhkgpR7hGYrifS6qZqZRSrpdSjpdShksp46SUt0kpD9c6sNVceqn51TWLFtmvrO1Dsw6dvSNIuXIugaLceoXhPn3UZ+GF7JudJCXBBz2fhHff9f7BR41ScxNNV8avg6SkykC2Gp9/rsas/fnPnh8sPFxtqH/4YeWGrB/b8Cg4FEIkAWuA84ElwJuu+wuAdCFEk662fdbxBQSoGXkmD2E57zy4zF4RV0D9IW/caP48vz/+qJQyt4vDh9XJ0eTvjYvkhF/IJIGTBhwgM9OG67z+/VWmoaTE4oW8R1jZERXwR0dbt4jhGwmNUl5e7UdbxsZoxNs+0mdJToa//123FfVTUACnnKKEROzEh4JDnE6SPzuPE08KUPMIrfQDfV0dQhs3WrSANQTKUi7b/m9Yvtz7Bx81St0vXer9Y+vi00+Vzxw8uGn/7sgRePhhto6+mrNOPWqNbX7qxNPM4UvAKqCHlPJaKeX9rrLPnqjs30sW2WcWUVHq3uRxFvffD3fdZf+67lJW02cd7txp3xgLNwcOqLLSWbPsXbc5ZGcTGXAQER1tT0N8//4qMPSBwNnN+/FP2zK2pe+LL3JtxkMcPOiDM69GjIAH7a9q1IjfR4KaX7Z3b63NAWOwe8ahm7g4pc7cAuES28jKgi1bKucRWukHfDQ47Hf4VyLKDikxGm9zwglK1M9DFW+f4PPPG8yy1rt52LYtfPgh3QvWc8Gut62yzk8deHqmGgg8V0UQBgBX9u454DhvG2YkbdqoonBT0/1Sqhl+OggNVZ7EF4LDLl0af503iY1VJ3tfmHV44408OeBz+zJXw4fDVVfZs5Y3seH3882mUdy2+3HS0yEhAVJTLV/SO+zapfpIrcysmoffRwJMmQIdO5q7gaorOOzUSVWt2DC+ocU8+iicdpo9a/XtC+vX66l2agHD989W/+Mah+JVIiKUcN7ixd4/ti7i4pT4XHMYN44NEcM4fc+n3rXJMOotydWEp8HhdtTMprpwADu8Y47hCKGyh6YGh3l5KoB96y0968fEmB0cSqknOAwKUidHXwgO+/VjcccL7Ftv8GA1d8y9g2w4Qw+kMWXlCZb3SebkwH2b7qeQMMqqyMn7RAZx3jx1b5Knsx6/j4RKcQ5Tx1noCg59iexs6NnTnrWCg9W532519RYyYv/PbIwYqjZCvES17NnHH8MXXzTwah9BSrjpphZXTc3ufBUDDy9TNc7HIrLmlCTr8TQ4fA54SghR7apaCBEHPAE8623DjOWkkyyus2gBbsena8f+ggsalynWSUGBmrNjpcpkfXTvDlvsnbzSLD77jLijGkp8dGW8m8jAQ0vof/hXyy8us7IgKLi6Q3DLyZtKcbHSlcj5YYVSpBs2TLdJduL3kaDUSsEfHNbFpEnqQtl0tmyBHj3sW2/6dHj+ecC87EmdSEmZCOKX6AutW2PAgMq/JaqcW31hc7AqK1eqctIWOq65na5kTftTzT2vWMWhQzB5MgwcSGBBga1LeyqFNxZoB2QKIZagBs/HACe5/j/J1ZAPIKWUf/G2ocbwzTe6Laif3Fx1r0OtFODFF/Ws6ynh4fp243r0UOqNJnP4MFx1FR9PngwPPGDfuhdcoMrQfKDHouPBzXznmMCJxVFYuUUUHw8l5dVPz5aOFWkhqalKP0EISFjzNCnHx5Ic5KNKq83D7yOh8oLW1FmHp58O06bZXz0CsGOHmndoMsXFqrqmRw+wayNq1iyVKbv/fqqOUTIWIbjveJUJu86qNYqLVcA8YgSpeedUnlsTlHKs6YLAFXzyicoKt7BseE9od+4aOp+0EV6yy3QKC+G55+CVV1RAfPbZBNk8m9XTzOFooBTYBfQATnTd7wLKgVNr3PzowF8y0zAaUvMVPP00zJ6tb31PcGc27SopchMXx6HlGSSN1fj5eEBqKvx536tcXfKh5T2ATifc+7f1OCgiJKDYnrEizSQnRyVFysuVWnmBDGPSH3f63i53y/D7SDA/c9ijB1xxhRq1YjexsearlW7bpvyknT6gb1+VFsvLs2/NFmJ5Ji84GF5/nZz3f6x+bjW8vaDa76WsTKmUnntupZhjS9m716e+J00lqLxY/Y/DoRIZY8cqRdwff6QoJsZWWzwKDqWU8U24JVhttFaeeca+Zu2mojtz+NprquexsFDP+o3x/vuqR2DnTvvXTkhQN5PJzlb3dgeH/fvTrnQ/HUpy7V23CeTkwKSJkkLCyJdtbHHS48fvYcSoEAYMcdgzVqSZZGXVbhlyhAUZXQLrbfw+0kWXLmoj7DhD9XeWLtU3IiA2Vvno0lI963tCx47qgv600+wbP+PuN9+wwYbFWk7qhOmsXFxIerq0bpNQCBg1iqxFu2qfWw1tL3BXj1QIqD2yTm2GNGW2YT0UF0PxviPkdBkOr77qBWvN4+qtk/lkWS9VShoQoH6Z33wDI0eSlAR3321vy5YP6Cobxv791sy28QbDhqkZU7p6DsPCVO+Y3XMEPWXHDrXzpOP3k5MDL71kdkO1xuAQoPtRa0VeWoIKgOzvAXQ4ILptMc5oc+dAxsfXHlNpcgmsHwtp3x4ee4ykOwab2Tv2+ONw55161o6NVVk5U/0jqM/vT3+yt+ewTx917wPBYU4OTJp+DkWEUlYmrN0kHDWK+B0LKCmu7ndMPLfWqh4pgEn/HkDOyPPh/PNbdGx30LnsjwgSSteTmnJUbxWYFaxYwcSsh9gYMUz98kAlWjTicXAohAgXQtwuhPhCCDHbdX+rECLMSgONIyoK8vOhqEi3JbU5+WRVpxwYqGd9d9rbVMXSnTvVzqiOkqK9e+G++2DZMvvX9pSsLBXg212W7AoOuxWst3fdJhAfDyWl1U+XdjjpAYeW8uPCCJg719qFWoDTqUpeAwKgLYcICygytgTWSvw+0sWOHUQWG+oD9uyp9FN2078/jBunThymsmYNLFxo75o9e6pdMNNLbnFtEsrq136WbRKOGoWT3aRMWklAgLqsM7W9oO7qkUCyXv2vMrqZ1Ao6y0OZtOdpcmb+1kKLDePhh9kQOID7u3xCjtR0fqqBR8GhEMIJrAReBUYC4a7714GVQggz3o0duGunTeypyMlRKWldmB4c7tihR4gAoFs3dW/yOIsHH4QFC+ybceime3c+6fYAmW2G2LtuE3A6IeWNUtud9M6wXgTLElWrYzDJyXDe8duZwVlkPjnV2BJYq/D7yCqccAJ/zXpUtxV1s2ePvp78005T4it2V2Y0hZdfhquvtnfNoCDVqPbww/au2wziOx6mRNokFDZyJLRrR3L/5SQmqqlPprYX1F09Ilv8e6kz6KSYrKkLWnZgk5gzh9SZnRlUvkZlRw2Zaexp5vB5IBI41dUzMUpKGY9qwu+AkvE+NnAHhybOOrziCrjQQnnlxjA9ONy5U80b1EG7dtChA9+8stXMcitQvaojNMiBBQTwdsJk1rVLtH/tJpD8xYX8L+IyW530weCO7HU4jQ8OAUYdnc0oluC8yOzP0SL8PtJNhw60LTVw89Rd0ukXbKuf7Gx7S0rdhIYC5o9scOamk8IkgkSZ9ZuEYWHqOvPmm3E4VMWvaRlDN1WrRwIDUdUj7e7HGdOy8s86g86AMOLT3m81paU53yxmknibEhlslOiQp8HhOcBDUspqWvxSykXAo8B53jbMWOLj4ayz9JVuNkRurj4xGlDB4fXXmyu8csEFeoPnHj2IKTR41uGLL2rrpxUFRwnbna39hNggGRkEhwTZ7qQz2wz2ieBwyMEFHAqKhEGDdJuiA7+PdBMZSUSpgaMs9u9XYjC6gsOyMujdW7V+mMqWLXoym99/T+oJr7J0qawUNDEge1KL0FCSryjm7KE59mwSmnidWQ/JyZCYCIkDD5EZ2Ifkq8tbXIVUK+gMg5R/7MG54Av7K5wsIuvqRwiOqN7qZILokKfBYQRQn8TjdtfzxwYnngg//QT9+um2pDa6d0VDQ+G998xVc33iCbj5Zn3rd+9O5yJDy0oPHVJzpjT0tqWmwqLlQSzKiCQhQZp5UVBYCNnZbAkfYOuyaWlwwvWD4Y8/1MWlwfQ9soL1bUcqT37s4feRbiIjiTAxcxgRofrpJkzQs35goEqLuYW/TKO0VM1h1BAc5vy+l0m/3kh5uTAqe1KL4cNh2jQOt4uzZ5Nw9WpITKT34VUWL+QdHA64uGgazpJtXlEphcqgsyIYf7ibuQmIplBaCpmZ2vQMGsNTL74eqG9/5BrAXJnBY4XSUlWCoDNzCCrVf/SoXhvqorS0UgVKF++9x63DNcmoN4b7gsXmM5K74bxYOjhEewoKhJkXBRs3gpRsDe9v/9oXXwxPPmm2kAXwbL+pvBP/L91m6MLvI9106GBm5tDhgFNOqez/1oHTaa7wyo4dagNKQ1lpVvhxBFP9/GZC9qQWdms6REfDsmUMPvRL4681hDN3f6ySJ8OHe+2YtcpqFy+m/+TJZo+FaYypU6FfP5w5q2tnR2uUKhcXQ35+oK3XRZ4Ghy8CVwkhfhZC3CCEOEcIcb0QYgZwNfCCdSYaxtGjamft9dd1W1Id92BQ3f0U48axusu55vXVrV4N4eHwww/6bOjYkeKAUH3rN4SmMRZ1NpybeFGQoa7ttQSHp54KDzzQItU3O8iKGMyGthp6Vs3A7yPdXH89r3V9zrzesQ0b4KOP4MgRfTbExpobHMbEqMzqefZXQMef0oUSHNUeMyF7Ug0pVeD8t7/Zt2a3bhAXx3GHFtm3ZgvoWLSDoQfnqayhlWWfOTk4Z8wwWsW7QQoLVSXb8OFw/PG1s6NVthndozwyM9vYWm7tUXAopfwIuBkYBLwL/AD8HzAEuFlK+YllFppGWJjaYdMxSL0hwsLUcNAxY/TaER1NVLFJVwQu3J+XLhlzgA0buH3T3Wb2HWoKDn1mRl5CAtxzD9vD+uhZf+dO2LxZz9qesGgRadd9QNosc+cxWonfR1aSuvMMXsi8zLzesZ9/Vldd+fn6bIiNNSxirkJoqMqsxsbavrRzqJOU4NtxUGzuyIYdO+DAAejVy951R43iuEOL7V2zmeQ5unDj8JVw443WLnTOOZSGh8Nnn5GUhHnJiHqosPXNN1UJ9+TJFUF0XaJDVUd5lJcH2Fpu7XFziJTybaALcBxwqus+Tkr5jkW2mYkQSrHUNLXS9u3hjjv0i0HExBBZYqBa6Y4d6l7XKAuAvXsZveMzgnN3mHd9kJ2tMqsdO9q6bGXDuaQdBwkLKjbvogCUiuvLLzNjQThpaRrWP+001RNqKlOnwj33KFn6YxS/j3RdzEyU1Ydhm1ImvmeP8t/R0fpsSEqCc87Rt35DLFwIn36qZ+2AAJJPyeLV2H+ZO7LBLQo2eLC9644aRWxhNmmfGppxrooQbGo7zPoNhtBQ8kaPhq++IrjcwJnjDdCm9CD8859K2LIRfQ6dlVWNBodCiKFCiMuEEOOAYCnlOinlL677cutNNBATg8M9e5Rohe4a7JgY2pYeMO8PdudOVdStMXOYuqwvCWTyVfYIs3bUAZ5/XvXVaVAAUyUVgit7LCHzhwzzLgoA27F5tQAAIABJREFUNm1SpSC6GGy4YunKlapEppUoyDUFv4+sJCsLgkX17LExZeJ79qjAUOcGxvXXw5Qp+tZviPfft7dksiZz5/Jp3yfMHdnwm2vwut0b8ElJcMklesuhPaGggHs33GybeM6e00+Hgwc5Yd8MW9bzFkMOLlCf5bPPNvpanZVV9QaHQogOQog5wApgGjAD2CSEOCZ1yqthYnD46adw3HGq7EEnruCrQ/EevXbUZOdO5XE0SUPn5MCkh6IoIJzC8hCzdtRBXTBpzKo6HLCh51k4xw/RZkO9lJfD8cfDgw/qs2HwYFVWqrMkrj5KStSFkxcFCHwBv4+sTXw8lJSZp7wH6FfzdiOlOqeYRna2njEWvkJ6uuoBjIwkLQ37KkiGD4evv4Y+mloaPGXRIi7clcK7/7Anw7l/xAg46SSCpdlCbTVZHH2+Kin1wF9WHeUREFBua7l1Q5nDx4FE4CngfOBOIBAwTIlFA+eco0QiTCI3V32DoqL02nHiibwS9xw5+RHmBD6gmuw17oqq8oDqWRVjdtQB7r4bZs3SakJUcQ58/715F07btyshqgH2jrGoxuDB6qJy3Tp9NtTHH39AUdExFxzi95G1cDoh5W8bCOMojoBSs3rHTAgOly1TDXWzZ+u1oy6ys7UolVYwbx4pK0YQW5Cpz4aGuOIKePRRfevr3vhvjDlz1Oa7BdfGdQXjMigIFi9mXqfLvL6eVVR8t5swVcAtVpOQkG9ruXVD9RXnAf+QUk52PyCE2AD8JIRoK6U8bLl1pqLzBFEfe/aofjHNM8ZSfzuee3cdj8hRYgQpKYb0Dlx6qdbljRZeOXAAXnkFunaFM8/UZsbovOlwwS2wdateufmauJRK6a9BqdSNu88lPR1GjtRnR12sXavuRxxzSqV+H1kHyVeWcOa/Enio+2f8a3GSGYEhwCef6C0NB7V5W1RknmJpWRls26YCIF0EBdHvyEq6H80A9M+xc4ucVAQlF16oyRLgmWfU7eBBCAlp/PU6mDNHzQFv29bWZYPLi2hbsg+wX0ipSezezdTl/Xmz18vA7U36pw4HtGlTZuu5tKFIoidQc7jKQkAA3a0yyGeQUrcF1cnN1b4rqpSVDBUjyMzUOuewqvCKcWpsW1zqqZpLinaE9Vb/s2mTVjtq4Q4OdWYO3U2q48bps6E+/vxn9Ufeu7duS+ymJ34fWZsOHXCymwGOzWac33CpBF7TVf931P0LMS043LVL7V7q9AF9+wLQtWCjPhvqY98+NQ6r5g6vXQwYoDYVVq/Ws35jHDoEy5fD6afbvvQ7K4Zxx+a7bF+3yXz0EcGyhBWRdftwW0uVPaCh4DAYqKkq4i7uNXTrwiZeeknJPus6UdQgKQnS5+gvmTF2Zl1RkZKffvFFrWa4hVeMU2PTNMaiKmlp8NK3BgeHkZFNKgXxOoGBcM01ZmVUqxITo71qQQN+H1kXMTH8s38qqzsk6bakgqDyYq7a+pz+i+uICHUzLTjs0kVtEurMHHbsyJHA9nQt2KDPhvr46ScYNqxyo9BuEhPV/dKletZvjOxsiIvTEhzOizgP9u4lJ1tzVUBDSAnvv8+8NueSXtLfjIRJIzQm23VBjeb6AEACFwohhlZ9oZTyPW8bZyyhoVBczMVj9zN9kQEN7sAHPZ7kpYf0KgWq0snqNhhROul2xHFxeu0ARhQs5LLt/8EZ+BagMdioijt61y1G0K2b2k0wLTi89lo1/0u3EmdmJvzyi0G7Cih15ORkNdfqjDN0W6MDv4+sSWgos2Ku0W1FNTqU5DIp60FYFglDhzb+D6wkNta84DAgALprTnYLQcTwvlzS3sDgMD1dibb166dn/a5dVQBvanA4ZEjlJrONpKbCjbmTCZeHKekXTMq7ZrnHCn79ldTfh/FX8T7l6Ya1XNVDY8HhI/U8/niNnyVwbDg+qBB9aVe6DzAjOFwRdSZorjhzl05OvLaAQFFOeWgbM0ond+5U9zpnHLpoV7KXsXlfQfYDejNRVdm/X83J1Dn/C1R2LCHBvODwpJPUTTfffgv33qvmI+kW1nCTkQGffaYEn45N/D6yDgYeWkJhQDhghvpwhXq2CX83N92k/1xbkx9/hDVr4IEH9G6CjR+v+upMIz1d9Zw7HPpsSEyEJUv0rd8QUtr+vdm3z8GkSVAqAzlEByhWbUxnnmnANWcNct76hkmkUCKDoErLlYm2umkoONSd7zEXV3CommD1EyhLGbZ/DuwabP3w0UZIToYut13F9vIunLXpTTO++AYFh7tDXLuz27bBCSfoNcbNU0/BY4/pz4yBmrVl0oXT0aMwf75qtNetBFxVlMaULN3Kler+2FMqBb+PrJdH1l3DH+0SgY91mwJAVMlu9T8mBIf336/bgtp8843afNI5rgeU6IqJ/PYbjB6t14abb1bXMhoCsQbZu1dlDl9/Xc1jtIldu0IJDq4uJeEIlmRlCTOuO6uQdfUjBH/uoKDKJCp3y5VptrqpNziUUm6x0xCfwp05LNmr2RBFh+I9vJh+Fnw3RW1HaCYwJJiko3PN+dLv2KHuDQgOc0NdPWNbt+o1pCY6B0NXxYQMXVXWrlWja779Vq9aHZgZHK5YAeHh+sqtNOL3kfVzODiStqX7dZtRgVGZw/JydUFtSuUIqH5DnWMsamJSAHTggNrMHaI5Cz5+vN7162PePBW0umZc20VsbGFtBfgS/W1MtVRugfhBbSipMaGrKS1XSqxmNZDUYvs85ZhTEPAK3brxbezN5IZ01W0JAJElLsdniLP5n/MGPu72kG4zKklKgn//24iM1MGgaAoDwpSzMQEp4fLL4YsvdFui2LYN3npLlbqagHuuoM4xFm5iYtTfeHq6bksqWblS9XAFBuq2pFUhhLhVCJElhCgUQqwQQtQ7PEwIkSSEkHXctH1p+yd24KS+hvwNU8VHmhAcvvSSsuOwQZNOdM84dLNhg/rdfPWVbksoLlYVrjkHw2DGDOUndbNuHaxapduK6syZA23a2F4JFRVVXDEgvlIB3rysIXfeifPnj+qw1dysIfiDw+bhdPLvvm+xqe0w3ZYAEJx/gMWcRE6gfsEVgGXR5zDTea1uMyo5/ng15N2Anci0eYLQk4aZczF94AB8+aU5weq6dXDrreYEQBkZSoJX93akm0GDzPndgMo4n3yybitaFUKIK4FXgGeBYcAi4EchRGOKIcehhn25b/pmAkRGGjW0++NOd3HacXvIybd3BludmDbOQkpVyaJbkAxUdU9urgoSNZKaqrRf0tMhYUAIqbvHK8Vz3fzpT/pLf2syZw6MGVNbqt4G3APiBw+GzOm/kbz5SbPGzG3dqsptN22qbqtJavX14A8Om0lJURlH9xdpl6RNTYV314/mbH4k4coTSE3Vaw9AWNkReh9epfq1TGD16spZfibwyy/w/PO6rVAYMMaiGr0NG2eRkaFs0uD46uTtt+GHH3RbUcncufDCC7qtaG3cC3wgpXxHSrlOSnkHsAu4pZF/t0dKmVPlVma9qfUQFaVmwxlAaiosXh7MgoxOJPQS+n2kWxfAlOAwL0+lyUzIHEZEKFXx9eu1maDmNVN9XvONZdqv9QDVdrFsmTLOBHbuVBu6GkZYuHE4lJ6ec/MvSj9B17iRuvjwQxWs/uUvQBVbDc4YuvEHh80gNRVWLinm9/SyitnUOnCfxEplEIfoQEFRgBFD548/MI93Vw43J8Nx1VVw3326rTAT04LD7t1VNsqk4NCEklI3vXsbUz7ux/sIIRzACGBmjadmAo2laH8VQuwSQswWQpxmiYGecvvtMG2aVhOgngt93T7StOCwUycoLFTjaEygb1+tmcM65zWXFeif1wwq9XTgAGzUVxRQjbIyuOMO1ZevG7cmwPTpeu1wU14OH3wAp51mTuVRE/AHh03E7WwKCeOoDNfqbEwdOj/5A9e2iO4o1c3OnUaI0VQwbZraASwubvy1VmNacBgUpE6kpgSHn3+udiNN4eBBpei3bJmW5ZOSKhvuefxxJZJgUhmP79MRCAR213h8N1DffrM7qzgBuBRYD8xuqE/RcgYNqvJF0YeRPtK04BDULyk0VLcVin79VOZQ03lFzWuu/lgxDjOu7xMT1b0p8w67dYNXX4XjjtNtico4n3hiteCwmr+ymwULVP3oDTdoMqBlNEmiUAgRAAwEooFfpZT5jfyTVofb2VSTz9UkSVvnScyEofNu52dCcHjkCBw6ZFZwePiwOrnv3Kk/KBNCOePISL12VKV3b3OCQ7dCqCkEBamgTErlCHUyf77KOBjQy2sKOnyklHI9KiB0s1gI0RO4H1hQh40TgYkAMTExpFWV1QOOHDlS67Gm4sjNpf3atew78UTK2rRp0bFawr59DoqKElHxtqKwsIxdu5aSlqY257zxfpuElPS47jr2hYRw2M51XdR8vx3nzSNy1So23nGHEb3w0XFxdBg3jszZs5EtVNFu7md7992dmTx5AIGinODyIp4c9w0ZGXH6KxbLyhgdHs7ur79mY/faLch2f5cjNmwgv1cvpIbvjfu9HjgwFFBqnt2HDCHh3XdZ9MUXFHfqVO05u3CvuWrNGrqfeCK/d+xIueszaYk9Gs5T0qMbcBuwByhz3Ya7Hp8O3Onpcey8jRgxQtbF3Llz63zcE3btkjIsTEp1daZuYWHqcR1MnSplkCiVjoASGRamfq5KS95rsykullIIKZ94wvala73f9evVh5Saarst9TJjhrJp/vwWH0rL52s127ZJeeBArYdtf6/p6VK+846Uhw/bu66Let9vr15SXn65rba4GTtW3WRZmZTt2kl5yy1eOa63PltUQKbF33jDRwIOoBS4vMbjbwDzmmDLE8C6xl5Xl4/0ymfxzTfqHLdyZcuP1UKmTpUyjHwZJo6a4yM1Uuv93nqrlJGRWmyxmpZ8tqNGSZmcsEDuIkbKhQu9Z1RLWbRIyj176nzK1u9yZqb6G3/9dfvWrIL7vVb4JCml/OMPKaOjpZw9u/ZzNjFqlJRDh9YdE7TEHm98tk3xjx6VlQohbkKpp00HrgSqbhUvQJWzHBM4nUqC1kExbTmkXZI2ORlmtLmUlLC7zFFACg6Gjh3NyBzu3KnuTcocdjN01qEpdO2qurZ188MPcNNNqq/CJAYP1t/Pu3mzysiPGKHXDkPwlo+UUhYDK4Azazx1Jkq11FOGospN9eAeG2SAKE3ypflkksAdzi+N8ZEXnrKXa07Uq8hZQXa2/gqWmhQUqBJ6jTgcMFouwMluVSZtCqNGmdF3Pneuuj9Nb3tzNfr3V9edmgRy3Cq3v/9WRkK81C9+1QI87Tm8F3hJSjkR+KbGcxnAMTUBOTkZJvZN45bY6UY4m95l6+kRnmuWAtKUKWY0uB93nJrhd/zxui2pxB0cahwfkZQESWOlcjTvvKPNjjrZvh0efrhyxqAuMjJUibQJgWpVBg9Wgg1Va9vtZuVKdT98uD4bzMKbPvJl4DohxI1CiAFCiFeALsAUACHEVCHEVPeLhRB3CyEuFkL0EUIcJ4T4F3Ax8HpL3lCLiIpS93v3ajOhgr176cweotqWGOMj79p4O8+lGyDiAebMOHRTVqbaHCZP1m0J07reB3/8YZYPyMuD555Tdulkzhw1e3fAAK1mqAHxrh+EUK0XUtq+qVtV/KqkPJCCQlFLj6SarYbjaUF3PDCjnufygQ7eMcd3SI8dD7FmSNK2L8njQLABO0lVufRS3RYoOnWCyy7TbUV1IiJg7FjooPfPpm3pfliyBK64QqsdtTh6FP71L9ULqdPxrFtnllKpm8GD1bZ2dra+309UFFx0kRlCBGbgNR8ppZwmhIgGHkXNK1wLnCuldM/jqdls5ABeALoCBcDvwHlSyv95br6XcQeHBmQO6d6dcWNKELKcB3Tb4iIvJI5OeTvURazOnl0p1Zin8eP12VCTwEAlnKBxnIWbsoBg7cFPLUpL1azD4GAYOFCPDVLC7NkqQ2daz/nWrWr3+9lngT/ZtqxJeiTewNPgMA/oWc9z/YAdXrHGhwgsLyGqZDcUdYKQEH2GlJXRtnQfB4M76rOhLjZvVkpNZ9asjrKXSSN+JaTsKK+uHqPVjloYsH0UW+iS7DOtpKhnT3WBoFOURkqVObz6an021MfFFyuhJQ0iAMXFyvnlDD4T53S9f9uG4VUfKaV8E3iznueSavz8PGDI4FQXboErE4JDoFwEgtAvtuImNyQOhyyC/fsrA2kdHD6sNim1q9jVQPM4C4Cg8mJuybwPlifDCSdotaUaTqca+aRTsTQjQ2v5ZoPExakN5unTsTM4NFYgspl4Wlb6PfC4ECKhymNSCNERuAfVZ3FMcdK+//HFkm6wdq1eQ/buJQDJQdMyhykpcP752mXur9z2AvdtuEmrDabiLMxW/2Pa2cvhUGVOOoPDPXtUz4uJmcPgYC2BobufIj1d+nw/hQX4fWRVQkPhl1/MkHGfN497N9xM2xIzAlWAPEec+p8dmvfV27VTZfx33qnXjpr07avO/xr7vbsfzWDCjtfURrdpJCaqqh9dxMfDzz/DBRfos6E+AgPVzMP//Y/ywiIOHrRH/sLphJS3ygmlgDYiX7seSUvxNDh8FChClbf8DEjgVWAdSpXtaUusM5iKTF1enl5DIiO5cfhK5nUyrHTS6VTbJgcOaDWjY9FO9joMEqNx8/zz2kvyKoJD0zKHoH+cRUyM+tu+9lp9NjTEc8/BfffZtlz1YeJC9VPcWGqE5pQh+H1kTU4+2YwroxUruHBXClKYM9Y5L8SQ4NBU+vWDoiKtom0J+S7RL9PGGYGak7x1qz7Rv9BQOOMM5SdN5OKLST18EYuXBZGeDgkJ2LKZmdx/OZtJ4Ioey4zQI2kJHp0tpZR5wEjgX0AwsBlVkvo6MEpKqVdWSgOHgl1qbLob7oODeXfFML5eZIATroohsw6ji3eSF2JgcFhWphrK8/WNCj0UHK3KQjT3PtZJ794qe6eT6GgzfzcAv/9O7muf2jbgt85h4sGah4kbhN9H1sH338N33+m2AvLyKBVBHAk0R1RkS/gAnu/7rvYNQj76SGVZior02lGTMWPg5ZdVf74mHr3wN3XS69tXmw31kpioKmx0DF4sLYUnntAvGNcAOQNPZxIplMpAyspUK0RNcRhLSEzkvhMXsqXbaCP2xVqCx1tpUsrDUsp/SClHSyn7SilHSSmfklIestJAU5n6gyHB4bp1Knd9yLCPwf2XoTM4lJJORTvMzBy6B9hqUiwtLoZpYdeR8/FsLes3yssvK8EVXUydqrJzpjJ4MJ2Kd9pWKldnP0V5oHEVyTrx+8gavPwyvPCCbisgN5egmI6kzTNHOGOvjOLT8L+SE9xNqx1fPbiM/P+lqUDDJPr2hXvu0TuyIT1dCb7U3BUzgcREdc1n1+5gVZYvh6ef5onLNLdUNUDWrlCCQ6u3XrjFYSzD1UK1M6yXEjLycTydc5gphKhzFoAQYpAQItO7ZvkA7oZ73cFhWhrcfLPWDFSdmBAc7t+PQxaZmTnUOOuwsnfMvnKLJhMSolcF7ZNP4PPP9a3fGK5Sp4rSJ4txz3cNCIA2HCFMFJKSInx+d9Rb+H1kHURFmSFIk5ur5u4aQrVZaD3LtZ5/Ywq3sDu0h3mKk6A2B3Vmp/buNbOkFNS4Bl1CiDNnUo5gVQcDxWhcxMdDiaj++7FcHOaBB2DCBIQst3AR+/A0c9gTqO+bGAoYNCTHJoKC4D//gbPO0muHu+fRPXTYFHr2hJ9+UnXpuoiI4LpBv/J16J91V7fWRlPmsHrvmI3lFk1l3z5VsD+jvukAFpORYaYYjRubg0NQH0fiiZKvAy8n88qHfLqfwgJ64veR1TElOASlYGgAtWahFQVoPf86C7ewO8TQr+bll8Ndd+lbf+lSeO89fes3xtdfKzV4u0V7Zs1ifduRla1VBuLezAwU5TgCSpssDpOUVH9Sts7njh5V86KDgozqbW4JTXkX9clOjgT0qo7o4q671BBxneTmqgGtppWFhIWpwLlzZ20mpE5zkPrHCOZndDYvQxYXp3o9bE691Nk7ZnW5RXNo0wY+/hgWL7Z/7aNHVUbX5OCwSxc2RAxDYu+Of5ijjLUJF+GceKGt6/oIfh9ZFXdwqFmxmunT1UalAZh2/o0p2kJOqKHBYb9+2sdZGFlS6ubIEaUYmpHRYDDjVQ4ehCVL+DXSoLmY9ZCcDNPbX8u3AReTmVFs7Wbmp58q8cXbbrNwEXupNzgUQtwjhNgqhNiKcnr/df9c5ZYLvAGYcea1m+3b9Q9qzc3VW5ffEDNnqkGpGsjJgUk3lZubIQsOhm+/hfPOs3VZn5nFExKisqs6FEvXrVMXtKYNP66KEEwcsZLpcfY6ozIRxHddbobTTrN1XRPx+8hGiIpSJ5ejR3VbYgxGnX+Litga1p+sNoaWTvbtqzbpqk4Vt4uPPoIJE6Cw0P61PSUxUd3bOe8wIwPCw/k10jdm3M7vdg1nl/6Ac76FLSJSwhtvwKBBcOqp1q1jMw1lDjOB2a6bAH6t8rP79hVqhtOxOUhu0iT9Q7Lz8swNDh9/XJuoR1YWBFNc7TEjM2Tl9tanu8stgkQp7TlAWEi5ubN4dI2z2LEDwsPN7TdxUVyMbTOc3MTnryXu6Eb7FjQbv49siL/+VZ1ww8L02VBaqio0ppsxZrJq726YKCSMo6S8XqLn/BsSwm3DF6vNHhPp109deOvwAXPmwMKFamSDqfTpo9S07QwOExNh717S24+2b80WsDxyPFvD+sErr1hXwbB0KaxapbKGQpCWpqRAfJ2g+p6QUn4LfAsgVLPy01JK0y6t9RIdDb//rteGTz81d2fW6YRMPToM8fFQUlp978O4DNnEicoB/fGHrcsmJ8OOR99m7NZU4tf8hLOfORLv1ejTB774wv51L7wQDh82U6TBRWoqLF9SRpjMJyE+gpS3A2zpAZyU+Xc6F20D7Ot1NBW/j2yE6Gj9vfD79sF//wvjzSmDS06Gt96CYdtn8di2m3CevgTVsmo/xcUqMZeTY+AGoXuExIYN9m/UrVkDx9epL2UOAQFw4okqOLFz4lJwMIUlBn9vqiBFAF/F3ck9v96mWlROPtn7iyQkwDPPwDXXeP/YGvF0zuH1fqdXB9HR+tVKO3asFDcxDadTWx2n0wkpg14jlEICA2lyQ7ItREQoRTYNPTlH2nbhUEwfcwNDUDPAYmL0bH4EBBgbHLpFLUplIIdpR0GhTaIW5eUcd2gxv7fT3GdtIH4fWQe7dsHkyXoyP27cgm0GqZWCqmLZEzcM508faqv8SZ04n1WLC1mbXm5eTz6onu/PP4dTTrF33ZISWLsWhg61d93mcNZZEB9vj0JmdjYMGkTqIxnmq51XYabzWnUdsWaNNQt07gyPPKJ1JqcV1Js5rIkQwgGcA/RDqa9VRUop/+FNw3yC6GjVFFxcrEcQRkp46im1K2rFjkhLcTqVcy4p0dLYnSw+IrLDKh7r+RE//mhYYAgqqC8oULvbNu+wL+x4MQs7Xoxmrd2Guf12dbOb88+Hyy6D666zf20PcItaVG3FcZdMW/od/+MP2pYe4ILJvlFSZDd+H1mD3Fx46CFVAdC7tz4bwMjWi9yQrnBWVy1r5+TApPdPohAHlEGpqyf/zDMN8pNhYUqx1G7Wr1fXdKZnDgHuvRfuvReZZMNas2aR83sekzb1reiGKTDxe1ODgkDXJnwTSoQbyqhXey7tMzW54LLLvGu0AXgUHAohugALUbUPEiok8qqmPI4txweVF/R790JsrP3rHz6sgsOICDODw9hYFcDm5kIXDbMGd+ygPOxE2rc39MRVddahzcFhSNlRigLDbV3TJ8jLgx9+0DNc2EO0iVosXKjuR/uDw5r4fWQdREWpe53jLAzNHAIEyDKY/l/1h2tzIJKVBcGihAIqN7Vt2WBqKmvWqNaUSy6xb838fFWuOWyYfWu2kNKiUvILg9i3z8IkxaxZZHVKJLhIUFBU+bCR3xsXlb1/rsBw926VRWwA9xxSIVRmNCWFipaN6s9JUsKWkDw0vVUGh56OsngByAW6o5xeIpAA/BPY5Pr/Y48zzlDflrZt9axv8K4oAJdeqnoyddm3ahUf9nhCz9qeoGnWIaWlfP9LB5K3GH6tWlYGp58Or71m35pr16p7g8Vo6hS1eLXQeue8cKHa8DGqcdcY/D6yJlU3T3XSs6fWkUr1UU4A/OlPWuryVE9+YLXHjOvJB5gyBW680d41ExNVBDBwoL3rNpPUwc/z65Iy0tPh6qsTrfk6lZXBzz8Tf3o8JSXV2y2M/N7UxWOPKQXy/Px6X9LQHOjazwkm7XuWnKvvtfFN2IenweGpwEvATtfP5VLKbCnl48CXwKtWGGc8ffuqJlRdtcbuXVFTg8NOndQJVtesoLg49oZoyFh6SkKCUrjqanNp0datBMsS8hxmDIaul8BA2LgRfv3VvjXTXUIrBgeH4BpInwjn9t5A5l+eJvnCQ9Yv+sIL8OWXxvZiasbvI2sSFqZKuXRmDidMUGkNHZU9jSGEmne7Y4ftSzudkNL2PhwUm9uTD+oaa9++ymsdO9A9l7MJ5OTApHV3UUQIZWVQVBRoTf/5ypWwfz/OixIrNiaN/t7UxfjxsH+/GlNSDw3NIa3zOVFKVl+jm3OajafBYTSwU0pZDuQDkVWemwMkedku36CwEObPh507G3+tFZieOSwoUFkfOy/u3WzeDM88Q8ci+x2vx0RHw+uvw/Dh9q67eTMAD7zdy951m4Pd4yzS01U5nIkXkzVwOCCvyxCcH0y2JzMSG2tm+boZ+H1kXURF6Q0ODaVC7l5TcEh5Ocnn5HF/wlcMHqwqN+1QO24y/fqp+w0b7FlPStUj+89/2rNeC2komPEqwcFwxRUwblzFxqTR35u6GD1alQq/+mq9GwANtWzU+VxgGPF9PJZu8Sk8DQ63A+6i/c1AVV1jO8iWAAAgAElEQVToEwGDJ4VaSF4ejB0L33+vb30wsp8CUDujd94JM2bYv/bKlfDYY7QtMfzCpKTE/rIrd7ClSySiKdgdHEZHwznnkHSaMLntsDplZarh3koWLoT//EfPQGrfwO8j62LNGjUgWhePPQY33KBv/cbQFRwGBMBnn7Gw21Xm9uRD9XEWdpCTozZPdbUKNZH4eCiR1YMTS8o8hw6FadMqEhEOB2Z/b+pCCLj7bjU67Oef63xJ1ZaNmpnRqs85AkoJE4WkvJzvW7+DJuBpcDgXGOv6/xTgPiHETCHED6gm+y+tMM54dPdU/OUvalfW1FEWoaFqSKuOcRYuh/v+zDizB5KOHw8XXWTvmps2qc/GB7Jj9O4Ne/bAIRvKJgH+9a8Gy06M5PbbYcQIa8uhPv0UHn9cX4m4+fh9ZF107AghIfrWX7oU1q3Tt35juINDu0sZfaV0smdPdc6xKzh0jzvwBaVS3AGLIJQC2oh8QkLKvF/mWVBgQSpSE1deqQRpUlLqfUlDmVH3cwOHBJG5M5TkO+wcMGkvngaHjwJvAUgp3wLuAsKBWOB54G+WWGc6YWEQHm5vPXxVhIDISLXFYSpOp5p3ZTc7dqgAKDKy8dfqpGtX+wVpxo2DJ55QW2CmM2yYmuVkV3Doi4wcqTaJrLyAWrgQRo1Sst1+6sLvI+ti2jS14aKLvDxzK2tAVdasXGn/uu+9Bx07El2kqSXGU4KCVID/97/bs547OBwyxJ71vEDyXwL4e/wXXNFjKZ98stT7ZZ5z5ih9hAULvHxgDYSEwHffwfvvN/iyhjKj5++bSueIo602Y+jGI08vpcwD8qr8/Bpgo4SgwURH68scvv++yqo88ICe9T3B6dSXOYyLM188o3t3ZWtZmX1B/jnnqJsvMH68uoH15aXff68EgmbMAPpbu5Y3cfcBLlpU2aPjTQ4cUL2YrVCu21v4fWQ9zJwJP/2k5h3qIDfX7CyQrqqfLVtg/34OBBuqV1AVO0dKrF4NPXqYv6lcg3ndrwUgKirN+wefOVMlQk44wfvH1sGJJzb/3771Fg+vv5UOJbm09v0+j1IHQog5Qog6r5aEEH2FEHO8a5YPoTM4/OortTNrMrGxeoLDXbv0zFZsKt26qcDQruxqebkqsyoqavy1JmFHGdRvv6mZk3GGq7i6qBC16NdPXcwsWmTNQosXq9//KadYc/xWgN9H1kN0tD5BGveMXVMF20D9bl57DTIy7F13yxaIi6MswAfKxFeuVJUuZWXWr3XqqTBxovXrWICzMJuopUu9f+CZM2HMmCYNkTeetDQ46SS18ekpM2bAHXewOOo8vux6t2WmmYKndWVJQLt6nmtLZa/Fsccrr6hB9DrIyzPb8YFShlqxwv51f/5ZlQ+Yjt2zDnftUuNF3nvPnvW8wejRasCQ1aSnqx4XHxEjqCAgQDk6q4LDzZvVhUFiojXHbx0k4feRtYmKUqreOoSMiotVybUV2XRvcfiwKi1duNDedbdsURkyX2DlSnj6aXt85K23wsMPW7+OBVyX/QQDnnlGfe+9xbZtauNi/PjGX+tLtGunypU9vQ76/Xel1nrccTw94FPKhcGtXF6iKU1H9W3d9wKOeMEW32TMGPtHEbjJzTW7nwKUfe3b279uYKASwzGdIUNg8mT7spyuMRY+oVTqYs3aANKn/WH9QunpMGgQoPzrwYN6kt7N4u9/h5deqvZQUhLeUVy9/XY1H6pNGy8crFXj95E1iYpS9zqyhyEhKuj661/tX9tT3KJgdiuWuoLDiuoDk7FLsfTw4aZlkgxjfscJBB85AnPneu+gs2ap+zPPrPawT3xvGmL4cHXt/vjj8PLLUFpa/2ulhOuuU/oi339PQZCPbR43k3qDQyHE9UKI+UKI+Sin97b75yq35cCHQJM6VYUQtwohsoQQhUKIFUKIUz38d6OFEKVCiLVNWc9SMjLg66/1rG16yQyoEsYHH7T3KvvgQbj5ZrUzZDpdu6qeUbt2cd19e718YMahi8w2Q+iVv0aVxFpFcTGsXw+DB5Oaqr466emqDz811bplvUZSEpx9tnXHb00lRV7CSh/ZaoiKUpltH77othSHQ80otXtW8pVXwnnn2btmc3EHh+vXW7vOtGmqPN/qsUAW8WvUeErDwlS7kbe48EL47LOKTdNWxUcfKb/5t7+pPsT6Mq5CKLXuH35QbUDHCA1lDsuBMtdN1PjZfduLUmjzeGtOCHEl8ArwLDAMWAT8KIRosDNbCBEJTAVme7qWLXzyiRJqsKMevirFxWpN04PDbdvguefsnVW3ZYuSKt661b41W8K2bfZJRW/apBTgTB1/UgcbIoYTXnaEMCt3148ehYkTyRl2DpMmqTi0rExVw02a5CMZxHnz1M2bLFsGp59u9jgAfVjiI1sVl1yiZrked5z9a8+Zoy5qf//d/rWbgo5Zh5Mnw1VX2btmc4mJUWWAVmcO16yBiAif8o1VKQ4IZd9JJ8H06d67Hu3YUW0kmC7s1wySkruRdPi/8M03cPnlaqMGID9fZUbnSvjyS5U57N27okLQ57OmHlKvWqmU8kPUjidCiLnALVJKb3RN3wt8IKV8x/XzHUKIs4FbgIYkzf7PZY8AzJHNi45WX54DByrnHtqBwwH5+dZmU7yBu2zGzqtrt6P1EWERzj5b7Y5+8431a23erCbk+tBIgg1tRwDQ1sqLgw4d4I03yFqsxmpVbZFyOFTsbrx09T33qEzN2Ja1t7lLUdPSXP+ZO9fec5uPYKGPbD3oHLO0fbsKDHXOWfSEuDhlq00EFBWpzbDwcNvWbBFCKP9o9Qbq6tVK2dYXRjzVwB2s/P7kGDrPm6fE1Vqq8rp+vVIaTk6uLA9vbQgBF1+sbqA2VydMUJsn27apXtdvv1UZ1GMMj/4KpJSnecPpCSEcwAhgZo2nZgInN/DvbgVigGdaaoPXcV806VIsNf1E5r6itnPWobtEx1eCw27d7BOkue02vXPHmkF2+EB+cP6Vws6drVtk714oLSU+XiU6qlJcrOJp4zn5ZFUP680qhoULlaCHlb/7VoC3fGSr4+BBpf44W0PBT26uuje9uubdd72f8W+AjvPnq/5huwbLe4NZs0g6/F/v9FDXRXm5yhyaPPbEA/aefLLaiPfG+I9vvoG77/auwI3pdO6sBPtuukkFhjfcABdcoNsqLdSbPhBC9AIGSin/W+Px04HJwEBgF/CClPJtD9frCAQCu2s8vhsYV48dg4EngJOklGWikfS2EGIiMBEgJiaGtDryv0eOHKnz8eYQtXMnQ4CVs2ZxyMa+gYiNG+n6xRdkX3cdhQ2ImXjzvTaL8nLGBgSwdelSsgYPtny5I0eOkLVwIfHAvA0bkHaVa7aAvkFBdMzMZFEzPqdmfb7R0T5VF7H30FAeiXmRZ+IXcsgiuwc/9BCOvXvJePtt7r67M5MnD0AISXCw5O6715ORscd2tfmmfrad27dn4JEjLH//ffJ79+bAgaEApKWtrvXau+9Wz/3nP7Wfq/h3c1Zyyrx55I0ezXqLvy/az1PNwCIf2boICoJ33lFlWWecYe/aubmqDKBdfSKyhhATY+tyobtdl19du9q6bovo0EHVjFlFdrYSpPHx4LDc4WjSZki1KpGqSAlffKF+H8aXzHiRAQPURk1qKqxapVqiWmFJrSc0VFv2GNAHqHB8Qoh+wPeoXooZQF/gLSFErpTS6zVxQogQYBpwn5TSo6t8lxN+G2DkyJEyqY6tprS0NOp6vFm4FPyG9+jhJWlAD9m5E2bNwvnKK+oLXQ9efa/NxemkR0QEPWywIy0tjfjOnSEujrE1FLaMZcEC+OEHkk46qcnCH036fPPz1biDkSN9ashveDgUFEjEliKSbj3PmpP1zp1wyikkJSWRlKScZUGB4McfwekciLrOt5cm/+326AHPPssJJSWQlOT6vUH//km1/LtbyLeu41c853TCoUPEXn45sRb/7Rpxnmo62n2k8YSHq7psHWqleXmqZ8r0i7vff4epU+Hee20JFEN371YBhK+UlQJkZPD39c/zcfeHAQuUttu3hylT7N/AsIKNG5Ug37PPNn/80MyZaoTIO+80/trWhhBw7bXqdgzTUE1iIvBFjcduBxzAGVLKCcDxKIGY2z1cLw/lNGueAWOAuprSYoEBwPsuldJS4HHgONfP+oevDBwIv/yiZrHZSV6euje9ZAZUn9uUKfat99xz9pVpegN3A7zVfSfp6Wpekd0ztVqAWzl03W8lXH77OaS+nOv9RQ4eVOJFVTLbDoe6XvCpTdOePdXF5ZIl3lFcLSxU35dTPRKTPhaxwkcCrUjRWwjVr6QjOOzXD8491/51m8q2bfD88+qi3gZCc3J8Z8ahm4ICzs15n15H1lhz/OhopTzmQyre9dKpk9pw/vLL5v17KeEf/1CZ5WM8QDqWaSg47ALUlKg7B1glpVwGIKUsB94FhnqymJSyGFgB1EzpnIlSLa3JDmCw6/ju2xRgk+v/LZr63ATatFG9PnbP1MvNVf2GvtAorEMG3/Td4qqMHQsff2z9zEofm3GYk0OFcmhRuYMCwpn0cJT3tY3caoY2lD1bihCwcCE5/3jHO4qrw4fDjBmt44LJGrzuI6EVKnpHRenpyb//ftXPZzru3nibFEtDd+/2veCwTx8Auh21aJzFggWV/tHX6dABxo1TIy1kfaNXGyA/H9q2VSO23Aqefo45GgoOBSrLp34QojOQAPxS43U7gYgmrPkycJ0Q4kYhxAAhxCsoJzvFtc5UIcRUAClliZRybdUbsAcocv1sxmDhjz+2PxuTm6t2u0wXpAH4/HMlhGIXV12lZtj4Cj17wtVXW7/BsGmTCiB8Ql1FidMFB1d/zCFKvC9al56u7n09OATo3ZusHY7avzeH52J/xcUqmZqzyYzTq8FY5SMrFL2llOuklHegehdvaeTfuRW9FzdhLeuJi/OtzTq7sTk43D5hglKg9CUiIsh1xNGtwCIRnb/8BR55xJpj62DCBHXCX127p7xRIiLgxx/tvWbTQIWf84UxVRpoKLLIRJXNuDkTNeh3bo3XdUaVi3qElHIacDfwKLAaGA2cK6Xc4npJd9fNd7j3XvsnZQcG+s6O/po1au6gDbMgRXGxGtqamWn5Wl7ll1+sn8e1ebMqFfGRgeZ1KoeWBHg/th01Sim4+uh8q2rs20f8+49TUlT9b81TxVV3Oera9HIS+gSQOvHYnN3uIV73ka1S0XvmzOaXuLWEXr3gqafsX7epREaqc7JNweHOiy6Ciy6yZS1vsi28rzWZw4MHVSDl42I01bjoInWN+NVXJCU1QQ5j40YlzgOtekPHK20XrZyGBGk+BJ4SQhxEqYn+A+XgajqtJKBJxfJSyjeBN+t5LqmRf/sk8GRT1rOcjh3tL5t54w1712sJsbEqMNy713JJ/BD35+ArYyzcXHKJmrXztoWihps2+UxJKah+v5QUuO465aeCZREpYXfjjHkTr0rXDRmibq2B8HCcHz5HyrgBXPfTVQihsoYpKdX7J4uLVblpTk7l41XLeMsJoJRwJk09hTOf9rHeS/uwwkdqV/T2ReXYmojSUsZmZpKVnc2WRt6LCe83MSqKg7//TobFdgQeOYLcsYN5paVIH5p1C7BBHE9wST7rv15EVJRn4xU8+Wzb//Ybw4DfhGCfj3/vq77f3hdfzOHycg4cOADUrVpdU9F60COP0G7dOhZ//jl33TcSqFvR2gSa+3e7b5+Dm25KpLxczWAtKICbbiqjTZulHn+vdGD3eaqhs8MbwKnAq66fDwF/llJWjIcWQoQDV6H6I45doqMrBWL81Kbq1afVwaH7c/C14NCOWYcpKVBUZO0aXiY5Gd56S53An7viE8b3HaeiF28N15ZSDXkfOrRa/67PXiOEhsKIESQfepO3Eq+ioACX4mrlS9y7pkKoXdOUFPV7dpfxFhRUvtYRIsjK8geH9aDdR1qh6O115dhPP1Wy+F9/7b1jNoZrXEP8yJHEN/JejFDK3byZsNBQLP8z+/JLpWS5apU65/kIqalwy8GxCCFwXFN5zmoMjz5bV1vBkGuvhQbGgvkC1d6v677DIvePSbVeX03RevcapWb+9NOMHTeuQUVrE2ju3+3ixRASUv1SKDQ0kNjYkxk1ynv2eRu7z1P1lpVKKYullJcCvYATgDgp5Q91/PuzgdesM9EHiI62P3N46aW+0WwP1YNDi3G4Bx/7WnDYvbv1weHgwWqMhY/hVg51jIpXvRTeCgxBjbA44wz45BPvHVM3o0bB8uWEBxXXUlytmh2sKVZTdxmv8JUWVduxyEe2PkXvrCw1ULuw0L41fUnNG+wr9d/i6t7xIUGaynOWaJnAVn2sWaOqv2JjvXRAgzh0iJ75dber1CqtnDhfzQS94w6bjbSXOv2ch20XxxKNqplIKbOklCuklPl1PHfE9dxBa8zzEewuKy0vh2+/rTzRm05srOqryK/1FfI6QkoVaPlacNitmxqnYBXbt8P//R/s2WPdGnaweDEsWeK947UmMRo3J58MRUX0ObKq1lN1ivy4xGrcZbwBAZJ2HCAsqKRWOaqf2njTR7ZKRW93Rn7/fvvWdG8S+kpw+MMPamxAc9Qlm8KWLZSGh9uvrt4CGjpneYWnn1bXU62xx+7CC3l03Z9rPVznJuGyv5Jz3YM+9d1oDpV+Tu0zh4XVbrvw40Fw6McDnnxSXbTaxb596q/aVxxfr17K5ksusXypPWecoYJmXxjxUZXu3eHwYdUcbwWLF8ONN6pMmS8zaZKaweQtWmNwOGoUxMQQVVx7a72xXdPkZEgacYTr434mc8ZGnxM1bCW0LkVv97nYzg3UyEi45hqlBO0LbNyoUjlWz4PcsoXCmBifCoTqPmdJ72V6unRRG2qtkQsvpHf+GroUVB/TUWfATQlZZ91so3H6SE6GxETl9jMzfU+81w78waE3iIuzt0zD13ZF/TTO5ZfDvHlqG8sK3DOcfEXhtj6GD4eVK713vPR0dXHga5sJDdGlC+zaxS8daysSerJrWhbeltW9L8N5+kAbjfbjptUpekdHq3urA5+qHH+8CrZ8pVbMrnEWW7ZQFFOzYtlsqp6zQgOKCOMoKU/t9k6mZ9s2ePll2LXLCwczkAkTAHh83Z9g1qyKzHSdAXdYO+KHR9ptoTbc7Sr+jGHd+INDb7B+vZLCt2tn1B0cWj003Zvcc493Mz710O/559XwVl+jRw8YM8a6obObNikxoLZtrTm+XQwfrmpivJUBTU+HQYO8cyyTaCAz0Niu6Yh9s+hYZI+svp+6kVK+KaXsKaUMkVKOkFLOr/JcUkOq3lLKJ6WU5nypO3VSV6M2jDKqwM61vIFdweEzz7DtssusXcMC3OespL67yCSB5MjvvXPghQvhb3+rvKZqbfTowYO9P2dzYRdyxifDb78B1QPu4MBy1yah8AdKfirwB4feICMDHn64cj6MHRx3nG8pa/36K8yZY/kyHdassV7YxQpKS2HaNFi+3Jrj+9gYi6qkpVVRDx0xQt23MHtYMfvpvffgn/9s0bGMZNYs0rb3Ju3DuvuS6901XbWKF9LP4sKdU6y30c+xwZAhahfitNPsW/Oee3yr79yu4PD88zngPof6GA4HFHTugbOzVFU23mD1anXg/v29czzDSE2FFzIv56Ly6SQ4tpP6m2uW46uvktxjPucO3cnPZUlkPvROrU1C/5D4Yxt/cOgN3Bk8u8ZZjBkDa9eqANFXcDqtP8tISUhurm9dFLgJDISbboIPP7Tm+Js3+35JKahyMSFgxQrvHG/YMJ9UcG0Up1N95k1RNJYS7r6bQ8HRfN7tb9bZ5seP1eTlKZ1+X8Et2mbBqKGKjbC9e2H2bAJtEIazDCHgllsqNwlbQFISLHtnDQwcaF3Fjkaqi84ICoqDlMprdiG89BKMHcsHa0dwCotwJlfXv/IPifdT75xDIUSTehqklBZKLRqOu6fC7nEWvoTTCT//bO0a+/YRUFLim8GhEKwVgyj9KJ2hr1tw/BUrajcZ+CIREbBsmVd2ensdWQNT16h+T6t6PXUxeLAS5HjuOfjTnzzbSPrqK5g/nw5TpvD9pNatWOcN/D6yCZx7Lpx3Htx2mz3r5eb6Vk++w1HRk+keZeb1WauLF8MFF9DmjTe8fGCbefJJrx2qV/4aOP4srx3PJOqcW+uArF2hODMyYMoUePB5vutyM5dUEW6qGlRC5eiQM8/09+cdS9QbHALZQFN0lb04fMzHsDs4nDxZlVX8+KM963kDpxMOHFCzrqya6eQuyfHF4BDIbDOYpNwvVAbH22pynTt793g68VKmb0zuV3DDs3DFFV45nnG8/LI6R0ycCAsWqAaT+igshPvvVyWAN95on42+TTZ+H+kZK1YoRWa7yM21dz1fwDX6qtDHBGnq5OhROHSoRdFKu5K9dCjeA0OHetEwc2hQmTosDO65hwnf3gNSUlVHvt6gMssfHB5LNFRWekOV2y2oeUrrgKeAW4GngQzX48eG/m19RLoUnuwKDtPTYcMGe9byFgkJSvjDqlENAOXlHBw0yGfLJ7PaDKJd6X7vj5tYuVLttraWzPaGDarHt4Vl3An56dCnj30DqO2mUycVIC5aBLNnV3uqWh8nqBl0ffrAv/+tSpz9eILfR3pKVJS9aqV5eb4l2Abwwgtwww3WHX/LFnA4KI70cUVKKVX//MMPt+gwh4KjOWf0kVa7GebxPL8aG9HHypD4Wj7QTzXqzRxKKT9w/78Q4j/ASuASKSuntAohngamA8e25nlQkJJCtksOPzfX9xzfVVepm5UMHcqq114jafhwa9exiKw2rll76enezX7OmwdPPQV33OG9Y+pk1y6lDjxmDJx9drMPk5CfDqcN86JhBpKcDP36Kam/hoiNhZkz7bGpleD3kU3A7uDw+utVFtyX2LQJ/vtfsEpKYMsWlU1tqILAFxBCnc+8IEpTHBgGEV6wyVCSk+Gtt1QW8McfPcv8uYPK665Tv2qHwz8k/ljE07PEVUBKVacH4Pp5CnC1tw3zOZxO+5qa8/J8q5/Cj0f80e4k/pSYBePHe/fAmzZBhw6tZ5afuwyoBYqlouAo2YWdyel5kpeMMhT3hRTUr6acklJRcuan2fh9ZEPYHRz+4x+ql9iXiIuDvDyCy70vSgOov3E75zF7mWqZnrFjlQLu9u3NO1h5Of9KP0+1FrRymjPPzz8k3o+nwWEEUF800hlo4x1zfJj/+z943QolkTrwtWZ7UP2Go0fz9MBPKxruvc5993H8PfdYdHDrKQ4IJSe0p/d3dt1Kpd7uY9RF+/aqrKiZiqWpqbBgeSjn8j8SXr3r2FBimz9flY1+8031x5cvh5tvVuIEflqC30c2xODBqrXADkpKlL+RTWkHNQBXtUh0kZfbCtxMmaL0CloDY8eq+/nzG35dfaxcyah9/yOk/Kj3bPJBGiqt9A+JP7bx9Co0DXhWCHFC1QeFECcC/3Q9f2zz9dfw/vv2rDVsmO81UUdEwKJFdD+63ro11q0j6MgR645vMcXF0HPrPHLue9G7B/bhGYf1MmJEszKHbiW2MhnAITpUynu39llOo0YpxdLbbqvs+3WNriAmBh56SK99vk8afh9ZP88+C19+ac9aq1YpHYAffrBnPW/hCg47FXt31mHFvDrn0NYztmfIEBW5NLe09Lvv2EEsPwZf2PrP/X78NANPg8PbgSJgiRAiWwixVAiRDSwGCl3PH9tER9sn+PHdd3DXXfas5S2CgqBTJ6KKd1m3xo4dFPtaL6YL91yhz7NPJOGlW0n9oMw7By4rg927fVakp16GD1fZgSZuBriV2KriVmJr1QQHwzvvqO+COxCc9v/t3Xl8VNX9//HXJyFhEUEWJYAiwR0BrUtR64KtWKt21datVGxVrFa/v/qtVlsX1Lpbq11UXFoLtl+tVatWqdRi3KpUwQXXqmyChEVEWQJZ+Pz+ODMwCVkmyZ31vp+PxzySuXPn5nOSzHzm3HvO59wXitVceSX06pXb+AqfcmS+WLYsfC200TXbbw8jRlBTWxLZ4uPJvPLG7A0MG1LPlN980vmD5oPS0jBaq4NLo0z5Qz07MIcX3+qtdfxEmpFW59Dd5wK7Eiqu/Qv4OPF1ArCbu8/LVIAFI5udw0JVUUHf2gyeplu0iPUF2DlMXVeoxrtTQw8mnGHRnNEsLQ2njS++OIKD5ZH/+Z8wh6lny9UENi7+nKKyEurWN+54F2Mltmbtuy+cc06oUPDkk3D++WEUwvjxuY6s4ClHtuGhh8KV66VLM/+zCrVzuNtuTDl/Nn9454BIFh9PzSv1DSXU1HVhwnm9WLGiSBZ8P+aYDhUdqn7pQyYsvIj1dKOhYdM6frqCKLJJ2pOb3L3O3e9w9x+4+5GJr3e6exGsrB2Bfv3CVYza2sz+nFmzwifZZ5/N7M/JhEx2Dtevh+XLC7Jz2OzVrNL66K5mlZQU33INXbt2aA5lRQVMOmAy3VlLl1Jvubx3sbriijDE+OWXw8LkN92kpSsiohzZivXr4a23snMCNbnETYHlgtTOXBSdlpZGSSxeXCS5oK4uTOdp5/SCue/WUtal8XzUYh49oiUbpCNaXMpC2qlfv/AhfMWKzH7SrK4OVQebvusXgtGjeXXWpxuHzET6a6qpgeOOY9XOO0d40Oxofl0hi+Zq1sMPh/Lov/419OgRwQHzyM9+FubNXX11+s+prWXcaz+ha7//cPV2t6Zd3rto9OwJb7wROtci2ZKslJyNiqXLloVP+1tumfmfFaG5c6Gsfi01bHqf7szi483mlfoSBg5c18lI84QZnHwyfO97YZpBmioP24G6MqB+07bYjB5pB3Uo4y2tK4dmVm5ml5rZO2a21swamtzq2z5KkTv11PBOnOlPmoU6ZAaYstPljFtxcyRDZjaz1VZw772s2H//CA+aHZstVmvrmJ5XklcAACAASURBVHTwn6L5V3r6afjzn8MKuMXm3XfbX+Tin/+EFSt4ZeBR8a3Epo5h5JQj25DNzuHYseEKeYFVZ66shLqGxh/JOtNpSc0rPWwt3a2GSZOMvn0zPLopW7p0gS98oX1FadaupcIXp7c4vEiMpXvl8HrgLGAq8CBh4r2kytaVvALtHKYOmYFNQ2bGjo3oTdm94D4MpGq0WO2jXajYdnw0By62ZSxS7bVXGFb06aehcl06/vxn6NuXl/pEvJakxJ1yZGuy2Tk87LBwKzAVFTDp87/n9BdPoa60eySLjyfzyoTXf8KXhy+kYtwjxXVF6JBDwgiS5cvTG0b8yCNwwgmMe/VVbh29R7sWhxeJk3Q7h8cCl7r7lZkMpqBVV8Mll8D3vw/7ZXBh7WXLQke0EIfMWB01bOpEd2bIzGZuugkuv5zSe+6J4GC5UV4ebhXbRjja+/33oQCH2qZl773D11de2bzyDOGse01NkyHM++wDu+9O/bQiKcog+UI5sjX9+8OXvhSmX2Ta3LnhZFGyQ1pAxh00j0Ne3JWvj5zH1KkWSW4sL4eHR13CyZMLd5mnFh18cPj6zDPwrW+1vf8jj8A228CIEZvyrTqGIptJtyBNT0JJbmlJfX0oFf/665n9ObvsAscfX3BXgqIeMrOZRYtg/XoaimFe3RtvwBFHwGuvdeowhx6ygdq3Pyi+NQ6TkvNMmilIkCzhvtkQ5h//OJxpFomWcmRrevUKFXKPPjrzP+vwwzu8xEHODRrEEBawXY8VkXZaVpRXFGce2HffMC70pZfa3reuDh5/PPwPqgiXSKvS7Rw+ChycyUAKXvKMaKarsX3/+zB5cmZ/RgZUVMCky5bQnbV0LamNfpz/okVhEeEC6zQ3q2tXeOIJmDmzU4fZsv4TlnbbDnbdNaLA8sw224RhRU3m0LVY9e9vL4Y7qIKbRE45Ml+kO8QwH+2+OzP6HEH5huiKxvSuW864+b+A//43smPmjfLy0K6rrmp732eeCVMQvva1zMclUuDSHb/2G2CymW0AHgc2mzjg7nOiDKzgdO8eblrrsEXjJvRg7AXDuL7iV5w384Roh3MsWgSDBkV4wBwaNiz8L82e3anDfFbWj+9+/j2qfhBRXPmomR5esoR7oh8IQHmXDcw99jwqzjuwfdVNRdKjHNmWww8PC73fcUfmfkZdHaxcWXBz8jcaO5afjhob6SGHrH2HH8y7GObsU5xTDLbdNr39HnkkLOlUgPNRRbIt3SuHLwA7AROBGcB7zdykf/9NayxlyogRcOaZmf0ZmdK7N31tJfuUvBL9OP/klcMCtvFqVmlpWDC6k53D2Fi3Dv7+9413my3hvm4DlQ3vhSHZItFTjmzL6tVhGaZMSp6cLdTOYQYMWDc/fLP99rkNJFOWLoXx4+Gpp1rf7/zzQ3XrLbbISlgihSzdK4ffB7zNveJu8OBQNTOTFi4MJZwLkRlPDjiRD3vsEulhx4yBH9SfwLijh0d63JwaORIee6xTh/j2hzey18rp4I8Wx3Dbllx7LVx2Wfh9feUrG0u4jx8fml1eDpO2u4aKLv1g1KhcRyvFSTmyLX37wuLFmf0ZyZOzhTqstKGB/5uxI3+vOA2IZm70RePmw8+BIUMiOV7e6dUL7r03/M0PPbTl/QYPbnQCWdMKRFqWVi/D3e/OcBzF4YUM1yOorQ1j5gs18QHX7fJ7AM6P+Lh3Vf6CcSdSPO/4++8fzrLX1HR4jcKBK9+mevUWVC+Jpupd3jrvPHjoITjpJHj5ZRg2rPHSIHcspGLfi+EXvyjuTrLkjHJkGvr2hTffzOzPGDAAbrstFCopRKWlDNxqHaeNifBC87x54TNDsV4x69YNRo9ufb3D+++HVavglFOUA0TSkO6wUskHybOihT5kJuKrq2Ub1tO9ocjKdJ92Gkyf3uGO4ZQpcNKK3zCu7veNq3UWox494IEHwv/VMcfA2rVAuGLYuzdU/OeRsN8JJ+QwSJGY69s38+scbr11qD41dGhmf04mDR8eKlZH5f33YbfdojtePjrkkFC1+pvf3FTIraaGknWJwj7XXRfmuqpjKJKWtK4cmtnv29jF3b2Yy16kZ/LkUCr53nszc/wi6ByePucCDl8yGfgosmPu9cm/uPaNo+DF4q0kn1zGL50Lo9XVMOF0Zx3dwkC3RLXOsWOLeE2nHXaAP/0plCk/99xw9SDphz8MHx6GDctdfFLUlCPTMHp06By6Z+5D+sKFYS3gUaMKd7mCkSPh9ttDueWSCM7fP/kkfPJJ54+Tz045Bd5+O3SqN2wI2x58kIPGjQsnCubOTa+iqYgA6c85/CKbz6foC2wJrEzc5P334S9/CR9SM5GYevaE008v6KUJTvxBd5i4OAyRLY9mIfL+tYvCNwMHhiRQLA49NJzxveWWdj1t7lwoK6mnhrKN28rLw/ai7RwCHHlkGEt6yCGNt5uFAj8imaMc2ZYTTsj81fu77oKJE0N+KeTOYU0NzJkTzdqEJSWbltoqVpWVYehoqj32YN7JJ1O5bl2Yb3nSSbmJTaQApTvncGhz283sYOA2QK86CG/A7qGUdibejIcNC5U2ClmyYtr8+bDTTpEcsnztp7zAflTaQKCIOodmHVrrsLIS6uobn3GurQ3bi96ECeGrO33XV/PlJZPhh/NCB1tDiiRDlCPbIZNXDpcvhz59wlo2hWq//cJJ4CiuGj7+eJiPfcMNYYx9kWp2ZM2IEcw/+WQqkw+KSNo69e7j7s8AvyKs8STJDmGm1jpcv37TkIlClVxnKaIFeadMgfMXnsOXeYJhu5Yzbdo2kRw3L4wcGQo4tPNvXlEBk+4spaQknDzv3j2cUyjqq4ZN/fznPDh/bybU/y5cMlXHUHJAOTLFU0+F+cEZKtw2ZgxMv29ZQRdsA8Ioh0mTohkGP21aGMnUs2fnjyUisRFFQZo5wOciOE7hSyalTHUOr7oKunaFhobMHD8bIuwcVleHC0W1lLOKXtTUwI037kJ1dacPnR9GjoQ1a9o/VHb9esYds5bRo8Mh5syBceMyE2LeOv74cAX/ww/hxBNzHY3Em3IkhA5KTU1Gi9L0rlte0HPyN2pogCVLOn+cWbNgzz0Ld4itiOREpzqHZtYFGA8sjCSaQjdgQDjbV18f+aHHjIG/3bksrOlTyG/0/frBj34EI0Z0+lBz524+eqhLFy+eaYcjR4avs2dvXMUkrY7v1Kmw1VYMr301VOuM0xXDpFGjQoGoQw8NFexEcqCjOdLMzjSzuWa2zsxmmtlBrex7iJn928w+NrMaM3vHzH7SydCj17dv+JrRzmERXDmEcHKrtTX70rFhA7zyCuy9dzQxiUhspFutdHozm8uBnYF+wBlRBlWwPvc5+OCDjB2+KM6KmsFvohlhVVkJdXWNt9XXW/HMrdt9dzjpJKbMHM6MGeFXl5x22uqVwKoqKC1lfo8iL1/elmOPDTeRDIsyR5rZccDNwJnAc4mvU81suLsvaOYpq4FfA7OBtcAXgElmttbd21fNKpOy0Dm8dYdf8svzumXs+Fmz665hruD69WG0UEe89x6sXg177RVtbAWoPdW+RST9K4clgDW5rQIeBL7k7ndkJjxJtVXtssLvHEI4o7mw8xebKypg0i0NlNoGSkud7t3h3HPfLZ4rZT17Un3DPUz45c5s2BBGGtUklqVo9QpiVRUccAB1JR38UCEi7RVljjwXuNvd73D3t939bGAx8MPmdnb3me5+r7u/6e5z3f0e4AmgxauNOdG7dzjDlcHO4cw+h8GBB2bs+FkzcmR4w3/77Y4fY9mysMSPOoci0k5pdQ7dfYy7H9rk9hV3P8PdqzIcY2E58kj43e8ycuit6oqkc3j11bDddhsXK++McYcsYKEP4vRBf2fOHDj88KURBJg/5s5xyro0LkiTXJaiWStWwOuvd35IkoikLaocaWblwN7AtCYPTQMOSPMYn0vs+3S6PzcrSkrg7LMzNsyxbMN69v/47/BRdGvo5kxy2sXs2R0/xoEHhuW19tgjmpjyWLumXYhIm9Jd51DSNXNm6PhkwGMDf8CPvl0El8WSS1i8/36YG9YZ//0vFSyhvO+WVFTAO+90Prx8Uvm3X1G36gygx8ZtrS5L8cwzoVT8mDFUXZSVEHNKw4WkyPQHSoGm1UiWAIe19kQzWwhsTcjrl7n7bS3sdzpwOsCAAQOoavLiWb169WbbIpOc/5uB4/vifnzt/St55qqj2HBs+lcPM9reDrL6eg4qK2PhY48xJ+LPE/nY3s6YNm0bXnxxN8ycoUOdc899d+NJ4mRbV67cE4CqqldzGWrGFdvftjVxaitkv71pdw7NbCRwKXAI0Af4BHgKuMLdO3F6q8j075+RaqW1tXDXlj/m2EOh4LuHqRVLO9s5fO01AD7YopPHyVMVew9mEhM4xf4IJSWUl7exLMUee8B118G++2Y1TpG4y4MceRDQE9gPuNbM5rr7lKY7ufvtwO0A++yzj49psg5cVVUVTbdFZsOGMDZ+iy0iPeyUKVD1QQNHMJW6O7Zk0ujStCs0Z7S9nXHzzQzZYw+GHJDWBePG3MPVx7POgjPPbPRQ3ra3A6qrw2Atd3A31q+Hm24azjnnDKeiYlNbt9oq7F8s7W5JMf1t2xKntkL225tuQZp9CUNUaoBHgGpCH+WrwFFmdrC7t3+17mLUr19YiDdCU6bAjBlOiTnDhhmTJllhL02w447haxRrHb7+Oku7bsuqsr6dP1Y+GjmScRzPmzt8jSd6fpupU9uoPlpZCeedl7XwRCTSHLkcaAAGNNk+IHHMFrl7crD5bDMbAEwENusc5tTRR4e5cC+9FNkhk0saNXgpn7EV1Ib7Y8cWeKXmHzY7xTQ9c+bAW29tXs67yCQrltfUbNqWnHZR0H97kRxLtyDN1cAbwFB3P8XdL3T3U4DKxParMxVgwenXjzkvf0xUHfxk4tuwwahvKKGmxtouSJLvevaEwYOj6Ry+9hofbFHEcyp22gnKyxm1/uW2l6VYuRIefDBMvhCRbIokR7p7LTATGNvkobHAv9sRTwmQfxWp+vSJvCBNc0satTovu1CsWgVPPx3Wum3DmDE0/swxa1b4WuTFaJqrWN7ctAvNSRRpn3Q7h/sBV7v7qtSNifvXAvtHHVjBGjWKhd13iuxwRZv4rrwSvvvdzh/nl79k/wfPK945Z2VlsNtuDFuTxqi0qio45pjOFTEoMEr6kieizJE3AuPN7FQz283MbgYGAbcBmNlkM5uc3NnMzjazo81sp8TtB8BPgHs62abo9e0beecw3Q5CwXnuudDjS3b02mPmzJA7IlhPOJ9VVIRpFiUlYfnn7t03n3YRRl6FtDhsWLgvIq1Ld86hd/Lx+LjsMi6JsEZc0Sa+k0+O5jiHHx7NcfLZhRfy6BVprN1VVRWyY0zmGyaTftrrP4pkTmQ50t3vM7N+wEXAQMKVxyPdfX5ilyFNnlJK6IAOBeqBD4ALSHQm80q/fmGEQ0ND+DQfgWQH4ZTxGyilgdKuXZg0yQp/WGGyY/fGG3BQO1clmTUrPL+jayQWkHHj4NZbw9DSptMuVqwoT4y8CveTS0EV/JBjkQxL98rhDOBnZrZl6kYz2wL4KfBi1IFJkEx8ZVZPb1bSvduG1guSFIpVq+D55zu3nMUbb8ATT0B9fXRx5aPjjuP5/l9ve7/E+oZx+ECwabh1O9Z/FMmcSHOku9/i7kPdvau77+3uz6Q8Nsbdx6Tcv8ndd3f3Ldy9t7vvlXj+hmYPnkt9E3PDV66M9LDjxsHnR5cwfFQZc+YU+Jz8pG23DWtDdmQkyH77wfHHRx9Tniovp9lpF4sXdyvOkVciGZbulcOfAVXAfDP7O2FB3grgSEKN/TGZCK4gPfYYd790HueNfAKIpgT1uHGw5Ge/4wsL76XyrelUVHaP5Lg59fTT8NWvwgsvhETWEX/4QzhluGpV2/sWstpaqq5/LXxYYGDz+yTXN7ziiqyGlisqRCB5RjkyHfvvD5deCl2iX0XrwNX/oM7Kqaj4YuTHzgmzcPWvI53Dyy+PPp4CNHDguuIceSWSYWldOXT3/xDmVEwHvgycCxxBKNO9n7tHV3qs0NXX023tCmo/WRPpVYwPtt6PV4cdUxwdQ2i8nEVHvfZaSJ4RDU/KW0uWwOc/Dw891PI+zz+/cX3DOCja4dZSkJQj07TvvjBxYrjME7Hx8yZy4ofXRH7cnBo5MoyQ8XbM3Fm1avM3x5jq27e2zTmJIrK5tDqHZtYbeNfdj3X3Ae5elvj6Ha1x2NiUl3djGHP4x/s7RDr5+e1eo7lvu59Ec7B8UFkZ3q072jl0D53DPYq4UmnSttuG6q4TJ8IjjzS/z9FHw7vvxma+YTqFCESyRTkyTQ0NYez36tWRH7p33XI+Lesf+XFz6pxzwtSJNjQqzHXddaEqbG1t5uMrAOPGwejRoZ89Z47mpYuko83OoZl1AT4GYlD5o3Oqq2HC9TtSQw9qN5RFOg9qx9Wv0rt2WecPlC/KykIVkY52DhcvDutJjhoVbVz5yCx8QBg8GL7+dTjttM0/XJmFq7Hl5bmJMQeU9CUfKEe2wwcfwMCB8PDDkR+6d90yVpZtHflxc2q33cKoEbMWd9msGucjvcM3McoFbWlpTqKINK/NzqG71wNLCAvzSivmzoWyJu/HUU1+/tVrhzJ+/mWdP1A+2XnnjncOX389fI3DlUOA3XcPnwB++lO491746KNNj338MYwfH66kxoySvuSacmQ79OsXvn78cbTHramhZ8NnrCzbJtrj5po7/PnPYY5+M5otzPX6WVTvdmiWA82tqiqKdzkrkRxIt1rpPcCpmQykGFRWQl194zN8kcyD+vRTtqxfyTd/PLSTB8ozF18Mt3Ww2voXvwivvAL77BNtTPmsvByuuSZcJtt5Z3Bnm3/9C/71L/jjHzMyVEtE0qIcmY6ttgpfI17rkA8/BODUy5uu8lHgzOD88+HOO5t9uNl1kFnP3MEHZiE4ESlW6ZYMmwecaGYvAQ8TKrE1miHt7r+PNrTCE+ZBGePHh/f08vKI5kHNTyxvtf32nQ0xv4we3fHnlpfDnntGF0sh2ToxdOr55xn+i1+EpStitL6hSB6ah3Jk20pLQwcx6s7h0KHw5pvFOYQgWZSmGc0W5qKcyjFF9llBRLIq3c7h7xJfBwN7N/O4A0p8pC7I6kydGtFCvPPmha9Dh0ZwsDzy2Wfw+ONhTsWwYe177tVXh+d96UuZia0QHHggb0ycyIjf/AYOPFBzTERyRzkyXX37Rt85LC+H4cOjPWa+GDkSnnoqrOfbZAmQZGGujSekyzYw6egnqfhikSznISI5kW7nUAXi2+GshRdy8PIHqKjoxDINqYq1c/jpp3DCCaE3fcYZ6T9v3bowJPXCC+PdOQSWH3IInHdersPIGc0zkTyhHJmuiy+GAQOiPeY//xmK3bQnjxSKkSNh/Xp4771QoKaJTSekYerUEioqvpaDIPOb8oRI+6TVOXT3+ZkOpJjUlnRjcM374Q29a9fOH/DII0Np6v5FVqZ78OAwHLK9RWnefDPMvo9DpdJ09OiR6whEYk05sh3Gj4/+mH/+c+ggFmPncMSI8PXNN5vtHEK4cFpeDhVv/gvK9txU+EdEpAPSLUizkZmVNLm1XGM5phZ3q6QE3zRXsLN23DGcHiy2X3VJSccqlsatUqmIFAzlyDYsXRo6OlFasKD45uQnjRgRCu4cc0yru/WpXQKHHRaKk4mIdEKLnUMzqzCzx8zseynbSoG6JreVZhbxGJHCVt1taPgmORy0s/7xD3jnnWiOlW860jl87bVwtWyHHTITk4hIG5QjO+jyy+Hgg6M95vz5MKTIKpUmlZXBttu2eXJ4p9WvhG/2bm7Kq4hI+lq7cngmsBdwf5PtBtwJXA5cAXwEFOFYjo779aOJ6SdRLHAIcOKJ8JvfRHOsfLPzzmFphqYl11KMGRNuG334YTibWlqa6ehERFqiHNkRffvCJ5+EqQFR2LAh5IRi7RwCPPIIf9n23MZ5sImdV80M38S1ireIRKa1zuERwB3uXtNkuwOT3P0yd58I/BY4MkPxFaZBg+B732t/Bc7mfPppSKTFVowm6ayzQiGBLunWRgIeeCBUbxOgmc6ziGSDcmRHVFSExd2XLo3meEuXhgWFi3VYKcCrr3Lsopvo1rCmxV12Wj0LdtoJevfOYmAiUoxa+0S+C3BJM9ubjm34b2JfSSotjW7cf7GucZg0cGDHnqciLCKSW8qRHZE80TlvXsff/1NVVISTqCXtLqFQOEaOpARn+zVvAZuvZ1tVBVTOgr06sXawiEhCa++m3YDVqRvcvQEYCLyWsnldYl9J5R7W8eusZOewWK8cNjTADTeESnPpeOYZ+M53YOHCzMYlItI65ciOSO0cRqVXL+jZM7rj5ZtExdJha2a3vM/DD8NFF2UpIBEpZq11DpcCm42LdPcliQSYVAksa88PNbMzzWyuma0zs5lmdlAr+37LzKaZ2TIzW2VmM8ws/xfyOfvsUGW0s4p1jcOk0tKwoP0DD7S4S21tODFcXQ08/zzcfz9suWX2YhQR2VzGcmRRq6yEP/wB9t8/muM99hhccEFYJL5YDRvGp136cs7758Crrza/z6hRm5a9EBHphNY6h88B49I4xveA59P9gWZ2HHAzcBXwOeDfwFQza2k2+SHAdOCoxP6PAw+11qHMC4MHw7JlsHp12/u25vjjYfp02HrraOLKR7vs0mLF0ilTYMYMmD07TOGc8rctQ0dZ8yo2atR5FpFsyUiOLHrdu4e1DqM64TltGtxyS3EXKCstZcLwZ7mx7xVU99s9bPvtb+GKK8LooiefhLvvDiOWREQ6qbXO4a+BL5rZDWa22dxEM+tiZjcCYwidvXSdC9zt7ne4+9vufjawGPhhczu7+/+4+zXu/h93f9/dLwNmAt9ox8/MvmTi6+xah1tvDYceWnxrHKZqYTmL6mqYMCEUo2togJoamPDSD6jeOeIy6AVs2rRtGneep+Q6IpHYyFSOLH5vvRWmCERh/vwwJ7+Ic+SUKXD/G8O59JMfM2yXsvA+/9JLcMkl4UrsscfCZZcV9e9ARLKnxc6hu78AnA/8GFhoZlPM7MrEbQqwEDgHuDCxb5vMrBzYG5jW5KFpwAHtiHtL4JN27J99lREtZzF5Mjz3XOfjyWc77wyLFsGaxpXY5s4NSzylKvf1zB18YBaDy1/V1XDjjbs07jxP0BVEkWzIRI6MgzFjYPqYy+DUU6M54IIFRb2MRbMnSSdA9bV/DEly4kTYZhv41rdyHaqIFIlW1w9w91+a2Szgp8AxbJpUvw54BrjO3ae34+f1B0qBJU22LwEOS+cAZnYWsC3Q7DUSMzsdOB1gwIABVFVVbbbP6tWrm90epbIVK/gC8N60aSzqxET5L5x9NkvHjOG9Ds6nyEZbO2vrujqGl5Tw0l/+wtpkpxpYsaKc9etHE/5lglrryrpt1rTYpkJob1TefLMXpaUjSf39lJTU88ADr7P77hEUQ8ozcfrbQrzaW6htzUCOjIXqbkNh/t9Cj6ezVUYXLIDRxVulM3mStCZlwZTy8rC9Yv+h4erhJc0VzRUR6Zg2F5dz96eAp8ysFOiX2Pxxkwn3WWFmxwDXA8e5e7PjNd39duB2gH322cfHNLMAXFVVFc1tj5Q7XHQROx11FDvtt1/HjvHZZ/DZZwz+whcY3MF4s9LWztp/f7jgAj7ftetmD91xR5ieYhYS4qRJ3Tl03P9r8VAF0d6I7Lor/O//Nn4ZbtjQhWOO2YuKihwFlUFx+ttCvNpbyG3NpxxZKKq7VYbJ0osXh/n5HbVuHdTVFe9ST4RBSHV1jbfV1m4anCQiErW0T9m5e4O7L03cOpr0lgMNwIAm2wcArQ6GM7NjCVcLv+fuj3bw52ePWZgs3tGOIRT/GodJXbuGWzPGjQsnhUeOhDlzwn0JKirg3HPfpaQk1GLo3h0mTaIoO4Yi+S6iHBkL1d2Ghm86u5xFt26hGtd553U2pLxVURHe1/U+LyLZktVVY929llBMZmyTh8YSqpY2y8y+Q+gYjnf3v2Yuwoh99hm8807Hn1/saxymuuIK+OUvm32ovDwUJ62Y8HU444wsB5bfDj98qTrPIlJQNnYOOzsnP6mYK5Wik6Qikl1Z7Rwm3AiMN7NTzWw3M7sZGATcBmBmk81scnJnMzse+BNwAfCMmVUkbn1zEHv7/OxnnbtyWOxrHKaYeePTvHXZ/S3v4B6q26lU92Y2dp51JllE8lxtLbxduwPVf3kGjjiicwd79FH47nfDidgip/d5EcmWrHcO3f0+4P8BFwGvAgcCR6bMIRySuCWdQZgbeRNhyYvk7cFsxdxhQ4eGIS8rV3bs+aedBu+9FyqRFbkPe+zMkLXvwNq1zT6+9fqF4fe4xx5ZjkxERKKQXLf2lTfKGHbyQUyZ2r9zB5wxA+69F3r0iCZAERHJyZVD3P0Wdx/q7l3dfW93fyblsTHuPqbJfWvmNqa5Y+eVzi5n0bUr7LhjLNYueqHv0fRo+CzUOW+yFkNVFdx/0WvhjjqHIiIFp9klGU6t79zSO/Pnh4I2XdqsrSciImnKSecwNjrbObz+enjooejiyWMz+h3JRbv/Dd58E3760813eC3RORw5MruBFYCqqnATEclXza5bW7e2c9MOi3yNQxGRXFDnMJM62zm89lqYNi26ePJYbS1MLfsa1X97EW6+OWzcsGHTDjvuCN//PvTqlZsARUSyxMzONLO5ZrbOzGaa2UGt7PstM5tmZsvMbJWZzTCzr2Uz3nQ0uySDd6FySCcKuy5YUPzVvBN0ElBEskWdw0zaaqtQc/orX2n/c1etgo8/jkUxmuQ8lNmzYdjXRzLl0a3C+lVf+hLcfXfY6bjj4K67chqniEimmdlxwM3AVcDnCJW8p5pZS5fIDgGmUdL5/wAAHh9JREFUA0cl9n8ceKi1DmUubLYkQ1k9k5hAxYaPOnZA95Bjd9kl2kBFRGJOncNMMoPTT4fhw9v/3JgsY9HsPJQJUP1hXZhHcsopcOGFsahGJyICnAvc7e53uPvb7n42oQjbD5vb2d3/x92vcff/uPv77n4ZYcmob2Qx5rQ0WpJh8nOM456Or3VoBq+8AhdfHGmMIiJxp85hps2bB9Ond+x5UPSdw2bnoZTD3OVbwuOPww9+ANdcE2p4T52amyBFRLLAzMqBvYGm8wmmAQe041BbAp9EFVeUNi7JsNegsKGjnUMREckIdQ4z7de/hq9+tf3r8yVLuBV557DZeSi1iemaZWVwxx0wcWKYV7LXXrkIUUQkW/oDpcCSJtuXAGmtcGdmZwHbAlOiDS1iw4bBO+/Ad77Tsec/9hgccgh81MFhqSIi0izVf860oUPD2n3LlrVvvcJTT4WTToJu3TIWWj5IzkMZPz6MEiovD/c3LvRrBpdeGm4iItIiMzsGuB44LmXt4Kb7nA6cDjBgwACqmlQ5Wb169WbborRy5Z4AVD33atiweHGHjrPdI4+wwzPP8Oyrr9Lw3/92OJ5MtzffxKm9cWorxKu9cWorZL+96hxmWmrF0vYuZt+9e/Tx5KFx4+DWW8N8w6lTUzqGIiLxshxoAAY02T4AaHVFQDM7FpgMfM/dH21pP3e/HbgdYJ999vExY8Y0eryqqoqm26K01Vbh65gxY+Cvf4UlS+Css9p/oPvvhz59OOjIIzsVT6bbm2/i1N44tRXi1d44tRWy314NK820ji5ncd55cPvt0ceTpzbOQ1HHUERiyt1rCcVkxjZ5aCyhammzzOw7hGGk4939r5mLsPMaLcnw0ENwww0dO5DWOBQRyQh1DjMtOWewvZPu774bZs2KOBgREclzNwLjzexUM9vNzG4GBgG3AZjZZDObnNzZzI4H/gRcADxjZhWJW99cBN8ulZXw4YdQX9/+58ZojUMRkWzSsNJM69kzjJUcMSL956xeDcuXF30xGhERaczd7zOzfsBFwEDgDeDIlDmETS+XnUHI5TclbklPA2MyG20nDR0a1jBatKj9Hb1dd4U99shIWCIicabOYTYccUT79k+ucRijs6IxmlcsItIqd78FuKWFx8a0dr+gJE+Azp3b/nx3332RhyMiIhpWmh2zZsE996S/f7JzqCuHIiJSrJJz8hctym0cIiKykTqH2XDvvWEx9w0b0tt/zRrYeutYXTkUEZGYqawM0yhOOql9z3viibBO4ptvZiYuEZEYU+cwGyorw8ru6a7n9O1vw9KlMGhQZuMSERHJlZIS2GKL9j9vzpwwFLVPn+hjEhGJOXUOs6Gjy1mIiIgUs1tugUsuad9zFiyAsjKtfSQikgHqHGZDe5ezGD8efvGLDAUjIiKSJ154ASZPbnu/VAsWwHbbhSuPIiISKb2zZkNqRbZ0PP54WPtJRESkmA0dGvJdXV36z5k/H4Y0XdFDRESioKUssqFbN5g9O73qo2vWwLJlqlQqIiLFr7IyFGtbuHDTFIy2HHww9O2b2bhERGJKncNsGTEivf20jIWIiMRF6rSLdDuHV12VqWhERGJPw0qzZfp0uOaatvdLzktU51BERIrd0KHQrx98+ml6+zc0pL8slIiItJs6h9kyfTpcdBHU17e+X0kJ7LVX+mdQRURECtWwYbB8OXzjG+nt//zzYarG009nNi4RkZhS5zBbKivDGc+2Cs0ccQTMnKkS3SIiIk0tWBCK1wwYkOtIRESKkjqH2dLe5SxERETi4PLL4Ywz0tt3wYLwVdVKRUQyQp3DbEkOE21rOYujjoJzzsl8PCIiIvnggw/gscfS23fBAujfH3r0yGxMIiIxpc5htiQX7G1rWOnLL8O6ddmJSUREJNcqK2HRIqitbXtfrXEoIpJRWsoiW8rKYMUK6NWrxV2+fNBanli6VJVKRUQkPoYOBfdw8nSHHVrf9xvfaLuwm4iIdJg6h9nUu3erDw9YpzUORUQkZlLn5LfVOZwwIdPRiIjEmoaVZtNDD8FZZ7X4cMX6ROdw++2zFJCIiEiODRsGe+7Z9vqFdXVQXa11DkVEMkidw2yaPRtuuaXFOYXLNvTltl7nU73lTlkOTEREJEeGDIFXXoGxY1vf7803YeBAePDB7MQlIhJD6hxmU3LoTLIUd4opU2Dy25/nR2uuZdh+2zBlSnZDExERyaUxY8KtRcncqdE1IiIZo85hNrWwnEX1nLVMOLWeDRugoQFqasK0iurqHMQoIiKSbWefzeVvfqvVXW7+X3UORUQyTZ3DbErtHNbVhXWdvvtd5u5+NGW1qxvtWl7e9pKIIiIiRWH1anb7bEaruwxYN59a6wpbb52loERE4kedw2waNAj69IE1a+DOO+Hoo+Hxx6k8dm/qum7ZaNfa2k19SRERkaJWWUlDbQNrVta2OGpmm/ULWNJtCJhlNzYRkRjRUhbZVFLCmJEfw6NG1V+Xw3bbweGHU1FezqTDYfz4kPPKy2HSJKioyHXAIiIimTdl0ReZwE+on13KsGEhB44b13ifB/ueRn33WiZWKz+KiGSKrhxmW/KMZ//+4cpheTkQkuDo0TByJMyZs3lSFBERKUbV1TDhj/tTQw/qNpQ2O+9+yhS49b3DuHPRkQwbhoq2iYhkiDqHWVZbC59+2nyxmfJy6N1bZ0RFRCQ+5s6FsvLGQ0VT591XV8OECa6ibSIiWaDOYRZNmQIzZoTlDps781lVFW4iIiJxUVkJdfWNP46kzrufO8cp89pGj6tom4hIZqhzmCXhzCc68ykiIpKioiLMMSwpgdJSp3v3lHn3y5ZRedl46tY1NHqOiraJiGSGOodZMnculJU13qYznyIiImGe/X19Tufurmdsmnf/7LMwahQVVfcy6cRnKClxSktp3HkUEZFIqVppllRWhqUNU+nMp4iISNC9rIFDVz1Ov4pJYcPWW8OQIfDEE4wbNYpb54ZRN1OnqmMoIpIpunKYJY2HzejMp4iINM/MzjSzuWa2zsxmmtlBrew70Mz+bGbvmFmDmd2dxVAjVd1tKP1qq+HnPwd32HVXePFFGDUKUNE2EZFsUOcwi7RchYiItMbMjgNuBq4CPgf8G5hqZkNaeEpXYDlwDTAjK0FmSHW3xFCau+6CxYvD91rwXkQkq9Q5zDKd+RQRkVacC9zt7ne4+9vufjawGPhhczu7+zx3P8fd7wZWZDHOyP385W/C9deHkt6DBuU6HBGRWNKcwyzTUhUiItIcMysH9gZuaPLQNOCA7EeUZVtsAT/5SYsPK3+KiGSeOociIiL5oT9QCixpsn0JcFgUP8DMTgdOBxgwYABVTXpcq1ev3mxbMVN7i1ec2grxam+c2grZb686hyIiIjHh7rcDtwPss88+PmbMmEaPV1VV0XRbMVN7i1ec2grxam+c2grZb6/mHIqIiOSH5UADMKDJ9gFAdfbDERGRuFHnUEREJA+4ey0wExjb5KGxhKqlIiIiGaVhpSIiIvnjRmCKmf0HeB44AxgE3AZgZpMB3P17ySeY2Z6Jb3sBGxL3a939rWwGLiIihU+dQxERkTzh7veZWT/gImAg8AZwpLvPT+zS3HqHrzS5/1VgPjA0U3GKiEhxUudQREQkj7j7LcAtLTw2ppltWileREQioTmHIiIiIiIios6hiIiIiIiIqHMoIiIiIiIiqHMoIiIiIiIiqHMoIiIiIiIiqHMoIiIiIiIigLl7rmPIGDNbRljrqan+wPIsh5MrcWorqL3FLE5thXi1N6q2bu/uW0dwnFhoIUfG6f8O1N5iFqe2QrzaG6e2QjTtTTs/FnXnsCVm9rK775PrOLIhTm0FtbeYxamtEK/2xqmt+S5ufwu1t3jFqa0Qr/bGqa2Q/fZqWKmIiIiIiIiocygiIiIiIiLx7RzenusAsihObQW1t5jFqa0Qr/bGqa35Lm5/C7W3eMWprRCv9saprZDl9sZyzqGIiIiIiIg0FtcrhyIiIiIiIpJCnUMRERERERFR51BERERERERi1Dk0s53MbECu4xARaYmZWa5jkPhRfhSRfKf8mD1FXZDGzLYBxgE/BpYB9cBi4K/AA+6+JofhSYTMzNzdk19zHU8mmVmJu2/IdRwinRWn122+UX6Ml7i81pQfpZjk6nVb7J3Du4HhwN+Bj4F+wJ7AbsBC4Dp3/2fOAoyYmW0HrHP3ZSnbijoRtCR5himObS8mZjac8BruDawBZrj73NxGlRlm9hVgkLvfletYckWv2+xRfoxvfgS91opFXHKk8mOQrddt0XYOE7/AVcCR7v5MyrZtgf2A04DtgePc/dWcBRohM5sOvObuP07cN6ArMBCYV4xJwMxKgK8DWwM9gEXA0+6+NKeBZYiZ3QhMdvdXi/2DjZldAJwE7ET4u34MODAL+DPwPOE9sih+B2Y2E3jQ3a9M3N+Z8NrtCnwIvAPF8WEubq/bfKP8GI/8CPF6rcUpP0K8cmSc8iPk/nVbzJ3D3YF7gdPc/cVmHi8H/g38090vzHZ8UUskunXA/u4+K3E26VpgF2A+8DrwK3dfmMMwI2VmWwJ3AYcCGwhnu53we3gamOLu7xRLkjCz/sASYIi7L0psGwtsAdQCs939w2Jor5n1A+YB57n7bYmz/p8H9gf2BroBF7p7Vc6CjFDib7sUqHT3+WZ2OnABsB2wHHgP+Lm7P5vDMCMRt9dtPlJ+LP78CPF6rcUpP0K8cmSc8iPkx+u2mAvSzCH8M/0qMdm+UVvdvRb4I/CVXASXAacC8xOJb0dgMrAV8DvgfeB44FYz65nDGKN2DiG5H+nuAwhn0G4CZgOHA9eZ2dbFkAgSzgJedfdFZlZpZrcCjwB/Am4BbjKz/kXS3m8D77j7bQDu/qG7P+DuPwH+H+Es2iNmNiyXQUboLODficS3H6GNfwF6AScANcDfzWxgDmOMStxet/lI+bH48yPE67UWp/wI8cqRccqPkA+vW3cv2htheMyrwAvAeMJZhp6Jx3oQJt7fk+s4I2rrS8Cdie8vAv4GDE55/DDCGZaRuY41wjY/C5zbzPZS4GDC2aR/5DrOCNu7ADgh8f1vgX8BX0/c/yrwEfBIruOMqK3fBuYCB6f8TUtTHu8GvAicmetYI2rv64m/5zbAPcDtQJeUx7cD3k3+vQv5FrfXbb7elB+LOz8m2hWb11qc8mOiTbHJkXHKj4n25Px1W8xXDvEwXOa7hDeNW4FXgP8zs98TxidvRxhaUtDMrDvhKvCXzOwx4HxCtblFZlaaGFIzE3ibMOSg4JlZF+AN4Bgz2zqxrdRCpbIGD/NozgC2NbM9chlrFBJn/7YFtjezEcA3gKvc/WEAd38UuBSoMLMhuYs0Mo8Rhsyca2YjE3/ThuSD7r6OUF2xX47ii4yZ9SK82ZcDjwJfA6a5e33i8VJCFclFQEWu4oxC3F63+Uz5sXjzI8TrtRbD/AgxyZFxyo+QP6/bou4cArj7G+5+HGFy/XmE8btbAHcAJ7v77FzGF5F1hLNIE4HPCEn+I4DEP5MDdcCOhCRY8BJvDH8kvBn8xMwGJNqaWsL6v8BQwhnhQjcQeAo4AngI+IRwpizVC0Bfwv9DwUqMo19L+H/eGXjJzB40s68nhgvtbWZnA7sDU3IZaxTc/TPCsJELCZUjHwRWpDzeQDhjuh8wNRcxRiXldTsIOC8Gr9u8pvxYnPkRYpcjY5MfIV45Mk75EfInRxZtQZrWWBGvg5MoJDAUqHH3DxPbSoCTgcvdfbschheZRJtKgFOAq4AuwAPAfYQz4aOAo4Hh7r5vruKMkpltRZhw/kXC5OTfeUoBBTP7X8IHulE5CjEjzOxE4PvAAYQPr0uABkL7b85lbFFoOqnczHoDuPunifsDgXMJw4dG5ybK6JhZGWGeyA2Es8F/pYhft4VG+bE4xC1HxjU/QnHnyLjlR8iPHBnLzmHcmNmxwM+BP7n7DbmOJ2qJpDAeOJGwTtcqwtnBl4Cr3X1G7qLLDDPrA3ya/BBnZl8gFFe43d1vyWlwnZQYVtEAbOXunyQ+5HQlrOM0nHD291l3X5LDMCOT0t7e7r6ymce/TDhr+lt3/2u244tSouBHN0LJ9V6EDzQnEBLeemAtMIMifd1K/in2/Ajxy5HFnB8hXjkyTvkR8idHqnMYA4k5FUOBpe6+JsfhdFpiDPqqJmeTSggvqJ7ACGBNsSS85tqb2G7u7ok3zx8RhtR8IzHXoCBZKLH/E8LZ35eBy9z99dxGlTnNtHeiu89u5mxpN2B90/+BQmJmXyIk8X0I62+d6u6LEx/kugKDCUUGiuJ1K4Wh2PIjxCtHxik/QrxyZJzyI+RXjlTnUAqOmU0C/pO4zU+MSW+6T5/EGbWCX9MozfZuAdS6e12244uSmb1EmE8wjVBUYGfCcJF3U/bZ0t1X5SjESLXQ3oPc/b8p+/Ry988K+X858QH8v8A/gOcIhU6uBPoAewBlhDOhr+QsSJEiEaccGaf8CPHKkXHJj5B/OVKdQykoZnYCYd2izwhvGv8EniCUOl7k7jWJy/L3ABcXekGFFtr7D0J7P0q0twdhQeufufsbOQu2k8zsZMJZwoPcfWXizXIa4e86PuVM8M3Ar939g5wG3EntbO9v3P39nAbcCWY2ntDWfRP/s18B/kCotjebkPT7Akd4YgFrEWm/OOXIOOVHiFeOjFN+hPzLkeocSkExszsI48+vA75FKCSwA6Ey2eOEtXB2AW529/JcxRmVdrT31+5elqs4o2BmDwNvu/sFZlbu7rVmdihhTaMj3f09MzsEeMrdC77Scpzaa2ZTgZnuflHi/uWEkuRfSQybGUWoMni2uz+ew1BFClqccmSc8iPELmfEpq2Qfzmy4H+hEh+JuQNzgZXuPsfdb3D3kcC+wNOExPAX4DcUePlmaHd7J+cu0s4zs66EcvKfJs4I1ppZF3d/ivA7OCOx6+nA/bmKMypxam9iPsgKGi8TMJZQHGJx4ozw28BbhNLrItIBccqRccqPELucEZu2Qn7mSF05lIKSmJg7wN3fsVCWvK7JxOTjgP8D9nL3V3MVZ1Ti0t7Em9/ngEPd/Zep8wfM7CjCB5m9gFeBo9z9+dxF23lxam+irdsCPd397cT97YAl7r4+sU9P4ANCW1/OXbQihS0uOQNi19a45YxYtBXyM0eqcygFz0IVNnP3BjM7jTBcpkeu48qUOLS3STIoIwyn2AHYwt2H5DS4DIhbe6FRNcESYBxhnbntcx2XSLGJQ85Iiktb45Qz4tTWVLnMkRpWKgXP3Te4e0Pi7pbApbmMJ9Pi0N6URGAeKsz9iTB35M6cBpYhcWsvbGozoQrdGcCvchiOSNGKQ85Iiktb45Qz4tTWVLnMkbpyKEUlcVapwROL3xa7uLQ3McxiH2COu3+c63gyLU7tTbR1CLDM3dfmOh6RYhaXnAGxa2vcckYs2gq5yZHqHIqIiIiIiIiGlYqIiIiIiIg6hyIiIiIiIoI6hyIiIiIiIoI6h5JDZuZp3OYl9r07+X2uJWJJxlcV8XHnRXU8aczMJppZuyZZm9mTKX/rezIVm4hIKuXHZo87L6rjSWPKj5KqS64DkFjbv8n9h4DXgIkp29Ynvl4B3JyFmNJVDXwT+CzCY+ZbGwXOBnoT/jdFRLJF+bGxfGujKD8WLXUOJWfc/cXU+2a2HljedHti3w+yFlh61jcXZ2dE1UYz6+ru69veU9ri7m/Dxv9NEZGsUH5sTPkx/yg/Fi8NK5WC0HRIiZkNTQxlOMPMrjazajNbZWb3mFkPM9vRzJ4ws9Vm9r6ZndzMMfcws0fM7BMzqzGz583soE7EOCYR0zfMbJKZrTCzlWZ2k5mVmtm+Zvacma0xszfN7MuttTGxbQszu8bMPjCz9Yl2PmBmAxKPj0/8zIPN7H4zWwnMSHn+d83sNTNbZ2bLzWyKmQ1Moy1dzOyKxM9NPvc5MzuwyX6nNzn+XWbWt5lj/dTM3krst8zM/mFmu6bss4uZPZT4fdWY2YtmdkST40xMtHUnM3ss8bedb2aXmFlJk30/Z2bPJn7eIjO7GLBm2vk/ZvZ24md+YmYvm9k32/r9iIjkC+VH5UflR4mSrhxKobsQqAJOBoYD1wEbgM8BdwA3AD8E/mBmL7v7mwBmthfwLPAKcBqwFjgDeNLMDnD3mZ2I6SbgQeA44GDgIqAUOAy4HliU2PagmW3v7subO4iZlQP/BPYArgFeJAzh+DLQB1iSsvufgP8DjiXxujaz04FJwH2E39Mg4CpgtJnt5e6rW2nDT4EfAz8HXgV6ERad3ZjYzOwa4H+BXwPnAYOBXwAjEr/DhsSu9wLfSPxengS6JX4vA4F3zGwQ8BywCvgR8ClwFvCYmR3t7lObxPYQ8AfgV8BXgcuADxPbMLP+wHTC0KaTCUOvziMsIpv6+z0J+CVwOeF/oTswKrWNIiIFTPkxUH5UfpT2cHfddMuLGzAPuKeFx+4G5qXcHwo4ML3Jfg8mtn83ZVsfoB64NGXbv4C3gfKUbaWJbX9rI85GsaRsH5P42b9vsn1WYvuBKdtGJbad3Eobv5/Y52utxDI+sc+vmmwvJSTHp5psPzCx/zlttPHvwIOtPD4UaAAuabL9C4njfyNx/4tt/TzCB5R6YMcm8b8LzErZNjFxrFOaPH82MC3l/pVALbBdyrYtgOXhLW/jtt+mHr+j/5u66aabbpm+KT8qPzaJX/lRt4zdNKxUCl3Ts2bvJL4+kdzg7p8AS4HtAMysO3AIcD+wITGsowthWMWThLN2Uce0xt2faybO7Vo5zuFAtbs/ksbPbDohfBdgG8IZ040SMcwntB8zK0m2P3FLvie8BBxpZlea2YGJs7SpxhKGpf8p9fmEITur2PQ7PJyQsO5oJfaDgRfd/f2UOBsIZ3r3NLNeTfZ/rMn9N2h81nP/xPE+TDneGuDRJs97KXH835jZYWbWo5UYRUQKjfJjoPy4ifKjtEmdQyl0nzS5X9vK9m6J7/sSzrxdDNQ1uf0I6NN0jH4EMa1M3eDuyTi70bJ+hCE26Vjc5H7fFrZDGE6SfPz3NG7/7xPbrwIuBb5GGFLysZn9ITEkBUJiBXifzX+HWyZiT7ZhhbvXtBJ731biNMKZ7VQrmtxfT+Pf40AaDylKarptMmFI1WjCh6UVZvagmQ1tJVYRkUKh/BgoP26i/Cht0pxDiaOVhHkXvyO8AW7G3TdkNaLmLQdGpLlv0/WJkgmiopl9K4DknJGJhOEjqT8Td68DrgWuNbMK4GjgRqAHYa7Ix4n9D2fzZE/K48uBvmbWvZUEuKKVOL2F47dmMTCgme2Ntrm7E+acTDKzPoS2/JIwB2V0O3+miEgxUH5UflR+jDldOZTYSQyheJYwkX2Wu7/c9JbjEJOmARVm9tUOPPddwpnA41M3mtkBwPaEIgW4+7wmbZ/X9EDuXu3udxKGFCWT8T8JHyCGNPf7c/e5KW0w4NRWYn0a2C/1jKSZlRKS7Cvu3t61sl5IHG/jkCQz24IwOb9Z7v6Ju98H/IX0P3CIiBQV5Uflx2baqPwYM7pyKHF1LvAM8ISZ3UU4m9Yf2AsodfcLchlcwj2ESnH/Z2ZXE+YrbEmoxnaTu7/T0hPdvcHMLiGc9bsncazBhMno77FpeEyzzOxhwoLLswhnJj8HHEE4k4i7f2Bm1wK/NbNdCAlsHWGOyFjgTnd/yt2fMrMHgBsTyWg6UEaYR/GYu1cRqqqNB/5pZpcSFk4+E9gZOCr9X9dGv0o8f5qZTWRTNbZGZ2bN7HbC/I8XCHNudgbGERK2iEhcKT+2QvlRip06hxJL7j7LzPYlzBv4NaEE9jLCm/1tuYwtyd3rzOxwQoynJ75+DDzP5vMKmnv+7Wa2lvDG/zCwGngcOD9xdrg1zwDfJpTM7gEsIJRBvzLl+D8zs7cT+5xFGOLyIaHS3XspxzqeUPr7ZOD/EUpxvwTcmTjORxbWh7oWuBXoSigPfpS7/6OtdjbT7uVm9iXgZuCPhN/ZbYT3u0tSdn0eOIWQ8HoDHxE+JFza3p8pIlIslB+VH1F+jDULw4pFJF1mdjehLPeOhKH5Da0+QQpWovBCCaGwwHPu/t0chyQikreUH+ND+bF4ac6hSMdsT6g89q9cByIZNY3wd94+14GIiBQI5cd4UH4sUrpyKNJOiYnhyZLVq9z93dxFI5lkZjsDyXWkPk4pJCAiIk0oP8aH8mPxUudQRERERERENKxURERERERE1DkUERERERER1DkUERERERER1DkUERERERER1DkUERERERER1DkUERERERER4P8DLNmpzw2r/eAAAAAASUVORK5CYII=\n", "text/plain": [ - "
        " + "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a: -0.4 ± 0.02\n", - "T2: 66.96 µs ± 8.11 µs\n", - "c: 0.4 ± 0.02\n" - ] } ], "source": [ - "# arrange the data from the run\n", - "\n", - "result_t2echo = t2echo_job.result()\n", - "keys_0_1 = list(result_t2echo.get_counts(qc_dict['step_0']).keys())# get the key of the excited state '00010' \n", - "\n", - "\n", - "# change unit from ns to microseconds\n", - "plot_factor=1\n", - "if unit.find('ns')>-1:\n", - " plot_factor=1000\n", - " punit='$\\\\mu$s'\n", - "xvals=time_per_step*np.linspace(0,len(qc_dict.keys()),len(qc_dict.keys()))/plot_factor # calculate the time steps \n", - "\n", + "# Fitting T2*\n", "\n", - "data=np.zeros(len(qc_dict.keys())) # numpy array for data\n", - "sigma_data = np.zeros(len(qc_dict.keys()))\n", + "%matplotlib inline\n", "\n", + "t2star_fit = T2StarFitter(t2star_backend_result, t2star_xdata, qubits,\n", + " fit_p0=[0.5, t_q0, osc_freq, 0, 0.5],\n", + " fit_bounds=([-0.5, 0, 0, -np.pi, -0.5],\n", + " [1.5, 40, 2*osc_freq, np.pi, 1.5]))\n", "\n", - "for ii,key in enumerate(qc_dict.keys()):\n", - " # get the data in terms of counts for the excited state normalized to the total number of counts\n", - " data[ii]=float(result_t2echo.get_counts(qc_dict[key])[keys_0_1[0]])/shots\n", - " sigma_data[ii] = np.sqrt(data[ii]*(1-data[ii]))/np.sqrt(shots)\n", - " \n", - "fitT2e, fcov = curve_fit(exp_fit_fun, xvals, data, bounds=([-1,10,0], [1, 150, 1])) \n", - "ferr = np.sqrt(np.diag(fcov))\n", - "\n", - "plot_coherence(xvals, data, sigma_data, fitT2e, exp_fit_fun, punit, '$T_{2echo}$ ', qubit)\n", - "\n", - "print(\"a: \" + str(round(fitT2e[0],2)) + u\" \\u00B1 \" + str(round(ferr[0],2)))\n", - "print(\"T2: \" + str(round(fitT2e[1],2))+ ' µs' + u\" \\u00B1 \" + str(round(ferr[1],2)) + ' µs')\n", - "print(\"c: \" + str(round(fitT2e[2],2)) + u\" \\u00B1 \" + str(round(ferr[2],2)))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The last calibration of $T_2$ was measured to be" + "plt.figure(figsize=(15, 6))\n", + "for i in range(2):\n", + " ax = plt.subplot(1, 2, i+1)\n", + " t2star_fit.plot(i, ax=ax) \n", + "plt.show()" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 7, "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:49:37.997236Z", - "start_time": "2018-12-18T15:49:36.234839Z" - } + "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "111.62868245151734 µs\n" + "{'0': [array([ 0.47356479, 22.98882638, 0.53125318]), array([ 0.49752977, 16.19234687, 0.49480233])]}\n" ] - } - ], - "source": [ - "print(backend.properties().qubits[qubit][1].value, backend.properties().qubits[qubit][1].unit)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## CPMG measurement\n", - " \n", - "As explained above, the echo sequence removes low-frequency decoherence mechanisms. This noise-filtering procedure can be extended with increased number of pi-pulses within the delay. In the following experiment, we implement an echo experiment with seven pi-pulses during the delay between the initial and final pulses. This kind of echo with several pi-pulses is referred to as a CPMG experiment, after Carr, Purcell, Meiboom, and Gill. " - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:49:55.731027Z", - "start_time": "2018-12-18T15:49:55.650439Z" - } - }, - "outputs": [], - "source": [ - "# Select qubit for CPMG measurement of T2\n", - "qubit = 1\n", - "\n", - "# Creating registers\n", - "qr = qk.QuantumRegister(5)\n", - "cr = qk.ClassicalRegister(5)\n", - "\n", - "steps = 10\n", - "gates_per_step = 18\n", - "num_echo = 5 # has to be odd number to end up in excited state at the end\n", - "tot_length = buffer_length+pulse_length\n", - "time_per_step = ((num_echo+1)*gates_per_step+num_echo)*tot_length\n", - "max_gates = num_echo*(steps-1)*gates_per_step+num_echo+2\n", - "qc_dict = {}\n", - "for ii in range(steps):\n", - " step_num='step_%s'%(str(ii))\n", - " qc_dict.update({step_num:qk.QuantumCircuit(qr, cr)})\n", - " qc_dict[step_num].h(qr[qubit])\n", - " for iii in range(num_echo):\n", - " qc_dict[step_num]=pad_QId(qc_dict[step_num], gates_per_step*ii, qr[qubit])\n", - " qc_dict[step_num].x(qr[qubit])\n", - " qc_dict[step_num]=pad_QId(qc_dict[step_num], gates_per_step*ii, qr[qubit])\n", - " qc_dict[step_num].h(qr[qubit])\n", - " qc_dict[step_num].barrier(qr[qubit])\n", - " qc_dict[step_num].measure(qr[qubit], cr[qubit])\n", - "circuits=list(qc_dict.values())\n" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:51:08.767976Z", - "start_time": "2018-12-18T15:49:58.102473Z" - } - }, - "outputs": [ + }, { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "4d55308b7b6e4231aba7f57241c01d31", - "version_major": 2, - "version_minor": 0 - }, + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA5AAAAGaCAYAAAB5SKxrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xd8VFX+//HXJyEDoatIQifoYkERVsCylqyKLi5YcNceRXBVVGxrF3tZXXcVUcFYVgQbrrprRayxC+pXlFXEQkApCfBTSiCQkJzfH3cSJsPMZJJMSWbez8fjPpK599x7P0diPjn3nmLOOURERERERETqk5HsAERERERERKRlUANSREREREREoqIGpIiIiIiIiERFDUgRERERERGJihqQIiIiIiIiEhU1IEVERERERCQqakCKiIiIiIhIVNSAFBERERERkaioASmSJGaWZ2b/NbNVZubMbFqyY2oKMxvjr0d+FGXz/WXHxD8yERFpSZQflR+leWuV7ABEmhMzaw+sJfqHKzs4535p5O2mAQOBW4ES4MdGXiclmNkg4BhgmnNucQPOywAuBM4G+gKrgGeA65xzG2IfqYhI+lF+TJ7G5Ecz6w+cChwO7AS0wfvv+G9gkvKjNIUakCJ1tQJOD9o3HtgfuBQoDdi/ubHJ0cxaAwcC9znn/tGYa7Rw7wHZQGXAvkHA9UARsLgB17obuAD4D/BPYDf/58FmdphzrjoG8YqIpDvlx8SIVX4cC5wHvAg84b/e74FbgOPNbF/nXHlsQpZ0owakSADn3Brg8cB9ZnYxsAm4xzm3JUa3ygEMaOzT2ZDMLBNo7ZzbGMvrxpq/UbepqdcxswHABOB559xxAfuLgcnAicCTTb2PiEi6U35MjFjlR+BZ4G/OubUB+x4ws++Ba4BxwH0xuI+kIY2BFInAzLKAPYCvYpUc/WM5lvg/Xu8f61A7NsLMupjZ/Wb2s5lV+L/eb2Y7BF2nZkzFYWZ2rZn9iJd0jq/n/r3M7BkzW2tm68zsJTPbycwWm1lRUNkb/PfoG+I625T3a+U/b4mZbTazr8zsxKBz64zxMLMbgEf9h98J+G8yLVJdgJPw/tCYFLT/IWAjXvcdERGJMeXH5p0fnXOfBTUea8z0f90j0vkikegNpEhkAwAf8EUMr1kIzMPrevkf4Hn//gVm1gn4CNgZ+Bfwf8BgvG5Ch5jZMOfc+qDr/QPIwms0rQMWhruxmXXG6x7TC3gA+AY4GHgHr8tMLNwBtAOm+D+fATxlZm2cc9PCnPM80A04C7gNWODfX9+4l6FANTA3cKdzbpOZzfMfFxGR2FN+bLhE5sdwevq/lkYsJRKBGpAikQ32f/2/WF3QOfexma3AS5BfOedquwSZ2a3Ab4DznHNTAvbPw+tqcjlwbdAls4HBUXbLuRxvopmxzrmaJ5pTzGwS3kQ0sdAFGFjz5NPMHgC+Au4ys5mhxlw4574ys4/xEuQbzrmiKO/VHVjtnNsc4tgyYH8z8znnKhpTERERCUv5seESmR+34e/Gey2wBQ3vkCZQF1aRyH7r/xrLJ6yRHIs3i+iDQfsL/fuPDXHO1AaM6TgG76nj9KD9dzQkyHpMDew24//+AWA7ID+G9wFoC4RqPMLWMSRtY3xPERFRfmyMRObHUCYB++HNUh72baxIfdSAFIlsMN6TuvmBO82stZk9ZGaLzGy9mX1nZhNicL88YGHweBL/5++AfiHO+a4B1+8HfO+cqwq6/gpgTQNjDWdBiH3fBNw/ljYCrcMcaxNQRkREYkv5seESmR/rMLObgfOBB51zf4vnvST1qQurSBjmrS+4F7DAORc8I1orvLWpDgcW4a1XNdvMSp1zzyQ20rg2kFyEY83h98dyYHczax2iG2sPvO6t6r4qIhJDyo9A88+PtfwT8UzEm4znnORGI6lAbyBFwvsN0J4Q4zuccxucc9c6535wzlU75+bhrbV0QBPvuQjYxczqJB//5/7+4029/m/84yACr98N6ByifM006tsHlW+DN6g/lN1C7Ns94P7hRErG4XyK93tsWOBOf3yDgM8acU0REYlM+bH558eaeG7AW0PyMeBM51yjryVSQw1IkfCiHt/hn878QLzB8E3xX2BH4Myg/X/x7/9PE6//At4aW6cF7b8iTPma7j+HBe2/mPC/P8b7Z8sDwP/9OXhdgN6NEFuZ/+v2EcoEm4mXWC8K2v8XvLGPTzTgWiIiEh3lx+afHzGz6/AajzPwJgeqbsj5IuE0q1fsIs1MQ2aYuw9Yz7aD7xvq78CfgfvN7Ld4yXkw3oK/C/3Hm3r9k4GHzGxv4Gu8gfv7AatDlH/Tf9+b/OtsFeM9Rd43THn8++eYWc0sdmcAvfGefEbqTvQp3pIc15jZdsAGoNg5NyfcCc65+WZ2P3C+mT0PvIr3hPcCvGSsWeZERGJP+bGZ50czOw+4EfjJH+vJZhZYpNQ590aEe4qEpQakSHiD8d5ufRmpkJndhZdgDmnqeDvn3Foz+x3eL/2j8JJLKd4sbdeHWOOqodf/1cwOBO5i61PWd4HfA2+FKF9lZkcBk4EJQAXwOt7aWB+Guc0VeE+bz8N7mvsdcIpzLmJjzjn3k5mN9Z8/FW/trseAsAnS7yJgMd4U53/ES9D34s0yp6etIiKxp/zY/PNjzTrIvf1lg70LqAEpjWLqCi3SeP71oQ7FS46rkh1PU5jZYmCxcy4/yaGIiEgLp/wokrr0BlKkkcxsMnAI8PuWnhxFRERiRflRJLVpEh2RRjCzPnhdVnYGis2szL/NSnJoIiIiSaP8KJL69AZSpBGcc0sAq7egiIhIGlF+FEl9GgMpIiIiIiIiUVEXVhEREREREYlK2ndh7dKli+vbt+82+zds2EC7du0SH1ASpFNdQfVNZelUV0iv+saqrp9//vlq59yOMQgpLYTKken0cweqbypLp7pCetU3neoKsalvQ/Jj2jcg+/bty2effbbN/qKiIvLz8xMfUBKkU11B9U1l6VRXSK/6xqquZrak6dGkj1A5Mp1+7kD1TWXpVFdIr/qmU10hNvVtSH5MeBdWMzvIzF40s2Vm5sxsTBTn7Glm75pZuf+868zMgsocZ2bfmNlm/9dj41YJERERERGRNJSMMZDtgf8BFwLl9RU2s47AG0ApMNR/3mXAJQFl9gNmAk8Ag/xf/21m+8Q6eBERERERkXSV8C6szrlXgVcBzGxaFKecArQFTnfOlQP/M7NdgUvM7C7nTSN7EfCOc+5W/zm3mtnv/ftPinUdRERERERE0lFLmIV1P+B9f+OxxmygO9A3oMzrQefNBvaPe3QiIiIiIiJpoiVMopMLLA3aVxpwrNj/tTREmdxQFzSzs4CzAHJycigqKtqmTFlZWcj9qSid6gqqb6DMzEzatWtH0JDiFqtjx4588cUXyQ4jYdKpvtHW1TnHhg0bqKqqSkBUIpKqqqurWbp0KRs2bEh2KDHTqVMnFixYkOwwEiKd6grR17ddu3b07NmTjIymvUNsCQ3ImHPOPQg8CDBkyBAXataidJq9KZ3qCqpvjXXr1lFaWkqPHj3Izs5OiUbk+vXr6dChQ7LDSJh0qm80dXXOUV5ezrJly8jJyaFjx44Jik5EUs3q1asxM3bZZZcm/7HdXChnpK5o6ltdXc2yZctYvXo1Xbt2bdL9WsL/ESVATtC+nIBjkcqUICIhrVy5kh49etC2bduUaDyKmBlt27alR48erFy5MtnhiEgLtmbNGnJyclKm8SiSkZFBTk4Oa9eubfq1YhBPvH0MHGhmbQL2DQeWA4sDygwPOm848FHcoxNpoSorK8nOzk52GCIxl52dTWVlZbLDEJEWrKqqiqysrGSHIRJTWVlZbNmypcnXScY6kO3NbJCZDfLfv7f/c2//8b+Z2VsBpzwJbASmmdkeZjYauBKomYEV4B7gEDO70sx2NbOrgN8DkxJWMZEWSG8eJRXp51pEYkG/SyTVxOpnOhlvIIcAX/i3bOBG//c3+Y93A3aqKeycW4v3NrE78BlwP/BP4K6AMh8BJwJjgK+A04ATnHNz4lsVERERERGR9JHwBqRzrsg5ZyG2Mf7jY5xzfYPOme+cO8g518Y51805d2PA28eaMs8653Z1zvmcc7s5555PXK1ERGJrwIABaTVbcChjxoxh4sSJyQ5DRESaEeXH5OfHljAGUkTS0GOPPUb79u1p3749bdq0ITMzs/Zz586d2bx5c4Out3nzZsaNG0efPn3o0KEDgwYNYtasWXXKnHrqqXTr1o2OHTvSv39/Hn744bDX++WXXzj22GNp164dffr04cknn2xUPcP5+uuv02q2YBERiU6s8yPAfffdx5AhQ2jdujVjxowJWebpp59mt912o127duy00068//7725SJJtc2lfJj8qkBKSLN0umnn05ZWRllZWVcffXVjBw5svbzmjVraN26dYOut2XLFnr16sW7777L2rVrueWWWzj++ONZvHhxbZmrrrqKxYsXs27dOl588UUmTpzI559/HvJ65513Hj6fj9LSUp544gnGjx/P119/3ZQqN1ksBsaLiEjzFuv8CNC9e3cmTpzI2LFjQx5/4403uOKKK3j00UdZv3497733Hv369dumXDS5NhmUH2NLDcgYyM/3NhGJj3nz5rHXXns16Rrt2rXjhhtuoG/fvmRkZDBy5Ejy8vLqNBAHDBhQm3jNDDPjxx9/3OZaGzZs4LnnnuPmm2+mffv2HHDAARx11FHMmDEj7P379u3LnXfeycCBA2nXrh3jxo2jtLSUESNG0KFDBw477DB+/fXXOuXffPNNAH7++WdGjx7NjjvuyA477MD5559fp9wdd9xRe9358+eTn59P586dGTBgAC+++GLE/y533HEHPXr0oEOHDuyyyy689ZY3h9ny5cs57rjj2HHHHcnLy2Py5Ml1zgsX04IFCyLev2/fvvzjH/9g4MCBdOrUiRNOOIFNmzYB8MUXX/Db3/6WDh061NlfX6zSsihnisROLPIjwOjRoznmmGPYYYcdQh6//vrrue6669h3333JyMigR48e9OjRY5ty0eTaYMqPW+NtbH68++67E5of1YAUkWZv3rx5DBo0KKqy5557Lueee2695UpLS/nuu+8YMGDANue3bduWXXfdlW7dunHkkUduc+53331Hq1at6N+/f+2+vfbaq943kM899xxvvPEG3333HS+99BIjRozgtttuY9WqVVRXV2+ThMCbSn7kyJH06dOHxYsXs2zZMk488cQ6ZZ566ileeeUVVq9ezbHHHsvhhx/OypUruffeeznllFNYuHBhyHgWLlzIfffdx6effsr69euZPXs2ffv2pbq6mlGjRrHXXnuxbNky3nrrLSZNmsTs2bMjxlRZWcmoUaPqvf8zzzzDa6+9RnFxMV999RXTpk2joqKCY445hoKCAn755Rf+/Oc/89xzz9We8/3334eMVUQknTUkP1588cVR5cdgVVVVfPbZZ6xatYqdd96Znj17cv7551NeXl7vueFybTDlR09j8uPChQt58MEHE5of1YCMgYoKWLvWUVKS7EhEUs+6detYvHhxnQQ5d+5c9ttvPw466CBOOumkOmv+TZkyhSlTpkS8ZmVlJaeccgqnn346u+66a51jU6ZMYf369bz//vuMHj06ZFegsrIyOnbsWGdfp06dWL9+fcT7TpgwgZycHHr06MGBBx7IPvvsw+DBg2nTpg3HHnssX3zxxTbnzJ07l+XLl3PnnXfSrl072rRpwwEHHFCnzAUXXECvXr2YN28eZWVlXHnllfh8Pg455BBGjhzJU089FTKezMxMNm/ezDfffENlZSV9+/Zlp5124tNPP2XVqlVcd911+Hw++vXrx1/+8heefvrpiDF98sknUd3/ggsuoHv37my//faMGjWKefPm8cknn1BZWclFF11EVlYWf/rTnxg6dGjtORkZGSFjFRFJVw3Nj3fffXe9+TGU0tJSKisrefbZ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\n", "text/plain": [ - "HTML(value=\"

        Job Status: job is being initialized

        \")" + "" ] }, - "metadata": {}, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" } ], "source": [ - "# run the program\n", - "t2cpmg_job = qk.execute(circuits, backend, shots=shots)\n", - "job_monitor(t2cpmg_job)" + "# Fitting T2 single echo\n", + "\n", + "%matplotlib inline\n", + "\n", + "t2echo_fit = T2Fitter(t2echo_backend_result, t2echo_xdata, qubits,\n", + " fit_p0=[0.5, t_q0, 0.5],\n", + " fit_bounds=([-0.5, 0, -0.5],\n", + " [1.5, 40, 1.5]))\n", + "\n", + "print(t2echo_fit.params)\n", + "\n", + "plt.figure(figsize=(15, 6))\n", + "for i in range(2):\n", + " ax = plt.subplot(1, 2, i+1)\n", + " t2echo_fit.plot(i, ax=ax) \n", + "plt.show()" ] }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 8, "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:52:32.659574Z", - "start_time": "2018-12-18T15:52:31.531632Z" - } + "scrolled": false }, "outputs": [ { "data": { - "image/png": "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9957S3VtvOQh0DHHHKOzZs0qOB41apQOHjy40HPXXHNNyPtkZWVplSpVdOXKlQVhV111ld5xxx0h4z/44IM6dOjQguOtW7dqUlKS7t69W1VVx44dq40aNdKaNWtqq1at9JNPPgl5n3D+doLNmzevxNfEG8tDeLp3d69oCTcPnTurtmunumFD6d4HWKRhPPdjXZPJBHKBlKDwBhxYu9mPqqZ736aJSENgDDC1kLi5IrIIOKpMqQ0WVMetlpsLV1wBw4fDrl1wzjkHXjNwoHtlZsKllx54ftgw6NcPfv0VjjiiVMlasmQJV111VamujabzzjuPL774IuS50047jQ8//DDkuZtvvpnp06fTo0cPtm3bxpw5c/jHP/5R6Lm777475H1++uknEhMTadWqVUHYCSecwGefBbe0OmlpafTs2bPgeMmSJRx99NFUrVqVlStX8vzzz/PNN9/QqFEj1q5dW+hKEMbEu6lTYcECEIEWLWDiROjfPzrvFdM+GVXNwXXi9w461Rv4sgS3SgAOKuykuMkKbYENJU1jebNjxw7Wrl1Lu3btCsK++uorOnfuTPfu3bniiivYu3evL2n78MMP2b59e8hXYQUMQPfu3fnhhx+oXbs2hx9+OB07duSiiy4q9Nx5550X8j5ZWVnUqVNnv7CimkHT0tL2+zkuWbKEE044AYDExESys7NZvnw5e/fupVmzZhx55JEh72NMPMtYs4shg/aRlwe5ubB7NwwZAhlRGjblxzyZp4CBIjJIRFqLyDO4ZrQJACIyRUSm5EcWkREicp6IHOW9rgNGAdMC4owWkTNFpIWItANexhUygf02ZZeaut9r9+zZrhYDUL36AedJTXW1GID69UOf79fPnS9lLWbp0qXUqlVrv2VMmjZtyn/+8x8+++wzWrRowXvvvVeqe/shLy+PM888k4svvpidO3eSmZnJtm3buOOOOwo9d99994W8V82aNdmxY8d+YTt27Ai5BE1OTg4///wzxx9/fEHY0qVLCwqdli1bMm7cOMaMGUODBg24/PLL+e233yKYc1NZ5OTA779H76Ee0urV8PPPAKR//itVcrL2O52cDOnpoS4su5gXMqo6A7gFuAdYApwGnKOq+busNfFe+RKBR724i4AbgDuBwDaSusAk4EfcSLXGQDdVXRi9nMSHJUuW0LZt2/1mmjdq1Ihq1aoBkJSUVLBywYwZM+jWrRtdunThzTffBOCUU07hggsuoH379jz22GMAnHjiidxyyy20bt2aqVOnMmTIEFq1asWsWbMAeOGFF+jSpQv9+/ffr3kp2Nlnn10w4i34dfbZZ4e8ZuvWrfz666/ceOONHHTQQdSrV49rrrmG2bNnF3pu7tzgwYpOq1at2LdvH6tW/Tn2Y+nSpbRp0+aAuMuXL6dx48ZUr14dcH2VqampBTUZgCuvvJIvvviCdevWISLccccdhebdmFDym6nS0lwz1dSQDf4RkJMDn34KI0fC0UfDUUeB9//d/MxW7D2o1gHRo7bcXjgdNxX5Vd47/q+99lq98cYbQ55bs2aNnnTSSZqdna3fffednnXWWZqTk6Oqqjk5Obpt2zY97LDDdPPmzZqdna0nnHCCbt68WVu0aKE7duzQxYsXa+vWrTUrK0u//PJLvemmm/T777/Xvn37al5enn711Vfaq1eviOepefPm+sgjj+jevXt127ZtetFFF+mVV15Z6Lm+ffsWeq9+/frp5ZdfrllZWfrFF19o7dq1ddmyZQfEmzJlitasWVNXr16tu3bt0r///e8KFAwaWLFihX766ae6Z88ezc7O1muuuUYHDBgQ8j2t47/8imYeNmxQrVZNFf58VatW+o73A2RlqaqXh9at3RscdJDqmWeqPvus6po1BVGnTFFNSFBNTHRpmDKl5G9HmB3/tjhXORfYpBNox44dDBgwgKlTp5KcnMyHH37IyJEjC5agr1KlCmlpaVx66aXUr1+f5ORk6tWrx/fff88VV1xBrVq1yMzM5LLLLqNGjRpkZmbSpEkT3nnnHQYPHoyIkJSUtF/zUqS8/fbbfPTRRxx66KG0bNmSpKQknn766ULPjR07tuDas88+m4cffrjgePz48ezevZsGDRpwxRVX8OKLL4asyaSlpXHmmWdy9tln07JlSxo2bEiLFi146KGHAMjOzubOO++kfv36pKSksGnTpv3ex5jipKdD8A4QZWqmysuDhQth9Gjo2BFatXJlF8Ddd8N778GWLfDRRzBixH5Vlf794ZRT4PjjYc2a6HX6gy31X+4tWrTogLB9+/ZxxRVXMGbMGI4++mgAtm3bRl5eXsH5pKQk0tLSCiZtvv7665x++ul8//33tG/v5rEuXbqUDh06FHx/yimnMHv27IL3mTBhAl26dIl4ntq1a1fo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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4cAAAGZCAYAAAA6rkRUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xl4VOX5//H3nZAhYRcQAsgSVFxQAUUUf6ipSvtVwQWrohhFERDcra3Wr+KCG3VHBNF+WwQV0WqrtFKtS9Si4hpFRdASQMCgVFkCgYTk+f1xJiGZzEwmySRnkvm8rmuuZM55zjk3z4XcPufZzDmHiIiIiIiIJLcUvwMQERERERER/6lxKCIiIiIiImocioiIiIiIiBqHIiIiIiIighqHIiIiIiIighqHIiIiIiIighqHIiIiIiIighqHIiIiIiIighqHIg3CzLLM7G9m9qOZOTOb43dM9WFmY4N/juwYymYHy45t+MhERKQpUX5UfpTE1sLvAEQai5m1ATYT+0uRTs65n+r4uDnAIcAdQAHwnzrep1kws4HAacAc59yqWlyXAlwJTAT6AD8CzwJTnHPb4h+piEjyUX70T13yo5n1A84DfgnsDaTj1eNzwIPKj1IfahxKMmkBXBBybBJwFHAtsKHS8Z11TXxm1hI4GpjhnLu3Lvdo4t4GMoCSSscGAjcDucCqWtzrAeAK4K/AfcABwe+DzOwE51xZHOIVEUl2yo+NI1758SLgUuAl4Kng/X4B3A6cZWZHOueK4hOyJBs1DiVpOOc2AU9WPmZmVwM7gIecc7vi9KiugAF1fasalpmlAi2dc9vjed94CzbYdtT3PmbWH7gceME5d0al4/nAdGA08HR9nyMikuyUHxtHvPIj8BfgLufc5krHHjWzb4D/BcYBM+LwHElCmnMoScvM0oCDgM/jlfiCcydWB7/eHJxbUDEXwcw6m9kjZvadmRUHfz5iZp1C7lM+h+EEM7vJzP6Dl1DOquH5Pc3sWTPbbGZbzGyhme1tZqvMLDek7C3BZ/QJc59q5YNaBK9bbWY7zexzMxsdcm2VORVmdgvw5+DpNyvVyZxofxbgHLz/iXgw5PjjwHa8ITUiIhJnyo+JnR+dcx+FNAzLLQj+PCja9SLRqOdQkll/IAB8Gsd7zgby8IZD/hV4IXh8mZm1B94F9gH+BHwCDMIbunOcmQ1xzm0Nud+9QBpeg2gLsDzSg82sA96QlZ7Ao8BXwLHAm3jDWOJhGtAamBn8fiEw38zSnXNzIlzzAtANmADcCSwLHq9pnsnhQBnwQeWDzrkdZpYXPC8iIvGn/Fh7jZkfI9kr+HND1FIiUahxKMlsUPDnJ/G6oXPuPTP7Hi/5fe6cqximY2Z3APsClzrnZlY6noc3/ON3wE0ht8wABsU4VOZ3eIu2XOScK38TOdPMHsRb1CUeOgOHlL+xNLNHgc+B+81sQbg5Ds65z83sPbzk9y/nXG6Mz+oObHTO7Qxzbh1wlJkFnHPFdfmDiIhIRMqPtdeY+bGa4NDam4BdaMqF1IOGlUoyOzT4M55vRqM5HW+1zcdCjs8OHj89zDWzajGH4jS8t4VzQ45Pq02QNZhVeShL8PdHgT2A7Dg+B6AVEK5hCLvnbLSK8zNFRET5sS4aMz+G8yAwFG8174i9qCI1UeNQktkgvDdsSysfNLOWZva4ma00s61mtsLMLo/D87KA5aHzN4LfVwB9w1yzohb37wt845wrDbn/98CmWsYaybIwx76q9Px42g60jHAuvVIZERGJL+XH2mvM/FiFmU0FLgMec87d1ZDPkuZPw0olKZm3f94AYJlzLnTlsBZ4ey/9EliJtx/TK2a2wTn3bONG2qCNHxflXCL827AeONDMWoYZWtoDb8iphpSKiMSR8iOQ+PmxQnBRmxvxFra5xN9opDlQz6Ekq32BNoSZT+Gc2+acu8k5961zrsw5l4e3l9Cwej5zJbCfmVVJLMHv/YLn63v/fYPzDirfvxvQIUz58qXEO4aUT8ebIB/OAWGOHVjp+ZFES7SRfIj3b9SQygeD8Q0EPqrDPUVEJDrlx8TPj+Xx3IK3R+ITwMXOuTrfS6ScGoeSrGKeTxFc0vtovInl9fE3YE/g4pDj44PH/1rP+7+It4fU+SHHr4tQvnxIzgkhx68m8r8Nk4KrygEQ/P0SvGE5b0WJrTD4s2OUMqEW4CXNq0KOj8eba/hULe4lIiKxUX5M/PyImU3BaxjOw1top6w214tEklBd4yKNqDYrsc0AtlJ9Intt/QE4E3jEzA7FS7yD8DarXR48X9/7nws8bmaHAV/iTYIfCmwMU/614HNvC+4jlY/39vfICOUJHl9iZuWrvV0I9MJ7YxltiM+HeNtS/K+Z7QFsA/Kdc0siXeCcW2pmjwCXmdkLwMt4b2avwEu0Wo1NRCT+lB8TPD+a2aXArcCaYKznmlnlIhucc/+K8kyRiNQ4lGQ1CK9X6rNohczsfrzkcVx957c55zab2f/D+wf9FLzEsQFvNbObw+zhVNv7/2xmRwP3s/vt6FvAL4DXw5QvNbNTgOnA5UAx8Cre3k+LIzzmOry3xJfivYVdAYxxzkVtqDnn1pjZRcHrZ+HtTfUEEDH5BV0FrMJb5vtkvOT7MN5qbHpLKiISf8qPiZ8fy/f57RUsG+otQI1DqRPT8GSR8IL7Hx2Pl/h+9Due+jCzVcAq51y2z6GIiEgTp/wo0nyp51AkDDObDhwH/KKpJz4REZF4UX4Uad60II1ICDPrjTeMZB8g38wKg59FPocmIs2YmR1jZi+Z2Tozc2Y2NoZrDjazt8ysKHjdFAuZfCQSL8qPIs2feg5FQjjnVgP6nysRaWxtgC/wFveocYEPM2uHN6/obbw5SPvj7XW2Dbiv4cKUZKX8KNL8ac6hiIhIgjGzQuAy59ycKGUmAdOArs65ouCxG4FJwF7a80xERGqrWfccdu7c2fXp0yemstu2baN169YNG1ATpHqJTHUTnuolMtVNZPGom48//nijc27POIXUFAwF3ilvGAa9AkwF+uAtv1+FmU3AW/2XjIyMw3r27FnjQ8rKykhJ0SyUcFQ34aleIlPdRKa6CS8e9bJixYqY82Ozbhz26dOHjz76KKayubm5ZGdnN2xATZDqJTLVTXiql8hUN5HFo27MbHV8omkyMoG1Icc2VDpXrXHonHsMeAxg8ODBLpYcqb+3kaluwlO9RKa6iUx1E15j50c1z0VERERERESNQxERkSaqAG+z7cq6VjonIiJSK2ocioiINE3vAUebWXqlY8OB9cAqXyISEZEmTY1DERGRBGBmbcxsoJkNxMvPvYLfewXP32Vmr1e65GlgOzDHzA4ys1HA9cD9WqlURETqolkvSCOSzMrKyli7di3btm1r1Oe2b9+eZcuWNeozmwrVTWSx1k3r1q3Za6+9muuKdoOBNyt9vzX4eQIYC3QD9i4/6ZzbbGbDgUeAj4Cf8fY3vL+R4hVpkvzKj6A8EI3qJrzGzo+N3jg0s2OAa4HDgO7AhdH2cQpeczAwAxgC/ATMBqbqzahIZBs3bsTM2G+//Rr1f6S3bt1K27ZtG+15TYnqJrJY6qasrIx169axceNGunTp0kiRNR7nXC5RNhh3zo0Nc2wpcEzDRSXS/PiVH0F5IBrVTXiNnR/9ePXaBvgCuBIoqqEsZtYO+Bfe8tyHB6/7LXBNA8Yo0uRt2rSJrl27NtceFklCKSkpdO3alc2bN/sdiog0YcqP0tzEMz82es+hc+5l4GUAM5sTwyVjgFbABcGNfr8ws/2Ba8xM8ypEIigtLSUtLc3vMETiKi0tjV27dvkdhog0YcqP0hzFKz82hVcmQ4F3gg3Dcq/gDUnt40tEIk2EWcQRaiJNkv5Oi0g86N8SaW7i9Xe6KSxIkwmsDTm2odK5/MonzGwCMAGga9eu5ObmxvSQwsLCmMsmE9VLZIleN+3bt2fr1q2N/tzS0lJfntsUqG4iq03d7NixI6H/2xMREWmqmkLjsFacc48BjwEMHjzYZWdnx3Rdbm4usZZNJqqXyBK9bpYtW+bLxG5NKI9MdRNZbeomPT2dQYMGNXBEIiIiyacpDCstALqGHOta6ZyISJPSv3//pO/5Gjt2LDfeeKPfYYiISAJRfvQ/PzaFxuF7wNFmll7p2HBgPbDKl4hEpF6eeOIJ2rRpQ5s2bUhPTyc1NbXie4cOHdi5c2et7rdz507GjRtH7969adu2LQMHDmTRokVVypx33nl069aNdu3a0a9fP/74xz9GvN+MGTMYPHgwLVu2ZOzYsXX5I0b15ZdfJnSvs0jMduwArQsnEjfxzo8Qe0775ptvSE9P57zzzotY5qeffuL000+ndevW9O7dm6effrrW8USj/Oi/Rm8cmlkbMxtoZgODz+8V/N4reP4uM3u90iVPA9uBOWZ2kJmNAq4HGmWl0uxs7yMi8XPBBRdQWFhIYWEhN9xwAyNGjKj4vmnTJlq2bFmr++3atYuePXvy1ltvsXnzZm6//XbOOussVq1aVVHm97//PatWrWLLli289NJL3HjjjXz88cdh79e9e3duvPFGLrroovr8MeNKK3RKwnnvPcjM9H6KSFzEOz9C7Dnt0ksv5fDDD6+xTCAQYMOGDTz11FNMmjSJL7/8stYxxZPyY3z50XM4GPg0+MkAbg3+flvwfDdg7/LCzrnNeD2F3YGPgEeA+4D7GyPY4mLYvBkKNIBVpEHk5eUxYMCAet2jdevW3HLLLfTp04eUlBRGjBhBVlZWlcZf//79K5KqmWFm/Oc//wl7v1GjRnHaaafRqVOnmJ7fp08f7rnnHg455BBat27NuHHj2LBhAyeeeCJt27blhBNO4Oeff65S/rXXXgPgu+++Y9SoUey555506tSJyy67rEq5adOmVdx36dKlZGdn06FDB/r3789LL70UNa5p06bRo0cP2rZty3777cfrr3vv3davX88ZZ5zBnnvuSVZWFtOnT69yXaSYli1bFvX5ffr04d577+WQQw6hffv2nH322ezYsQOATz/9lEMPPZS2bdtWOV7ugQceCBurJLCDDoKSEnjiCb8jEWmW4pEfIbac9swzz9ChQweOP/74iGW2bdvG888/z9SpU2nTpg3Dhg3jlFNOYd68eRGvUX7cHW9TyY+N3jh0zuU65yzMZ2zw/FjnXJ+Qa5Y6545xzqU757o5525tjF7DefNgyRJYuhT69vW+i0h85eXlMXDgwJjKTp48mcmTJ9dYbsOGDaxYsYL+/ftXu75Vq1bsv//+dOvWjZNOOqlOMYfz/PPP869//YsVK1awcOFCTjzxRO68805+/PFHysrKqiUY8FboHDFiBL1792bVqlWsW7eO0aNHVykzf/58/vGPf7Bx40ZOP/10fvnLX/LDDz/w8MMPM2bMGJYvXx42nuXLlzNjxgw+/PBDtm7dyiuvvEKfPn0oKytj5MiRDBgwgHXr1vH666/z4IMP8sorr0SNqaSkhJEjR9b4/GeffZZ//vOf5Ofn8/nnnzNnzhyKi4s57bTTyMnJ4aeffuLMM8/k+eefrxLrY489Vi1WSXBt28IZZ8CCBd7wUhGJq4bIj+Fs2bKFKVOmcP/90ftdVqxYQYsWLejXr1/FsQEDBtTYc6j86Gkq+bEpzDn0RUEBTJwIZWVQWgpFRd539SBKk1U+RrryZ+ZM79z27eHPz5njnd+4Mfz5BQu88999V6eQtmzZwqpVq6okvw8++IChQ4dyzDHHcM4551BSUlJxbubMmcwsjzmCkpISxowZwwUXXMD+++9f5dzMmTPZunUr77zzDqNGjarT8JxILr/8crp27UqPHj04+uijOeKIIxg0aBDp6emcfvrpfPrpp9Wu+eCDD1i/fj333HMPrVu3Jj09nWHDhlUpc8UVV9CzZ0/y8vIoLCzk+uuvJxAIcNxxxzFixAjmz58fNp7U1FR27tzJV199RUlJCX369GHvvffmww8/5Mcff2TKlCkEAgH69u3L+PHjeeaZZ6LG9P7778f0/CuuuILu3bvTsWNHRo4cSV5eHu+//z4lJSVcddVVpKWl8etf/7rK0KVIsUoTcP753vCahQv9jkSkfhIsRzZEfozkpptuYty4cey1115RyxUWFtKuXbsqx2LZNkv5cXe8TSE/qnEYQX4+pKVVPRYIeMdFJD4+++wz2rZtS1ZWVsWxnj178sYbb/D222/Tp08fXnzxxZjvV1ZWRk5ODoFAgBkzZoQtk5qayrBhw1i7di2zZs2q95+hXNeuuxdVzsjIqPa9sLCw2jXfffcdvXv3pkWLyLsK9ezZE/CGuvTs2ZOUlN3/bPfu3Zt169YB8NRTT1UsWnDiiSeyzz778OCDD3LLLbfQpUsXRo8ezfr161m9ejXr16+nQ4cOFZ8777yTDRs2RI2ppueXy8zMrPi9VatWFBYWsn79enr06FFlg97evXtX/L7PPvtw9913V4tVElt2Nhw39RfQo4eGlorEWbzzYyR5eXm89tprXH311TWWbdOmDVu2bKlybMuWLTVuQ6T86Gkq+bHZ7XMYL1lZ3lSKyoqLveMiTVK0paFbtYp+vnPn6OeD/0DXVl5eHoccckiVfxS7detW8XsgEKjyj200zrmKuQwvv/wyaaFvd0Ls2rUr4pzDxtKzZ0/WrFnDrl27IibA8rrp3r073333HWVlZRV1smbNmorhPWPGjGHMmDFVrj333HM599xz2bJlCxMnTuS6665j8uTJZGVl8c0339QqppqeH023bt1Yt24dzrmKP8+aNWuqvP0866yzGDduXJVYo81jkcRQZqnwyCNQ6b9bkSYpwXJkPPNjNLm5uaxatYpevXoBXu9gaWkpX331FZ988kmVsv369WPXrl1888037LvvvoDXiA2dwhEPyo/+5Uf1HEaQmQmzZ0OAYtpQSEaGY/Zs77iIxEe0+RSrV6/m1VdfZeTIkTHda9KkSSxbtoyFCxeSkZFR5dwPP/zAM888U5H0XnnlFebPnx9x4v2uXbvYsWMHpaWllJaWsmPHjgZZDW3IkCF069aN66+/nm3btrFjxw4WL14ctuwRRxxBq1at+MMf/kBJSQm5ubksXLiw2hyMcsuXL+eNN95g586dpKenk5GRQUpKCkOGDKFt27ZMmzaNoqIiSktL+eKLL/jwww+jxlTb51c2dOhQWrRowfTp0ykpKeGFF17ggw8+qBLrW2+9VS1WaSJOPRWGDPE7CpFmJZ75MVpOmzBhAv/5z3/Iy8sjLy+PSy65hJNPPrlinl1lrVu3ZtSoUUyZMoVt27axePFiXnzxRXJycur+B41A+XF3rI2dH5V9o8jJgdX3PMurDGflAy/RAH/3RZLaZ599Fjb5bdmyhZycHObMmVOlB/CSSy7hkksuqVZ+9erVzJ49m7y8PDIzMyuGjzz11FOA93Zx1qxZ7LXXXuyxxx5ce+21PPjgg5xyyikV9yifIA9w++23k5GRwd13382TTz5JRkYGt99+e7z/+KSmprJw4UK+/fZbevXqxV577cWC8jkqIQKBAAsXLmTRokV07tyZyZMnM3fu3GrzKsvt3LmT66+/ns6dO5OZmckPP/zAXXfdRWpqKn//+9/Jy8sjKyuLzp07c/HFF7N58+aoMdX2+aGxv/DCC8yZM4eOHTuyYMECRo0aVSXWm2++uVqsktiqrOb96adw2201XiMisYlXfoToOa1Vq1ZkZmZWfMr3V9xzzz0rrq+cH2fOnElRURFdunThnHPOYdasWQ3Sc6j8uDvWRs+Pzrlm+znssMNcrN58883wJ3btcm7AAOd69XJu+/aY79dcRKwXSfi6+eqrr3x57pYtW+p1fUlJiTvxxBPda6+9FqeIEkd966Y5q03dRPq7DXzkEiD3NJVPrDky3L91c+c6l5LiXGqqcxkZzs097xXnwLnPP4/pns1FoucBvyR6vfiVH52rXx5ozvnROeXISBo7P6rnsCapqfDQQ7BmDdx7r9/RiDR78+fPZ8mSJUydOpXs7OyIbwpFxB9hV/P+y3AKUnvA3Ll+hyfSbCk/SmPQgjSxOPZY+PWvvUn3v/0tpKf7HZFIs5WTk9Mg8xdEJD7KV/MuKtp9LNDSyD98DJlPzoW77oIoKwyKSN0oP0pjUM9hrB580JtToYahiIgksYireV9wjNet+Prr/gQmIiL1psZhrHr08Jbqdg7++1+/oxEREfFF+WreKSnezIuMDO975nknwD77BFeoERGRpkjjPmrrnHNg1Sp4910vM4qIiCSZnByYNcsbWrpoUfk2Ty1hxQowIzvbKxdt6zcREUk8at3U1kknwZIlEFwiX0REJBkFAtC+fcj+v2bgHO1KNMJGRKQpUuOwts47z9vs9/rrobDQ72hEovJWLxZpPvR3ugk46SRu+/IMv6MQiUr/lkhzE6+/02oc1lZKirc4zfr1cPfdfkcjElF6ejr//e9/lQCl2XDO8d///pd0LQyW2IYNI3Pz17T48XtNP5SEpPwozU0886PmHNbF0KFw7rnw3HNw883emt4iCWavvfZi7dq1/Pjjj4363B07duh/3iNQ3UQWa92kp6ez1157NUJEUpNI8wnntZrIRK6GZSn07estVqPV9yWR+JUfQXkgGtVNeI2dH9U4rKvp070l2tQwlASVlpZGVlZWoz83NzeXQYMGNfpzmwLVTWSqm+ahoAAm/m9nigAcUAQTJ8Lw4SFzE0V85Fd+BP1bF43qJrzGrhcNK62rTp2gVSvYscNbnU1ERCTJ5edXf2caCHjHRUQk8alxWF+jRsHJJ8POnX5HIiIi4qusLCgpqXqsuNg7LiIiiU+Nw3rIzobfrb0Cvv0W7rvP73BERER8lZnpzTFMSYHUVG/2xezZVYeUZmdTsQ+iiIgkFjUO6+mDjv/j9R7efjusXu13OCIiIr7KyYEjjoCBB+9i5eR7yUnRvsAiIk2FGofx8MAD3s9rrvE3DhERkQQQCECb9i3IzH0Gpk0DbRkgItIkqHEYD716wU03wbp1UFjodzQiIiKJYfx4WLoUPvjA70hERCQGahzWQ3ExbN7sLd3NtdfCu+9CmzZ+hyUiIpIYzjnHW9n78ccrDlXJnSIiklDUOKyjefNgyRLvhWjfvjDvmTRvBv6PP8I//uF3eCIiIr7JzfU+tGvnNRDnz4ctW6rnznk+ByoiIlWocVgHBQXepr5lZVBaCkXBTX4rehDPPFOL04iIiABMmADDh1OwfHPk3CkiIglBjcM6iLrJ79SpYAZXX+1LbCIiIgllyBD429/I39Uzcu4UEZGEoMZhHUTd5Ld8cZq//hUWLfIlPhERkUSTZasoKS6rcqwid4qISEJQ47AOatzk95prWJOxH+tGXQbbt/saq4iIiO+2bSPz+P7MPmpu5NwpIiK+U+Owjso3+T34YFi50vteIRDg/n6PsqLtYd6kChERkWTWujWccQY5H17BMYO3h8+dIiLiOzUO6yEQgPbtw7/1zOuQza0HPgudOlU7l53tfURERJLG+PGwdSu/2rwgYu4UERF/qXHY0JYtgyuu8JZnExERSVbDhsH++zPi+8cjFtHLUxERf6lx2EAqNvl97Qt4+GF47DG/QxIREfGPGVx8Mf22fkznnev8jkZERMJQ47AeKjb5DVFlk9/rfs28A++C66+H779v7BBFREQSx/jxnDl0HRtb9vA7EhERCUONwzgrKCBkk19j4srfUVDUHq680u/wRERE/NOuHS8u7uy9WHXO72hERCSEGodxlp9P9U1+W6aQP/ZWeO45+Oc/dw85LfAnRhEREd9s3Aj/7//B3Ll+RyIiIiHUOIyzrCwoKal6rLgYsv73XJg2jXlrs3cPOe3rDUGtTJPxRUSkWevUCTZt8ubjq/dQRCShqHEYZ5mZ3qa+1Tb57RWg4PzfMfGK9EpDTr0hqOpBFBGRpGEGl10GH38M779f5ZRG1oiI+EuNwwaQkwNHHEG1TX7z8yEttbRK2UDAOy4iIpI0cnK8jYIffrjiUJXF3MKMrBERkYanxmEDCQSotslvVhaU7Kpa5cXF3nEREREAM5tsZvlmtsPMPjazo2sof6mZLTOzIjNbbmbnN1asddamDVx4oTcX//vvwyzmppE1IiJ+UOOwEWVmwuzHjBa2i/ZsIiOtxBtymlnztSIi0vyZ2dnAQ8CdwCDgXWCRmfWKUH4SMA24DegP3Aw8YmYjGyfierjsMpg+Hdq1C7+Ym0bWiIg0OjUOG1lODhx+ZAvubD+NlbYPOUOWVzmv+RYiIkntGmCOc+5x59wy59zlwPfApAjlc4DHnXPznXMrnXPPAI8B1zVSvHW3994waRK0bh15MTeNrBERaVRqHPogEIDXDrySzNZbYcaMiuOabyEikrzMLAAcBrwacupV4KgIl7UEdoQcKwKGmFlamPKJpaQEHn2UzLx/hl/MTSNrREQaVQu/A2iucnOjn/8pkAmLF0O/fgBV5lvA7vkWw4crOYqIJInOQCqwIeT4BuCECNe8AowzsxeAj/AalxcDacH7fV+5sJlNACYAdO3aldyakhVQWFgYU7k6KStjyO23U9KhAz1npLP//oMoLk5h2rSldOxYXGMu9VuD1k0TpnqJTHUTmeomvMauFzUO/XTAAd7PDRvIfx/S0rpSVLT7dPl8CzUORUQkgqlAJt7cRMNrSD4B/A4oCy3snHsMb9gpgwcPdtkxbKybm5tLLOXq7Npr4eqryW7blj33bA/AqFGROkoTS4PXTROleolMdROZ6ia8xq4XDSv1W0kJDB1K1r2XUlJSdTNgzbcQEUkqG4FSoGvI8a5A2Jnozrki59xFQCugD9ALWAVsBX5sqEDj6sILoXXrKtMsRETEH2oc+iA3t9Kw07Q0uO46Mhc/z+zRuZpvISKSpJxzxcDHwPCQU8PxegajXVvinFvrnCsFRgN/d85V6zlMSO3bw/nnw/z5tC/Z6Hc0IiJJTcNKE8H48bBgATl/OZVnB37N2rLuLFqkhqGISBK6H5hnZh8Ai4FLgO7AowBmNhfAOXd+8Hs/4AjgfWAPvNVODwIuaPTI6+Oyy+DTT9mjeAOb0zr7HY2ISNJSz2EiSEmBxx+H0lJuWDWe9u2cGoYiIknIObcAuAq4EcipoMe7AAAgAElEQVQDhgEnOedWB4v0Cn7KpeI1CD8D/gWkA0c551Y1VsxxceCB8N57rGrd3+9IRESSmnoOE8Xee8Mdd1B053sEynYAGX5HJCIiPnDOzQRmRjiXHfJ9GTCoEcJqFLl/2QgbNwL7+x2KiEhSUs9hIrnySm47cAHFqWoYiohIknEOhg2DSZP8jkREJGnF3Dg0swvM7J9m9pWZrQz5/Kchg0waZgD02v41/Pa3XqIUEZGEpxwZB2beyqW5ufD552GLZGd7HxERaRgxNQ7N7Cbgz3iT4vOAt0I+b9fmoWY22czyzWyHmX1sZkfXUP5SM1tmZkVmttzMzq/N85qaQ39+He6915uHKCIiCS3eOTKpjR8PrVrB/ff7HYmISFKKdc7hOOAh59zV9X2gmZ0NPARMBv4d/LnIzA50zq0JU34SMA0YDywBhgCPm9nPzrmF9Y0n0eTmAmWT4Jd/hWuugRNOgL59gd1vSyu2wRARkUQQtxyZ9Dp2hHHj4NFH4Y47oEcPvyMSEUkqsQ4r7QTEqyF2DTDHOfe4c26Zc+5y4Hsg0iSDHOBx59x859xK59wzwGPAdXGKJ/GkpMCf/wwtWsDYsVBa6ndEIiISWTxzpFx9tTet4pVX/I5ERCTpxNpz+BYwAHijPg8zswBwGHBvyKlXgaMiXNYS2BFyrAgYYmZpzrmSkGdMACYAdO3aldwYu9kKCwtjLttYuk6axAF3383y3/2O70eOZNOmgQDk5uY1WgyJWC+JQnUTnuolMtVNZE28buKSIyUoKwvWrIFu3fyOREQk6cTaOLwKeMHM/gu8DPwUWsA5VxbDfTrj7cm0IeT4BuCECNe8AowzsxeAj/AalxcDacH7fR8Sx2N4PYsMHjzYZcc4cz03N5dYyzaaY4+Fffdlv3POYb+MDDp08A43ZpwJWS8JQnUTnuolMtVNZE28buKVI6VcecNw+3ZvDqKIiDSKWIeVrgAOwptwvwEoCfkUN0h0nqnAP4B3g896EXgieK55J1szuOgiyMiAwkJSy0pqvkZERBqbnzmy+br9djjwQChR7hMRaSyx9hzeBsRjX4WNQCnQNeR4V6Ag3AXOuSLgIjObGCz3Pd6w0a3Aj3GIKfH9/DMcfjg5u8Ywp8+tfkcjIiJVxStHSmWHHgqrV8Mzz0BODgDFxVBUBAUFkJnpc3wiIs1QTI1D59wt8XiYc67YzD4GhgPPVTo1HHi+hmtLgLUAZjYa+HvSDNPZYw846ihy5t3Bex1HAIf7HZGIiATFK0dKiBNPhP794Z574LzzmPeksWSJN6imb1+YPbuizSgiInES67DSCmbWxsx6mlmbOj7zfmCsmV1sZgeY2UN4e0M9Grz/XDObW+l5/cwsx8z2NbMhZvYM3vCdG+r4/KZp+nSWBQ7hf768j4KV2/2ORkREwohDjpRyZnDttbB0KQXP5DJxIpSVeQt4FxXBxIleD6KIiMRPzI1DM/uVmX0EbAJWAZvM7AMzG16bBzrnFuBN3r8Rb7PgYcBJzrnVwSK9gp9yqXjbX3wG/AtIB45yzq2qzXObunkLOzCo5EPGFj9K334tmDfP74hERKRcvHKkhDj3XOjenfyHXiItreqpQADy8/0JS0SkuYppWKmZ/QpvUZhv8RaIKQC6AWcDL5vZSc65f8X6UOfcTGBmhHPZId+XAYNivXdzVFDgvSHd5VLZQgcohYkTHcOHW73nXJQvDth0V5AXEfFXvHOkVBIIwPz5ZLXfj5KhVU8VF3u7XoiISPzEuiDNLXh7EY6oPM/PzG4D/g7citerJw0gPx/S0rxhNOUCASM/XxPyRUQSwC0oRzacY44hE2+O4dix3mjTQMD7rhwoIhJfsQ4rHQA8EroATPD7TGBgvAOT3bKyqq/kXbzTkfWXe7wJGCIi4iflyIb2xRfk/Pk4Th7wHQcfDCtXajEaEZGGEGvjcCfQLsK5tsHz0kAyM703pCkpkJrqbXs4+7x3yLz/d3D//X6HJyKS7JQjG1r79vDOO5z3wwO0b68eQxGRhhJr4zAXmGpmVUb3m1kvvOE0b8Y3LAmVkwNHHMHuN6aPHQ2nnw433ACffOJ3eCIiySwX5ciG1bMnjB7NiILHaVPys9/RiIg0W7E2Dq8D2gPLzextM1tgZm8B3wAdguelgQUC7H5jagaPPw5duniruW3X9hYiIj5RjmwM115Lq9JCTl8/w+9IRESarZgah865FcAhwHSgJXAo3pYSDwEDnXPfNFiEElmnTjB3LqxYAbfc4nc0IiJJSTmykQwYwOJOIzlz7QOwdWutLs3O3r06t4iIRBbraqU4574Hrm3AWKQujjsO5s2D//mfOl1eXOytglpQoDkcIiJ1pRzZOOb0voUBm9/mshYx/++LiIjUQqzDSiWRjRnj9SKWlMDGjTFfNm8eLFkCS5dC377edxERkUT1TdtD+cteV3krs4mISNxFfPVmZm8Ak51zXwd/j8Y5546Pb2hSK87ByJFQWAhvvultjBhFQQFMnLh7J4yiIu/78OHqQRQRqYlypD9yc/Hy3f/9CVq0gAsu8DskEZFmJVrPoYWUsygf9UD6zczbHXjxYpgypcbi+fnV24+BgHdcRERqpBzpFzOYPx+uu857sykiInETsefQOfeLSr9nN0o0ElVubg0FRo/2eg3vvhuOPTbqPMSsLG8UamXFxd5xERGJTjnSZ1OmeHnu8cfhiiv8jkZEpNmI6W2mmZ1vZp0inOtoZufHNyyprYqV2B580NsMMScH1q2LWD4zE2bPhpQUSE31pm/Mnq0hpSIitaUc6YNjjvE+06bBjh1+RyMi0mzEOtTlz8DeEc5lBc9LIsjIgGefhV69YMuWqEVzcuCII7y25MqV3ncREak15Ug/TJkC69fDn1W9IiLxEuta0BblXGtgVxxikXjZf3/46CNvXkYNAgHvox5DEZE6U470w3HHwbhx0KdPjUW1bZOISGyirVY6EG8j33IjzeygkGIZwGhAG/wmGjMvE155JZx5prcMqYiIxIVyZAIwgz/+scZi5ds2mXnbNs2erZEyIiKRROs5PBW4Ofi7A/43Qrn/AuPiGZTESVmZt3rpiy9CXh506+Z3RCIizYVyZKLYtAn+9Ce4/PJqy3Br2yYRkdqJNufwQby5En3xhsyMCn6v/OkOdHHOvdTAcUpdtG7tzT/cuhXGjIFdGtkkIhInypGJ4p134De/gaefrnZK2zaJiNROtK0sNgObAcwsC/jeOVfcWIFJnPTvDzNnwoUXwk03wV13+R2RiEiTpxyZQEaMgIED4Y474LzzvCW4g7Rtk4hI7cS0WqlzbrWSXmIrLobNm70hNKGy54zlpW4TvEbihg0x3zM7G666amD8ghQRaYaUI31m5r38/Oabar2H2rZJRKR2Yt3KAjObYGafmtl2MysN/TRkkBJd+WT7pUu9yfbz5lUv8/A+0+GTT6Br1yrHc3O9j4iI1J1ypM9OO41v2gxk/YSbvbellWjbJhGR2MXUOAxu4Psw8CGQjrdn05PAFuA/wG0NFaBEV3myfWnp7sn2oT2IJSktYe+9wTmYMwe2bfMlXhGR5kY5MgGkpPB4nzv5LmM/+OmnaqcDAWjfXj2GIiI1ibXn8CrgLmBS8PtM59wFeBPxi/BWYxMf1Hqy/eefw0UXwYQJXkNRRETqSzkyAXzQ6USuO2SRWoAiIvUQa+NwX+BtoCz4CQA4534G7gCubJDopEa1nmw/YABMnerNy3jkkQaPT0QkCShHJpJVq+Dll/2OQkSkSYq1cVgEpDjnHFCA9za0XCHect3igzpNtv/972HkSLj6anj33UaLVUSkmVKOTCRXXumtWrppU0zFs7O9j4iIxN44XArsE/z9HeAGMxtqZocDtwBfN0BsEqNaT7ZPSYG5c6FXLzj7bNixo1HiFBFpppQjE8mtt8LPP8M99/gdiYhIkxNxn8MQj7H7TehNwGvAv4PftwKnxTkuqaVAwPvEPNWiQwd44QVv5Zr09AaNTUSkmVOOTCQDB3ovPh98EK64otoq3SIiEllMjUPn3IJKv39rZv2BoUAr4F3n3MYGik/ioLjYW8W0oCCk8ThggPcB+Ppr2H//atdt25Za/ToREamgHJmApk6Fv/wF7rgDpk/Xlk0iIjGKeZ/Dypxz25xzrznnXlLSS2yx7IFIbi707w//93/Vrlu5snXk60REpBrlSH8UF8PmzcGtnPbd19vXCbQyt4hILUTsOTSzXrW5kXNuTf3DkXiqvAci7N4DcfjwkJ7AYcPg+ONh0iQ44AAK+h5V6bqUyNeJiCQp5cjEUv5C08x7ETp7NuTMmOEdEBGRmEUbVroKqM3rttT6hSLxVr4HYlHR7mPleyBWaeS1aAHPPANDhsCoUeTP/py0tC41XycikrxWoRyZECK/CDUvZ733HnTu7PUmiohIVNEahxdRu8QnCaZWeyB27AgvvghHHknWzedTUrIIsIjXlS/7rXkcIpKklCMTRNQXoa23wq9+5Q19ef55/4IUEWkiIjYOnXNzGjEOaQDleyCOHeuNrAkEatgDsX9/ePJJMr/5htldYOyFAGW0bJlS896JIiJJRDkycUR9Edq2LfzmN3DLLfDhh3D44X6EKCLSZNRpQRpJPLm54Xvxar0H4qmnwrXXknO+cexhhfTtuy2260RERHxQ/iI0JQVSUyEjI+RF6NVXw557eo3EMIvTVFnIRkQkycW0lYWZ/amGIs45Ny4O8UgDqPUeiAAffcRfP/0fru85m8zMM2r1PA05FZFkohzpv5wcmDXLG1q6aFFIvmvXztva4pJLvP19z9id08IuZKOXoSKSxGJqHALHUX1uRUegLbAp+JHmZP/9+bFlD6atGQdf96+2B2Jd1dRwVMNSRJog5cgEEPVF6Lhx8OSTsGVLxaGYV/QWEUkiMQ0rdc71cc5lhXzaA9lAAVC7riVJfG3acONBL1JiARgxAjZqqy4RkXCUI5uAFi3g7bfhwgsrDpUvZFNZ+UI2IiLJql5zDp1zbwMPAA/HJxxJJAXpfbiqz1Owdi2MGgU7d/odkohIk1HXHGlmk80s38x2mNnHZnZ0DeXPNbM8M9tuZgVm9qSZqe8rlJnXTfj00/DDD7Vb0VtEJEnEY0GalcCgONxHEtDS1ofDE09Anz5+hyIi0hTVKkea2dnAQ8CdweveBRaZWa8I5f8fMA94AugPnAYcCDxVv7CbqZUr4fzz4ZZbal7IRkQkCdWrcWhmLYCxwNq4RCOJ6eyzYe5caNnSe62KVncTEalJHXPkNcAc59zjzrllzrnLge+BSRHKDwXWOucecM7lO+fex+upPKIeoTdf++wDkyZ5rcAvv6z9it4iIs1crKuVvhHmcADoB3QCLolnUJKg1q6FE05g3glPsGTJEVrdTUSE+OVIMwsAhwH3hpx6FTgqwmWLgTvNbCTw9+DzRgMvR3jGBGACQNeuXcmNYfWvwsLCmMr5bdOmgQDk5uZFLdfihBM4Ys4ctl54IZ//4Q9s3+5d9/XXeXz9de2e2VTqprGpXiJT3USmugmvsesl1tVKU6i+EttW4AXgGedcbjyDkviq698nb+/EPLw1FYA996SgXT8mPnIwwcXdtLqbiEj8cmRnIBXYEHJ8A3BCuAucc++Z2Wi8YaQZeHn9X8AFEco/BjwGMHjwYJddvkR0FLm5ucRSzm8dOng/Y4r11lvp+JvfkL1jBx2CF4a7rqYVtJtK3TQ21UtkqpvIVDfhNXa9xNQ4dM5lN3Ac0hS0bEn+LU+QNmIXRZX+N6h8dbfyxmFxsddoLChQg1FEmj8/c6SZHYg3jHQq8ArQDbgHmA2c71dcCe+yy+Cf//QWqRERkQqx9hyKAJB16B6UBMqg0sKllVd304bCIiJ1thEoBbqGHO+KtyVGOL8HPnDO3RP8/rmZbQPeMbMbnHNJsyZArUbJBALw6qve73c1RDQiIk1TzAvSmNm+ZvaEma0ws23Bn3PMbJ+GDFASS2YmzH48hRZWShsKyUh3Fau7Vd5QuLR095DTyovW1LSQjRa6EZGmKB450jlXDHwMDA85NRxv1dJwWuE1KCsr/x6PFcmbt6IizlkzjTa7NvkdiYhIQogpcZhZNvAZMAJ4H5gZ/DkSWGpmxzZUgJJ4cnLg8CNT2Wdga1bmGzmjS6CsrMYNhct7FZcu9XoV582rWram8yIiiSjOOfJ+YKyZXWxmB5jZQ0B34NHgs+aa2dxK5RcCp5rZJDPrG9zaYjrwiXNuTX3/bM3e8uWMz/89F6y61e9IREQSQqzDSu8DPgV+5ZwrLD9oZm3xVlG7Dxgc//AkUQUCEAgYmXvshFNOg4MPJuuaP0TcULhyryJUX8impvMiIgksbjnSObfAzDoBN+LNH/wCOMk5tzpYpFdI+TnB51wWfM5m4A3gunr9iZLFwIEs7DaRUesehs/GwoABfkckIuKrWIecHAhMq5z0AJxzW4FpeBvvSjIKBLzW3z33kPncwxE3FK6pV7Gm8yIiCSyuOdI5N9M518c519I5d5hz7u1K57JDF8Bxzj3snOvvnGvlnOvmnBuTTHMN6+uPWXewNW0PmDx59xvKGGRnw1VXDWy4wEREfBBr43At3p5N4QSAdfEJR5ocM3j4YTj1VLjySnJaPR92Q+GsLCL2KsZyXkQkgSlHNmELF3ekw2P3wLvvwhNP+B2OiIivYm0cTgNuNbPulQ+aWQ/gZuDOeAcmTUhqKjz9NBx5JIwZw2FF/6Z9+6rDQTMzidirGMt5EZEEphzZ1J1/Plx6KQxUT6CIJLdY5xweC7QDVprZ+3gb8nYFjgz+nh2ckA/gnHNhN9+VZqxVK1i4EM44g6KtrcMWycmBWbO8+YSLFlVv+NV0XkQkQSlHNnUpKTBjht9RiIj4Ltaew2HALuB7oDcwJPjze6AMODrkE5WZTTazfDPbYWYfm1nUa8zsXDPLM7PtZlZgZk+amZoOiaZTJ3jzTb5tO8j7XlhYrUggQLVexdqcFxFJQHHNkeKjn3+GCy+EDz4AtL2SiCSfmHoOnXNxm/llZmcDDwGTgX8Hfy4yswPDLbsdXJZ7HnAt8De8t7EzgaeA4+MVl8SJGQBjV90CR/4F3n4bOnb0NyYRkQYUzxwpPktNhVdfhc8/Z94VH7JkSQpm3vZKs2fvnkcvItJc+bFB7jXAHOfc4865Zc65y/Herk6KUH4osNY594BzLt859z7wMHBEI8UrdZDX/lj49ls46aSwPYgiIiIJp107uP9+Cj5Zx8TxZZSVQWnp7u2V1IMoIs1dzI1DM2tlZpeZ2XNm9nrw52Qzy6jFPQLAYXj7PlX2KnBUhMsWA93MbKR5OgOjgZdjfa7EX26u94kkb49fwIIF8NFHMGoU7NzZWKGJiDS6eORISRBnnUX+4LNIK9lW5bC2VxKRZBDTsNLg/L5coB+wGigA+gJnAJebWbZzbkMMt+oMpOJN0K9sA3BCuAucc++Z2Wi8YaQZwZj/BYSd0G9mE4AJAF27diU3WgumksLCwpjLJpO61MumTd5qb7nt29P12ms5YNo0fjjxRL666SY2bfLmI+bm5kW/NsL5RKK/M+GpXiJT3UTWlOsmjjlSEoEZWQ9cQcnRVTff1fZKIpIMYl2t9A/AHsDRzrnF5QfN7CjgebxlvMfGPTrvGQfiDSOdCrwCdAPuAWYD54eWd849BjwGMHjwYJednR3Tc3Jzc4m1bDKpS7106OD9zM7O9nYJ7taNLpmZdPnFL6qeq+naBKe/M+GpXiJT3UTWxOvGtxwpDSNz2D7MvnQJF846HCyFQEDbK4lIcoi1cXgicF3lpAfgnHvXzG4E7o7xPhuBUrxFZSrrivemNZzfAx845+4Jfv/czLYB75jZDc65tTE+WxpJtZf/V15Z8ete21ewtlW/Ro1HRKSBxStHSgLJmXEEsz6BHUVlvPxSKZk9q/ckbtuWSkGBGo0i0nzEOuewDbA+wrm1wfM1cs4VAx8Dw0NODQfejXBZK7wGZWXl3/1YUEfq6sMP+fNHB3H2d/fUXFZEpOmIS46UxNOqRTH/l388mY/cVOX4vHmwZAmsXNmavn297yIizUGsjavlQKQFnM8Dvq7FM+8HxprZxWZ2gJk9BHQHHgUws7lmNrdS+YXAqWY2ycz6Bre2mA58Em7rC0lghx5K2lmjmLTyd/Doo2GL1LTQjYhIAopnjpQEsislwPqMveHee70F1vBWLJ04EcrKoKwsRSuZikizEuuw0nuBuWbWFXgab+uJTLxVQ08gclKsxjm3wMw6ATfizR/8AjjJObc6WKRXSPk5ZtYWuAy4D9gMvAFcF+szJUGkpsLcubBtG0yaBOnpMHas31GJiNRX3HKkJJ5Ze9/LySmL4KKL4KOPyM8PkJbmbW9RrnwlUw0vFZGmLqbGoXPuSTNrBdwG/LHSqQ3AJc65p2vzUOfcTLyN7MOdyw5z7GG8RWmkqQsE4Lnn4JRTYNw4OOggGDzY76hEROos3jlSEkthiw4waxaceircfTdZE6ZQUlK1jFYyFZHmIuY5e8FVQLsD/YGjgz97OOceb6DYpLlKT4e//Q0eeQQOO8zvaERE6k05spk75RQYPRqeeorMjsXMng0pKZCSUkZGhlYyFZHmo8aeQzMbCOwDbALecc4ta/CopPlr1QouucT7fcUKbzzOr37lb0wiIrWkHJlEZs6EtDQIBMjJ8ToTf/xxG++801YNQxFpNiL2HJpZBzN7A2910QV4ewx+a2YHNVZwkiSuucYbrvPaa35HIiISE+XIJLTHHtCmDezYAf/+N4EAtG5dqoahiDQr0YaVTgGOAG4FRgBXAKnAjEaIS5LJE09Av37esJ233/Y7GhGRWChHJqvf/hZ++Ut6FH3rdyQiInEXrXF4MjDVOXebc26Rc+4R4ALg6ODqoSLx0amT12vYuzecfDIsXlzzNSIi/lKOTAJht1e6/npIS+Pa5eMxV+ZDVCIiDSda47APEPp/6f8GjJDtJkTqrUsXeP116NYN7rzT72hERGrSB+XI5NSjB9x3H4M25/Lr//7Z72hEROIqWuMwDdgZcqw4+LNlw4QjSa17d3jrLViwwO9IRERqohyZzMaN44M9fsk130/xFlUTEWkmalqtdGTI5PoUwAGnBFdoq+Cc+1O8g5Mk1K2b97OwEM480xu+c+yx/sYkIhKecmSyMuMP+/2Ja784jyP9jkVEJI5qahz+b4TjU0K+O0CJT+Jn+3ZYswZOOgn+/nf4xS/8jkhEJJRyZBLb2LIHl+z9V/L6dah2Ljvb+1ltvqKISIKL1jjMarQoREJ16QJvvgnHHectUrNwIRx/vN9RiYiUU44Uz+bNcOmlcNllcKT6EUWkaYvYOHTOrW7MQESqKW8gHn88jBjBNf3+zid7HK83sSLiO+VI8VYyzQM71Ftl+/33IS/P2wtRRKSJirYgjYj/9twT3ngDsrP5seVefkcjIiJSVbt2MHcurFwJV1/tdzQiIvWixqEkvs6dYdEivmu1HzgHH3/sd0QiIiK7HX00XHcd/PGP8NJLfkcjIlJnahxKk3Lq+lkwZAg88YTfoYiIiOx2660waBBcdx0prtTvaERE6kSNQ2lSXsm8wFukZuxYeOQRv8MRERHxBALw7LPw+uuUWarf0YiI1Ikah9Kk7Eht7a1ceuqp3spwd9/td0giIiKeffaB7t0xV8Y+hXl+RyMiUmu1ahyaWYqZHWRmx5pZ64YKSiSq9HR47jk491yYMgWWL/c7IhER5UipcOGqm5n5yZHw6ad+hyIiUisxNw7N7FKgAPgMeAPYL3j8b2Z2RcOEJxJBWpq3OtzixbDffnW+TXb27s2KRUTqSjlSKnu+xxVsTusMZ50FW7b4HY6ISMxiahya2XjgIeBvwNmAVTr9DnBG/EMTqUFqKhx+uPf7ggXePMSSEl9DEpHkoxwpoTYH9uS2A5+B/HwYP95baVtEpAmItefwGuA+59wE4K8h574m+IZUxDcrV3ormJ56Kmzb5nc0IpJclCOliuJi+DfDKLjuAW+Rmlmz/A5JRCQmLWIslwW8EuHcNqBDfMIRiay4GIqKoKAAMjNDTv7+995+iJdcAscfD//4B3TqBOweNpqb25jRikgSUY6UCvPmwZIlYAZ9l1/G7GMzyBl4oN9hiYjEJNaew41Anwjn9gPWxSUakQjKk+3SpdC3r/e9mvHj4S9/gbw8GDYMtm5t9DhFJCkpRwrgvbycOBHKyqC0FIqKjIkfXExB36O8AqXa/1BEElusjcO/A1PMrG+lY87MOgNX482zEGkQ1ZOt972gIEzh00+HV1+F0aOhbdtGj1VEkpJypADeFMO0tKrHAgHvODfc4OUmzT8UkQQWa+PwRmAn8AXwGuCA6cAyoBS4rUGiE6GGZBvOMcfAzTd7v+fl0X/zuw0an4gkPeVIASArq/q6aMXF3nE6dvRGt8yY4UtsIiKxiKlx6JzbCAwG7gLSgP/gzVecAQx1zm1usAgl6UVNttE4B1deyX2fn8BRG19qsPhEJLkpR0q5zEyYPRtSUrwFtTMyvO+ZmcA118CIEfCb38CHH/odqohIWDHvc+ic2+qcm+qcG+ac6+ecG+qcu9U5pw18pEFFTbbRmMFzz5Hf+iCmfnl6rd/Wag9EEYmVcqSUy8mBI46Agw/2FtLOyQmeSEnxVtXu1g1+/Wv44Qdf4xQRCSfWfQ5XmtmACOcOMrOV8Q1LpKqIybYmXbpw9YA3ea/TCLj8cu/NbVlZg8YqIslFOVJCBQLQvn2Yl5gdO8ILL8CWLfDxx77EJiISTaxbWfQBWkY4lw70jks0IlEEAt6nxh7DEDtSWzOl/wu8MeBqWLbMaxymxNxpLiJSkz4oR0qsDjsMVq+Gdu38jkREpJpYG4fgTbAPZzCwKQ6xiDSYMkuF6dO9yYotWsCGDWBGcXGXyHsniojETjlSYlfeMHzySdi1C8aO9TUcEf0VquMAACAASURBVJFyERuHZnY13hLc4CW9hWZWHFIsA+gIPNMw4YnEWSDgLVRz9tnM++owPth4D6Sk0LevN48x1uGq2dmwadNA8vIaNFoRSVDKkVJX5XPZc9903qa9ubmw334wdKifYYmIANF7DlcCrwd/vwD4CPgxpMxO4Cvgj/EPTaSBmFHwu/uZePIBlJIClfZOHD5cPYgiEhPlSKkfM5g/Hw4/HEaNgo8+IntMD8BrL4qI+CFi49A59yLwIoCZAdzmnIu0s5xIwiouptrQ0fw9DiWtTSlFhbvLle+dqMahiNREOVLiomNHePFFOPJIGDWKQMu3KP7/7N15fFTV+cfxz5NA2AURTESlglVRREFwlxpRrKJVkbobRVsRbVW0ta5Vq3Wv1qUFg11Q/NWKW1utKFaNO4hY1yqoLCoSFRUUBALJ8/vjTMjCzGSSzJr5vl+veYW5987ck8vNfe4595znFHTMdKlEJI8lOs/hKQp6ks1iTTsxdSrMmgVvvQX9+4f3EJk7sbqwwbZVVd703IkiIo0oRkqr7LhjCE6vvKI5eUUk4xJOSGNmRcDBwHaE7Gv1ubtflcyCibRWZWXoKlo7c0XjrqPl5SEHgJlT1B7Ky42SHqvhmyplkRORZlGMlFYZPRrefJOKswa16OPrxzFWJK1EIpKnEqocmlkf4AVCum4HLLKqfnY2BT7JKgsWQPv2oVJYq37X0bIymDQJVq0ypk+PdCc99Ux45RX417+A/pkquojkkGTHSDM7Ezgf2Ax4B5jg7s/H2HYKYcxjY9+5e5dE9ylZYFCoGG7/zSx47EsYNSrDBRKRfJToZG83Egba9yUEvd0Jd85XAx+gu2jJQv36wdq1DZdVVdGg6+gGExWfeCJ8+insths7LXsubWUVkZyWtBhpZscAtwLXAEOAl4DpZtY3xkfOIVQi67/mA9Na8otIclRUtPApnjvj558PRx0Fc+YkuVQiIk1LtHI4HLgJ+DTyvsbdF7r7ZcADwG2pKJxIa9R2HS0ogMJC6NQpvI+bcGbEiDBIsVcvzn/jBHac/08qK9NWZBHJTcmMkecBU9z9Tnd/193PApYAZ0Tb2N2Xu3tl7QvYmlAZvbOlv4xkkBm/2WEa9O4Nhx4KixZlukQikmcSrRxuAnzq7jXASmDjeuueBkqTXC6RDbSkJbasDHbfPfTWmT8/wXkMt9mGqRPmsA0fMPXjUvr38/WJbEREokhKjIyMWxwKzGi0agawV4JlOQ14x91fSnB7yTJfFZXAY4+FMRGjRsGyZZkukojkkUQT0nwC9Ir8+0PgQOA/kfe7AauTXC6RpCkqCq9Ep6iorITTz+vCGmANHWA1nH66M3Lo15Ts0LPJz6ciMYCSDYhktWTFyF5AIfBZo+WfAQc09WEz6w4cDVwUZ5txwDiA4uJiKhK4qKxYsSKh7fJRS47NsmWDAaioeD32us8/p8dll7HTBRew6NxzWXRytGGliX1nJuiciU3HJjYdm+jSfVwSrRw+A+wL/AMoB/5oZoOBtcAPI8tE2oSoiWy8igXDT6LkkYthr0Qb8EUkT2RLjDyR0CMoZl8Hd58MTAYYNmyYl0abA6iRiooKEtkuH7Xk2HTuHOLLgAGlGzRa9ugRfpbWzs+09970GzaMfoWFcRsJG3wuSVrTKKlzJjYdm9h0bKJL93FJtFvppcAkAHefRBgA35kw8P0G4BcpKZ1IBkRNZOPt6ddtaYiW5eVUrXFWrizMivGIseZ4FJG0SVaMXApUA8WNlhcDiVxtTgMedPevEtyfpFmsuXdj2n33MGj+0085ZImGkYpI6iVUOXT3pe4+r9772919H3ffxd0vdnd1K5U2I2oimzsLKPnvdDjgAKaOf4E5M9cyf36XxIK7iLRpyYqR7l4FzAFGNlo1kpC1NCYz2w3YGSWiyVr1596trq6be7d+I2NVFSxfzoYNj7//PefPG8cPK+9Ka5lFJP8kVDk0s6fNbECMddua2dPJLZZIZkVNZLPxxlTe+Qint/sLVRRRU1MQNbiLSH5Jcoy8GRhrZj81s+3N7FagD3BH5PvuNrO7o3xuHPC+u1c0s/iSJrVDFuqrnXsXmniqePXVzOmxP7+a+xN45JG0lVlE8k+i3UpLgY1irOtGGGshkjExW1tbYYM5EIEFHxXSvnPD6F7Urnp9cBeRvFRKkmKku98HTCB0VX0d2AcY5e61cxr0jbzWM7NuwLHAn5pVakmreHPvNvlUsaiISwc+zLxuu8DRR8Ozz6a9/CKSHxKtHAJ4jOVbAyuSUBaRFmn2GI5WiBrcv11Dv3uvgXXrUrdjEcl2SYuR7j7R3bdy9w7uPtTdn6u3rtTdSxtt/627d3X3G5pdakmbeHPvNvVUEWBVu25cOOixEOguuQS87pRLRQOpiOSnmNlKzewU4JTIWwcmm9m3jTbrBOwIPJWa4onEV7+1FepaW0eOTGzqiuZmYasN7mPHAtTQoYNRvtu9lNx+Cbw5A/7+dyDBOTNEJGcpRkpLlJXBpEkhVk2fXhen4j1VrG95+17w5JPQsSOYAXUNpGah3lhenuCcviIiUcR7clhDyJpWDVij97WvLwkZ2n6S2mKKRJdIa2uy1Y5H7N9/JfPnG2UVP4G77oJXXoEhQ9h5mbr7iOQBxUhpkWhDFuI9VdxAnz7QsyesXk3lSb/i9HE1cZPciIg0R8wnh+5+F3AXgJk9A5zh7u+lq2AiiUi0tTXZioqgS5fqusB90kkwZAgcdRTbrPgvb/SIPsRIk9mLtA2KkZJssZ4qxrRoEQsefp32VStYVW/Ia20DaSK9Z0REGkt0Kov9FPQkGyXS2lpRkabK2KBB8NprPLD5OeH9M8/AkiVp2LGIZJJipCRLtKeKMW23Hf3uvYa1NQ3b+Rs3kMabC1fz5IpIYzErh2a2tZn9KMryEWb2ipmtMLP3zWxcaosoEl/UaScypXNnqtYaK5dVUXncubDzzvD4463+WiUbEMkuipGSDUoOHUb5+R/Sie/oygo6dfLY3VFFRBIQ78nhr4EL6y8ws+2AR4HtgSeA1cAkMxvdnJ2a2ZlmtsDMVpvZHDMbHmfbKWbmUV4rm7NPadua1dqaQrWJAf77dhH9l73G1A4/hYMPhl/+MtTwWvGd6cjGKiIJS1mMFIkmViNh2Q2DGLdtBQ8UHsP8f7+XtAZSNUqK5Kd4lcPdgfsbLfs5UATs7+5jgJ0JWdh+nugOzewY4FbgGmAI8BIw3cz6xvjIOcBmjV7zgWmJ7lMkHTaYp2pNAad/eTWVYy+Em26CvfemU3XzZn1pcu4rFMBFMiQlMVIkmqYaCV/fbBS37HkfJfttHxa0sDEy0f2JSNsVr3LYB3i30bKDgf+6+ysA7l5DmHR3cDP2eR4wxd3vdPd33f0sYAlwRrSN3X25u1fWvghzRvUH7mzGPkWarbljFaNnTjUWjLsWHnoI9t6bVYVdm1WGprKxKoCLZEyqYqRIA4k0EgJ18eXaa8NAwm++Sen+RKRtilc5NEIq7vDGbFNCpezFRtt9CiR0x2tmRcBQYEajVTOAvRL5DuA04B13fynB7UXSIm7m1NGj4ZZbwnYr3grZTb/+ulXfmUgAV7IBkZRJeowUiabZUzYNGACzZ8NBB7WogpiJKaJEJHvEnMqC0HVzd+A/kfcjCRP9PtNou02BpQnurxdQCHzWaPlnwAFNfdjMugNHAxfF2WYcMA6guLiYigQf/axYsSLhbfNJrhyXZctCw3xFxetp2191dfUGx2bChE257rrtMXPat3cmTJjLe+99znvv1X2u71fPUfP636h6/HHeu/BClu2yS9x9xfrOd97ZiIKCnaj/Z1xQsI4HH3yTgQO/Wb8/SN9xgdw5ZzJBxya2HDw2qYiRIhto9pRNo0fDtGlw9NHwwx/SpfBxVrbrnrr9iUibEq9yeBfwGzNbTqi8XUUIcI2f+pUC76ekdBs6kfC0M2bnOXefDEwGGDZsmJcm+NikoqKCRLfNJ7lyXHr0CD/TVdYePWDZsmUb7K+0NHRFXbXKIvNU7QDs0OBzz/b4GQUP70HHE05g8C9+AeeeC9dcAx07Rt1XrO8cMADOP7/htjU17RgzZpf1iXnSfVwgd86ZTNCxiS0Hj002xkhpg2qnbBo7FszCU7wmM5LWqyBe13kU5wx+jtA2n6L9iUibEa9y+EdgOHBb5P03wAnuvqp2AzPrDBxHSDCTiKWEbjjFjZYXA4n0Zj8NeNDdv0pwfyJpV1QUXnED6dCh8Npr8Ktfwe9/D336hIymzfjO1gbw2vvw3HpYI5I1UhEjJQ+05JpbVgaTJoXhA6GRMIEPRSqI/75oOTWWWMWwVfsTkTYhZuXQ3auAI82sH9ATeM/dG08fUQAcBHyQyM7cvcrM5hC639TP8jYSeDDeZ81sN0LmtwmJ7EsklUKymtcJDwVaqHNn+MMfYMwY2Csy5HbBAujbFwoTC+QK4CKZkYoYKRJPQg2PjY0ezeO1TRNPPQXbbx8aI1O1PxHJefGeHALg7guAqMOQ3X0FMKeZ+7wZmGpmrxAG7o8nZH27A8DM7o5890mNPjcOeN/dK5q5P5Hstt9+4efKlbDvvrDFFjBlCmy7bUIfT0UA11NFkcSkIEZKHkvVNbdj9Uo47jjo2hWefBK23jo1OxKRnBcvW2lKuPt9hKd/lwKvA/sAo9x9UWSTvpHXembWDTiWkBJcJGfFnZOwc+eQgvy992DnnUN30+rqKBuKiIgkpqoKPlvRhcq7nggBaJ99wvxHtHyeXGXCFmm70l45BHD3ie6+lbt3cPeh7v5cvXWl7l7aaPtv3b2ru9+Q9sJKTmjunISZ0OSchGZwwgnwzjtwwAFw3nkh+iYw5YWIiEhjDeLOmCFMPf8NKCiAH/yAqZe9r3lyRWQDGakciuSbZk0qvNlm8K9/wV13waabQvfEU5CLiEj+idZAGjXuXLkFlf+YSWWPAZx+7fc00b2IbECVQ5E0aPakwmZw0knw4INQUECvNYu5+u3DYN68lJdVRERyX8y4s25LFkx6nPad22+4ThPdi+Q9VQ5F0iCRSYXjjeH43sr/sdPy52GnncK4xMZfJiIiUk+8uNNvcHfWrrVG61wT3YtI7MqhmfVtziudhRbJNbVzEhYUhFkqOnVq3pyEc3qO5ORh/4NDD4WLL4Zdd4VXX01toVugtBQmTBic6WKIpJxipGS7eHGnbp3TxVbSie8o3+tuSnqty3SxRSTD4k1lsRDwZnxX82ZYFckzrZ2T8KsOm8EDD8DDD8PPfgYTJ8Jf/hL3M1VVYX+VlZqrSiTJFqIYKVkuXtwJ64zVqzrx2B5XUXLHFTD6Abj33jDlRQuVlsKyZYN5/fVWF19EMiBe5fBU6gJfB8LUE98A04DPgBLgaKAbcFUKyyjSZiRlTsLRo+vmRgT6r3iTjdd+DhzQYLPaLHVmIRNdeXm4GRCRpFCMlJwQL+6EdQWUTLocBvWGs84KvVNuuy39BRWRrBCzcujuU2r/bWa3AK8Bo93d6y2/EvgHsEMKyyiSU1IxpcYG39mjx/p/nvjR1Yz4YhqccDzcdBOUlDTIUgd1mehGjtQTRJFkUIyUdEv5dE1nngnbbgvDhqVnfyKSlRJNSHMcUF4/6AFE3t8BHJ/sgolIYkYsmgKXXRa6nA4YABMnsuCD6iazo7Z08mMR2YBipLQNBxwQGh9Xr4ZRo+DJJzNdIhFJs0Qrh12B3jHWbQp0SU5xRKTZOnWC3/wmzGQ8bBj87Gf0e+n/4mZHbTAxcpTJj1VxFGkWxUhpW5Ytg08+gYMPDl1MvTnDa0UklyVaOawArjGzXesvNLPdgKsj60Ukk7bdNrTyPvAAJeccQ3k5FFoN7QprGmSpizoxcr3Jj5uqOIrIBipQjJS2pKQEXngBDjkEzjkHTj01PE0UkTYv0crhz4E1wEwzW2hms8xsIfAysDqyXkQyzQzGjIEOHSg7bh1zinbnETuM+dffT9mJoeU35sTIC5quOIpIVIqR0vZstFHIjn355TBlCvzkJ+tX5VLvknhzCIvIhhKqHLr7AmAAMB54Cvgy8vN0YHt3X5iqAopIC7Vrx8QdJvK9Tp9TcvbRsM8+8NprcSdGjldxzCQFd8lmipHSZhUUwBVXhEripZcC6l0i0tbFm8qiAXdfC9wZeYlIDpi70a6cOWQmz5w8BS68EIYNo2TmTMrLd2Ps2PCgsaiorsspxK44ikhsipHSph1xBACVS5zTT1lLTU0RoEzYIm1Rot1KRSTFUtVNx60gjBeZNw9+/3vYdVfKyuCYgW8xeNA65s+vm/+wpCRUFAsKoLCQBmMVRUQkvy2YW0V7a9iCmA29S0QkeRKqHJpZkZldbmbvmdl3Zlbd6LUu1QUVacvS0k2nR4+QWMAMvviCP/1vL/7+/lBK/vd0g83KymD33WHQIBpUHEUkOsVIyRf9BnRgbfvODZZVralR7xKRNiTRbqU3Aj8DpgMPEQbei0gzRZtUOCMT1vfqxfXb/ZXx88+H/feHH/0IbrwRttsOCC3BRUXN339VFaxcWUhlpZ42ZrPa8Zua5DppFCMla8X7O2/uNSD0LjHGjoX2rKWgZh3lXS6mZJMbgPZNfbxV4l23dE0TSZ5EK4c/Bi5396tTWRiRfFSbBGbVqrpltd10UlbBMuPZ3j/m5U0OZcYht8LVV9c9KtxiixZ9Ze3TT+hC//6hO6qeOkqeUIyUvFFWBpMmwapV7Zk+uZKSFYeFIOYOVVVUVXVQI6FIDkt0zGFXQkpuEUmyeNlDU62qoCNccAF88AHcccf6iuHQr56kXU1V1M9Eyxxa/+lnTU2BpsCQfKMYKXmlqAi6d4eSXbeE/fYLC3//e6ZuexWvzKxh/vwuymQqkqMSrRw+AvwglQURyVdZkQRm001D0hqADz/khrcOYsqrA+H++0NrcBOydQqMdNOUG3lLMVLyXmXvQZz+0SVUe4EaCUVyWKKVw9uB48zsMjMbZmb9G79SWUiRti6rksD078/FOz7CWusARx8dCtbEQI5MPv0UyQKKkZL3Fnx/JO27dWiwrKi9510joUiuS7Ry+DKwDXAFMAt4P8pLRFphfTedTI/RMGPWJqP4ybA34C9/gSVL4OCDYenSmB+p//SzoKBGU2BIvlGMlLzXrx+sXdfwtlKZTEVyT6IJaU4Fmu5bJiJZpTWZ22qsEE45BY49Fl55BXr1AneO/+h6ntr0OOB7DbavTVLwxRcref75bqoYSj5RjJS8V9tIOHYsQA0diqB8cmGIBY8/DiNGhFZQEclqCVUO3X1KisshItmqUyfYd9/w7w8+YOzCKxi78HI4ZzxcfDEUF6/ftKgIunSpTnrFsKoqZHNV9jvJRoqRIkHURsK5c2HUKBgyBO65B7bfPq1lUvwQaZ5Eu5WKiMA223DCbu/zZHEZ/PGP0L8/XHghfPttynZZO0XGW2+h7HciIllug0bC7baDhx6Cjz5izY67cNv3b6ub2DfFFD9Emi+hJ4dm9pcmNnF3/0kSyiMiadLSLqdfdNySG7f7E4c8dwFccUWItpddFlbGyWzakkmK60+RAazPfjdyZGpbgDWhsjSHYqRIE444AvbYg9cG/oSzPzwHDpkOjz0GZinbZabih0iuS3TM4Qg2HE/RE+gGLIu8RCSfbLMN/N//haeGnTvD2rVM/O9wZnQ9CFb8Erp2bfUuaqfIWLWqblntFBkK7pJFFCNFmlJSwkU7PsrBlX/lgsPWhIqhe6i9FRYmfXeKHyItk1C3Unffyt37NXp1B0qBSmBMKgspIulVUdGMp2bduoWfX3/NN+17MmHJb0Lauuuua3V301ROkaE5CSVZFCNFEmTG9M1OhTPOCO/vuw922w3eeKPJj1ZVwfLl0edNjLZOUyyJtEyrxhy6+3PA7wlzPIlIPtt0Uy4c9Bgnff8JGDoULrooROF581r8lfWnyCgsRFNkJEm8myxJHsVIaaua1YAYT+fO8MknMGwY/PrXsGZN1M3ijR2MtU7xQ6RlkpGQZj4wJAnfIyI5oKmKxZtddgtpy19+GY4+Gr7/fQAGLXueLuuWN3t/ZWWw++4waBDMnx/eS8spQUPaKUaKxHLYYfC//8Hxx8Nvfxsymr70UoNN6o8drK6uGztYWRl/HSh+iLREqyqHZtYOGAt8kpTSiEhWa1bFYo89YOLE0Gy7ahVXv3M4f5+1VUhes3Rps/ZbVATdu6vFt7WaupGS5FKMFEnAJpvAXXfB9Onw3Xfw6acNVteOHayvduxgvHX13yt+iCQu0WylT0dZXARsC2wCjE9moUQk+7Qq81unTvxypycpW/Rbhl91Fdx0U/jw+efDZpulvOzpku3zaSlBQ2ooRookwUEHwbvvQseO4f1tt0FBAf1Gn8HatQ0T1tQfO6hxhSLJleiTwwLAGr2+BR4C9nf3O1NTPJH8kbQxHCmSSAttPPO6DeXXOz4Mb78NY8aEwL9oUVgZZwqMXJEL3TWVoCFlFCNFkqFTp7ospk8/DWedRcmPdqX8/Pejjh3UuMKWU1I2iSWhJ4fuXpricohIlkukYhEquK8TkjTGMHAg3H03XH993VPDM86Ar7+GX/0qJLPJMbkyn1btjdTYseH+q6hIN1LJoBgpkmRm8PDD8MADcO65lF25Ldb7XCYXX8q0J3s2uGaVlcGkSeG6O326rmcirZWMhDQikgeS3kJbvztpcXGI6sOGwYgRYXLkBJ8mprv1M9r+WvtUNZ2/gxI0ZD8zO9PMFpjZajObY2bDm9i+yMyujHxmjZl9ZGZnp6u8IvVVVMAtt7ze+i8yg6OOCl1Nf/lLjln6B7Yvmh815mhcoUjyJFw5NLNBZvaAmX1hZusiP6eZ2aBUFlBEskfKKha/+Q18/DHceGOY+uKQQ+DKK5P05amXa901dSOVfMmKkWZ2DHArcA0hy+lLwHQz6xvnY38HDgLGAdsBRwFvtugXEck23brBjTdyzB4fMbfbsLDs17+GadPaxJAEkWyTUOXQzHYFZgH7AY8CN0Z+jgBmmlnu9QMTkRZJVcWi9PDulD76y1DrnDq1ruY5cybHf3Qt3dZ+ldwdJpHGveS3JMfI84Ap7n6nu7/r7mcBS4AzYuz7QGB/YJS7P+nuC919lrtXtPw3EkmN1syx+lVR5IK6ejU8+igccwzss08Y7N1CGncnsqFEnxxeC7wNbOXup7j7Re5+CtAvsvzaVBVQRNqGhG8KiorgxBNDVheAJ55g3IKLuX/mFjB+fOhilKCWBv6W3MCou2ZeS0qMNLMiYCgwo9GqGcBeMT52BDAbOM/MPjGz983sNjPr2pJfRCRVkpa0q2NHePVV+NOf4MMPYY89uOTdE9hkzadNf1ZEmpRQQhpgD6DM3b+tv9DdvzWz64G7kl4yEWkzam8KzMJNQXl5MypPl1/OqY+MZszi2zhkypTw4RNPTFk60NaUtagovPTEMO8kK0b2AgqBzxot/ww4IMZn+gP7AGuAMUAP4HagD/Djxhub2ThC91OKi4upSCBF8ooVKxLaLh/p2ETX+Lh89VURp522OzU1YUqKVavgtNOq6dJlFj17ViX0ncuWDQZqk54BW29N4V/+Qt9772W3ex/lxl6XUFExL3Q1NYv9uXjfmaAJE8LnWjK2MlvOmZb+7qmULccm26T7uCRaOWyqU7c6fYtIVMnI5Dm/607cuN2fOOT+a2Hy5DAGBaC6mlFLpvBM76OBbs0qV7Q5CXMl66hknUzGyILI9x/v7ssBzOznwBNmVuzuDSqa7j4ZmAwwbNgwL03g0XpFRQWJbJePdGyia3xcXn4ZOnSANWvqtunYsZDNNtuLPfdM7Dt79Ag/Nzjeo0Zx0MKVVBV2oXTf7cOY9Z13DvPo9uwZ+3PxvrOlZUlAtpwzrfkdUiVbjk22SfdxSbRb6SzgYjNrcPdlZl2AC4CZyS6YiLQNrc3k2UDv3nDJJXB2JBHj00/zq3k/5YGZm8NZZyXc5TRW96akllXySbJi5FKgGihutLwYiNXJeQmwuLZiGFH7hxAviY1I2qQ6adfqwi6Rf6yGnj3DVEn9+8PVV1Px6IqsnkNYJNskWjm8GBgILDKzu83sejO7C1gI7AhckqLyiUiOS8ZNQZg/McqKkSM5Y8hMXuh1RHiiuMMOYSqMzz+P+V31nw5WV9c9HayszL2so5I1khIj3b0KmAOMbLRqJCFraTQvAn0ajTHcNvJzUWLFF0mttCXt6tQJ7rkH3ngD9t0XLr0Utt4a5sxJ8o5E2q6EKofu/gphTMXTwA8J2dQOAp4B9nD32SkroYjktFTfFLy70e5cO+Bu+OQTuDaS96NXLwB2+fqpDZIUxHs6mGtZR5VpLzskOUbeDIw1s5+a2fZmdith/OAdAJHK5931tv8b8CXwVzMbaGZ7E6bCeMDdY7eSiKRZWpN2DRoE//xn6M/6gx/AgAFh+ZtvwjffJPQVur5KvkpozKGZdQfmuvsGg9tFRJpSVgaTJoWndNOnp6iy1bs3XHhheAGsXcuv3z2OjdZ+BaN/BOPGwYEH0q9fYdyng2kpqzRQWhqSI7yePXkRmiWZMdLd7zOzTYBLgc0I2U5HuXvtU8C+jbZfYWYHEJLQzAa+Bv4BXNjasogkW9qTdu2xB9x/f/h3TQ38+MewdCmcc05keMLGaSqISO5o8smhmbUjtEoemPriiEhblfaJ19u35+dDXuK+LX8JL70Eo0ZB//6UzPpnk08HNUm8JCoVMdLdJ7r7Vu7ewd2Huvtz9daVuntpo+3nuvuB7t7Z3Td39581zpwqkvcKCuBvfwtPEq+4Arbaip8suITuVV9kumQZ0Zo5J2PR09aWybbj1mTl0N3XEdJoV6e+OCIiybO40/eZ3P86+Pjj0Hq87bbQsydlZXD4TvM5/nsvMH/eOs1JKC2mGCmSHjHHnjexroFhw+Af/whjEn/4Q0746FoGL4980Nte4v1YlY6kzTkpcm55sAAAIABJREFUbVKiCWnuAX6ayoKIiLREQq2fRUWhO9GTT8Lw4QAcvXQSd88fTsmuW4auqHPnJm9/zZSK74wn4RspSZRipEgu2WknmDaNk3d9l+d7HRmWXXMNHHlk6GnShsVLyiYCiVcOFwK7mtlsM7vUzH5iZqfWf6WwjCKSRbKpYtGa1s87+13DpQMfht12g9/9LiQsOOiguK3HqWhtVQtum7AQxUiRnPNx5+2oscLwplMnePZZ2Htv2Gsvhn/xEAXe9joEaMomaUpCCWmAP0Z+bg4MjbLegb8kpUQikpeiTUofT2snrK8uaB+mwPjnEeHLpk4Nc2SZgTvjFlwITx0Y+uQUFrZ6fy39HWq7BGVLhVyiUowUyUEN4s5554UL8F//CjffzFULxvDIZqcBk5v1nfGu2dmQfCuRKZsUd/Jbok8O+zXx6p+S0olIXmjJ07NEWj8T7q5ZUgLnnw+//jUAvdd8wmGf3gEHHADf+x5ceCELnprf5P6a+1RVLbhthmKkSI6JGne6dIGf/xzmzePyHe7n0ZLTwsYffAA//Sk5m1K5nlybsknSL9F5Dhc19Up1QUWkbWrp+IemWj9b013zi45bcuSelXDffTB4MPzud/Q7cS/Wrm7Yxahxa2tzJdKCK9lPMVIktzQZd9q149neP2buRruG96+9FjKdDhkCw4cz7NN/smLZupzN9NmaOSezLbOmJF+iTw7XM7OCRi9LRcFEJD+09OlZvNbPZAy4ryrsBEcfDY8+CosXU3LrxZT/cR0FBdDR1tCpYA3lJz5PSefEJ1SeMGFwwr+D5CbFSJHs1+y4c/TRsHgx3HQTU+fuxsT3RzLvje/o399zdpx4tk3ZFC1GtiW5VKmOWTk0sxIz+7eZnVRvWSGwttFrmZkVN2enZnammS0ws9VmNsfMhjexfZGZXRn5zBoz+8jMzm7OPkUkO7Xm6Vms1s+kd9csLoazz6bspx3YfXc4bfN/M3/z4ZTd+YOw7qij4F//atFXt6YFVzInlTFSRFKrRXFn442pPP48Tl/xO1bRmW/ZiFWrLDQ8nnpxeLK4enVKyy2SDvGeHJ4J7ALc32i5AX8CrgSuAj4Fxie6QzM7BrgVuAYYArwETDezvnE+9nfgIGAcsB1wFPBmovsUkezV2qdn0Vo/U9lds6gI3tz6SEoWzYKXX4bTToPnnoM77qjb6MUXww6b8Z3Z1IIbSy61fKZBSmKkSD5L1zWmpXEnNDw27AxQ1L6GBU/MgxNOgD59+PkH59B/hW5RJXfFy1Z6EHCnu69qtNyBcnd/DcDMvgBOAn6T4D7PA6a4+52R92eZ2UHAGcBFjTc2swOB/YGt3X1pZPHCBPclIjmgrAwmTQrdP6dPb30lqTbwjx0bko8WFaWgu6YZ7LFHeN18M3z5ZVi+eDHssw/06AGjR4fuSPvvD7SP+3Ut0dwMr5JUqYqRIm1WNmW/bCruRLu+Rm14XFtAv9nT4N1n4M47OWzaHfx48W1w/7TQq0Qkx8SrHG4HXBZleePxE/Mi2zbJzIoIab5/12jVDGCvGB87ApgNnBfpvrMKmA5c7O4rouxjHOEJI8XFxVQkeCVasWJFwtvmEx2X2HRsoot1XK64IvyMdci++y6MNXjvvdd5773E97ds2eDI9zbMIrflljBgwBCqqgq4/vq36NmzqsG+Y32uqbLG+xzvvoutXUvPa66h9zPP0GvaNNr99a+s3Wgjtu11Ny933ifqsYn3nbHWzZixKTNnbo+Zs9VWznnnzeXAAz/fsExJFPd3b4UvvhjC6tXGQw+9RM+eiT9xzbCkx0gRSa+iovBqXDGsTWhmFhKalZeHymTMhsc+BdBnf9h/f476eCkjPr+Xcw48MHzZpElh7PpJJ1FUfVjaf8d0UoNly2TbcYtXOewINKh8uXu1mW0GLK23eHVk20T0AgqBzxot/ww4IMZn+gP7AGuAMUAP4HagD/Djxhu7+2Qik9IMGzbMSxPsn1BRUUGi2+YTHZfYdGyia+lx6dEj/GzuZ+N9rnfv8PPIIzdse6rLSJ68/a03ciRcdFEYfzJjBu2nTePLD3elcFUhpUuWwGOPwZFHwg9/CJ07x/3OaOsqK2HUKHAHd2PNGrjllh04++wdUhpYWvp/FM/UqUQaA2o48cS91t+E5YBUxEgRybCm5p9t6onj8va9eHjzszine2RBYWFIm33ssTxUuBH/2ehH8OTJ4QvbkFgVaokvG49bvDGHnxNlbiZ3/8zd6+dz7wd8keyC1VNA6KZzvLvPcvcngJ8DYzTIX0SyWseOcNhhcM89fNmhT1j2+efw73+HymHv3vDjH7P/Z38LNb0EtZX5EevfhNXUFLQoq2wGZUuMFJEkSuT62qxx4uPGwcKF8NRTvNBrNAcs/xdcfXXd+jfeCGm1UyDhuX5bKRkZwuNJ93j3dO0v1cetpeJVDl8AEqm7ngS8mOD+lgLVQONKXTEQ61AsARa7+/J6y96N/IyXxEZEJPuccw589hk8+SScfDK8+CLHfPK70GwIoeL48cdxv6KtzI+Y45XcVMRIEcmwlFxfCwpgxAiuGzCFEQPnwZQpYfnSpTBsGGyxBWd9cDaDlr+QtIpia+b6ba4cv5ZnTLYet3iVw9uAEWb2OzPboPupmbUzs5sJfbJuTWRn7l4FzAEaP0sfSchaGs2LQB8z61pv2baRn5pYWERyT/v2cMABMHEiLF7MRTs+GpavWhUSGPTtC0OHwpVXsvWKNzZ4qthW5kfM8Upu0mOkiGReqq+vVQUdYautwpuuXcMUGHvtxY8+ncztrw+HzTeHGTNatY90P5FK9FqujNcNZWsMjFk5dPeXgV8B5wKfmNlUM7s68poKfAKcDVwU2TZRNwNjzeynZra9md1KGD94B4CZ3W1md9fb/m/Al8BfzWygme1NCLQPuHtqsy+IiKRaQUFdl9NOneC11+C666BDB7jiCq6e80N2/eBvIaivXRuiPE3Pj5gLQbj+TVhBQU1OVXJTGCNFJMNaM/9svK6cVVWwcmVh3bqOHUOD4IMPcsRen3Pl9vfCD34AW28d1v/jH2GKjAcegBUb5GCMqbVPpJrbHbWtNFimW7Yet3hPDnH3mwiJYl4nJIO5KPIaE1l2oLvf2Jwduvt9wATg0sh37AOMcvfap4B9qdddNJKR9ACgOyFr6TTgWeDU5uxXRCQnDBgAF1wAL73E1Nu+pq99wq2Vx4ZuQRe8DZtsAj/6EdxxB5vXfJwT8yPGU3sT1r//ymbfhGVaKmKkiGSHlsw/G68rZ+26+fO7RO3muaxmIx7ucCyVt02rqxxWVsITT4QKZK9ecPDB8Ic/NNn1NJEnUhUV0TNyN9UdNVbFsTUV6nyWjcctbuUQwN2fcfeDgG5ASeTVzd0PcvenW7JTd5/o7lu5ewd3H+ruz9VbV+rupY22n+vuB7p7Z3ff3N1/5u7ftmTfIiK5oLISTv9Vd9Z6O9bWFIZuQRN3pvLYCfDOO3DGGdw/qy9/enXnzI9eb6WiIujSpTonK7mpiJEiknvideVsKvlWzArZ+PFho2eegZ/9LNQe/vCH8JgJQpfUF16AdesalKWlT6Sa6o7aVMWxJRVqyb7j1mTlsJa7V7v755FXatIqiYi0URt0J2pC1G5BHQtYcNo18OGH8M47TOp/A5922ho23TRs8ItfwBFHQHk5xas1JDudFCNF8lu8rpzx1jU5PrBduzBG4KabYO5ceDnSS72mBiZMgOHD+bZT7/B08c474ZNPgJY9kWpVOVupuTEyU1o6ZKOlmWNLS2HChMHN32ErJFw5FBHJRrG6xmTT/prqThTtO+N2CzKDHXbgvi3P57KBD4XmYYBu3cIEjuPHc9+srbhr9vYNU6aLiGSxdE29kArxrtnx1jV7fODGG4efBQXw/vtcvsM0nut1ZKg0jhsHt9++fgc/+PbfFHddmfATqaSWsxmaipG5Lp2ZY5NBlUMRkRRq6Vx+LeoWdMUVIVK/+y5/2Pr3VHbYKkybASHj6eGHw5VXhpuIRt2QEpHLN24ikt1y7Qa6sXjX7HjJt1qVsbJ7d57tfRQ3bvfnMAXS22/DGWeEdS+9xHVvH8ojL24cktxcfjk8+yysWdOi3yFVmTVzfL7bJmXrXIbxqHIoIlkh3U8A06U1ra0tGqhuBgMG8MAWE7hgp+lw221h+dKlsHhxqEDutVdIbnD44eFmIQG5fuMmItkrUzfQyY478a7ZsZJvJS1jpRkMHFg3TcYee/CLQTO4f4tzYfVq+O1vQx/FOXPC+vffDw2FVVUJ/Q6pyqyZrXP9JUsu/n4bzM0kItJWZENls7WtrUVF4dXqgeq9e8Orr4ZK4lNPwX/+E5IcLF8e1r/2GtxwA+y/P4wYEWqAZkDDGzeou3EbOTJ7BtCLSO6qvYGOzNQD1N1AZ+M1Jl5siXfNjpV8q6wMJk0Kv//06Un6nTt2ZE7PkczpOZLjK4Bly+C552DXXcP6O+6Am28Otbzdd4fhw8Nr//0pKiqI+jukopzZOtdfsuTi76cnhyIiKZR1c/n16gXHHBMSF3zwQZgWA0KXpOeeC2NWvv992HLLML9WZWVOtnyKSO7IxRvoZEt5xsoePeCww+ou5hddFOZPHDcOvvkmjE8//vj1jYL7fX5fWL94cUrLmXUxMsmydS7DePTkUEQkxWpbW7/4YiXPP98tu4JC5EaAww8PNw5z58LTT4fupi++CN27hxu3VWuBuhpiVZXTr59lpswi0qbU3kCPHRsuSUVF2X8DnfN69YIxY8ILQgXxww/Xx4Syj34LR70d1m25Jey5Z4gRnJD0ojQVI6uqwtPKysr0nBPJ3l9KngynkJ4cioikQU7M5RcZr8iZZ8J998HChdCpU7hxO/QROrKK7iyjE99RXnAmJReOrfuse6ZKLSJtQDZOBp5XNtoIhgxZ/3bcLnPCQPNbbgnj1GfODEMSIFzv998/zL04ZUqYe7e66Rl84iU1ixUj0z3ePVX7y7a5DONR5VBERJpU9tCRDNmjI7tt/y3zb/4nZUevgc6d6zbYbbdws3DZZfD442F8i4hIM+TSDXRbt66gKFzXzzkH/v53WLQojFMEulYvD4PQp06FU06BHXeEHj047NOwnjVr4L33GlQYW1LpSneiolzMLJoK6lYqIpKj4iVFSEU3nKIORtWmW1Jy7nHAcXUrampCy/Lzz4dxKzU14SnkBRfAtdeGVuYPPghjGU1dUUUk+2VDQrOsU1QEwIp2PUJCs5qaMBRh9myYPZuPnh8QtpszB/beOzQg7rwzldvty+n/dxU1NaHakWhSs3QnKsq1xEiposqhiEgbU9tCaxZaaMvLU9xFq6AAbr01/HvFCnjlFXjpJRg6NCz78EPYdlvYZJPQb2yPPcLPPfeEbt1SWDAREUmZggLYfvvwOukkbqld/vn3Q3fT//4XXnuNBdNm037tClbRY/1Hi9atZMEVD1By6Caw007gW27w9elOVJSpxEjZ1hChyqGISBuS8WknunYNU2GMGFG3rGdPmDw51Fhnzgwj8t1DJrwxYyJzjb0OlKahgCIiklKbbgonnxxeQL9Pa1i7NbC6bpOqdQX0K78Ayj8D4NHC7hyx3UygR5ha6csvKRk4kPI7NmPsKZaWREVKjBSocigi0oa0tltMaWn4mdSWzJ494bTTwgtCRoLZs2GXXZK4ExGR/BNvCEG2PJEq6VNA+eTGla5OlBw+D95+G958kxlXvcOX7TYNH5g4Ef78ZwDKevRgi877MLvDPpz01q8o2czgq69CAp127ZIes5rKLBrveKciflZVwcqVhWnL1ApKSCMi0qbkxHxh3bvDAQeESqOIiLRIujN5tkbUbLQbbRTGq48fz23b3I5bpFpy3XVhSqXbb4djj6Vn4XJGrf1nqBhCmI+xSxfYcUd+884YTpt/Edx/f9LKGisxUqYyp86f3yWt/796cigi0oaoW4yISNuX8SEELVBUFF5Nlq9XL9hvv/ACznk3LK6oXX/aaTB4MLz3Hv3mv8NeXz4CE/eGo44K6/fcM2RM3WabkAitf/8wTUcrequk+3g33F9BWv9/VTkUEcliLemeko0T7qaku6qISJaJd41L5vjqVGbWzPrr9Jgx4QWcVAqFvo6nHlhet3748PB4b84ceOghWLcuBMa77w7j3YcOheLiUGncaqvwGjIkVCRjyKfMqaocioi0QQm30IqISMbFq5BFa1xTZs061dYuZMOudcMNdf9etw4+/rju/Zo1sPXWzHv8Q0r+M4uN1n0dll98cZiKadky/jp7bz7r+D0Y3xf6hle/bYazdu33Guy3LWZOBVUORUQkCfRkUEQkfTSEIEHt2jWsUXXsCPffz7jS8Lbin8th0aIwyBDgu+9Y3Gkbeq/5GB6cDUuXAlAyaRLl5eM55eQaOvsK1lkR5TuUU3LNh7DFFjB6NLAN7WvWwHfVYY7HVqj//ws1dOhQkLb/X1UORUTSQNM1iIhIMmXjEIKWSkWMTKjRsnv3MM9irT59uHTHf9R97rvvwpPHTTahrBf84+YF7PnRfZw46E1KvngL7voEvvkGBg4EtmHo1/+BLoeG7+3TZ/2rovwS2G47WLwYPvgg/GeVlISkPGZRi1b7//vFFyt5/vluafv/VeVQRERERDJOPQ+aT0MIUqxz51Cpi/iy+9Y8OuhifllRb5tvvw3/CTfCJ522gWuvhU8/rXs99xycf37Y9tFHYfz4us927Bj+8556KoyBfOaZkKl1002huJjdvtuUmR23oaSkW1p+XVDlUEREEqQbNxERkUa61VXcPum8LVx4YextjzgiJL6prAyvJUvCz403DutnzoRrrlmfFvUWYPR2M4HNU1f+RlQ5FBERERERSbXi4vCK5aKL4IIL4Msv4fPPmXD853zqfdNXPlQ5FBERERERyQ4FBdC7N/TuzesbD2TNsmXp3X1a9yYiIiIiIiJZSU8ORUREREQkK8Ub715VFbK1VlYmLylPS8fXp6IsmaAnhyIisl5VFSxfHoKbiIhIsoTpKpL3fVOnwqxZ8NZbIdHn1KnJ++5cLktrqXIoIiJA2wpuIiLSdlVWwumnh6Se1dXhid3pp2emYTObypIMqhyKiEibC24iItJ2LVgA7ds3XFZUFJbnc1mSQZVDEZE2qLndd1Id3NRdVUSkZXT93FC/frB2bcNlVVVheSKSeUxbW5Zso8qhiIikNNCqu6qISMvo+hldSQmUl4dZHwoLoVOn8D6RRDDJPqatKUs2UuVQRERSFmjVXVVEpGUSuX4mO8lLLikrg913h0GDYP788L6+aI2WrY1JsY53U2VpqYoKuOWW15PzZQlS5VBERICWBbemAm1bG4uRDmZ2ppktMLPVZjbHzIbH2bbUzDzKa0A6yywiyafrZ9OKiqB79w0bMmM1WqbymMYqS65R5VBERNZrbnBrKtC2tbEYqWZmxwC3AtcAQ4CXgOlm1reJjw4ENqv3ej+V5RSR1NP1s2XiNVrqmDZNlUMREWmxpgJtWxuLkQbnAVPc/U53f9fdzwKWAGc08bnP3b2y3qs69UUVkVTS9bNl4jVa6pg2rV2mCyAiIrmrNtCOHQtmIQA3DrRlZTBpUmi9nT5dQTgWMysChgK/a7RqBrBXEx9/1cw6AP8Dfuvuz8TYxzhgHEBxcTEVCQxWWrFiRULb5SMdm+h0XGJr7rHZcksYMGAIVVUFXH/9W/TsWdVmxxi25LxZtmwwABUVdePyvvqqiDVrdgcK1y9bvbqaJUtmUVFRlbJjGq0syZDuvydVDkVEpFUSqfwVFYWXKoZx9SLczXzWaPlnwAExPlP7VHE2UASUAU+Z2b7u/nzjjd19MjAZYNiwYV5aWtpkoSoqKkhku3ykYxOdjktsLTk2vXuHn0ce2VQbUW5rybHp0SP8bPy5O+9s3GhZ2OD4peKYxipLa6X770mVQxERaTVV/jLD3ecCc+stetnMtgLOBzaoHIqI5AP1WGk5jTkUERHJDkuBaqC40fJioDmTf8wCtklWoUREclFbyR6abqocioiIZAF3rwLmACMbrRpJyFqaqMGE7qYiIiLNom6lIiIi2eNmYKqZvQK8CIwH+gB3AJjZ3QDuflLk/QRgIfAOYczhicARwJh0F1xERHKfKociIiJZwt3vM7NNgEsJ8xW+DYxy90WRTRrPd1gE3AhsAawiVBIPcffH0lRkERFpQ1Q5FBERySLuPhGYGGNdaaP3NwA3pKFYIiKSB1Q5FBERERGRnJNNcz5mU1laQ5VDERFZr60ENxEREWk+ZSsVERERERERVQ5FRERERERE3UpFRCQN1F1VRKRldP1MPh3T2PTkUERERERERPTkUEREWk+tsCIikk0Ul1pGTw5FREREREQkM5VDMzvTzBaY2Wozm2Nmw+NsW2pmHuU1IJ1lFhERERERacvSXjk0s2OAW4FrgCHAS8B0M+vbxEcHApvVe72fynKKiIiIiIjkk0w8OTwPmOLud7r7u+5+FrAEOKOJz33u7pX1XtWpL6qIiIiIiEh+SGvl0MyKgKHAjEarZgB7NfHxV81siZk9ZWb7paSAIiIiIiIieSrd2Up7AYXAZ42WfwYcEOMztU8VZwNFQBnwlJnt6+7PN97YzMYB4wCKi4upSDBV0YoVKxLeNp/ouMSmYxOdjktsOjax6diIiIhkXtZPZeHuc4G59Ra9bGZbAecDG1QO3X0yMBlg2LBhXlpamtB+KioqSHTbfKLjEpuOTXQ6LrHp2MSmYyMiIpJ56R5zuBSoBoobLS8GKpvxPbOAbZJVKBERERERkXyX1sqhu1cBc4CRjVaNJGQtTdRgQndTERERERERSYJMdCu9GZhqZq8ALwLjgT7AHQBmdjeAu58UeT8BWAi8QxhzeCJwBDAm3QUXERERERFpq9JeOXT3+8xsE+BSwnyFbwOj3H1RZJPG8x0WATcCWwCrCJXEQ9z9sTQVWUREREREpM3LSEIad58ITIyxrrTR+xuAG9JQLBERERERkbyV7oQ0IiIiIiIikoXM3TNdhpQxsy+ARU1uGPQiZFOVhnRcYtOxiU7HJTYdm9iScWy+5+69k1GYfNCMGKnzNjYdm+h0XGLTsYlNxya6tMbHNl05bA4ze9Xdh2W6HNlGxyU2HZvodFxi07GJTccme+n/JjYdm+h0XGLTsYlNxya6dB8XdSsVERERERERVQ5FRERERERElcP6Jme6AFlKxyU2HZvodFxi07GJTccme+n/JjYdm+h0XGLTsYlNxya6tB4XjTkUERERERERPTkUERERERERVQ5FREREREQEVQ5FREREREQEVQ5FRERERESEPK8cmtk2Zlac6XKISNtlZlb/p0guUHwUkXRQjMw+eZet1Mw2BcqAc4EvgHXAEuAB4EF3X5nB4mUVMzN399qfmS6PZDedL4nTMQp0zmQXxcfE6dyV5tI5kzgdoyBT50w+Vg6nADsAjwJfApsAg4HtgU+AG9z9yYwVMIvVturk8x+sme1AOH+6AyuBWe6+ILOlyk46X8DMBhKuLd2B74CZOl9i0zmTWYqPLadzV/GxuXTOKEY2V7rOmbyqHEYO6rfAKHd/rt6yLYA9gNOA7wHHuPvrGStohplZAXA40BvoDCwGnnX3zzNasAwzswuBE4BtCMfkS8CB14C/AS8S/mbz548KnS+x6HyJTedM9lF8TIzO3eh0vYtN50x0Omdiy/Q5k2+Vw4HA34HT3H1mlPVFwEvAk+5+UbrLlw3MrBvwZ2A/oIbQWuzAauBZYKq7v5dvj/zNbBNgIXC+u99hZlsCuwF7AkOBjsBF7l6RsUJmgM6X6HS+xKZzJjspPjZN5250ut7FpnMmOp0zsWXDOZNvlcNOhO4ynYGTgA/dvabRNmcBP3H3wRkoYsaZ2SXA0cBP3X22mQ0AhgF7R34uIRyfLzJYzLQzs/GE33vXKOt2Bn4NHAgMdvf56S5fpuh8iU7nS2w6Z7KT4mPTdO5Gp+tdbDpnotM5E1s2nDN5la3U3VcBlwCdgLuBk8xsSzPrCmBmnYF9gbczV8qMOwi4y91nA7j7e+5+D/Bz4BeEvuFTM1i+TPkS6GVmPwAws0IzKwRw9zeAE4H/EY5fPtH5Ep3Ol9h0zmQhxceE6NyNTte72HTORKdzJraMnzN5VTkEiHSXORH4CJgE/Be418z+ArwHbAlcn7kSZo6ZtSME/jFm1juyrNDMCty9OjIOZTywRaRlJ5/8m9AF4jwzGxQ5HtW1K919NSGz3yYZKl/a6XyJS+dLFDpnspviY2w6d+PS9S4KnTNx6ZyJIlvOmbyrHAK4+9vufgxhcP35hD69XYA7gZPd/a1Mli9T3H0dcBdQAvzSzIojJ2P9rkXzgK2ApRkoYkZE+nV/B1wBbAvMNrOHzOxwM+tnZkMj3a0GkkctgPXOlz7A+TpfGlgFXAlsh86X9XSNyX6Kj9Hp3I1O8TE2xci4FCOjyJbrTF6NOYwnUiuvaXrLtstCdqQC4BTgGqAd8CBwH6EleSfgUGCHaP3E84WZHQ+cCuxFuHH6DKgG/ujut2aybOlmZu2B44DfAUWE+dDy+nwxs+7uvrze+xOBccAQwt/Up+Tp+QLrz5mx1F1jHiKcM4vI03Mm2yk+Kj4mSvGxIcXIDSlGxpcNMVKVQ4nKzHoQTs7jCfNcfUvIlDQbuNbdZ2WudOkVecxfDfRw968jNwkdCPPy7AD0BJ53988yWMy0i4xF6kgYO7AR4YbgOMLFaw1hzqJZ5NH5Yma7ElpDnwJeAV6NtKrXzgG2MWFqgIo8PF+2BFa5+9LI+x6Ec2Y0sCvh+vId4bjlzTkjuUfxsY7iY2yKkRtSjIwtm2KkKocCgJltBHzr9U6IyEW+I9AV2BFYmS8XsFoW0rv/EhgBvAr8xt3fzGypMs/M9gcuImTOepGQVWuJmW1MuDHYHGiXh+fL1YTjUgG0J4zTegLoAdzi7l1RaqM6AAAMxElEQVQzV7rMMrOngTfc/dzIeyNcX/oTbp76AQXu/mLmSimyIcXH6BQfY1OMjE4xMrZsipGqHAoAZlZOaI14BVjk7t9E2WbjSMtg3szHY2azga+AGcARhDEVP3D3ufW26ebu32aoiGkXuWDNAx4HXiAkqLia0OK3M+GCf627/zdjhcwQM9sLuAe4iRDsDiRMDbA54enCJcAcd1+QsUJmQOScWQ3s4e7/jdxUXkeY/Phj4HXCjeWKDBZTJCrFx+gUH6NTjIxNMTK6bIuRqhwKZnYc8H/AN4QL/ZOElpw3gcXuvirSPeIe4Nf5kpDAzE4mtIoOd/dlkT/eGYRjMrb2JsDMbgVuc/cPM1rgNDGzsYTjsmvk3DgY+Csh89hbhBuEnsBB7r44U+XMFDMbBwwnzBXXARhJGDPwAeFvbDVwar6cLwBmdhphsuNtzez7hMnWVxHGbG0HHE7IjHmMKoiSTRQfo1N8jE0xMj7FyA1lW4zMy2ylsoERwGRgF2AiYSD5PcD9wKVmNgIoA0blS+CLOBL4dyTwFUVag68B9jazbSKBb1/grHy6iAHHAP/wMC8awJ5AJTDa3U8DziK0BOZbau7armZ/JQS8CR7ScbcjTFp7KOHv7P08O18gJBt4LvLvY4FPgGPd/RZ3P4Nwk7A7oduMSDZRfIxO8TE2xcgYFCNjyqoYqcphnosMJl8ALHP3+e7+O3cfRBj8+ixwMjANuJ08SilsZh2AtcDySAtolZm1c/dnCMdrfGTTcYSbhLxgZh0Jredz6i0eCUyOjKcw4F3C5LUDM1DEjHL3GndfC5QDPzOzYuBM4CF3/9Dd/+zuP81sKdPLzDoRYs3+ZvZv4FfAg+6+2ML8TUY4n94l3ESJZAXFx+gUH2NTjIxPMXJD2Rgj1a1UiAyQLnb398ysCFjbaOD9McC9wC7u/nqmyplOkT/GIcB+7n5T/XEkZnYI4UZgF0I/8EPyJYlG5LhsAXR193cj77cEPnP3NZFtugIfEo7Lq5krbWaZ2ZnAucDWwG7u/qqZFXq9iX7zQeQc6UfoRnQQYc6vK939qXrbdAXeBw519zlRv0gkAxQfN6T4GJtiZOIUI4NsjJHtUr0DyX7u/jXwdeTfVbD+0b9F/kg3AlbnS+ADiAS61yKvxmYALwHTgW/yKfBFjsvHjd5/FLm41Z43YwjnS94GvYg/E8YKdATeAci3oAfrz5H5wHwzu5cweW9td6vac+YoYJ0qhpJtFB83pPgYm2JksyhGkp0xUpVDicobTnjcDbg8U2XJBvVaRc3d15rZ/xGSFFyR0YJliXot6UcQuhT9PoPFyQruvsbMzie0IK9q8gN5IHJzPa/R4iOBs4G8m+xYcpPiY0OKj01TjNyQYuSGsiVGqlupNMnM2gPVjQJiXou0Ag4D5rv7l5kuT7aIHJe+wBcemdhWJJ7IObMV8Lm7r8xwcUSaRfFxQ4qPsSlGSnNlIkaqcigiIiIiIiLKVioiIiIiIiKqHIqIiIiIiAiqHIqIiIiIiAiqHEoGmZkn8FoY2XZK7b8zLVKW2vJVJPl7Fybr+6QhM7vCzJo1yNrM/lPv//qeVJVNRKQ+xceo37swWd8nDSk+Sn2aykIyac9G7x8G3qBh+us1kZ9XkV2p7iuB0cA3SfzObPsdBc4CuhPOTRGRdFF8bCjbfkdRfGyzVDmUjHH3mfXfm9kaYGnj5ZFtP0xbwRKzJlo5WyNZv6OZdXD3NU1vKU1x93dh/bkpIpIWio8NKT5mH8XHtkvdSiUnNO5SYmZbRboyjDeza82s0sy+NbN7zKyzmX3fzJ4wsxVm9oGZnRzlO3c2s3+Z2ddmtsrMXjSz4a0o4/+3d/exWpd1HMffH44ZD9MGuQQdwR8GrTkLNkcZI1eKLh+GWy23aGArVul6nNmTQA8YVAqZLVEEK5yZE7OiFBBMcNIgrJUBUxfGfCgPDw3xCeHbH9/rht/5cXOfA0GHc87ntf12uK/7+l2/7/U7h/t737/7uq7fuSWmSZLmS9ouaaekeZLaJJ0taY2k3ZIel3RBqz6WskGSZkt6StKrpZ/3SDq1PD+1HHOCpLsl7QT+WNl/sqS/SHpFUrukn0sa1oW+nCDp2+W4jX3XSBpfqzet1v5tkoY0aesaSX8v9V6QdL+kt1fqjJZ0bzlfL0taK+nCWjszS1/fJmlp+d0+LWm6pH61umMkrS7He0bStYCa9PNzkjaWY+6QtF7SZZ2dHzOz44Xzo/Oj86MdTf7m0Hq6rwIPAVOAdwDfA/YBY4BbgR8AnwYWSVofEY8DSBoLrAYeAz4JvAR8Clgh6ZyI+NP/ENM8YAnwEWAC8A2gDTgP+D7wTClbImlERLQ3a0TSicBy4J3AbGAtOYTjAmAw8K9K9TuAO4EPUf5fS5oGzAfuIs/TacB1wDhJYyPixRZ9uAb4AvB14M/AyeRNjfcnNkmzgS8BNwJXA6cD3wHOLOdwb6n6C2BSOS8rgP7lvAwDNkk6DVgD7AKuAv4DXAkslXRxRPy+Ftu9wCJgLnAJ8E1gaylD0inASnJo0xRy6NXV5I2Hq+f3o8D1wLfIv4UBwFnVPpqZ9WDOj8n50fnRDkdEePN2XGzAFmDxIZ67HdhSeTwSCGBlrd6SUj65UjYYeB2YUSl7ENgInFgpaytlv+okzg6xVMrPLcdeWCvfUMrHV8rOKmVTWvTx46XOpS1imVrqzK2Vt5HJcVWtfHyp/9lO+vhbYEmL50cCe4HptfL3lvYnlcfv7+x45BuU14EzavFvBjZUymaWtq6o7f9XYFnl8SzgNWB4pWwQ0J4vefvLbqq2f6R/m968efN2rDfnR+fHWvzOj96O2eZhpdbT1a+abSo/H2gURMQO4N/AcABJA4D3AXcD+8qwjhPIYRUryKt2Rzum3RGxpkmcw1u0MxF4PiJ+3YVj1ieEjwbeQl4x3a/E8DTZfyT1a/S/bI3XhHXAByXNkjS+XKWtOp8cln5HdX9yyM4uDpzDiWTCurVF7BOAtRHxZCXOveSV3ndJOrlWf2nt8d/oeNXzPaW9rZX2dgO/qe23rrT/I0nnSRrYIkYzs57G+TE5Px7g/Gid8odD6+l21B6/1qK8f/n3EPLK27XAntp2FTC4Pkb/KMS0s1oQEY04+3NobyaH2HTFc7XHQw5RDjmcpPH8Qjr2f2Epvw6YAVxKDinZJmlRGZICmVgBnuTgc3hSib3Rh+0R8XKL2Ie0iFPkle2q7bXHr9LxPA6j45CihnrZz8ghVePIN0vbJS2RNLJFrGZmPYXzY3J+PMD50TrlOYfWF+0k5138mHwBPEhE7Pu/RtRcO3BmF+vW70/USBBDm9QdCjTmjMwkh49Uj0lE7AHmAHMkDQUuBm4ABpJzRbaV+hM5ONlTeb4dGCJpQIsEuL1FnHGI9lt5Dji1SXmHsogIcs7JfEmDyb5cT85BGXeYxzQz6w2cH50fnR/7OH9zaH1OGUKxmpzIviEi1te3bg6xYRkwVNIlR7DvZvJK4OXVQknnACPIRQqIiC21vm+pNxQRz0fEAnJIUSMZLyffQLy12fmLiH9U+iDgEy1i/QPw7uoVSUltZJJ9LCIO915Zj5b29g9JkjSInJzfVETsiIi7gF/S9TccZma9ivOj82OTPjo/9jH+5tD6qi8CDwMPSLqNvJp2CjAWaIuIr3RncMVicqW4OyV9l5yvcBK5Gtu8iNh0qB0jYq+k6eRVv8WlrdPJyehPcGB4TFOS7iNvuLyBvDI5BriQvJJIRDwlaQ5wk6TRZAJ7hZwjcj6wICJWRcQqSfcAN5RktBJ4AzmPYmlEPESuqjYVWC5pBnnj5M8Ao4CLun669ptb9l8maSYHVmPrcGVW0i3k/I9HyTk3o4CPkQnbzKyvcn5swfnRejt/OLQ+KSI2SDqbnDdwI7kE9gvki/3N3RlbQ0TskTSRjHFa+bkNeISD5xU02/8WSS+RL/z3AS8CvwO+XK4Ot/Iw8GFyyeyBwD/JZdBnVdr/mqSNpc6V5BCXreRKd09U2rqcXPp7CvB5cinudcCC0s6zyvtDzQF+AryRXB78ooi4v7N+Nul3u6QPAD8Efkqes5vJ17vplaqPAFeQCe9NwLPkm4QZh3tMM7PewvnR+RHnxz5NOazYzLpK0u3kstxnkEPz97bcwXqssvBCP3JhgTURMbmbQzIzO245P/Ydzo+9l+ccmh2ZEeTKYw92dyB2TC0jf88jujsQM7Mewvmxb3B+7KX8zaHZYSoTwxtLVu+KiM3dF40dS5JGAY37SG2rLCRgZmY1zo99h/Nj7+UPh2ZmZmZmZuZhpWZmZmZmZuYPh2ZmZmZmZoY/HJqZmZmZmRn+cGhmZmZmZmb4w6GZmZmZmZkB/wULG54hG1H1YwAAAABJRU5ErkJggg==\n", "text/plain": [ - "
        " + "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a: -0.42 ± 0.04\n", - "T2: 87.67 µs ± 15.38 µs\n", - "c: 0.44 ± 0.04\n" - ] } ], "source": [ - "# arrange the data from the run\n", - "\n", - "result_t2cpmg = t2cpmg_job.result()\n", - "keys_0_1 = list(result_t2cpmg.get_counts(qc_dict['step_0']).keys())# get the key of the excited state '00001' \n", + "# Fitting T2 CPMG\n", "\n", + "%matplotlib inline\n", "\n", - "# change unit from ns to microseconds\n", - "plot_factor = 1\n", - "if unit.find('ns') > -1:\n", - " plot_factor = 1000\n", - " punit = '$\\\\mu$s'\n", - "xvals = time_per_step*np.linspace(0,len(qc_dict.keys()),len(qc_dict.keys()))/plot_factor # calculate the time steps \n", + "t2cpmg_fit = T2Fitter([t2cpmg_backend_result1, t2cpmg_backend_result2],\n", + " t2cpmg_xdata, qubits,\n", + " fit_p0=[0.5, t_q0, 0.5],\n", + " fit_bounds=([-0.5, 0, -0.5],\n", + " [1.5, 40, 1.5]))\n", "\n", - "\n", - "data = np.zeros(len(qc_dict.keys())) # numpy array for data\n", - "sigma_data = np.zeros(len(qc_dict.keys()))\n", - "\n", - "for ii,key in enumerate(qc_dict.keys()):\n", - " # get the data in terms of counts for the excited state normalized to the total number of counts\n", - " data[ii] = float(result_t2cpmg.get_counts(qc_dict[key])[keys_0_1[0]])/shots\n", - " sigma_data[ii] = np.sqrt(data[ii]*(1-data[ii]))/np.sqrt(shots)\n", - " \n", - "fitT2cpmg, fcov = curve_fit(exp_fit_fun, xvals, data, bounds=([-1,10,0], [1, 150, 1])) \n", - "ferr = np.sqrt(np.diag(fcov))\n", - "\n", - "plot_coherence(xvals, data, sigma_data, fitT2cpmg, exp_fit_fun, punit, '$T_{2cpmg}$ ', qubit)\n", - "\n", - "print(\"a: \" + str(round(fitT2cpmg[0],2)) + u\" \\u00B1 \" + str(round(ferr[0],2)))\n", - "print(\"T2: \" + str(round(fitT2cpmg[1],2))+ ' µs' + u\" \\u00B1 \" + str(round(ferr[1],2)) + ' µs')\n", - "print(\"c: \" + str(round(fitT2cpmg[2],2)) + u\" \\u00B1 \" + str(round(ferr[2],2)))" + "plt.figure(figsize=(15, 6))\n", + "for i in range(2):\n", + " ax = plt.subplot(1, 2, i+1)\n", + " t2cpmg_fit.plot(i, ax=ax)\n", + "plt.show()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -862,7 +359,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.0" + "version": "3.6.8" } }, "nbformat": 4, diff --git a/qiskit/ignis/state-tomography.ipynb b/qiskit/ignis/state-tomography.ipynb new file mode 100644 index 000000000..00dbe0c9f --- /dev/null +++ b/qiskit/ignis/state-tomography.ipynb @@ -0,0 +1,616 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantum State Tomography\n", + "\n", + "* **Last Updated:** March 8, 2019\n", + "* **Requires:** qiskit-terra 0.7, qiskit-ignis 0.1, qiskit-aer 0.1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook contains examples for using the ``ignis.verification.tomography`` state tomography module." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Needed for functions\n", + "import numpy as np\n", + "import time\n", + "from copy import deepcopy\n", + "\n", + "# Import Qiskit classes\n", + "import qiskit \n", + "from qiskit import QuantumRegister, QuantumCircuit, ClassicalRegister, Aer\n", + "from qiskit.quantum_info import state_fidelity\n", + "from qiskit.providers.aer import noise\n", + "\n", + "# Tomography functions\n", + "from qiskit.ignis.verification.tomography import state_tomography_circuits, StateTomographyFitter\n", + "import qiskit.ignis.mitigation.measurement as mc" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2-Qubit state tomography Example" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the below example we want to perform state tomography on a 2Q Bell state between qubits 3 and 5. To make the reference circuit we generate the expected statevector using ``statevector_simulator`` between qubits 0 and 1. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌───┐ \n", + "q0_0: |0>┤ H ├──■──\n", + " └───┘┌─┴─┐\n", + "q0_1: |0>─────┤ X ├\n", + " └───┘\n", + "[0.70710678+0.j 0. +0.j 0. +0.j 0.70710678+0.j]\n" + ] + } + ], + "source": [ + "# Create the expected density matrix\n", + "q2 = QuantumRegister(2)\n", + "bell = QuantumCircuit(q2)\n", + "bell.h(q2[0])\n", + "bell.cx(q2[0], q2[1])\n", + "print(bell)\n", + "\n", + "job = qiskit.execute(bell, Aer.get_backend('statevector_simulator'))\n", + "psi_bell = job.result().get_statevector(bell)\n", + "print(psi_bell)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " \n", + "q1_0: |0>──────────\n", + " \n", + "q1_1: |0>──────────\n", + " \n", + "q1_2: |0>──────────\n", + " ┌───┐ \n", + "q1_3: |0>┤ H ├──■──\n", + " └───┘ │ \n", + "q1_4: |0>───────┼──\n", + " ┌─┴─┐\n", + "q1_5: |0>─────┤ X ├\n", + " └───┘\n" + ] + } + ], + "source": [ + "# Create the actual circuit \n", + "q2 = QuantumRegister(6)\n", + "bell = QuantumCircuit(q2)\n", + "bell.h(q2[3])\n", + "bell.cx(q2[3], q2[5])\n", + "print(bell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we are going to generate and fun the state tomography circuits. By only passing in the 2 registers we want to measure the state tomography will only run on that reduced $2^2$ Hilbert space. However, if we pass the whole register in the state tomography module will try and fit the full $2^6$ space." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time taken: 0.2808539867401123\n" + ] + } + ], + "source": [ + "# Generate circuits and run on simulator\n", + "t = time.time()\n", + "# Generate the state tomography circuits. Only pass in the \n", + "# registers we want to measure (in this case 3 and 5)\n", + "qst_bell = state_tomography_circuits(bell, [q2[3],q2[5]])\n", + "job = qiskit.execute(qst_bell, Aer.get_backend('qasm_simulator'), shots=5000)\n", + "print('Time taken:', time.time() - t)\n", + "\n", + "# Generate the state tomography circuits using the default settings for \n", + "# basis\n", + "\n", + "tomo_bell = StateTomographyFitter(job.result(), qst_bell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The fitter will output a density matrix ordered according to how we passed in the registers to ``state_tomography_circuits``. " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fit Fidelity = 0.9999605319385123\n" + ] + } + ], + "source": [ + "# Perform the tomography fit\n", + "# which outputs a density matrix\n", + "rho_bell = tomo_bell.fit()\n", + "F_bell = state_fidelity(psi_bell, rho_bell)\n", + "print('Fit Fidelity =', F_bell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Repeat the Example with Measurement Noise" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fit Fidelity (no correction) = 0.5742657677768489\n", + "Fit Fidelity (w/ correction) = 0.999824431926327\n" + ] + } + ], + "source": [ + "#Add measurement noise\n", + "noise_model = noise.NoiseModel()\n", + "for qi in range(6):\n", + " read_err = noise.errors.readout_error.ReadoutError([[0.75, 0.25],[0.1,0.9]])\n", + " noise_model.add_readout_error(read_err,[qi])\n", + " \n", + "#generate the calibration circuits\n", + "meas_calibs, state_labels = mc.complete_meas_cal(qubit_list=[3,5])\n", + "\n", + "backend = Aer.get_backend('qasm_simulator')\n", + "qobj_cal = qiskit.compile(meas_calibs, backend=backend, shots=15000)\n", + "qobj_tomo = qiskit.compile(qst_bell, backend=backend, shots=15000)\n", + "\n", + "job_cal = backend.run(qobj_cal, noise_model=noise_model)\n", + "job_tomo = backend.run(qobj_tomo, noise_model=noise_model)\n", + "\n", + "meas_fitter = mc.CompleteMeasFitter(job_cal.result(),state_labels)\n", + "\n", + "tomo_bell = StateTomographyFitter(job_tomo.result(), qst_bell)\n", + "\n", + "#no correction\n", + "rho_bell = tomo_bell.fit()\n", + "F_bell = state_fidelity(psi_bell, rho_bell)\n", + "print('Fit Fidelity (no correction) =', F_bell)\n", + "\n", + "#correct data\n", + "correct_tomo_results = meas_fitter.filter.apply(job_tomo.result(), method='least_squares')\n", + "tomo_bell = StateTomographyFitter(correct_tomo_results, qst_bell)\n", + "rho_bell = tomo_bell.fit()\n", + "F_bell = state_fidelity(psi_bell, rho_bell)\n", + "print('Fit Fidelity (w/ correction) =', F_bell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generating and fitting random states\n", + "\n", + "We now test the functions on state generated by a circuit consiting of a layer of random single qubit unitaries u3" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def random_u3_tomo(nq, shots):\n", + " \n", + " def rand_angles():\n", + " return tuple(2 * np.pi * np.random.random(3) - np.pi)\n", + " q = QuantumRegister(nq)\n", + " circ = QuantumCircuit(q)\n", + " for j in range(nq):\n", + " circ.u3(*rand_angles(), q[j])\n", + " job = qiskit.execute(circ, Aer.get_backend('statevector_simulator'))\n", + " psi_rand = job.result().get_statevector(circ)\n", + " \n", + " qst_circs = state_tomography_circuits(circ, q)\n", + " job = qiskit.execute(qst_circs, Aer.get_backend('qasm_simulator'),\n", + " shots=shots)\n", + " tomo_data = StateTomographyFitter(job.result(), qst_circs)\n", + " rho_cvx = tomo_data.fit(method='cvx')\n", + " rho_lstsq = tomo_data.fit(method='lstsq')\n", + " \n", + " print('F fit (CVX) =', state_fidelity(psi_rand, rho_cvx))\n", + " print('F fit (LSTSQ) =', state_fidelity(psi_rand, rho_lstsq))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Random single-qubit unitaries: set 0\n", + "F fit (CVX) = 0.999150958176627\n", + "F fit (LSTSQ) = 0.9949127903772803\n", + "Random single-qubit unitaries: set 1\n", + "F fit (CVX) = 0.9930446937928088\n", + "F fit (LSTSQ) = 0.989849832684077\n", + "Random single-qubit unitaries: set 2\n", + "F fit (CVX) = 0.998824288959602\n", + "F fit (LSTSQ) = 0.9945787779787962\n", + "Random single-qubit unitaries: set 3\n", + "F fit (CVX) = 0.9961308975072494\n", + "F fit (LSTSQ) = 0.9929845786532249\n", + "Random single-qubit unitaries: set 4\n", + "F fit (CVX) = 0.9975931183831814\n", + "F fit (LSTSQ) = 0.997224800651653\n" + ] + } + ], + "source": [ + "for j in range(5):\n", + " print('Random single-qubit unitaries: set {}'.format(j))\n", + " random_u3_tomo(3, 5000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5-Qubit Bell State" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time taken: 8.388687133789062\n" + ] + } + ], + "source": [ + "# Create a state preparation circuit\n", + "q5 = QuantumRegister(5)\n", + "bell5 = QuantumCircuit(q5)\n", + "bell5.h(q5[0])\n", + "for j in range(4):\n", + " bell5.cx(q5[j], q5[j + 1])\n", + "\n", + "# Get ideal output state\n", + "job = qiskit.execute(bell5, Aer.get_backend('statevector_simulator'))\n", + "psi_bell5 = job.result().get_statevector(bell5)\n", + "\n", + "# Generate circuits and run on simulator\n", + "t = time.time()\n", + "qst_bell5 = state_tomography_circuits(bell5, q5)\n", + "job = qiskit.execute(qst_bell5, Aer.get_backend('qasm_simulator'), shots=5000)\n", + "\n", + "# Extract tomography data so that counts are indexed by measurement configuration\n", + "tomo_bell5 = StateTomographyFitter(job.result(), qst_bell5)\n", + "print('Time taken:', time.time() - t)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Least-Sq Reconstruction\n", + "Time taken: 7.422188997268677\n", + "Fit Fidelity: 0.9942293159914606\n" + ] + } + ], + "source": [ + "t = time.time()\n", + "rho_lstsq_bell5 = tomo_bell5.fit(method='lstsq')\n", + "print('Least-Sq Reconstruction')\n", + "print('Time taken:', time.time() - t)\n", + "print('Fit Fidelity:', state_fidelity(psi_bell5, rho_lstsq_bell5))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CVX Reconstruction\n", + "Time taken: 65.69908094406128\n", + "Fidelity: 0.9999139886227795\n" + ] + } + ], + "source": [ + "t = time.time()\n", + "rho_cvx_bell5 = tomo_bell5.fit(method='cvx')\n", + "print('CVX Reconstruction')\n", + "print('Time taken:', time.time() - t)\n", + "print('Fidelity:', state_fidelity(psi_bell5, rho_cvx_bell5))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2-Qubit Conditional State Tomography " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example, we have a three qubit system where one of the qubits will be an ancilla for performing state tomography, i.e., only perform tomography when the third qubit is in the state \"1\". The circuit is setup in such a way that after conditional tomography we will get a Bell state on the first two qubits.\n", + "\n", + "First make a 3Q GHZ State with no classical measurements." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌───┐ \n", + "q9_0: |0>┤ H ├──■────────────\n", + " └───┘┌─┴─┐ \n", + "q9_1: |0>─────┤ X ├──■───────\n", + " └───┘┌─┴─┐┌───┐\n", + "q9_2: |0>──────────┤ X ├┤ H ├\n", + " └───┘└───┘\n" + ] + } + ], + "source": [ + "# Create the actual circuit \n", + "q2 = QuantumRegister(3)\n", + "ghz = QuantumCircuit(q2)\n", + "ghz.h(q2[0])\n", + "ghz.cx(q2[0], q2[1])\n", + "ghz.cx(q2[1], q2[2])\n", + "ghz.h(q2[2])\n", + "print(ghz)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we are going to generate and run the state tomography circuits. Only pass the registers we want to perform state tomography on. The code will generate a new classical register for ony those measurements." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ┌───┐ ░ ┌───┐┌─┐ \n", + "q9_0: |0>┤ H ├──■─────────────░─┤ H ├┤M├────\n", + " └───┘┌─┴─┐ ░ ├───┤└╥┘┌─┐ \n", + "q9_1: |0>─────┤ X ├──■────────░─┤ H ├─╫─┤M├─\n", + " └───┘┌─┴─┐┌───┐ ░ └───┘ ║ └╥┘ \n", + "q9_2: |0>──────────┤ X ├┤ H ├─░───────╫──╫──\n", + " └───┘└───┘ ░ ║ ║ \n", + " c8_0: 0 ═════════════════════════════╩══╬══\n", + " ║ \n", + " c8_1: 0 ════════════════════════════════╩══\n", + " \n" + ] + } + ], + "source": [ + "qst_ghz = state_tomography_circuits(ghz, [q2[0],q2[1]])\n", + "print(qst_ghz[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now make a copy of this circuit (we will need it for the fitter) and make a new circuit with an ancilla measurement attached (this is what will be run)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "#Make a copy without the ancilla register\n", + "qst_ghz_no_anc = deepcopy(qst_ghz)\n", + "ca = ClassicalRegister(1)\n", + "for qst_ghz_circ in qst_ghz:\n", + " qst_ghz_circ.add_register(ca)\n", + " qst_ghz_circ.measure(q2[2],ca[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "#Run in Aer\n", + "job = qiskit.execute(qst_ghz, Aer.get_backend('qasm_simulator'), shots=10000)\n", + "raw_results = job.result()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before sending the results to the state tomography fitter we must strip the register for the Q2 measurement and only keep the results when that register is 1." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "new_result = deepcopy(raw_results)\n", + "\n", + "for resultidx, _ in enumerate(raw_results.results):\n", + " old_counts = raw_results.get_counts(resultidx)\n", + " new_counts = {}\n", + " \n", + " #change the size of the classical register\n", + " new_result.results[resultidx].header.creg_sizes = [new_result.results[resultidx].header.creg_sizes[0]]\n", + " new_result.results[resultidx].header.clbit_labels = new_result.results[resultidx].header.clbit_labels[0:-1]\n", + " new_result.results[resultidx].header.memory_slots = 2\n", + " \n", + " for reg_key in old_counts:\n", + " reg_bits = reg_key.split(' ')\n", + " if reg_bits[0]=='1':\n", + " new_counts[reg_bits[1]]=old_counts[reg_key]\n", + "\n", + " new_result.results[resultidx].data.counts = \\\n", + " new_result.results[resultidx]. \\\n", + " data.counts.from_dict(new_counts)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "tomo_bell = StateTomographyFitter(new_result, qst_ghz_no_anc)\n", + "# Perform the tomography fit\n", + "# which outputs a density matrix\n", + "rho_bell = tomo_bell.fit()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.504+0.j , 0.001-0.007j, 0.004+0.002j, -0.5 +0.006j],\n", + " [ 0.001+0.007j, 0. +0.j , -0. +0.j , -0.001-0.007j],\n", + " [ 0.004-0.002j, -0. -0.j , 0. +0.j , -0.004+0.002j],\n", + " [-0.5 -0.006j, -0.001+0.007j, -0.004-0.002j, 0.496+0.j ]])" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.around(rho_bell,3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/qiskit/ignis/state_tomography.ipynb b/qiskit/ignis/state_tomography.ipynb deleted file mode 100644 index 9da0d3ceb..000000000 --- a/qiskit/ignis/state_tomography.ipynb +++ /dev/null @@ -1,629 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## _*Quantum State Tomography*_ \n", - "\n", - "The latest version of this notebook is available on https://github.com/Qiskit/qiskit-tutorial.\n", - "\n", - "***\n", - "### Contributors\n", - "Christopher J. Wood$^{1}$ and Jay M. Gambetta$^{1}$\n", - "\n", - "1. IBM T.J. Watson Research Center, Yorktown Heights, NY, USA" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Introduction\n", - "\n", - "In this notebook we demonstrate how to design and run experiments to perform quantum state tomography using Qiskit, and demonstrate this using both simulators and the IBM Q Experience hardware. \n", - "\n", - "The functions used in this notebook to implement state tomography may be imported from the `qiskit.tools.qcvv.tomography` module.\n", - "\n", - "#### Experiment Design\n", - "\n", - "The tomography experiments demonstrated in this notebook append a state preparation circuit with measurements of all qubits in each of the X, Y, and Z Pauli bases. For $n$-qubits this gives a total of $3^n$ measurement circuits which must be run, and the resulting counts for the $6^n$ measurement outcomes across all circuits give a tomographically overcomplete basis for reconstruction of the quantum state.\n", - "\n", - "#### State Reconstruction Methods\n", - "\n", - "State reconstruction may be done using a variety of methods. In this notebook we implement two simple cases: \n", - "* Linear Inversion\n", - "* Fast maximum likelihood (*see [J Smolin, JM Gambetta, G Smith, Phys. Rev. Lett. 108, 070502](https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.108.070502), open access: [arXiv:1106.5458](https://arxiv.org/abs/1106.5458)*)." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:56:53.694390Z", - "start_time": "2018-12-18T15:56:53.685516Z" - } - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "from time import sleep # used for polling jobs\n", - " \n", - "# importing the QISKit\n", - "from qiskit import BasicAer, IBMQ\n", - "from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister\n", - "from qiskit import execute\n", - "\n", - "# import tomography library\n", - "import qiskit.tools.qcvv.tomography as tomo\n", - "\n", - "# useful additional packages \n", - "from qiskit.tools.visualization import plot_state_paulivec, plot_histogram\n", - "from qiskit.tools.qi.qi import outer, concurrence, purity\n", - "from qiskit.quantum_info import state_fidelity\n", - "from qiskit.tools.monitor import job_monitor\n", - "from qiskit.providers.ibmq import least_busy\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:54:12.952328Z", - "start_time": "2018-12-18T15:54:10.882434Z" - } - }, - "outputs": [], - "source": [ - "# Load saved IBMQ accounts\n", - "IBMQ.load_accounts()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## State tomography of an entangled Bell-state\n", - "\n", - "We will demonstrate preparation, measurement, and tomographic reconstruction of a 2-qubit Bell state $\\frac{1}{\\sqrt2}\\left(|00\\rangle+|11\\rangle\\right)$.\n", - "\n", - "### State preparation\n", - "\n", - "We begin with constructing a circuit to prepare the target state. This circuit requires a 2-qubit quantum register, and a 2-bit classical register to store measurement outcomes." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:54:40.690550Z", - "start_time": "2018-12-18T15:54:40.684318Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Create a 2-qubit quantum register\n", - "qr = QuantumRegister(2)\n", - "cr = ClassicalRegister(2)\n", - "\n", - "# quantum circuit to make an entangled Bell state \n", - "bell_circ = QuantumCircuit(qr, cr, name='bell')\n", - "bell_circ.h(qr[1])\n", - "bell_circ.cx(qr[1], qr[0])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Visualization of the ideal state\n", - "\n", - "Before we perform tomographic measurement, we will visualize the ideal output state for the preparation circuit. We may obtain the final state-vector by executing the circuit on Aer's `\"statevector_simulator\"` backend:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:54:49.081636Z", - "start_time": "2018-12-18T15:54:49.054092Z" - } - }, - "outputs": [], - "source": [ - "backend = BasicAer.get_backend('statevector_simulator')\n", - "job = execute(bell_circ, backend=backend)\n", - "bell_psi = job.result().get_statevector(bell_circ)\n", - "bell_rho = outer(bell_psi) # construct the density matrix from the state vector" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We may visualize the final state using the `plot_state` function. By default this creates a *city plot*, which is a 2D-bar plot of real and imaginary matrix elements of a density matrix $\\rho$. Here, we instead ask it to plot the Pauli state vector." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:55:09.808285Z", - "start_time": "2018-12-18T15:55:09.639690Z" - } - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
        " - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# plot the state\n", - "plot_state_paulivec(bell_rho)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can compare the ideal entangled state to a non-entangled mixed state $\\frac{1}{2}(|00\\rangle\\langle00| +|11\\rangle\\langle11|)$:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:55:24.171357Z", - "start_time": "2018-12-18T15:55:23.987876Z" - } - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
        " - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rho_mixed = np.array([[1,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,1]])/2\n", - "plot_state_paulivec(rho_mixed)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Building tomography measurement circuits\n", - "\n", - "Next we must construct a family of circuits that implements a tomographically complete set of measurements of the qubit. The **`qiskit.tools.qcvv.tomography`** module contains functions to generate these measurement circuits for general n-qubit systems. \n", - "\n", - "#### Specifying the measured qubits and measurement basis\n", - "\n", - "A state tomography experiment is specified by a **`state_tomography_set`** object: \n", - "```python\n", - "tomo_set = tomo.state_tomography_set(qubits, meas_basis)\n", - "```\n", - "where\n", - "- `qubits` is a list of the qubit indexes within a register (eg. [0, 1] for the first 2 qubits)\n", - "- `meas_basis` is the basis to measure each qubit in. The default value is `meas_basis='Pauli'`.\n", - "\n", - "This contains information about which qubits are to be measured, and in what basis. The default option is to measure each single qubit in the X, Y, and Z bases. This results in $3^n$ measurement circuits that must be executed to gather count statistics for the tomographic reconstruction.\n", - "\n", - "#### Adding measurement circuits to a Quantum Program\n", - "\n", - "Once a state tomography set has been defined, the function to append the tomography circuits to a `QuantumProgram` is:\n", - "```python\n", - "tomo_circuits = tomo.create_tomography_circuits(circuit, qr, cr, tomo_set)\n", - "```\n", - "where \n", - "- `circuit` is the preparation circuit `'name'`, to be appended with measurements.\n", - "- `qr` is the quantum register contained in `circuit` to be measured.\n", - "- `cr` is the classical register in `circuit` to store the measurement results. \n", - "- `tomo_set` is a `state_tomography_set`, the dict of tomography configurations.\n", - "\n", - "The function output `tomo_circuits` is a list of quantum tomography circuits used to execute the tomography experiments. The measured qubits will be `qr[j]`, with corresponding measurement outcomes stored in classical bits `cr[j]`, where `j` corresponds to each qubit in the state tomography set." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:55:28.973514Z", - "start_time": "2018-12-18T15:55:28.962012Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Created State tomography circuits:\n", - "bell_meas_X(0)X(1)\n", - "bell_meas_X(0)Y(1)\n", - "bell_meas_X(0)Z(1)\n", - "bell_meas_Y(0)X(1)\n", - "bell_meas_Y(0)Y(1)\n", - "bell_meas_Y(0)Z(1)\n", - "bell_meas_Z(0)X(1)\n", - "bell_meas_Z(0)Y(1)\n", - "bell_meas_Z(0)Z(1)\n" - ] - } - ], - "source": [ - "# Construct state tomography set for measurement of qubits [0, 1] in the Pauli basis\n", - "bell_tomo_set = tomo.state_tomography_set([0, 1])\n", - "\n", - "# Add the state tomography measurement circuits to the Quantum Program\n", - "bell_tomo_circuits = tomo.create_tomography_circuits(bell_circ, qr, cr, bell_tomo_set)\n", - "\n", - "print('Created State tomography circuits:')\n", - "for circ in bell_tomo_circuits:\n", - " print(circ.name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Testing experiments on a simulator\n", - "\n", - "Now that we have prepared the required circuits for state preparation and measurement, we should test them on a simulator before trying to run them on the real device.\n", - "\n", - "We specify the device, and a number of experiment shots to perform to gather measurement statistics. The larger the number of shots, the more accurate our measurement probabilities will be compared to the *true* value." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:55:42.453974Z", - "start_time": "2018-12-18T15:55:37.018921Z" - }, - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Result(backend_name='qasm_simulator', backend_version='2.0.0', header=Obj(backend_name='qasm_simulator'), job_id='8ca34564-29b2-47c9-b342-afc1832d63db', qobj_id='c0558719-3436-4b71-9ad4-fbd68ecd1c2b', results=[ExperimentResult(data=ExperimentResultData(counts=Obj(0x0=2444, 0x3=2556)), header=Obj(clbit_labels=[['c0', 0], ['c0', 1]], compiled_circuit_qasm='OPENQASM 2.0;\\ninclude \"qelib1.inc\";\\nqreg q0[2];\\ncreg c0[2];\\nu2(0,pi) q0[1];\\ncx q0[1],q0[0];\\nbarrier q0[1];\\nu2(0.0,3.14159265358979) q0[1];\\nmeasure q0[1] -> c0[1];\\nbarrier q0[0];\\nu2(0.0,3.14159265358979) q0[0];\\nmeasure q0[0] -> c0[0];\\n', creg_sizes=[['c0', 2]], memory_slots=2, n_qubits=2, name='bell_meas_X(0)X(1)', qreg_sizes=[['q0', 2]], qubit_labels=[['q0', 0], ['q0', 1]]), name='bell_meas_X(0)X(1)', seed=28220713, shots=5000, status='DONE', success=True, time_taken=0.9519579410552979), ExperimentResult(data=ExperimentResultData(counts=Obj(0x0=1259, 0x1=1229, 0x2=1231, 0x3=1281)), header=Obj(clbit_labels=[['c0', 0], ['c0', 1]], compiled_circuit_qasm='OPENQASM 2.0;\\ninclude \"qelib1.inc\";\\nqreg q0[2];\\ncreg c0[2];\\nu2(0,pi) q0[1];\\ncx q0[1],q0[0];\\nbarrier q0[1];\\nu2(0.0,1.57079632679490) q0[1];\\nmeasure q0[1] -> c0[1];\\nbarrier q0[0];\\nu2(0.0,3.14159265358979) q0[0];\\nmeasure q0[0] -> c0[0];\\n', creg_sizes=[['c0', 2]], memory_slots=2, n_qubits=2, name='bell_meas_X(0)Y(1)', qreg_sizes=[['q0', 2]], qubit_labels=[['q0', 0], ['q0', 1]]), name='bell_meas_X(0)Y(1)', seed=1593229921, shots=5000, status='DONE', success=True, time_taken=0.9368917942047119), ExperimentResult(data=ExperimentResultData(counts=Obj(0x0=1242, 0x1=1275, 0x2=1237, 0x3=1246)), header=Obj(clbit_labels=[['c0', 0], ['c0', 1]], compiled_circuit_qasm='OPENQASM 2.0;\\ninclude \"qelib1.inc\";\\nqreg q0[2];\\ncreg c0[2];\\nu2(0,pi) q0[1];\\ncx q0[1],q0[0];\\nbarrier q0[1];\\nmeasure q0[1] -> c0[1];\\nbarrier q0[0];\\nu2(0.0,3.14159265358979) q0[0];\\nmeasure q0[0] -> c0[0];\\n', creg_sizes=[['c0', 2]], memory_slots=2, n_qubits=2, name='bell_meas_X(0)Z(1)', qreg_sizes=[['q0', 2]], qubit_labels=[['q0', 0], ['q0', 1]]), name='bell_meas_X(0)Z(1)', seed=1493317048, shots=5000, status='DONE', success=True, time_taken=0.01077413558959961), ExperimentResult(data=ExperimentResultData(counts=Obj(0x0=1287, 0x1=1273, 0x2=1194, 0x3=1246)), header=Obj(clbit_labels=[['c0', 0], ['c0', 1]], compiled_circuit_qasm='OPENQASM 2.0;\\ninclude \"qelib1.inc\";\\nqreg q0[2];\\ncreg c0[2];\\nu2(0,pi) q0[1];\\ncx q0[1],q0[0];\\nbarrier q0[1];\\nu2(0.0,3.14159265358979) q0[1];\\nmeasure q0[1] -> c0[1];\\nbarrier q0[0];\\nu2(0.0,1.57079632679490) q0[0];\\nmeasure q0[0] -> c0[0];\\n', creg_sizes=[['c0', 2]], memory_slots=2, n_qubits=2, name='bell_meas_Y(0)X(1)', qreg_sizes=[['q0', 2]], qubit_labels=[['q0', 0], ['q0', 1]]), name='bell_meas_Y(0)X(1)', seed=675355534, shots=5000, status='DONE', success=True, time_taken=0.9071743488311768), ExperimentResult(data=ExperimentResultData(counts=Obj(0x1=2522, 0x2=2478)), header=Obj(clbit_labels=[['c0', 0], ['c0', 1]], compiled_circuit_qasm='OPENQASM 2.0;\\ninclude \"qelib1.inc\";\\nqreg q0[2];\\ncreg c0[2];\\nu2(0,pi) q0[1];\\ncx q0[1],q0[0];\\nbarrier q0[1];\\nu2(0.0,1.57079632679490) q0[1];\\nmeasure q0[1] -> c0[1];\\nbarrier q0[0];\\nu2(0.0,1.57079632679490) q0[0];\\nmeasure q0[0] -> c0[0];\\n', creg_sizes=[['c0', 2]], memory_slots=2, n_qubits=2, name='bell_meas_Y(0)Y(1)', qreg_sizes=[['q0', 2]], qubit_labels=[['q0', 0], ['q0', 1]]), name='bell_meas_Y(0)Y(1)', seed=1664378127, shots=5000, status='DONE', success=True, time_taken=0.8674881458282471), ExperimentResult(data=ExperimentResultData(counts=Obj(0x0=1254, 0x1=1264, 0x2=1265, 0x3=1217)), header=Obj(clbit_labels=[['c0', 0], ['c0', 1]], compiled_circuit_qasm='OPENQASM 2.0;\\ninclude \"qelib1.inc\";\\nqreg q0[2];\\ncreg c0[2];\\nu2(0,pi) q0[1];\\ncx q0[1],q0[0];\\nbarrier q0[1];\\nmeasure q0[1] -> c0[1];\\nbarrier q0[0];\\nu2(0.0,1.57079632679490) q0[0];\\nmeasure q0[0] -> c0[0];\\n', creg_sizes=[['c0', 2]], memory_slots=2, n_qubits=2, name='bell_meas_Y(0)Z(1)', qreg_sizes=[['q0', 2]], qubit_labels=[['q0', 0], ['q0', 1]]), name='bell_meas_Y(0)Z(1)', seed=1379022785, shots=5000, status='DONE', success=True, time_taken=0.011565208435058594), ExperimentResult(data=ExperimentResultData(counts=Obj(0x0=1268, 0x1=1206, 0x2=1236, 0x3=1290)), header=Obj(clbit_labels=[['c0', 0], ['c0', 1]], compiled_circuit_qasm='OPENQASM 2.0;\\ninclude \"qelib1.inc\";\\nqreg q0[2];\\ncreg c0[2];\\nu2(0,pi) q0[1];\\ncx q0[1],q0[0];\\nbarrier q0[1];\\nu2(0.0,3.14159265358979) q0[1];\\nmeasure q0[1] -> c0[1];\\nbarrier q0[0];\\nmeasure q0[0] -> c0[0];\\n', creg_sizes=[['c0', 2]], memory_slots=2, n_qubits=2, name='bell_meas_Z(0)X(1)', qreg_sizes=[['q0', 2]], qubit_labels=[['q0', 0], ['q0', 1]]), name='bell_meas_Z(0)X(1)', seed=1660956632, shots=5000, status='DONE', success=True, time_taken=0.7732300758361816), ExperimentResult(data=ExperimentResultData(counts=Obj(0x0=1200, 0x1=1232, 0x2=1246, 0x3=1322)), header=Obj(clbit_labels=[['c0', 0], ['c0', 1]], compiled_circuit_qasm='OPENQASM 2.0;\\ninclude \"qelib1.inc\";\\nqreg q0[2];\\ncreg c0[2];\\nu2(0,pi) q0[1];\\ncx q0[1],q0[0];\\nbarrier q0[1];\\nu2(0.0,1.57079632679490) q0[1];\\nmeasure q0[1] -> c0[1];\\nbarrier q0[0];\\nmeasure q0[0] -> c0[0];\\n', creg_sizes=[['c0', 2]], memory_slots=2, n_qubits=2, name='bell_meas_Z(0)Y(1)', qreg_sizes=[['q0', 2]], qubit_labels=[['q0', 0], ['q0', 1]]), name='bell_meas_Z(0)Y(1)', seed=770876798, shots=5000, status='DONE', success=True, time_taken=0.7352690696716309), ExperimentResult(data=ExperimentResultData(counts=Obj(0x0=2515, 0x3=2485)), header=Obj(clbit_labels=[['c0', 0], ['c0', 1]], compiled_circuit_qasm='OPENQASM 2.0;\\ninclude \"qelib1.inc\";\\nqreg q0[2];\\ncreg c0[2];\\nu2(0,pi) q0[1];\\ncx q0[1],q0[0];\\nbarrier q0[1];\\nmeasure q0[1] -> c0[1];\\nbarrier q0[0];\\nmeasure q0[0] -> c0[0];\\n', creg_sizes=[['c0', 2]], memory_slots=2, n_qubits=2, name='bell_meas_Z(0)Z(1)', qreg_sizes=[['q0', 2]], qubit_labels=[['q0', 0], ['q0', 1]]), name='bell_meas_Z(0)Z(1)', seed=630462561, shots=5000, status='DONE', success=True, time_taken=0.01123189926147461)], status='COMPLETED', success=True, time_taken=5.206782102584839)\n" - ] - } - ], - "source": [ - "# Use the local simulator\n", - "backend = BasicAer.get_backend('qasm_simulator')\n", - "\n", - "# Take 5000 shots for each measurement basis\n", - "shots = 5000\n", - "\n", - "# Run the simulation\n", - "bell_tomo_job = execute(bell_tomo_circuits, backend=backend, shots=shots)\n", - "bell_tomo_result = bell_tomo_job.result()\n", - "print(bell_tomo_result)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Extracting tomography data from results\n", - "\n", - "Next we extract the tomography data from the output results using:\n", - "```python\n", - "data = tomo.tomography_data(results, 'name', state_tomo_set)\n", - "```\n", - "where\n", - "- `results` is the Result object returned from execution of `state_tomo_set` circuits.\n", - "- `name` is the name of the original circuit used to generate tomography data.\n", - "- `state_tomo_set` is the tomography set used for generation of tomography data.\n", - "\n", - "This returns a dictionary that stores the measurement basis, and measured counts along with measurement basis configuration corresponding to each outcome." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:55:42.468371Z", - "start_time": "2018-12-18T15:55:42.460095Z" - } - }, - "outputs": [], - "source": [ - "bell_tomo_data = tomo.tomography_data(bell_tomo_result, bell_circ.name, bell_tomo_set)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Reconstructing state from count data\n", - "\n", - "To reconstruct the maximum likelihood estimate of the measured quantum state, we use the following function:\n", - "```\n", - "tomo.fit_tomography_data(tomo_data, method, options)\n", - "```\n", - "where\n", - "- `QP` is the quantum program containing the measurement results\n", - "- `circuits` is the array of tomographic measurement circuits measured\n", - "- `shots` is the total number of shots for each measurement circuit\n", - "- `total_qubits` is the total number of qubits in the system (the length of shot outcome bitstrings)\n", - "- `meas_qubits` is an array of the measurement qubit indices" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:55:42.496307Z", - "start_time": "2018-12-18T15:55:42.473162Z" - } - }, - "outputs": [], - "source": [ - "rho_fit = tomo.fit_tomography_data(bell_tomo_data)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can compare the reconstructed state to the target state vector. We use the Fidelity function, which for comparing a density matrix $\\rho$ to a pure state $|\\psi\\rangle$ is given by $F = \\sqrt{\\langle \\psi| \\rho |\\psi\\rangle}$. This may be done by the function **`state_fidelity`** from the **`qiskit.tools.qi`** module." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:56:36.653816Z", - "start_time": "2018-12-18T15:56:36.461637Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fidelity = 0.9964531368971509\n", - "concurrence = 0.9373100060729457\n", - "purity = 0.9931621992642894\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
        " - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# calculate fidelity, concurrence and purity of fitted state\n", - "F_fit = state_fidelity(rho_fit, bell_psi)\n", - "con = concurrence(rho_fit)\n", - "pur = purity(rho_fit)\n", - "\n", - "print('Fidelity =', F_fit)\n", - "print('concurrence = ', str(con))\n", - "print('purity = ', str(pur))\n", - "# plot \n", - "plot_state_paulivec(rho_fit)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that since our simulator is *perfect*, the output state should be *exactly* the Bell state, so we should obtain F = 1. Why is it not, in our case? Since we can never directly *see* the final state, we must obtain information about it via measurements. We would only obtain the *true* probabilities for the state in the limit of infinite measurement shots. Hence, we have statistical error in our reconstruction from imperfect information about the state itself. Try running with a different number of shots on the simulator and see how it affects the fidelity of the reconstruction.\n", - "\n", - "### Running on a real device\n", - "\n", - "Now that we've checked that our simple tomography experiment worked, let's try it out on the IBM Quantum Experience! To do this, we must attach our API key, and it is good practice to set a limit on the number of credits to use:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Use the IBM Quantum Experience (choose least busy device)\n", - "backend = least_busy(IBMQ.backends())\n", - "\n", - "# Take 1000 shots for each measurement basis\n", - "# Note: reduce this number for larger number of qubits\n", - "shots = 1000\n", - "# set max credits to spend\n", - "max_credits = 8\n", - "\n", - "# Run the experiment\n", - "job_on_device = execute(bell_tomo_circuits, backend=backend, shots=shots, max_credits=max_credits)\n", - "job_monitor(job_on_device)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can monitor the status of your job, and ask for the result.\n", - "\n", - "Note: a call to `job.result()` blocks until the job execution is done and result is available." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:59:51.146424Z", - "start_time": "2018-12-18T15:59:50.773842Z" - } - }, - "outputs": [], - "source": [ - "# Wait for the result and get it when ready\n", - "bell_tomo_result_device = job_on_device.result()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As before, we can extract the tomography data and reconstruct the measured density matrix for the 2-qubit Bell state prepared by our test circuit" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:59:51.250068Z", - "start_time": "2018-12-18T15:59:51.239804Z" - } - }, - "outputs": [], - "source": [ - "bell_tomo_data = tomo.tomography_data(bell_tomo_result_device, 'bell', bell_tomo_set)\n", - "\n", - "# Reconstruct experimentally measured density matrix \n", - "rho_fit_real = tomo.fit_tomography_data(bell_tomo_data)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, we compare the fidelity of the experimentally measured state to the ideal state. Notice that the fidelity is lower than for the simulation. This is because in a real experiment, there is not only the statistical error in the reconstruction, but also experimental error in the device when implementing the gates in the preparation and measurement circuits, as well as error in the measurements themselves." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": { - "ExecuteTime": { - "end_time": "2018-12-18T15:59:51.769653Z", - "start_time": "2018-12-18T15:59:51.587783Z" - }, - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fidelity with ideal state\n", - "F = 0.8530938718546163\n", - "concurrence = 0.571136111990975\n", - "purity = 0.7573827990208263\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
        " - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "F_fit_real = state_fidelity(rho_fit_real, bell_psi)\n", - "print('Fidelity with ideal state')\n", - "print('F =', F_fit_real)\n", - "\n", - "# calculate concurrence and purity\n", - "con = concurrence(rho_fit_real)\n", - "pur = purity(rho_fit_real)\n", - "print('concurrence = ', str(con))\n", - "print('purity = ', str(pur))\n", - "\n", - "plot_state_paulivec(rho_fit_real)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "anaconda-cloud": {}, - "hide_input": false, - "kernelspec": { - "display_name": "Python 3", - "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.7.0" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/qiskit/terra/creating_a_provider.ipynb b/qiskit/terra/creating_a_provider.ipynb new file mode 100644 index 000000000..211ac0470 --- /dev/null +++ b/qiskit/terra/creating_a_provider.ipynb @@ -0,0 +1,403 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# _*Creating a new provider*_ \n", + "\n", + "The latest version of this notebook is available on https://github.com/qiskit/qiskit-tutorial.\n", + "\n", + "***\n", + "### Contributors\n", + "Yael Ben-Haim" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "Qiskit Terra is a software for generating quantum circuits, running them on a simulator or device, generically a \"backend\", and processing the result. For a backend to work with Qiskit it should be able to process a quantum circuit, which Qiskit passes as a ``Qobj``, and return a ``Job``. The ``Job`` allows for asynchronously tracking the run and returning a ``Result`` once complete.\n", + "\n", + "To simplify the addition of backends, Qiskit defines an interface which can be created by inheriting from ``BaseBackend`` and ``BaseJob``. Backends can then be grouped together and managed by inheriting from ``BaseProvider``.\n", + "\n", + "This tutorial explains how to create a Qiskit backend which wraps an external simulator. This allows to run the external simulator, while enjoying the benefits of polymorphism and a uniform API across simulators." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# An external simulator for this tutorial\n", + "\n", + "We shall construct a very simple simulator. The simulator accepts only a single quantum circuit, where all the gates are Hadamard gates, and all qubits are measured at the end. The input format is a list of qubits on whom Hadamard gates are applied. The simulator returns the counts of each basis state, in the form of a list, where the basis states are assumed to be ordered lexicographically." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[256, 0, 256, 0, 256, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0]" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def run_hadamard_simulator(number_of_qubits, list_of_qubits, shots):\n", + " '''\n", + " Run our amazing Hadamard simulator!\n", + " Note: this function is not designed to be efficient\n", + " \n", + " Args:\n", + " number_of_qubits (integer): number of qubits in the qunatum circuit\n", + " list_of_qubits (list of integers): a list of qubits on whom Hadamard gates are applied\n", + " shots (integer): number of shots\n", + "\n", + " Returns:\n", + " list of integers:\n", + " each entry in the list contains the number of shots \n", + " where the measurement result is the correspnding basis state;\n", + " basis states are ordered lexicographically\n", + " '''\n", + " \n", + " # For each qubit, store whether it is manipulated by an odd number of Hadamard gates\n", + " # Example: for run_hadamard_simulator(5, [3, 1, 3, 4], 100)\n", + " # we obtain hadamard_list:\n", + " # [0, 1, 0, 0, 1]\n", + " # because qubits 1 and 4 have an odd number of Hadamard gates.\n", + " hadamard_list = [0]*number_of_qubits\n", + " for qubit in list_of_qubits:\n", + " hadamard_list[qubit] = (1 + hadamard_list[qubit])%2\n", + " \n", + " # Calculate the result for each basis state\n", + " result = [0]*(2**number_of_qubits)\n", + " for i in range(2**number_of_qubits):\n", + " # Example: when i is 2, \n", + " # the basis_state is 01000\n", + " basis_state = '{0:b}'.format(i).zfill(number_of_qubits)[::-1]\n", + " \n", + " for qubit in range(number_of_qubits):\n", + " if hadamard_list[qubit] == 0 and basis_state[qubit] == '1':\n", + " result[i] = 0\n", + " break\n", + " if hadamard_list[qubit] == 1:\n", + " result[i] += int(shots/(2**(1 + hadamard_list.count(1))))\n", + " \n", + " return result\n", + "\n", + "\n", + "run_hadamard_simulator(4, [3, 1, 3, 2], 1024)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Creating a job class\n", + "\n", + "A job class is a necessary building block when creating a provider. It allows to synchronize different executions of the simulator. Since this is out of the scope of this tutorial, we define a degenerated job, which effectively does nothing. See https://nbviewer.jupyter.org/github/Qiskit/qiskit-tutorial/blob/master/qiskit/basics/the_ibmq_provider.ipynb for relevant information." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit.providers import BaseJob\n", + "\n", + "class HadamardJob(BaseJob):\n", + " def __init__(self, backend):\n", + " super().__init__(backend, 1)\n", + " \n", + " def result(self):\n", + " return self._result\n", + " \n", + " def cancel(self):\n", + " pass\n", + " \n", + " def status(self):\n", + " pass\n", + " \n", + " def submit(self):\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Creating a backend\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit.providers import BaseBackend\n", + "from qiskit.providers.models import BackendConfiguration\n", + "from qiskit import qobj as qiskit_qobj\n", + "from qiskit.result import Result\n", + "\n", + "\n", + "class HadamardSimulator(BaseBackend):\n", + " '''\n", + " A wrapper backend for the Hadamard simulator\n", + " '''\n", + "\n", + " def __init__(self, provider=None):\n", + " configuration = {\n", + " 'backend_name': 'hadamard_simulator',\n", + " 'backend_version': '0.1.0',\n", + " 'url': 'http://www.i_love_hadamard.com',\n", + " 'simulator': True,\n", + " 'local': True,\n", + " 'description': 'Simulates only Hadamard gates',\n", + " 'basis_gates': ['h', 'x'], # basis_gates must contain at least two gates\n", + " 'memory': True,\n", + " 'n_qubits': 30,\n", + " 'conditional': False,\n", + " 'max_shots': 100000,\n", + " 'open_pulse': False,\n", + " 'gates': [\n", + " {\n", + " 'name': 'TODO',\n", + " 'parameters': [],\n", + " 'qasm_def': 'TODO'\n", + " }\n", + " ]\n", + " }\n", + " \n", + " # We will explain about the provider in the next section\n", + " super().__init__(configuration=BackendConfiguration.from_dict(configuration),\n", + " provider=provider)\n", + "\n", + "\n", + " def run(self, qobj):\n", + " \"\"\"Run qobj\n", + "\n", + " Args:\n", + " qobj (QObj): circuit description\n", + "\n", + " Returns:\n", + " HadamardJob: derived from BaseJob\n", + " \"\"\"\n", + " hadamard_job = HadamardJob(None)\n", + " \n", + " experiment_results = []\n", + " for circuit_index, circuit in enumerate(qobj.experiments):\n", + " number_of_qubits = circuit.config.n_qubits\n", + " shots = qobj.config.shots\n", + " \n", + " list_of_qubits = []\n", + " for operation in circuit.instructions:\n", + " if getattr(operation, 'conditional', None):\n", + " raise QiskitError('conditional operations are not supported '\n", + " 'by the Hadamard simulator')\n", + " if operation.name != 'h':\n", + " if operation.name == 'measure':\n", + " continue\n", + " else:\n", + " raise QiskitError('The Hadamrd simulator allows only Hadamard gates')\n", + " \n", + " list_of_qubits.append(operation.qubits[0])\n", + " \n", + " # Need to verify that \n", + " # all the qubits are measured, and to different classical registers.\n", + " # Raise an error otherwise.\n", + " # We skip this part here. \n", + " \n", + " counts = run_hadamard_simulator(number_of_qubits, list_of_qubits, shots)\n", + " \n", + " formatted_counts = {}\n", + " for i in range(2**number_of_qubits):\n", + " if counts[i] != 0:\n", + " formatted_counts[hex(i)] = counts[i]\n", + " \n", + " experiment_results.append({\n", + " 'name': circuit.header.name,\n", + " 'success': True, \n", + " 'shots': shots, \n", + " 'data': {'counts': formatted_counts},\n", + " 'header': circuit.header.as_dict()\n", + " })\n", + " \n", + " hadamard_job._result = Result.from_dict({\n", + " 'results': experiment_results,\n", + " 'backend_name': 'hadamard_simulator',\n", + " 'backend_version': '0.1.0',\n", + " 'qobj_id': '0',\n", + " 'job_id': '0',\n", + " 'success': True\n", + " })\n", + " \n", + " return hadamard_job" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Congratulations, your backend is ready! Now you can create a Qiskit circuit and run your simulator:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'0000': 256, '0010': 256, '0100': 256, '0110': 256}\n" + ] + } + ], + "source": [ + "from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister, execute\n", + "from qiskit.transpiler import PassManager\n", + "\n", + "qreg = QuantumRegister(4)\n", + "creg = ClassicalRegister(4)\n", + "qc = QuantumCircuit(qreg, creg)\n", + "qc.h(qreg[3])\n", + "qc.h(qreg[1])\n", + "qc.h(qreg[3])\n", + "qc.h(qreg[2])\n", + "qc.measure(qreg, creg)\n", + "\n", + "hadamard_job = execute(qc, backend=HadamardSimulator(), pass_manager=PassManager(), shots=1024)\n", + "result = hadamard_job.result()\n", + "\n", + "print(result.get_counts(qc))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Creating a provider" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To create a provider inhereit from ``BaseProvider`` and minimally implement the ``backends`` method for retreiving a list of backends." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from qiskit.providers import BaseProvider\n", + "from qiskit.providers.providerutils import filter_backends\n", + "\n", + "class HadamardProvider(BaseProvider):\n", + " \"\"\"Provider for the Hadamard backend\"\"\"\n", + "\n", + " def __init__(self, *args, **kwargs):\n", + " super().__init__(args, kwargs)\n", + "\n", + " # Populate the list of Hadamard backends\n", + " self._backends = [HadamardSimulator(provider=self)]\n", + "\n", + " def backends(self, name=None, filters=None, **kwargs):\n", + " # pylint: disable=arguments-differ\n", + " backends = self._backends\n", + " if name:\n", + " backends = [backend for backend in backends if backend.name() == name]\n", + "\n", + " return filter_backends(backends, filters=filters, **kwargs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following piece of code runs two simulators on the same quantum circuit. The simulators are accessed by their providers." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hadamard simulator:\n", + "{'0000': 256, '0010': 256, '0100': 256, '0110': 256}\n", + "Aer simulator:\n", + "{'0000': 270, '0010': 263, '0100': 253, '0110': 238}\n" + ] + } + ], + "source": [ + "from qiskit import execute, Aer\n", + "from qiskit.transpiler import PassManager\n", + "\n", + "hadamard_provider = HadamardProvider()\n", + "\n", + "new_hadamard_job = execute(qc, hadamard_provider.get_backend('hadamard_simulator'), \n", + " pass_manager=PassManager(), shots=1024)\n", + "new_hadamard_result = new_hadamard_job.result()\n", + "\n", + "aer_job = execute(qc, Aer.get_backend('qasm_simulator'),\n", + " pass_manager=PassManager(), shots=1024)\n", + "aer_result = aer_job.result()\n", + "\n", + "print('Hadamard simulator:')\n", + "print(new_hadamard_result.get_counts(qc))\n", + "print('Aer simulator:')\n", + "print(aer_result.get_counts(qc))" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "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.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/qiskit/terra/summary_of_quantum_operations.ipynb b/qiskit/terra/summary_of_quantum_operations.ipynb index 4c9183742..d54e13161 100644 --- a/qiskit/terra/summary_of_quantum_operations.ipynb +++ b/qiskit/terra/summary_of_quantum_operations.ipynb @@ -185,7 +185,7 @@ " └──────────────────────────┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -261,7 +261,7 @@ " └───────────────────┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 6, @@ -337,7 +337,7 @@ " └────────────┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -413,7 +413,7 @@ " └────────────┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 10, @@ -481,7 +481,7 @@ " └────┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 12, @@ -559,7 +559,7 @@ " └───┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 14, @@ -635,7 +635,7 @@ " └───┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 16, @@ -711,7 +711,7 @@ " └───┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 18, @@ -788,7 +788,7 @@ " └───┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 20, @@ -862,7 +862,7 @@ " └───┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 22, @@ -936,7 +936,7 @@ " └─────┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 24, @@ -1011,7 +1011,7 @@ " └───┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 26, @@ -1087,7 +1087,7 @@ " └─────┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 28, @@ -1167,7 +1167,7 @@ " └────────────┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 30, @@ -1241,7 +1241,7 @@ " └────────────┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 32, @@ -1317,7 +1317,7 @@ " └────────────┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 34, @@ -1593,7 +1593,7 @@ " └───┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 37, @@ -1687,7 +1687,7 @@ " └───┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 39, @@ -1769,7 +1769,7 @@ " " ], "text/plain": [ - "" + "" ] }, "execution_count": 41, @@ -1851,7 +1851,7 @@ " └───┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 43, @@ -1935,7 +1935,7 @@ " └────────────┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 45, @@ -2017,7 +2017,7 @@ " " ], "text/plain": [ - "" + "" ] }, "execution_count": 47, @@ -2099,7 +2099,7 @@ " └──────────────────────────┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 49, @@ -2185,7 +2185,7 @@ " " ], "text/plain": [ - "" + "" ] }, "execution_count": 51, @@ -2306,7 +2306,7 @@ " └───┘" ], "text/plain": [ - "" + "" ] }, "execution_count": 54, @@ -2402,7 +2402,7 @@ " " ], "text/plain": [ - "" + "" ] }, "execution_count": 56, @@ -2502,7 +2502,7 @@ " " ], "text/plain": [ - "" + "" ] }, "execution_count": 59, @@ -2570,7 +2570,7 @@ " " ], "text/plain": [ - "" + "" ] }, "execution_count": 61, @@ -2598,7 +2598,7 @@ { "data": { "text/plain": [ - "{'0': 502, '1': 522}" + "{'0': 513, '1': 511}" ] }, "execution_count": 62, @@ -2646,7 +2646,7 @@ " " ], "text/plain": [ - "" + "" ] }, "execution_count": 63, @@ -2707,7 +2707,7 @@ " " ], "text/plain": [ - "" + "" ] }, "execution_count": 65, @@ -2784,7 +2784,7 @@ " └─────┘ " ], "text/plain": [ - "" + "" ] }, "execution_count": 67, @@ -2847,7 +2847,7 @@ " └─────┘ " ], "text/plain": [ - "" + "" ] }, "execution_count": 69, @@ -2919,8 +2919,9 @@ "outputs": [ { "data": { + "image/png": "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iptER0db7xkZGSn1PHbsmPl5absxKZnU0NDw9ttvBwQEvPvuu+0OotVq+/TpI4QwRXlamTFjho2TVVo1py1przEhREREhPVPpIyioiLpoMNN+ubNmycdtN1xTAhx7969BQsW5Obmbt++3RTtamX69OnSgaWvt+vY8bCkpKQEBgYGBQUlJye3aho3bty5c+eWLFni5eVVWVl59OjRgoKCyspKIURQUNCBAwcSExPlrf+3336T9lIMDw+Xd2QAAAAAAAAAAAAAALohd+mPhISE2bNnnz171svLKzAwsF+/fkKIa9eu3bhxQ9iQdTAZOnSo0Wi03qe2tjYiIqKqqurYsWOPPPKIfXUfPnzYvgs75O/v/9NPP5WUlOzfv7+ysnLIkCFhYWGmHdnadf369YKCgs8++6yLSupufH19AwICrl69KoRIT0+/cuXK999/7+np2W5nT0/PqKio3NzcvLw8g8EgBYbklZeXJ4QYMWKE9R+TYqSllWwhxbDabWppaUlMTNy1a1dWVtYLL7xgaQQpg2UwGJQPCYnOPyzh4eG///67pVZvb+9169alpqYWFBSUlZVVVVX5+flNnjw5NDRUWtusrZMnT9pdfHfLlgEAAAAAAAAAAAAA0KXcTUcPPPCAVqs1b7N9QRTb1dTURERE6PX648ePW1mYx+lCQkJCQkJs7Lxt2zaVShUfH9+lJXUrEyZM2LVrV1VVVWpqanR09KxZs6x0Tk5Ozs3Nra6u/u6772RfD6aqqmr//v1CiFdeeUXekZ2opaUlKSnp22+/3bJly4svvmilpwIZrA516mHpUL9+/eLi4uQazYruli0DAAAAAAAAAAAAAKBLuVlpM61NIldIqKamJjw8vLGx8ciRI905IdRZOp1uxowZfn5+zi5EOdKOY2lpaf/+++/69eutd542bdqYMWOEEF999ZXslWRmZjY3N3t5eS1cuFD2wZ3CaDQuXrw4KysrMzMzISGhw/7S1l1SBqvrq3MRLpktAwAAAAAAAAAAAADACmshIWklIXd3d1mWCblz58706dNVKtWhQ4d8fX0dH7CbKCwsLC0tXbRokbMLUZQUEtq8efOKFStGjBhhvbNKpUpPTxdCFBUVmfZ4kkV9ff3atWuFECkpKa4xqYxG48svv7x169aNGzcmJSXZckmXZrBcletlywAAAAAAAAAAAAAAsM7dUoPRaDx9+rQQIjg4WJY9jBYtWlRcXKzVauPj441G471798xbdTrdoEGDHL+L8nQ6nZ+fX3R0tLMLUdTjjz+uUqn69++/fPlyW/pPnTo1ISFh27Ztn376aW5urlxlrF279ubNm4899tgbb7wh15jO9dprr2VmZo4ZM+bq1avvv/9+Y2Oj0WiUml5//fWhQ4e2vUTKYIWFhUkZrCeeeELZknse18uWAQAAAAAAAAAAAADQIYshoUuXLtXW1gohJk6cKMudKisrhRBHjx5tt/Xu3buy3EVher1+586dycnJ7u4Wv0mXVFhYaDQa169f7+npaeMlaWlpeXl5u3fvzs3NjY2NdbyG0tLSlJQUNze3jRs39urVy/EBna6kpGTDhg1CiIsXL168eNG8SaVSvffee5Yu7KIMlqtyvWwZAAAAAAAAAAAAAAAdsrjdWHFxsXTw5JNPynKn48ePGy3rcMuq7mnXrl16vd7GbaFcRnNz87Jly2bMmBETE2P7VRqNZseOHWq1Ojk5+dq1aw7WUF9fv2DBAoPBkJaWJtcUdbqQkBBLD0hLS8uDDz5o5dq0tDQfHx8pg6VUvT2S62XLAAAAAAAAAAAAAACwhcWQ0Lx58/R6vV6vj4+PV7KgnmXLli2TJk169NFHnV2IolatWlVRUfHll1929sLw8PDMzMwbN27ExMTo9Xq7CzAajYmJicXFxW+99dbSpUvtHseVyJvBclUumS0DAAAAAAAAAAAAAMAWFjfJUqvVarVayVIUM2zYMEcSKub+/vvvVatWyTJU97dy5coxY8ZcunQpJSVl27Ztw4YNs2OQhISEuXPnCiEcmV0qlSorKysrK8vDw8PuQVyPlMFKTEyMiYk5ceKEl5eXsyvqXsiWAQAAAAAAAAAAAADuZxZDQi5s/fr1cg1VXl4u11DdXFNTU2pq6r179/r27ZuRkTF//ny7h5Il2UM8qF2yZLBcFdkyAAAAAAAAAAAAAMD97H4MCcEOarVar9f/888/vr6+LFHTnZGAsYIvBwAAAAAAAAAAAABw3yIkBFv16dMnICDA2VUAAAAAAAAAAAAAAACg09ycXQAAAAAAAAAAAAAAAACArkVICAAAAAAAAAAAAAAAAHBxhIQAAAAAAAAAAAAAAAAAF0dICAAAAAAAAAAAAAAAAHBxhIQAAAAAAAAAAAAAAAAAF0dICAAAAAAAAAAAAAAAAHBx7s4uAOgBGhsbhRCbNm3y9fV1di1wjlOnTjU0NDi7CgAAAAAAAAAAAAAA7ERIyBXo9XohxKuvvtq/f39n19ID1NTUCCHq6+ttv0QKCaWlpXVVTegJvL29nV0CAAAAAAAAAAAAAAB2UhmNRmfXAEfdvHlTq9WOGjXKw8PD2bX0AAaDoby8/OeffyZTBQAAAAAAAAAAAAAA7hP/BTy58OQukbHdAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "execution_count": 71, @@ -2946,7 +2947,8 @@ "\n", "qc = QuantumCircuit(q)\n", "\n", - "qc.initialize(desired_vector, [q[0],q[1],q[2]])" + "qc.initialize(desired_vector, [q[0],q[1],q[2]])\n", + "qc.draw(output='latex')" ] }, { @@ -3056,19 +3058,12 @@ "\n", "U can be implemented as a \"quantum multiplexor\" gate, since it is a block diagonal matrix. In the quantum multiplexor formalism, a block diagonal matrix of size $2^n \\times 2^n$, and consisting of $2^s$ blocks, is equivalent to a multiplexor with $s$ select qubits and $n-s$ data qubits. Depending on the state of the select qubits, the corresponding blocks are applied to the data qubits. A multiplexor of this kind can be implemented after recursive decomposition to primitive gates of cx, rz and ry." ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -3082,7 +3077,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.7.2" } }, "nbformat": 4, diff --git a/releases/Terra_0.6.ipynb b/releases/Terra_0.6.ipynb new file mode 100644 index 000000000..86f0cdd45 --- /dev/null +++ b/releases/Terra_0.6.ipynb @@ -0,0 +1,798 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Qiskit Terra 0.6 Release Overview\n", + "Ali Javadi-Abhari, 19-Sep-18" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Upgrading to 0.6" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook contains information to ease your transition to Qiskit Terra 0.6. This is done through code examples.\n", + "\n", + "From a high-level point of view, the key updates of this release are in the low-level datastructures that are used by Qiskit to send jobs to backends. This format is called ``Qobj``. It allows us to better validate the different parts of the stack, localize errors, and emit more meaningful error messages. It also standardizes the development interfaces going forward.\n", + "\n", + "The other key update is in how the backend providers work, which has been greatly simplified. Now the default providers available from Qiskit are `Aer` (for local) and `IBMQ` (for remote).\n", + "\n", + "There are a set of breaking changes and a set of nice convenience features which we highlight below." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Working with local simulators (Aer)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Qiskit element of Aer is responsible for providing a suite of simulators. The backends that you get by loading Aer are returned via `Aer.backends()`. \n", + "\n", + "Now that the provider of backends are explicit, the simulator names have been shortened.\n", + "`local_qasm_simulator` is now `qasm_simulator`, and so on." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ]" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit import *\n", + "Aer.backends()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Working with remote backends (IBMQ)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Authenticating your credentials on IBMQ is now easier. You can store your credentials once, and then simply type `IBMQ.load_accounts()` anytime you want access to remote IBM Q backends. This will load all the backends you have access to. No more `import Qconfig` in all of your scripts (the old way still works, for the time being).\n", + "\n", + "For this to work, you have to have called `IBMQ.save_account('YOUR_TOKEN')` at some point in the past, which saves those credentials on your local machine.\n", + "\n", + "Also, if you have access to the IBM Q Network backends, please note that we are deprecating the passing of ``hub``, ``group`` and ``project`` as separate arguments. Instead, they are absorbed as part of the url. So you will do something like: \n", + "\n", + "`IBMQ.save_account('YOUR_TOKEN', 'https://q-console-api.mybluemix.net/api/Hubs/YOUR_HUB/Groups/YOUR_GROU/Projects/YOUR_PROJECT')`" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "IBMQ.load_accounts()\n", + "IBMQ.backends()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Getting the status and configuration of a backend is now done via methods on the backend object, rather than through the object's properties. This simply means insert parenthesis at the end of the call." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'pending_jobs': 22, 'name': 'ibmqx4', 'operational': True}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pprint import pprint\n", + "backend_name = 'ibmqx4'\n", + "backend = IBMQ.get_backend(backend_name)\n", + "backend.status()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'allow_q_object': False,\n", + " 'basis_gates': 'u1,u2,u3,cx,id',\n", + " 'chip_name': 'Raven',\n", + " 'coupling_map': [[1, 0], [2, 0], [2, 1], [3, 2], [3, 4], [4, 2]],\n", + " 'deleted': False,\n", + " 'description': '5 qubit transmon bowtie chip 3',\n", + " 'gate_set': 'SU2+CNOT',\n", + " 'internal_id': '5ae875670f020500393162b3',\n", + " 'local': False,\n", + " 'n_qubits': 5,\n", + " 'name': 'ibmqx4',\n", + " 'online_date': '2017-09-18T00:00:00.000Z',\n", + " 'simulator': False,\n", + " 'url': 'https://ibm.biz/qiskit-ibmqx4',\n", + " 'version': '1.2.0'}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "backend.configuration()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The methods `backend.calibration()` and `backend.parameters()` have been deprecated. We now just have `backend.properties()`, which will contain a merge of the previous dictionaries." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'backend': 'ibmqx4',\n", + " 'fridge_parameters': {'Temperature': {'date': '-', 'unit': '-', 'value': []},\n", + " 'cooldownDate': '2017-09-07'},\n", + " 'last_update_date': '2018-10-08T10:01:48.000Z',\n", + " 'multi_qubit_gates': [{'gateError': {'date': '2018-10-08T10:01:48Z',\n", + " 'value': 0.03658313664371693},\n", + " 'name': 'CX1_0',\n", + " 'qubits': [1, 0],\n", + " 'type': 'CX'},\n", + " {'gateError': {'date': '2018-10-08T10:01:48Z',\n", + " 'value': 0.026637945836152227},\n", + " 'name': 'CX2_0',\n", + " 'qubits': [2, 0],\n", + " 'type': 'CX'},\n", + " {'gateError': {'date': '2018-10-08T10:01:48Z', 'value': 0.03863525077896582},\n", + " 'name': 'CX2_1',\n", + " 'qubits': [2, 1],\n", + " 'type': 'CX'},\n", + " {'gateError': {'date': '2018-10-08T10:01:48Z', 'value': 0.05946126929500478},\n", + " 'name': 'CX3_2',\n", + " 'qubits': [3, 2],\n", + " 'type': 'CX'},\n", + " {'gateError': {'date': '2018-10-08T10:01:48Z', 'value': 0.03925146226082343},\n", + " 'name': 'CX3_4',\n", + " 'qubits': [3, 4],\n", + " 'type': 'CX'},\n", + " {'gateError': {'date': '2018-10-08T10:01:48Z', 'value': 0.05080363825395476},\n", + " 'name': 'CX4_2',\n", + " 'qubits': [4, 2],\n", + " 'type': 'CX'}],\n", + " 'qubits': [{'T1': {'date': '2018-10-08T10:01:48Z',\n", + " 'unit': 'µs',\n", + " 'value': 46.2},\n", + " 'T2': {'date': '2018-10-08T10:01:48Z', 'unit': 'µs', 'value': 36.4},\n", + " 'buffer': {'date': '2018-10-08T10:01:48Z', 'unit': 'ns', 'value': 10},\n", + " 'frequency': {'date': '2018-10-08T10:01:48Z',\n", + " 'unit': 'GHz',\n", + " 'value': 5.24983},\n", + " 'gateError': {'date': '2018-10-08T10:01:48Z',\n", + " 'value': 0.000858490762927322},\n", + " 'gateTime': {'date': '2018-10-08T10:01:48Z', 'unit': 'ns', 'value': 60},\n", + " 'name': 'Q0',\n", + " 'readoutError': {'date': '2018-10-08T10:01:48Z', 'value': 0.072}},\n", + " {'T1': {'date': '2018-10-08T10:01:48Z', 'unit': 'µs', 'value': 49.5},\n", + " 'T2': {'date': '2018-10-08T10:01:48Z', 'unit': 'µs', 'value': 13.5},\n", + " 'buffer': {'date': '2018-10-08T10:01:48Z', 'unit': 'ns', 'value': 10},\n", + " 'frequency': {'date': '2018-10-08T10:01:48Z',\n", + " 'unit': 'GHz',\n", + " 'value': 5.29577},\n", + " 'gateError': {'date': '2018-10-08T10:01:48Z',\n", + " 'value': 0.008423780913364154},\n", + " 'gateTime': {'date': '2018-10-08T10:01:48Z', 'unit': 'ns', 'value': 60},\n", + " 'name': 'Q1',\n", + " 'readoutError': {'date': '2018-10-08T10:01:48Z', 'value': 0.082}},\n", + " {'T1': {'date': '2018-10-08T10:01:48Z', 'unit': 'µs', 'value': 41.2},\n", + " 'T2': {'date': '2018-10-08T10:01:48Z', 'unit': 'µs', 'value': 25.7},\n", + " 'buffer': {'date': '2018-10-08T10:01:48Z', 'unit': 'ns', 'value': 10},\n", + " 'frequency': {'date': '2018-10-08T10:01:48Z',\n", + " 'unit': 'GHz',\n", + " 'value': 5.3532},\n", + " 'gateError': {'date': '2018-10-08T10:01:48Z', 'value': 0.00128782749692391},\n", + " 'gateTime': {'date': '2018-10-08T10:01:48Z', 'unit': 'ns', 'value': 60},\n", + " 'name': 'Q2',\n", + " 'readoutError': {'date': '2018-10-08T10:01:48Z', 'value': 0.036}},\n", + " {'T1': {'date': '2018-10-08T10:01:48Z', 'unit': 'µs', 'value': 52.3},\n", + " 'T2': {'date': '2018-10-08T10:01:48Z', 'unit': 'µs', 'value': 13.8},\n", + " 'buffer': {'date': '2018-10-08T10:01:48Z', 'unit': 'ns', 'value': 10},\n", + " 'frequency': {'date': '2018-10-08T10:01:48Z',\n", + " 'unit': 'GHz',\n", + " 'value': 5.43497},\n", + " 'gateError': {'date': '2018-10-08T10:01:48Z',\n", + " 'value': 0.001803112096824766},\n", + " 'gateTime': {'date': '2018-10-08T10:01:48Z', 'unit': 'ns', 'value': 60},\n", + " 'name': 'Q3',\n", + " 'readoutError': {'date': '2018-10-08T10:01:48Z', 'value': 0.032}},\n", + " {'T1': {'date': '2018-10-08T10:01:48Z', 'unit': 'µs', 'value': 53},\n", + " 'T2': {'date': '2018-10-08T10:01:48Z', 'unit': 'µs', 'value': 11.2},\n", + " 'buffer': {'date': '2018-10-08T10:01:48Z', 'unit': 'ns', 'value': 10},\n", + " 'frequency': {'date': '2018-10-08T10:01:48Z',\n", + " 'unit': 'GHz',\n", + " 'value': 5.17582},\n", + " 'gateError': {'date': '2018-10-08T10:01:48Z',\n", + " 'value': 0.0012019552727863259},\n", + " 'gateTime': {'date': '2018-10-08T10:01:48Z', 'unit': 'ns', 'value': 60},\n", + " 'name': 'Q4',\n", + " 'readoutError': {'date': '2018-10-08T10:01:48Z', 'value': 0.055}}]}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "backend.properties()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also filter the backends by least busy queue to speed up your work:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'pending_jobs': -1, 'name': 'ibmq_20_tokyo', 'operational': True}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit.backends.ibmq import least_busy\n", + "devices = IBMQ.backends(simulator=False)\n", + "least_busy_device = least_busy(devices)\n", + "least_busy_device.status()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, using the ``backend.jobs()`` and ``backend.retrieve_job(job_id)`` methods, you may now retrieve previous jobs executed on a particular backend (a batch of recent jobs, or a particular job). This allows you to resume your work even when a session is terminated." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5bbab4081e05e30056b929e3\n", + "5b98c1bb407d8700388c07d2\n", + "5b98685149bc8a003ac0c676\n", + "5b986818407d8700388c07a6\n", + "5b98679a0fb2bf003b41eb74\n", + "5b98676e14c0ea003b36579b\n", + "5b9866f3be0bed00448ea229\n", + "5b934172e5b8fb0039341344\n", + "5b9340141ac3ce0038641f4c\n", + "5b933ffb307f03003894b0bc\n" + ] + } + ], + "source": [ + "last_10_jobs = least_busy_device.jobs(limit=10)\n", + "for j in last_10_jobs:\n", + " print(j.job_id())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Building and Executing Circuits" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Creating a circuit works the same as v0.5. Note that you cannot use the ``QuantumProgram`` module anymore. Instead of emitting deprecation warnings, the ``QuantumProgram`` module is now fully removed." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit.tools.visualization import circuit_drawer\n", + "qr = QuantumRegister(4)\n", + "cr = ClassicalRegister(4)\n", + "circ = QuantumCircuit(qr, cr)\n", + "circ.h(qr[0])\n", + "circ.cx(qr[0], qr[1])\n", + "circ.tdg(qr[2])\n", + "circ.cx(qr[2], qr[1])\n", + "circ.x(qr[2])\n", + "circ.cx(qr[0], qr[2])\n", + "circ.cx(qr[1], qr[3])\n", + "circ.measure(qr, cr)\n", + "circuit_drawer(circ, scale=0.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A new matplotlib-based circuit drawer provides an alternative to the latex circuit drawer above, for users who had difficulty installing the latex drawer's pre-requisites. The drawer falls back to this if the latex fails." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmQAAAGOCAYAAAA5Jh/FAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3XlYVPX+B/D3MKSgzDAIJCmCAplJ\nsYgrmeCKJYhLLvcWLmR4My1zg0ubaerglpRZ0b2KKZqWJq7gLRWVFBcEkxY1EMRMBMVB3K7D+f3R\nz7kSCjMwM98B3q/nOc8znjnnfD6MzMyb7/nOGZkkSRKIiIiISBgr0Q0QERERNXYMZERERESCMZAR\nERERCcZARkRERCQYAxkRERGRYAxkRERERIIxkBEREREJxkBGREREJBgDGREREZFgDGREREREgjGQ\nEREREQnGQEZEREQkGAMZERERkWAMZERERESCMZARERERCcZARkRERCQYAxkRERGRYAxkRERERIIx\nkBEREREJxkBGREREJBgDGREREZFgDGREREREgjGQEREREQnGQEZEREQkGAMZERERkWAMZERERESC\nMZARERERCcZARkRERCQYAxkRERGRYAxkRERERIJZi26ALMfUqVORlZUlpLafnx+WLVsmpDYREZke\n32OqxxEy0snKyhLyZBFVl4iIzIfvMdXjCBlV4ufnh3379pm1ZnBwsFnrERGRGHyPeTiOkBEREREJ\nxkBGREREJBgDGREREZFgDGREREREgjGQEREREQnGQEZEREQWSZIkXLhwAYcOHUJ6ejpOnz6NioqK\nh25fUVGBbdu2QZIkM3ZpHAxkREREZDEkSUJGRgbGjRsHFxcXuLq6IjAwED179sQTTzwBlUqFQYMG\nYevWrdBqtbr9Kioq8Oqrr2Lw4MHYs2ePwJ+gdhptIEtMTDT42iQBAQFITU01TUNkNlqtFlu3bsXI\nkSMRHByMESNGVHliExE9zLVr1/Dxxx9j4MCB6N27NyZNmlQvLjxaH/z+++8YPHgwunfvjk2bNmHA\ngAH46KOPsGvXLqSmpmLlypWIiIhAVlYWwsPD4efnh+PHj+vCWEJCAmJjY9GnTx/RP4rhJAty9+5d\nacaMGZKTk5NkZ2cnDRs2TLp8+bJJaq1atUoKCgoyqPb7778vTZo0yST9WIKgoKBKj4k+HnvsMemL\n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\nQgFPT0+99xkzZozRhoP9/Pwwbtw4g/a59wZOREREZEzCAllgYCA0Go2o8vDz8+PkbSIiIrIIFvVd\nlkRERESNEQMZERERkWAMZERERESCMZARERERCcZARkRERCQYv9+BKsnKytJd682cNfmJVyKiho/v\nMQ/HQEY6on5heQkSIqKGry6v87kFF+Hh9liV2/rWrQ/vMUK/OonIEshkMvBpQES1wdcP84iJS4A6\nOqrK7YaEc8iIiIiIBGMgIyIiIhKMgYyIiIhIMAYyIiIiIsEYyIiIiIgEYyAjIiIiEoyBjIiIiEgw\nBjIiIiIiwRjIiIiIiARjICMiIiISjIGMiIiISDAGMiIiIiLBGMiIiIiIBLMW3QAREVU1depUZGVl\nmb2un58fli1bZva6RI0dR8iIiCxQVlaW2QOZiJpE9CeOkBERWSg/Pz/s27fPbPWCg4PNVouIKuMI\nGREREZFgHCGjRunWrVs4c+YMbty4ofu3jY2N4K6qJ0kSzp8/jz/++AMymQyurq547LHHRLdFRERG\nwBEyajSuXLmCpUuXIiAgAAqFAj4+PujevTsAQKFQoFOnTli6dCmuXLkiuNP/kSQJe/bswciRI/Ho\no4/C3d0d3bp1Q9euXdGqVSs89thjGDt2LA4fPgxJkkS3S0REtcRARg1eRUUFli9fDjc3N0yfPh1N\nmjTBzJkz8dVXX2Hnzp0AgFmzZsHGxgbTp09HmzZt8PHHH6OiokJo37/88gueeeYZ9O3bF99//z3C\nwsKwYsUKbN++HQAQHx+Pfv364dtvv0WPHj0wcOBAFBQUCO2ZiIhqh6csqUG7fv06XnjhBaSmpiIk\nJARqtRp+fn5Vtps3bx4AIDs7GzExMXj99dexfft2fPPNN1AoFOZuG+vXr8f48ePRvHlzJCQk4KWX\nXoKtrW2lbV5//XUAQFlZGb744gu8++67eOqpp/D1118jJCTE7D0TEVHtcYSMGqxbt24hNDQU3333\nHVasWIFdu3Y9MIzdz9fXFzt37sRnn32G77//HqGhobh586aZOv7Thg0b8OKLL6Jbt27IycnBK6+8\nUiWM3U+hUGDatGn48ccf4enpicGDB+O7774zY8dUX2m1WtEtENH/YyCjBuudd95BWloa1qxZg1df\nfRUymUyv/WQyGSZOnIi1a9di//79eOedd0zc6f/89ttviIyMxDPPPINdu3bBxcVF733btWuHPXv2\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "qiskit.tools.visualization.matplotlib_circuit_drawer(circ)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Executing a circuit on a backend works as before. However, the Job interface has been simplified. If you want to explicitly check the status of a job, you can do so with the status method (note that this used to be a property, so again don't forget the parenthesis).\n", + "You can query the status, which gives you an enum of qiskit.backends.JobStatus (`queued`, `running`,\n", + "`validating`, `done` or `cancelled`)." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JobStatus.INITIALIZING\n", + "JobStatus.INITIALIZING\n", + "JobStatus.RUNNING\n", + "JobStatus.DONE\n" + ] + } + ], + "source": [ + "simulator_backend = IBMQ.get_backend(simulator=True, hub=None)\n", + "job = execute(circ, simulator_backend)\n", + "\n", + "import time\n", + "from qiskit.backends import JobStatus\n", + "print(job.status())\n", + "while job.status() != JobStatus.DONE:\n", + " time.sleep(1)\n", + " print(job.status())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. Compile() improvements, and new Qobj format" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The compiler code has been optimized for better performance by removing some bottlenecks. Also, if you have many circuits, they will compile in parallel, giving you noticeable improvements (proportional to the number of physical cores on your machine).\n", + "\n", + "In Qiskit, the output of the ``compile()`` command is called ``Qobj``. It is a container for the job to be executed on the backend, and can include multiple circuits within it. It specifies the details of the experiment that a backend needs to know in order to run the job, such as number of shots, the device registers that should be used for measurement, etc. A major feature of this release is the definition of a set of specifications to allow us to validate these kinds of jobs for correctness, and to localize errors better.\n", + "\n", + "You can convert a qobj back to (a list of) QuantumCircuit in order to see how the circuit got transformed during the compilation process." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nZ4yNjTdv3kxzgWw2e86cOYqKihEREZLtWCrtt7u4uPjMmTMhISGPHz9u/LZqampevHjx77//Xrt2\nrcRX3UW08c727t2706dPHz16NDExsb6+XtS0eXl58fHxos7FT1J7bCs3hDS/LW2/V5eWlpaXlzf5\nsdnelJSU/PbbbwEBAbIOAiAdXFEcOXJEVVWVN+/AgQMzMzNFWkLr6enpffz4UYxgU6ZMOX78uPSC\n5ebmamtr02n577//EkLk5ORKSkqabEDd3yM0NJTmqnfu3EkIiYuLo9meJjHe7n79+hk1z8fHh79x\nTEyMiooKb/mDBg3KyMhovMzdu3cTQq5evSp81cePH1+wYIGo29j2qCHj6+rqWrOQhoYGQkhtbW2L\nLdtsZysqKvrmm2/k5f/vV1zv3r1bfNd4KioqwsLCDAwMPDw8aM7SmEQ+oFq5IVx620Jzrw4ODl66\ndCn9VfPk5OTs3Llz+PDhioqKioqKCgoK8vLylpaWGzdufP78uRgLPHz4sJubmxgzimTt2rVLliwR\n3sbExKTJDwoJ8vLy2rNnD/X//fv3r1ixQqqra5Gjo+Ply5dlm6FjMTAweP/+PfX/r7/++saNG7LN\nwyPCUa6zZ896eHhYWFjcuHEjLS0tKCjo3bt3Dg4OlZWV9BciDTSDubu7h4WFySokv0ePHhFCLC0t\ntbS0mmzw999/E0K++uorOkurrq4ODAx0dHScNm2a5DKK+XZrampq8dHR0dHT09PT01NXV8/Pz+c/\nWhASEuLi4jJs2LAnT56UlpZGRUW9fv16woQJjfu4rF692sTEZMeOHRLcuq6jbXa20tJSOzu7mzdv\n/vbbb+np6SUlJefOnSsuLp49e/aTJ0+EL3PTpk0WFhba2tru7u6fPn2iE6NJEvmAas2GiLQt0tur\n6+rqtm/fPmDAgMzMzF9++aWoqGj//v2LFi2qqqqiPgDHjBmzZMmSz58/S3zVrZSZmRkREfHLL7/I\nOgiA1NAszVgslpGRkba2dkFBAW8i9Qe8fft26ZSDTRM4ykU/WF1dna6u7uvXr6UUjP5RLg8PD0LI\n4sWLm3y2trZWSUlJQ0ODw+HQWVpwcDAh5PTp0/Sjtkjib7eLi4uBgUF+fj71MC0tjclkmpubl5eX\n89r4+fkRQnbs2NF49u3btxNCEhMThawCR7ma1DY72/79+7t165aamso/MSgoiBDi6uoqfJlbt251\n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\npZ66d+8eIWTQoEECs1haWhJCHj582Jr13rlzJzAw8M6dO8KbSTUDAAAAAE3il1xFRUUzZswYP378\n+fPnORxOfn5+TEzMvHnzAgMDqQbFxcWEEH19fYEZu3fvTgjJyckRe9WEkLi4OG9v77i4OOHNpJoB\nAAAAgCYxu8+XlZWNHTv2+fPnu3btWrdunZKSEiGkoKBg8+bNM2fO5LUhhFBP8WMymYSQVl4waGtr\n6+bmZmtr22JOiWQoKysrKioSPWYHU1FRoaGhIesUssThcOrq6lRVVaW6FrzO4qmsrFRTU8OgeqJq\nm71auJqamvz8/BcvXjCZzLKyMjU1tfbfr6O+vp7L5VJfFrIl8z2/vLycy+VmZmaWl5d369aNw+F8\n+PCBw+HIKk+LqITFxcXdunWrra3Ny8uT6v7GZrNZLJaKiorwZvLy8mKWXD4+Ps+fPz906JCnpydv\noqGhYXh4OO8hVdDIywseSGMwGIQQ3ihZPO/evaM/Vpazs7Ozs3OLzUTN0BxfX9+//vqLZuMOisVi\nlZWV6enpyTqILNXW1tbU1Ghra0t1Lfn5+UZGRlJdRadUXFyspqbWHr4CO5aampq6ujotLS0ZZsjL\ny3v79m1dXZ2KikpVVRWDwTh79qwM89BRWVnJ5XLbw6+joqIiDQ2NxscO2kxDQ0N9ff2ECROoz66S\nkpKFCxcqKLTFUOriKS0tXbBgQUlJiY6ODnUwqMV6qDWqq6tZLJampqbwZnJycuK8ZE+fPj106JCd\nnR1/vdWYmppaUVERi8VSVFTkn85isahnqf9nZ2enp6efOHHi7du3jx8/FiNPKzPQsW/fvn379kk2\nGwBAFzFp0iQvLy8nJydCyJo1a8zMzDZu3CjrUEBXaWmpsbFxRkYG9dDIyOju3bs9evSQbSohDA0N\nExMTzc3NCSEODg4+Pj4TJkyQdShCxOvLdeTIEQ6Hs2HDBuHNqB9VjY8k1dXVEUKoevDPP/+0sLBY\ns2ZNi72yxEMnAwAAAHQavXr14h1SMTU11dHRkW0eHnGOciUnJxNCRowYIbwZVe5kZWUJnKvKysoi\n/y13Zs2aVVNTo6ys3PiiQomgkwEAAAA6jaSkJN7/Y2JiZJhEEFdEDQ0NSkpKDAajoaFBeEsPDw9C\nSHR0tMB0R0dHQkhycjL/xIEDB9ra2ooapkUiZRBiyZIlsn2b2gY6JrcNqishiKpxp0ygo/38XXes\n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\nAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "qobj = compile(circ, simulator_backend)\n", + "compiled_circ = qobj_to_circuits(qobj)[0]\n", + "circuit_drawer(compiled_circ, scale=0.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To inspect qobj further, you can print it as a JSON dictionary. This is the dictionary sent over the network to remote backends." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'config': {'max_credits': 10,\n", + " 'memory_slots': 4,\n", + " 'n_qubits': 4,\n", + " 'shots': 1024},\n", + " 'experiments': [{'config': {'basis_gates': 'u1,u2,u3,cx,id',\n", + " 'coupling_map': 'all-to-all',\n", + " 'layout': None,\n", + " 'memory_slots': 4,\n", + " 'n_qubits': 4},\n", + " 'header': {'clbit_labels': [['c0', 4]],\n", + " 'compiled_circuit_qasm': 'OPENQASM 2.0;\\ninclude \"qelib1.inc\";\\nqreg q0[4];\\ncreg c0[4];\\nu1(-0.785398163397448) q0[2];\\nu2(0,3.14159265358979) q0[0];\\ncx q0[0],q0[1];\\ncx q0[2],q0[1];\\ncx q0[1],q0[3];\\nmeasure q0[1] -> c0[1];\\nmeasure q0[3] -> c0[3];\\nu3(3.14159265358979,0,3.14159265358979) q0[2];\\ncx q0[0],q0[2];\\nmeasure q0[0] -> c0[0];\\nmeasure q0[2] -> c0[2];\\n',\n", + " 'name': 'circuit1',\n", + " 'number_of_clbits': 4,\n", + " 'number_of_qubits': 4,\n", + " 'qubit_labels': [['q0', 0], ['q0', 1], ['q0', 2], ['q0', 3]]},\n", + " 'instructions': [{'name': 'u1',\n", + " 'params': [-0.7853981633974483],\n", + " 'qubits': [2],\n", + " 'texparams': ['- \\\\frac{\\\\pi}{4}']},\n", + " {'name': 'u2',\n", + " 'params': [0.0, 3.141592653589793],\n", + " 'qubits': [0],\n", + " 'texparams': ['0', '\\\\pi']},\n", + " {'name': 'cx', 'params': [], 'qubits': [0, 1], 'texparams': []},\n", + " {'name': 'cx', 'params': [], 'qubits': [2, 1], 'texparams': []},\n", + " {'name': 'u3',\n", + " 'params': [3.141592653589793, 0.0, 3.141592653589793],\n", + " 'qubits': [2],\n", + " 'texparams': ['\\\\pi', '0', '\\\\pi']},\n", + " {'name': 'cx', 'params': [], 'qubits': [0, 2], 'texparams': []},\n", + " {'clbits': [2], 'memory': [2], 'name': 'measure', 'qubits': [2]},\n", + " {'clbits': [0], 'memory': [0], 'name': 'measure', 'qubits': [0]},\n", + " {'name': 'cx', 'params': [], 'qubits': [1, 3], 'texparams': []},\n", + " {'clbits': [3], 'memory': [3], 'name': 'measure', 'qubits': [3]},\n", + " {'clbits': [1], 'memory': [1], 'name': 'measure', 'qubits': [1]}]}],\n", + " 'header': {'backend_name': 'ibmq_qasm_simulator'},\n", + " 'qobj_id': 'a947ccfb-4d44-4cd7-8d46-04fd832c1f79',\n", + " 'schema_version': '1.0.0',\n", + " 'type': 'QASM'}" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "qobj.as_dict()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The compiled Qobj can be directly run on a backend." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "job = simulator_backend.run(qobj)\n", + "result = job.result()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6. Better Jupyter tools" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The new release contains several improvements to the user experience while using Jupyter notebooks." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### a) Jupyter magics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cell magics are special Jupyter command that you insert at the beginning of a cell, which give you useful information when you compile and execute in Qiskit." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import qiskit.wrapper.jupyter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``%%qiskit_job_status`` magic prints and automatically updates the status of a submitted job until the job has finished running. This way you don't have to manually check for the job status." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "f90a65aa3ad24644b3d29f61e6b9a2e2", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "A Jupyter Widget" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%qiskit_job_status\n", + "job = execute(circ, backend)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%%qiskit_progress_bar\n", + "qobj = compile(circ, backend)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "### b) New Interactive Visualizations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The new release has improved, interactive visualizations of quantum states and measurement count histograms. These will be used by default when the environment is Jupyter and an internet connection exists. Otherwise, it falls back to the old static plots." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit import *\n", + "from qiskit.tools.visualization.interactive import *\n", + "q = QuantumRegister(5)\n", + "circ1 = QuantumCircuit(q)\n", + "circ1.h(q)\n", + "circ1.ry(1.3, q[0])\n", + "circ1.cx(q[0], q[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "statevector_simulator = Aer.get_backend('statevector_simulator')\n", + "result = execute(circ1, statevector_simulator).result()\n", + "psi = result.get_statevector()\n", + "iplot_state(psi, method='qsphere') # method could be city, paulivec, qsphere, bloch, wigner\n", + "# Not displayable in github" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "c = ClassicalRegister(5)\n", + "circ2 = QuantumCircuit(q, c)\n", + "circ2.h(q)\n", + "circ2.measure(q, c)\n", + "circ3 = QuantumCircuit(q, c)\n", + "circ3.h(q[0])\n", + "circ3.y(q[1])\n", + "circ3.cx(q[1], q[0])\n", + "circ3.measure(q, c)\n", + "\n", + "qasm_simulator = Aer.get_backend('qasm_simulator')\n", + "result = execute([circ2, circ3], qasm_simulator).result()\n", + "counts_list = [result.get_counts(circ) for circ in [circ2, circ3]]\n", + "# Needs to be run in Jupyter, will not render on github\n", + "iplot_histogram(counts_list, legend=['first circuit', 'second circuit'])\n", + "# Not displayable in github" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/releases/Terra_0.7_New_Features_and_Changes_Guide.ipynb b/releases/Terra_0.7_New_Features_and_Changes_Guide.ipynb new file mode 100644 index 000000000..7083a2853 --- /dev/null +++ b/releases/Terra_0.7_New_Features_and_Changes_Guide.ipynb @@ -0,0 +1,1927 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Terra 0.7 New Features and Change Guide\n", + "\n", + "Donny Greenberg and Matthew Treinish, 19-Dec-18" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "This notebook serves to highlight in code Terra's new features and breaking changes. We highly recommend reading the [release notes](https://github.com/Qiskit/qiskit-terra/blob/master/doc/release_history.rst) for a more readable discussion, but present the below to you as a technical addendum for familiarizing yourself with the usage of the new features and updating your code for breaking changes. The examples below are intended to be exhaustive, so please raise an issue [here](https://github.com/Qiskit/qiskit-tutorials/issues) if you notice a change or break which is not included (including deprecation warnings!).\n", + "\n", + "**Note:** Some of the text in this notebook does not render nicely on github. We recommend downloading the notebook, running it locally, and changing the `lin_len` variable to 200 or more." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "In this notebook:\n", + "* Terra 0.7\n", + " * Backends\n", + " * Results\n", + " * Visualization\n", + " * Memory\n", + " * Transpilation\n", + " * Deprecations / Miscellanea" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Terra 0.7\n", + "\n", + "This week's Terra release includes big updates to visualization, transpilation, backends, and memory, but Autumn cleaning was in full effect all over the repo.\n", + "\n", + "### Important: Note on Upgrading\n", + "\n", + "For this release, we highly recommend uninstalling Qiskit and reinstalling, rather than running a pip upgrade (though this is not necessary for Aqua). This is because we've reorganized the pip installs so the pip install for Terra is `pip install qiskit-terra`, the pip install for Aer is `pip install qiskit-aer`, and `pip install qiskit` installs both. This renaming will likely introduce errors if you upgrade without uninstalling first. Even if you've installed from source, we still recommend doing this.\n", + "\n", + "Now, let's move on to new features. First some notebook setup:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit\n", + "from qiskit.tools.qi.qi import qft\n", + "import numpy as np\n", + "import copy" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Setting up a Hadamard QPE circuit for demonstrations below.\n", + "def h_qpe(circ, q, n):\n", + " for i in range(n-1):\n", + " circ.h(q[i])\n", + " for j in range(0, n-1, 2): # Only place a CH^n on every other qubit, because CX^n = I for n even\n", + " circ.ch(q[j], q[n-1])\n", + " circ.barrier()\n", + " qft(circ, q, n-1)\n", + " \n", + "n = 5\n", + "qr = QuantumRegister(n)\n", + "cr = ClassicalRegister(n)\n", + "circuit = QuantumCircuit(qr, cr)\n", + "circuit.rx(np.pi/4, qr[n-1])\n", + "circuit.barrier()\n", + "h_qpe(circuit, qr, n)\n", + "unt_circ = copy.deepcopy(circuit)\n", + "circuit.barrier()\n", + "circuit.measure(qr, cr)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Providers and Backends\n", + "\n", + "We've split our simulator suite into three providers:\n", + "\n", + "* Aer - This is our fully-featured high performance simulator suite, located in a separate repo, [here](https://github.com/Qiskit/qiskit-aer). \n", + "* BasicAer - This is a limited-functionality version of Aer packaged inside of Terra for convenience.\n", + "* LegacySimulators - These are the older simulators from Terra 0.6-." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "%%capture --no-display\n", + "from qiskit import BasicAer, LegacySimulators, Aer\n", + "\n", + "qasm_backend = BasicAer.get_backend('qasm_simulator')\n", + "sv_backend = BasicAer.get_backend('statevector_simulator')\n", + "unt_backend = BasicAer.get_backend('unitary_simulator')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Another big change is that the \"qasm_simulator\" and \"statevector_simulator\" initialization no longer fails over to the respective python versions. \n", + "\n", + "This is because the python simulators are so limited that usually a user does not actually intend to use it, and because users often did not notice the failover and could not understand why their simulations were running so slowly." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Results Object\n", + "\n", + "We've rewritten the Results object to be a more consistent and stable interface across the backends, and with that, have moved to accessor methods rather than accessing a data object directly." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "# Setup\n", + "from qiskit import execute\n", + "\n", + "qasm_job = execute(circuit, qasm_backend)\n", + "sv_job = execute(unt_circ, sv_backend)\n", + "unt_job = execute(unt_circ, unt_backend)\n", + "qasm_result = qasm_job.result()\n", + "sv_result = sv_job.result()\n", + "unt_result = unt_job.result()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "First, `result.get_data()` method has been renamed to `result.data()`, but this really shouldn't be the way you interact with results, as we'll see. This returns data as-is from the backend, so it may not be formatted into complex numbers or convenient structures." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'counts': {'0x1f': 16,\n", + " '0x10': 103,\n", + " '0x0': 661,\n", + " '0xd': 11,\n", + " '0x11': 9,\n", + " '0x1d': 81,\n", + " '0x1': 1,\n", + " '0x15': 28,\n", + " '0x3': 7,\n", + " '0xb': 2,\n", + " '0x13': 70,\n", + " '0x1b': 32,\n", + " '0x5': 3}}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "qasm_result.data()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": true, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'counts': {'0x0': 1},\n", + " 'statevector': [[0.13529902503654992, 0.7885805074747372],\n", + " [-0.02821286791216001, 0.04222354069865876],\n", + " [0.0, 0.0],\n", + " [-0.020276459301341056, 0.10193664460611457],\n", + " [0.0, 0.0],\n", + " [-0.013548296957796295, -0.06811188834697732],\n", + " [0.0, 0.0],\n", + " [-0.0056118883469774145, -0.008398784439521599],\n", + " [0.0, 0.0],\n", + " [0.008398784439521564, 0.005611888346977307],\n", + " [0.0, 0.0],\n", + " [0.06811188834697726, 0.013548296957796128],\n", + " [0.0, 0.0],\n", + " [-0.10193664460611465, 0.020276459301341233],\n", + " [0.0, 0.0],\n", + " [-0.04222354069865882, 0.028212867912160093],\n", + " [0.05604269114599594, 0.32664074121909403],\n", + " [0.06811188834697726, -0.1019366446061147],\n", + " [0.0, 0.0],\n", + " [0.04895170304220364, -0.2460968299108881],\n", + " [0.0, 0.0],\n", + " [0.03270848226256991, 0.16443664460611454],\n", + " [0.0, 0.0],\n", + " [0.013548296957796246, 0.020276459301341126],\n", + " [0.0, 0.0],\n", + " [-0.02027645930134109, -0.013548296957796219],\n", + " [0.0, 0.0],\n", + " [-0.16443664460611462, -0.03270848226256963],\n", + " [0.0, 0.0],\n", + " [0.24609682991088808, -0.048951703042203906],\n", + " [0.0, 0.0],\n", + " [0.10193664460611457, -0.06811188834697732]]}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sv_result.data()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "unt_result.data()\n", + "# Not displayed because results are too large for github." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The proper way to pull results is to use the new ``get_counts()``, ``get_statevector()``, and ``get_unitary()`` methods on the result object instead of ``get_data()['counts']``, ``get_data()['statevector']``, and ``get_data()['unitary']`` respectively. Note that the following results are in the familiar Terra 0.6- format." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'11111': 16,\n", + " '10000': 103,\n", + " '00000': 661,\n", + " '01101': 11,\n", + " '10001': 9,\n", + " '11101': 81,\n", + " '00001': 1,\n", + " '10101': 28,\n", + " '00011': 7,\n", + " '01011': 2,\n", + " '10011': 70,\n", + " '11011': 32,\n", + " '00101': 3}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "qasm_result.get_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0.13529903+0.78858051j, -0.02821287+0.04222354j,\n", + " 0. +0.j , -0.02027646+0.10193664j,\n", + " 0. +0.j , -0.0135483 -0.06811189j,\n", + " 0. +0.j , -0.00561189-0.00839878j,\n", + " 0. +0.j , 0.00839878+0.00561189j,\n", + " 0. +0.j , 0.06811189+0.0135483j ,\n", + " 0. +0.j , -0.10193664+0.02027646j,\n", + " 0. +0.j , -0.04222354+0.02821287j,\n", + " 0.05604269+0.32664074j, 0.06811189-0.10193664j,\n", + " 0. +0.j , 0.0489517 -0.24609683j,\n", + " 0. +0.j , 0.03270848+0.16443664j,\n", + " 0. +0.j , 0.0135483 +0.02027646j,\n", + " 0. +0.j , -0.02027646-0.0135483j ,\n", + " 0. +0.j , -0.16443664-0.03270848j,\n", + " 0. +0.j , 0.24609683-0.0489517j ,\n", + " 0. +0.j , 0.10193664-0.06811189j])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sv_result.get_statevector()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.13529903+0.78858051j, 0. +0.j ,\n", + " 0. +0.j , ..., 0. +0.j ,\n", + " 0. +0.j , 0. +0.j ],\n", + " [-0.02821287+0.04222354j, -0.47864536+0.18359683j,\n", + " 0.04222354+0.02821287j, ..., 0.0135483 -0.02027646j,\n", + " -0.04222354+0.00111627j, -0.02027646-0.0135483j ],\n", + " [ 0. +0.j , 0. +0.j ,\n", + " -0.44212568+0.27880531j, ..., 0. +0.j ,\n", + " 0.04783543-0.11548494j, -0.01981408-0.0874636j ],\n", + " ...,\n", + " [ 0.24609683-0.0489517j , 0.06811189+0.03034587j,\n", + " -0.0489517 -0.24609683j, ..., -0.06811189+0.0135483j ,\n", + " 0.08727207+0.08277646j, 0.0135483 +0.06811189j],\n", + " [ 0. +0.j , 0. +0.j ,\n", + " 0.2111558 +0.04783543j, ..., 0. +0.j ,\n", + " -0.04783543+0.01981408j, -0.11548494+0.18313445j],\n", + " [ 0.10193664-0.06811189j, 0.21227207+0.00561189j,\n", + " 0.06811189+0.10193664j, ..., -0.00839878+0.00561189j,\n", + " -0.09520848-0.03651968j, -0.00561189-0.00839878j]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "unt_result.get_unitary()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Additionally, support for ``len()`` and indexing on a ``Result`` object has been\n", + "removed. Instead, you should interact with the output from the post-processed\n", + "methods on the Result objects." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "32" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(sv_result.get_statevector())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "The ``get_snapshot()`` and ``get_snapshots()`` methods from the ``Result`` class have been removed. Instead you can access the snapshots using ``Result.data()['snapshots']``. This is because the snapshot does not yet have a contract, so the snapshot passed back is truly at the discretion of the simulator." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'statevector': {'10': [[[0.1352990250365496, 0.7885805074747372],\n", + " [-0.02821286791216005, 0.04222354069865875],\n", + " [4.289610691196225e-17, -3.248776605610142e-17],\n", + " [-0.02027645930134106, 0.10193664460611457],\n", + " [-5.397192826725481e-17, -1.1285039546789633e-16],\n", + " [-0.013548296957796316, -0.06811188834697732],\n", + " [-9.392163370600625e-18, 3.571064700479636e-17],\n", + " [-0.005611888346977376, -0.00839878443952159],\n", + " [-4.163336342344337e-17, 0.0],\n", + " [0.008398784439521564, 0.005611888346977307],\n", + " [-1.2627434885189043e-18, 1.167108434437975e-17],\n", + " [0.06811188834697725, 0.013548296957796184],\n", + " [-1.3247655120144348e-16, 1.1285039546789633e-16],\n", + " [-0.10193664460611462, 0.020276459301341185],\n", + " [-4.485624437213816e-18, 4.0617185938183144e-17],\n", + " [-0.04222354069865883, 0.028212867912160114],\n", + " [0.0560426911459959, 0.32664074121909403],\n", + " [0.06811188834697728, -0.10193664460611472],\n", + " [-8.375985885340412e-18, -1.283607757691177e-17],\n", + " [0.04895170304220362, -0.246096829910888],\n", + " [5.88784672006416e-17, 8.831770080096231e-17],\n", + " [0.03270848226256992, 0.16443664460611462],\n", + " [1.531487978924763e-17, -3.538748276461026e-17],\n", + " [0.013548296957796177, 0.020276459301341077],\n", + " [-6.938893903907228e-18, 5.551115123125783e-17],\n", + " [-0.020276459301341095, -0.013548296957796163],\n", + " [1.4370919814331955e-18, 2.1509694956795804e-17],\n", + " [-0.16443664460611454, -0.03270848226256956],\n", + " [7.850462293418871e-17, -8.831770080096232e-17],\n", + " [0.24609682991088805, -0.04895170304220396],\n", + " [5.5018019224740475e-18, -1.0417102309026878e-18],\n", + " [0.10193664460611458, -0.06811188834697732]]]}}" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from qiskit import LegacySimulators\n", + "from qiskit.extensions.simulator.snapshot import snapshot\n", + "snap_backend = LegacySimulators.get_backend('statevector_simulator')\n", + "\n", + "snap_unt_circ = copy.deepcopy(unt_circ)\n", + "snap_unt_circ.snapshot(10)\n", + "sv_job = execute(snap_unt_circ, snap_backend)\n", + "sv_result = sv_job.result()\n", + "sv_result.data()['snapshots']" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Averages with Respect to Observables\n", + "\n", + "Lastly, `average_data(self, name, observable)` has been deprecated. It has been moved to the quantum_info section to be usable for general quantum states and observables." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "from qiskit.quantum_info.analyzation.average import average_data" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.015625 , 0.10058594, 0.64550781, 0.01074219, 0.00878906,\n", + " 0.07910156, 0.00097656, 0.02734375, 0.00683594, 0.00195312,\n", + " 0.06835938, 0.03125 , 0.00292969])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "counts = qasm_result.get_counts()\n", + "iden = np.eye(len(counts))\n", + "oper = {}\n", + "for i, key in enumerate(counts.keys()):\n", + " oper[key] = iden[i]\n", + "average_data(counts, oper)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Visualization" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The biggest change made to visualization in the 0.7 release is the removal of\n", + "Matplotlib from the project requirements. This was done to simplify the\n", + "requirements and configuration required for installing Qiskit. If you plan to\n", + "use any visualizations that depend on Matplotlib, which includes the ``mpl``\n", + "output for the circuit drawer, and any of the plot* functions in the\n", + "``qiskit.tools.visualization`` module you must manually ensure that matplotlib\n", + "is installed. You can also do the following to\n", + "install Qiskit with the visualization requirements:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "#!pip install qiskit-terra[visualization]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "from qiskit.tools.visualization import circuit_drawer\n", + "from qiskit.tools.visualization.dag_visualization import dag_drawer" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Circuit Drawing\n", + "\n", + "We highly recommend the [Visualizing a Quantum Circuit](https://github.com/Qiskit/qiskit-tutorials/blob/master/qiskit/terra/visualizing_a_quantum_circuit.ipynb) notebook written by Matthew Treinish, who also wrote most of the changes proper.\n", + "\n", + "The first two major changes to circuit drawing are the addition of a convenience `circuit.draw()` method to the `QuantumCircuit` object, and a no-fuss ASCII outformat. Here we're printing with a wider line to fit the full circuit (**note:** github does not allow horizontal scrolling in notebooks, so the code below does not render well there):" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
                                ░                ┌───┐           ░ ┌───┐                                »\n",
        +       "q0_0: |0>───────────────░────────────────┤ H ├──■────────░─┤ H ├─■────────■────────■────────────»\n",
        +       "                        ░           ┌───┐└───┘  │        ░ └───┘ │1.5708  │        │       ┌───┐»\n",
        +       "q0_1: |0>───────────────░───────────┤ H ├───────┼────────░───────■────────┼────────┼───────┤ H ├»\n",
        +       "                        ░      ┌───┐└───┘       │        ░                │0.7854  │       └───┘»\n",
        +       "q0_2: |0>───────────────░──────┤ H ├────────────┼────■───░────────────────■────────┼────────────»\n",
        +       "                        ░ ┌───┐└───┘            │    │   ░                         │0.3927      »\n",
        +       "q0_3: |0>───────────────░─┤ H ├─────────────────┼────┼───░─────────────────────────■────────────»\n",
        +       "         ┌────────────┐ ░ └───┘               ┌─┴─┐┌─┴─┐ ░                                      »\n",
        +       "q0_4: |0>┤ Rx(0.7854) ├─░─────────────────────┤ H ├┤ H ├─░──────────────────────────────────────»\n",
        +       "         └────────────┘ ░                     └───┘└───┘ ░                                      »\n",
        +       " c0_0: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_1: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_2: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_3: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_4: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       "«                                            ░             ┌─┐\n",
        +       "«q0_0: ──────────────────────────────────────░─────────────┤M├\n",
        +       "«                                            ░          ┌─┐└╥┘\n",
        +       "«q0_1: ─■────────■───────────────────────────░──────────┤M├─╫─\n",
        +       "«       │1.5708  │       ┌───┐               ░       ┌─┐└╥┘ ║ \n",
        +       "«q0_2: ─■────────┼───────┤ H ├─■─────────────░───────┤M├─╫──╫─\n",
        +       "«                │0.7854 └───┘ │1.5708 ┌───┐ ░    ┌─┐└╥┘ ║  ║ \n",
        +       "«q0_3: ──────────■─────────────■───────┤ H ├─░────┤M├─╫──╫──╫─\n",
        +       "«                                      └───┘ ░ ┌─┐└╥┘ ║  ║  ║ \n",
        +       "«q0_4: ──────────────────────────────────────░─┤M├─╫──╫──╫──╫─\n",
        +       "«                                            ░ └╥┘ ║  ║  ║  ║ \n",
        +       "«c0_0: ═════════════════════════════════════════╬══╬══╬══╬══╩═\n",
        +       "«                                               ║  ║  ║  ║    \n",
        +       "«c0_1: ═════════════════════════════════════════╬══╬══╬══╩════\n",
        +       "«                                               ║  ║  ║       \n",
        +       "«c0_2: ═════════════════════════════════════════╬══╬══╩═══════\n",
        +       "«                                               ║  ║          \n",
        +       "«c0_3: ═════════════════════════════════════════╬══╩══════════\n",
        +       "«                                               ║             \n",
        +       "«c0_4: ═════════════════════════════════════════╩═════════════\n",
        +       "«                                                             
        " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lin_len = 98\n", + "# Change to wider in Jupyter, this is only to render nicely in github\n", + "circuit.draw(line_length=lin_len)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "circuit.draw() defaults to ASCII output if none is specified, but Matplotlib, Latex, and Latex source are all supported, now with even richer features than before.\n", + "\n", + "Note that the ``plot_barriers`` and ``reverse_bits`` keys in the ``style`` kwarg dict are deprecated. Instead the `qiskit.tools.visualization.circuit_drawer()` kwargs ``plot_barriers`` and ``reverse_bits`` should be used instead." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "scrolled": true, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "style = {'cregbundle': True, 'usepiformat': True, 'subfontsize': 12, 'fold': 100, 'showindex': True,\n", + " 'backgroundcolor': '#fffaff',\n", + " \"displaycolor\": { # Taken from qx_color_scheme() in _circuit_visualization.py\n", + " \"id\": \"#ffca64\",\n", + " \"u0\": \"#f69458\",\n", + " \"u1\": \"#f69458\",\n", + " \"u2\": \"#f69458\",\n", + " \"u3\": \"#f69458\",\n", + " \"x\": \"#a6ce38\",\n", + " \"y\": \"#a6ce38\",\n", + " \"z\": \"#a6ce38\",\n", + " \"h\": \"#00bff2\",\n", + " \"s\": \"#00bff2\",\n", + " \"sdg\": \"#00bff2\",\n", + " \"t\": \"#ff6666\",\n", + " \"tdg\": \"#ff6666\",\n", + " \"rx\": \"#ffca64\",\n", + " \"ry\": \"#ffca64\",\n", + " \"rz\": \"#ffca64\",\n", + " \"reset\": \"#d7ddda\",\n", + " \"target\": \"#00bff2\",\n", + " \"meas\": \"#f070aa\"}}\n", + "circuit.draw(output='mpl', style=style)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'% \\\\documentclass[preview]{standalone}\\n% If the image is too large to fit on this documentclass use\\n\\\\documentclass[draft]{beamer}\\n% img_width = 10, img_depth = 21\\n\\\\usepackage[size=custom,height=15,width=39,scale=0.7]{beamerposter}\\n% instead and customize the height and width (in cm) to fit.\\n% Large images may run out of memory quickly.\\n% To fix this use the LuaLaTeX compiler, which dynamically\\n% allocates memory.\\n\\\\usepackage[braket, qm]{qcircuit}\\n\\\\usepackage{amsmath}\\n\\\\pdfmapfile{+sansmathaccent.map}\\n% \\\\usepackage[landscape]{geometry}\\n% Comment out the above line if using the beamer documentclass.\\n\\\\begin{document}\\n\\\\begin{equation*}\\n \\\\Qcircuit @C=0.5em @R=0.0em @!R {\\n\\t \\t\\\\lstick{q0_{0}: \\\\ket{0}} & \\\\gate{H} & \\\\ctrl{4} & \\\\gate{H} & \\\\control\\\\qw & \\\\dstick{1.6}\\\\qw & \\\\control\\\\qw & \\\\dstick{0.79}\\\\qw & \\\\control\\\\qw & \\\\dstick{0.39}\\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\meter & \\\\qw & \\\\qw\\\\\\\\\\n\\t \\t\\\\lstick{q0_{1}: \\\\ket{0}} & \\\\gate{H} & \\\\qw & \\\\qw & \\\\ctrl{-1} & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\gate{H} & \\\\control\\\\qw & \\\\dstick{1.6}\\\\qw & \\\\control\\\\qw & \\\\dstick{0.79}\\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\meter & \\\\qw & \\\\qw & \\\\qw\\\\\\\\\\n\\t \\t\\\\lstick{q0_{2}: \\\\ket{0}} & \\\\gate{H} & \\\\qw & \\\\ctrl{2} & \\\\qw & \\\\qw & \\\\ctrl{-2} & \\\\qw & \\\\qw & \\\\qw & \\\\ctrl{-1} & \\\\qw & \\\\qw & \\\\gate{H} & \\\\control\\\\qw & \\\\dstick{1.6}\\\\qw & \\\\qw & \\\\meter & \\\\qw & \\\\qw & \\\\qw & \\\\qw\\\\\\\\\\n\\t \\t\\\\lstick{q0_{3}: \\\\ket{0}} & \\\\gate{H} & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\ctrl{-3} & \\\\qw & \\\\qw & \\\\qw & \\\\ctrl{-2} & \\\\qw & \\\\ctrl{-1} & \\\\gate{H} & \\\\meter & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw\\\\\\\\\\n\\t \\t\\\\lstick{q0_{4}: \\\\ket{0}} & \\\\gate{R_x(0.79)} & \\\\gate{H} & \\\\gate{H} & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\meter & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw & \\\\qw\\\\\\\\\\n\\t \\t\\\\lstick{c0_{0}: 0} & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw \\\\cwx[-5] & \\\\cw & \\\\cw\\\\\\\\\\n\\t \\t\\\\lstick{c0_{1}: 0} & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw \\\\cwx[-5] & \\\\cw & \\\\cw & \\\\cw\\\\\\\\\\n\\t \\t\\\\lstick{c0_{2}: 0} & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw \\\\cwx[-5] & \\\\cw & \\\\cw & \\\\cw & \\\\cw\\\\\\\\\\n\\t \\t\\\\lstick{c0_{3}: 0} & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw \\\\cwx[-5] & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw\\\\\\\\\\n\\t \\t\\\\lstick{c0_{4}: 0} & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw \\\\cwx[-5] & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw & \\\\cw\\\\\\\\\\n\\t }\\n\\\\end{equation*}\\n\\n\\\\end{document}'" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circuit.draw(output='latex_source', plot_barriers=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "circuit.draw(output='latex', plot_barriers=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "circuit_drawer(circuit) can still be used as expected.\n", + "\n", + "However, the ``basis`` kwarg in the ``circuit_drawer()`` function has been removed, and the canonical way to do this now by simply transpiling first:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "from qiskit import transpiler" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "draw_circ = transpiler.transpile(circuit, qasm_backend, basis_gates='U,CX')\n", + "draw_circ.draw(line_length=2000)\n", + "# Not shown in github for rendering reasons, load in Jupyter" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Note that moving forward, `circuit.draw()` and the ``circuit_drawer()`` function will be the sole interfaces\n", + "for circuit drawing in the visualization module. ``plot_circuit()``, ``latex_circuit_drawer()``, ``generate_latex_source()``, and ``matplotlib_circuit_drawer()`` from qiskit.tools.visualization in 0.6 are\n", + "deprecated. Instead the ``circuit_drawer()`` function from the same module\n", + "should be used, and there are kwarg options to mirror the functionality of all\n", + "the deprecated functions." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### State Visualization\n", + "\n", + "Frist, `plot_state()` and `iplot_state()` have been depreciated. Instead the functions `plot_state_*()` and `iplot_state_*()` should be called for the visualization method required, as you'll see below.\n", + "\n", + "Second, the output of the `plot_state_*()` functions have changed. Previously, calling these functions would open up new windows (depending on matplotlib backend) to display the visualizations. Now, they return a ``matplotlib.Figure`` object, which provides much more flexibility to interact with the visualization prior to saving or showing it.\n", + "\n", + "Starting in the 0.7 you'll need to call ``show()`` on the output to mirror the previous behavior. In notebooks, we'll just return the figure, so mpl will display normally." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "from qiskit.tools.qi.qi import outer\n", + "from qiskit.tools.visualization import plot_histogram, plot_state_city, plot_bloch_multivector, plot_state_paulivec, plot_state_hinton, plot_state_qsphere\n", + "from qiskit.tools.visualization import iplot_histogram, iplot_state_city, iplot_bloch_multivector, iplot_state_paulivec, iplot_state_hinton, iplot_state_qsphere" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "counts = qasm_result.get_counts()\n", + "phi = sv_result.get_statevector()\n", + "rho = outer(phi)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAccAAAFXCAYAAADXmoXxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl8VNX9//HXh7AjS4IRE9lFMQSkkUVARBQR1KqIa6uotVaRtpZaxZ98q6K1tsW1X+tW96Vfa624i8UAEhWsCEhBKAURKIIYARFFgYTz++PcxMklgYS5M5NJ3s/HYx7J3Lkzn3NmuZ97zz3nXHPOISIiIt9pkOoCiIiI1DZKjiIiIiFKjiIiIiFKjiIiIiFKjiIiIiFKjiIiIiFKjiIiIiFKjiIiIiFKjiIiIiFKjiIiIiENU12ARGnbtq3r2LFjqoshIiK1yAcffPC5cy57b+vV2eTYsWNHZsyYkepiiIhILZKVlbW6OuupWVVERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyVFERCREyTFGYWEh/fv3p0+fPtx1112VrvP8888zYMAABg4cyE9+8pMKj3355Zfk5+czYcKE8mU7duxg/Pjx9OvXjyOPPJKXXnopoXUQEZH4NUx1AWqL0tJSJkyYwJQpU8jNzWXYsGGMHDmSww47rHydjz76iLvuuovXX3+dNm3aUFxcXOE1brnlFgYNGlRh2e233052djZz585l165dbN68OSn1ERGRfacjx8C8efPo0qULnTt3pnHjxowePZqpU6dWWOeJJ57gxz/+MW3atAEgOzu7/LEPPviA4uJijj322ArP+ctf/sL48eMBaNCgAW3btk1wTUREJF5KjoH169dz0EEHld/Pzc1l/fr1Fdb56KOP+Oijjxg5ciTDhw+nsLAQgF27dnHddddx0003VVh/y5YtgD+iHDp0KBdddBGfffZZgmsiIiLxUnKsgZKSElauXMnLL7/MQw89xPjx49myZQsPP/www4cPr5Bcy9Zft24d/fv3580336Rfv35cf/31KSq9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0dyqIiIi+0jJUUREJETnHEUkLexr8x+kbxOgpI6OHEVEREKUHEVEREKUHEVEUqCwsJD+/fvTp08f7rrrrt0e3759OxdffDF9+vTh+OOPZ82aNYCfe3bIkCEMGTKEo48+mldeeaX8OT/72c849NBDGTRoUNLqUVcpOYpIvbeviWrmzJkce+yxHHXUURx77LEUFRUBsHXr1vIENmTIELp168a1115b/nrxXHkkLy+PGTNmUFRUxLPPPsuVV15JSUkJAD/84Q959tlnE/EW1TtKjiJSr8WTqNq2bcv//d//8c4773DPPfdw+eWXA9CyZUuKiorKbx06dOCUU04pf714rjzSvHlzGjb0fSm3b99efuUMgEGDBpGZue8dl+Q7So4iUq/Fk6gOP/zw8nlf8/Ly+Oabb9i+fXuF565YsYLi4mIGDhxYvqyyK4+sX7++wvOquvII+AsPDxw4kMGDB3P77beXJ0uJjpKjiNRr8SaqMi+99BK9e/emSZMmFZZPmTKF008/vcIRXrz69u3LnDlzKCws5K677uLbb7+N7LXFU3IUEYnT0qVLufHGG7njjjt2e2zKlCmcccYZFZbFc+WRWN27d6dFixYsXbo0qqpIQMlRROq1eBPVJ598wgUXXMC9995Lly5dKjxv8eLFlJaW8r3vfa/C8niuPLJ69eryDjj//e9/Wb58OR07dozgnYjWvnZy2rRpE6eeeiodOnRgwoQJFZ6zY8cOxo8fT79+/TjyyCN56aWXElZ+JUcRqdfiSVRbtmzh3HPP5frrr2fAgAG7vfZzzz3H6NGjd1see+WRAQMGMGrUqPIrj5Sd7zz//PPZtGkTffr04b777uOGG24A4N133+Xoo49myJAhjBkzhltvvZW2bdsCcMkllzBixAhWrFhBfn4+Tz75ZKTvVXXF08mpSZMmTJw4kZtuumm317399tvJzs5m7ty5zJkzh6OOOiphdVByFIlTIvaQb775Znr27EmHDh2SUoc92df6Adx555306dOH/v37M3369PLl999/P4MGDWLgwIHcd999SalHVeJJVA8++CAff/wxt956a/mwjeLi4vLXfuGFF3ZrUi0zfPhw5s6dy/z58/nVr34FwMSJEznxxBMBaNq0KY899hjz5s2jsLCQzp07A3DOOecwZ84cioqKePPNNzn55JPLX/Ohhx5i6dKlfPbZZ3z44YeMGTMm8verOuLp5NSiRQsGDBiw27lbgL/85S+MHz8egAYNGpTvFCSCkmM9EvVGbvny5RXGcnXs2DHlG7pkS9Qe8ogRIygsLExGFfYonvr9+9//ZsqUKcyePZtnn32Wq6++mtLSUpYsWcITTzxBYWEhb731FtOmTWPlypUpqN139jVRXXXVVaxdu7bCsI3s7Ozy112wYEG9vKhyVJ2cYm3ZsgWAW265haFDh3LRRRfx2WefJaD0nvr/1hNlG7kpU6aQm5vLsGHDGDlyJIcddlj5OrEbueeee45JkybxyCOPVNjIffrpp5x++unMnTuo9QzyAAAgAElEQVSXQw45pHzQc2lpKfn5+Xz/+9+vELewsJCJEydSWlrKmDFjyvf6ymzfvp3LL7+chQsXkpmZySOPPFJ+/uTOO+/kqaeeIiMjg9/97ncMGzaMb7/9lu9///ts376dkpISTj311AqDq5Mtdg8ZKN9Djn1fX3vtNa655hrA7yFfc801FfaQK0sM/fr1S0r59yae+k2dOpXRo0fTpEkTOnXqRJcuXZg3bx7r1q2jT58+NG/eHPBj81555RWuuOKKpNevtqlv11asiZKSEtatW0f//v357W9/yz333MP111/P/fffn5B4OnJME3s76tubeJo5qtrIxZo1axadO3eu0AyYiKOOJk2a8MILL/DWW29RVFTE9OnTmTt3brXfp5oeHa9du5ZTTz2VAQMGMHDgwN1+iInYQ65N4qlfVc/Ny8vj3XffZdOmTWzbto033nijQocYSX9R9caNlZWVRfPmzcsnUzjttNNYuHBhAkrv6cgxDVTnqG9vKttQhRPcnjZyffv2rfDc8Aaysu7qiTjq6N+/P/vttx8AO3fupKSkpHz8WCKOjhs2bMhvfvMbevfuzdatWznuuOMYOnRojd57qah79+5cccUVnHHGGTRv3pxevXrRoEHt3E/Xkdy+ie3klJOTw5QpU/jzn/9cYZ2yTk79+/ev0MmpKmbGiBEjePvttxkyZAhFRUV07949YXWond9IqaA6R32ptGPHDl5//XVOO+20CssTcdQBPgkOGTKE7t27M3To0PLEnYij4wMPPJDevXsDfkqwQw89tEIdErGHXJvEU789PXfMmDHMnDmTV199lTZt2tCtW7ck1EaSJZ5OTgC9e/fm17/+NU8//TT5+fnlLU6TJk3iD3/4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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_histogram(counts)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_state_city(rho)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We also have add hinton diagrams as a new diagram type:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
        " + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_state_hinton(rho)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Returning the Figure object provides additional flexibility for dealing\n", + "with the output. \n", + "\n", + "For example instead of just showing the figure you can now\n", + "directly save it to a file by leveraging the ``savefig()`` method. For example::" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "hist_fig = plot_histogram(counts)\n", + "state_fig = plot_state_city(rho)\n", + "hist_fig.savefig('histogram.png')\n", + "state_fig.savefig('state_plot.png')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The other key aspect which has changed with these functions is when running\n", + "under jupyter. In the 0.6 release ``plot_state()`` and ``plot_histogram()``\n", + "when running under jupyter the default behavior was to use the interactive\n", + "Javascript plots if the externally hosted Javascript library for rendering\n", + "the visualization was reachable over the network. If not it would just use\n", + "the matplotlib version. However in the 0.7 release this no longer the case,\n", + "and separate functions for the interactive plots, ``iplot_state()`` and\n", + "``iplot_histogram()`` are to be used instead. ``plot_state()`` and\n", + "``plot_histogram()`` always use the matplotlib versions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "iplot_bloch_multivector(rho)\n", + "# Not displayed in github, download and run loacally." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Additionally, starting in this release the ``plot_state()`` function is\n", + "deprecated in favor of calling individual methods for each method of plotting\n", + "a quantum state. While the ``plot_state()`` function will continue to work\n", + "until the 0.9 release, it will emit a warning each time it is used. The\n", + "\n", + "```\n", + "================================== ========================\n", + "Qiskit Terra 0.6 Qiskit Terra 0.7+\n", + "================================== ========================\n", + "plot_state(rho) plot_state_city(rho)\n", + "plot_state(rho, method='city') plot_state_city(rho)\n", + "plot_state(rho, method='paulivec') plot_state_paulivec(rho)\n", + "plot_state(rho, method='qsphere') plot_state_qsphere(rho)\n", + "plot_state(rho, method='bloch') plot_bloch_multivector(rho)\n", + "plot_state(rho, method='hinton') plot_state_hinton(rho)\n", + "================================== ========================\n", + "```\n", + "\n", + "The same is true for the interactive JS equivalent, ``iplot_state()``. The\n", + "function names are all the same, just with a prepended `i` for each function.\n", + "For example, ``iplot_state(rho, method='paulivec')`` is\n", + "``iplot_state_paulivec(rho)``." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Lastly, we now have a DAGCircuit drawer too!" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "from qiskit.converters.circuit_to_dag import circuit_to_dag" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_dag = circuit_to_dag(circuit)\n", + "dag_drawer(my_dag)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Shot Memory\n", + "\n", + "Shot memory is a complete log of shot results when you run on Quantum hardware or shot-based simulators. This is critical for characterization and analysis of hardware behavior, and a frequently requested feature. \n", + "\n", + "To use shot memory, simply set memory=True in your execute call:" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "scrolled": true, + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['10011',\n", + " '00000',\n", + " '11101',\n", + " '10011',\n", + " '00000',\n", + " '00000',\n", + " '00000',\n", + " '10000',\n", + " '00000',\n", + " '00000',\n", + " '10000',\n", + " '00000',\n", + " '11111',\n", + " '10011',\n", + " '00000',\n", + " '00000',\n", + " '00000',\n", + " '10001',\n", + " '00000',\n", + " '00000',\n", + " '11101',\n", + " '00000',\n", + " '01101',\n", + " '10011',\n", + " '00000',\n", + " '00000',\n", + " '10011',\n", + " '00101',\n", + " '00000',\n", + " '00000',\n", + " '00000',\n", + " '10011',\n", + " '10011',\n", + " '00000',\n", + " '00000',\n", + " '00000',\n", + " '11101',\n", + " '00000',\n", + " '00000',\n", + " '00000',\n", + " '00000',\n", + " '00000',\n", + " '00000',\n", + " '00000',\n", + " '10011',\n", + " '00000',\n", + " '00000',\n", + " '00000',\n", + " '11011',\n", + " '00000']" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "job = execute(circuit, qasm_backend, shots=50, memory=True)\n", + "\n", + "result = job.result()\n", + "result.get_memory(circuit)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Transpilation and the DAGCircuit\n", + "\n", + "The transpiler is the workhorse of Terra. It’s how we keep circuits backend agnostic and compilable for arbitrary quantum hardware. The transpiler in Terra .6 was not transparent or extensible enough for increasingly sophisticated transpilation methods, so we tore it down and rewrote it to be much more robust." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The transpiler now transpiles circuits into circuits, rather than into DAGCircuits. This is much more transparent, and allows the end user to view and understand what individual transpiler passes are doing to their circuit. Here's a sample circuit that won't fit nicely on IBM's hardware (our QPE circuit had nearest neighbor connections, so these qubit remappers won't do much):" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "from qiskit.transpiler import PassManager\n", + "from qiskit.transpiler.passes import BasicSwap, CXCancellation, LookaheadSwap, StochasticSwap\n", + "from qiskit.transpiler import transpile\n", + "from qiskit.mapper import CouplingMap" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
                          ┌───┐          ┌───┐\n",
        +       "q_0: |0>───────■──┤ X ├──■───────┤ X ├\n",
        +       "               │  └─┬─┘┌─┴─┐┌───┐└─┬─┘\n",
        +       "q_1: |0>───────┼────┼──┤ X ├┤ X ├──┼──\n",
        +       "               │    │  └───┘└─┬─┘  │  \n",
        +       "q_2: |0>───────┼────┼─────────┼────┼──\n",
        +       "        ┌───┐  │    │         │    │  \n",
        +       "q_3: |0>┤ H ├──┼────┼─────────■────■──\n",
        +       "        └───┘  │    │                 \n",
        +       "q_4: |0>───────┼────┼─────────────────\n",
        +       "               │    │                 \n",
        +       "q_5: |0>───────┼────┼─────────────────\n",
        +       "             ┌─┴─┐  │                 \n",
        +       "q_6: |0>─────┤ X ├──■─────────────────\n",
        +       "             └───┘                    
        " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "qr = QuantumRegister(7, 'q')\n", + "qr = QuantumRegister(7, 'q')\n", + "tpl_circuit = QuantumCircuit(qr)\n", + "tpl_circuit.h(qr[3])\n", + "tpl_circuit.cx(qr[0], qr[6])\n", + "tpl_circuit.cx(qr[6], qr[0])\n", + "tpl_circuit.cx(qr[0], qr[1])\n", + "tpl_circuit.cx(qr[3], qr[1])\n", + "tpl_circuit.cx(qr[3], qr[0])\n", + "tpl_circuit.draw()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The most naive thing we can do is simply move qubits around greedily with swaps. Let’s see how the BasicSwap pass does here:" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
                                                          ┌───┐      ┌───┐     \n",
        +       "q_0: |0>──────X───────────────────────────────────┤ X ├──────┤ X ├─────\n",
        +       "              │                                   └─┬─┘      └─┬─┘     \n",
        +       "q_1: |0>──────X──X──────────────────────────────X───■──────X───■────■──\n",
        +       "                 │                              │          │      ┌─┴─┐\n",
        +       "q_2: |0>─────────X──X────────────────────────X──X───────X──X──────┤ X ├\n",
        +       "        ┌───┐       │                        │          │         └───┘\n",
        +       "q_3: |0>┤ H ├───────X──X──────────────────X──X──────────X──────────────\n",
        +       "        └───┘          │                  │                            \n",
        +       "q_4: |0>───────────────X──X────────────X──X────────────────────────────\n",
        +       "                          │      ┌───┐ │                               \n",
        +       "q_5: |0>──────────────────X───■──┤ X ├─X───────────────────────────────\n",
        +       "                            ┌─┴─┐└─┬─┘                                 \n",
        +       "q_6: |0>────────────────────┤ X ├──■───────────────────────────────────\n",
        +       "                            └───┘                                      
        " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coupling = [[0, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]\n", + "\n", + "simulator = BasicAer.get_backend('qasm_simulator')\n", + "coupling_map = CouplingMap(couplinglist=coupling)\n", + "pass_manager = PassManager()\n", + "pass_manager.append([BasicSwap(coupling_map=coupling_map)])\n", + "basic_circ = transpile(tpl_circuit, simulator, pass_manager=pass_manager)\n", + "basic_circ.draw()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Not great. Let’s try Sven Jandura's LookaheadSwap, submitted for the 2018 QISKit\n", + "Developer Challenge. Sven’s swap pass was merged into Terra, and we will have two more passess from other winners of the Qiskit Developer Challenge soon! We’re constructing a diverse set of passes, many user contributed, to meet the wide-ranging needs and mapping scenarios of circuits in the wild." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
                                                                      \n",
        +       "q_0: |0>────────────X─────X───────────────────────────────────\n",
        +       "                    │     │                                   \n",
        +       "q_1: |0>────────────X──X──X─────X──────────────────■───X──────\n",
        +       "                       │        │           ┌───┐┌─┴─┐ │      \n",
        +       "q_2: |0>───────────────X─────X──X───────────┤ X ├┤ X ├─X───■──\n",
        +       "              ┌───┐          │         ┌───┐└─┬─┘└───┘   ┌─┴─┐\n",
        +       "q_3: |0>──────┤ H ├──────────X──────■──┤ X ├──■──────────┤ X ├\n",
        +       "              └───┘               ┌─┴─┐└─┬─┘             └───┘\n",
        +       "q_4: |0>────X─────────────────────┤ X ├──■────────────────────\n",
        +       "            │                     └───┘                       \n",
        +       "q_5: |0>─X──X─────────────────────────────────────────────────\n",
        +       "         │                                                    \n",
        +       "q_6: |0>─X────────────────────────────────────────────────────\n",
        +       "                                                              
        " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pass_manager = PassManager()\n", + "pass_manager.append([LookaheadSwap(coupling_map=coupling_map)])\n", + "lookahead_circ = transpile(tpl_circuit, simulator, pass_manager=pass_manager)\n", + "lookahead_circ.draw()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Better! One more try with the StochasticSwap:" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
                             ┌───┐                ┌───┐\n",
        +       "q_0: |0>──────────■──┤ X ├─X───────X──────┤ X ├\n",
        +       "                  │  └─┬─┘ │       │      └─┬─┘\n",
        +       "q_1: |0>──────X───┼────┼───┼───────┼────────┼──\n",
        +       "              │   │    │   │ ┌───┐ │ ┌───┐  │  \n",
        +       "q_2: |0>──────X───┼────┼───┼─┤ X ├─┼─┤ X ├──┼──\n",
        +       "        ┌───┐     │    │   │ └─┬─┘ │ └─┬─┘  │  \n",
        +       "q_3: |0>┤ H ├─────┼────┼───X───■───X───■────■──\n",
        +       "        └───┘     │    │                       \n",
        +       "q_4: |0>──────────┼────┼───────────────────────\n",
        +       "                  │    │                       \n",
        +       "q_5: |0>──────────┼────┼───────────────────────\n",
        +       "                ┌─┴─┐  │                       \n",
        +       "q_6: |0>────────┤ X ├──■───────────────────────\n",
        +       "                └───┘                          
        " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pass_manager = PassManager()\n", + "pass_manager.append([StochasticSwap(coupling_map=coupling_map)])\n", + "stoch_circ = transpile(tpl_circuit, simulator, pass_manager=pass_manager)\n", + "stoch_circ.draw()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Even better, but still more room to go. Right now this all happens behind the scenes for many users, but we hope that these tools make digging into transpilation much more accessible to those attempting to squeeze as much performance as possible out of their experiments on hardware." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### PassManager\n", + "\n", + "Another big overhaul in 0.7 was a rewrite of the PassManager. Applying and chaining transpiler passes is now much more straightforward and extensible, but this is too large a topic for us to cover in this notebook. \n", + "\n", + "Luckily, Ali Javadi-Abhari, who wrote much of the transpiler update, will be posting a “Writing a Transpiler Pass” blog post soon to cover this topic." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### `skip_transpiler`\n", + "\n", + "The ``skip_transpiler`` arg has been deprecated from ``compile()`` and ``execute()``. Instead, you should simply pass an empty PassManager to `execute()`, `compile()`, or `transpile()`, like so:" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "qasm_job = execute(circuit, qasm_backend, pass_manager=PassManager())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Converters and ``transpile_dag()``\n", + "\n", + "We've introduced a suite of converters to convert between common circuit formats, namely QuantumCircuit, DAGCircuit, Qobj, and ast.\n", + "\n", + "The ``transpile_dag()`` function ``format`` kwarg for emitting different output formats is deprecated, instead you should convert the default output ``DAGCircuit`` object to the desired format." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "from qiskit.converters.dag_to_circuit import dag_to_circuit" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
                                ░ ┌───┐                          ░ ┌───┐                                »\n",
        +       "q0_0: |0>───────────────░─┤ H ├──■───────────────────────░─┤ H ├─■─────────────■────────────────»\n",
        +       "                        ░ └───┘  │  ┌───┐                ░ └───┘ │1.5708 ┌───┐ │                »\n",
        +       "q0_1: |0>───────────────░────────┼──┤ H ├────────────────░───────■───────┤ H ├─┼────────■───────»\n",
        +       "                        ░        │  └───┘┌───┐           ░               └───┘ │0.7854  │1.5708 »\n",
        +       "q0_2: |0>───────────────░────────┼───────┤ H ├──■────────░─────────────────────■────────■───────»\n",
        +       "                        ░        │       └───┘  │  ┌───┐ ░                                      »\n",
        +       "q0_3: |0>───────────────░────────┼──────────────┼──┤ H ├─░──────────────────────────────────────»\n",
        +       "         ┌────────────┐ ░      ┌─┴─┐          ┌─┴─┐└───┘ ░                                      »\n",
        +       "q0_4: |0>┤ Rx(0.7854) ├─░──────┤ H ├──────────┤ H ├──────░──────────────────────────────────────»\n",
        +       "         └────────────┘ ░      └───┘          └───┘      ░                                      »\n",
        +       " c0_0: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_1: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_2: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_3: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_4: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       "«                                            ░ ┌─┐            \n",
        +       "«q0_0: ──────■───────────────────────────────░─┤M├────────────\n",
        +       "«            │                               ░ └╥┘┌─┐         \n",
        +       "«q0_1: ──────┼────────■──────────────────────░──╫─┤M├─────────\n",
        +       "«      ┌───┐ │        │                      ░  ║ └╥┘┌─┐      \n",
        +       "«q0_2: ┤ H ├─┼────────┼────────■─────────────░──╫──╫─┤M├──────\n",
        +       "«      └───┘ │0.3927  │0.7854  │1.5708 ┌───┐ ░  ║  ║ └╥┘┌─┐   \n",
        +       "«q0_3: ──────■────────■────────■───────┤ H ├─░──╫──╫──╫─┤M├───\n",
        +       "«                                      └───┘ ░  ║  ║  ║ └╥┘┌─┐\n",
        +       "«q0_4: ──────────────────────────────────────░──╫──╫──╫──╫─┤M├\n",
        +       "«                                            ░  ║  ║  ║  ║ └╥┘\n",
        +       "«c0_0: ═════════════════════════════════════════╩══╬══╬══╬══╬═\n",
        +       "«                                                  ║  ║  ║  ║ \n",
        +       "«c0_1: ════════════════════════════════════════════╩══╬══╬══╬═\n",
        +       "«                                                     ║  ║  ║ \n",
        +       "«c0_2: ═══════════════════════════════════════════════╩══╬══╬═\n",
        +       "«                                                        ║  ║ \n",
        +       "«c0_3: ══════════════════════════════════════════════════╩══╬═\n",
        +       "«                                                           ║ \n",
        +       "«c0_4: ═════════════════════════════════════════════════════╩═\n",
        +       "«                                                             
        " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_circ_from_dag = dag_to_circuit(my_dag)\n", + "new_circ_from_dag.draw(line_length = lin_len)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Unrolling\n", + "\n", + "The unrollers have been deprecated in favor of unrolling in the transpiler. This is more straightforward and a more natural place for unrolling. Moving forward only DAG to DAG unrolling will be supported, as was shown above in the discussion of the deprecation of the \"basis\" argument to the circuit_drawer:\n", + "\n", + "```\n", + " draw_circ = transpiler.transpile(circuit, qasm_backend, basis_gates='U,CX')\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Other Deprecations and Miscellanea" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Loading QASM into Circuits\n", + "\n", + "The `qiskit.wrapper.load_qasm_string()` and `qiskit.wrapper.load_qasm_file()`\n", + " functions are deprecated. The following QuantumCircuit constructor methods should be used instead:" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "from qiskit import QuantumCircuit" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
                                ░ ┌───┐                          ░ ┌───┐                                »\n",
        +       "q0_0: |0>───────────────░─┤ H ├──■───────────────────────░─┤ H ├─■─────────────■────────────────»\n",
        +       "                        ░ └───┘  │  ┌───┐                ░ └───┘ │1.5708 ┌───┐ │                »\n",
        +       "q0_1: |0>───────────────░────────┼──┤ H ├────────────────░───────■───────┤ H ├─┼────────■───────»\n",
        +       "                        ░        │  └───┘┌───┐           ░               └───┘ │0.7854  │1.5708 »\n",
        +       "q0_2: |0>───────────────░────────┼───────┤ H ├──■────────░─────────────────────■────────■───────»\n",
        +       "                        ░        │       └───┘  │  ┌───┐ ░                                      »\n",
        +       "q0_3: |0>───────────────░────────┼──────────────┼──┤ H ├─░──────────────────────────────────────»\n",
        +       "         ┌────────────┐ ░      ┌─┴─┐          ┌─┴─┐└───┘ ░                                      »\n",
        +       "q0_4: |0>┤ Rx(0.7854) ├─░──────┤ H ├──────────┤ H ├──────░──────────────────────────────────────»\n",
        +       "         └────────────┘ ░      └───┘          └───┘      ░                                      »\n",
        +       " c0_0: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_1: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_2: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_3: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_4: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       "«                                            ░ ┌─┐            \n",
        +       "«q0_0: ──────■───────────────────────────────░─┤M├────────────\n",
        +       "«            │                               ░ └╥┘┌─┐         \n",
        +       "«q0_1: ──────┼────────■──────────────────────░──╫─┤M├─────────\n",
        +       "«      ┌───┐ │        │                      ░  ║ └╥┘┌─┐      \n",
        +       "«q0_2: ┤ H ├─┼────────┼────────■─────────────░──╫──╫─┤M├──────\n",
        +       "«      └───┘ │0.3927  │0.7854  │1.5708 ┌───┐ ░  ║  ║ └╥┘┌─┐   \n",
        +       "«q0_3: ──────■────────■────────■───────┤ H ├─░──╫──╫──╫─┤M├───\n",
        +       "«                                      └───┘ ░  ║  ║  ║ └╥┘┌─┐\n",
        +       "«q0_4: ──────────────────────────────────────░──╫──╫──╫──╫─┤M├\n",
        +       "«                                            ░  ║  ║  ║  ║ └╥┘\n",
        +       "«c0_0: ═════════════════════════════════════════╩══╬══╬══╬══╬═\n",
        +       "«                                                  ║  ║  ║  ║ \n",
        +       "«c0_1: ════════════════════════════════════════════╩══╬══╬══╬═\n",
        +       "«                                                     ║  ║  ║ \n",
        +       "«c0_2: ═══════════════════════════════════════════════╩══╬══╬═\n",
        +       "«                                                        ║  ║ \n",
        +       "«c0_3: ══════════════════════════════════════════════════╩══╬═\n",
        +       "«                                                           ║ \n",
        +       "«c0_4: ═════════════════════════════════════════════════════╩═\n",
        +       "«                                                             
        " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "qasm_str = circuit.qasm()\n", + "new_circ = QuantumCircuit.from_qasm_str(qasm_str)\n", + "new_circ.draw(line_length = lin_len)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
                                ░ ┌───┐                          ░ ┌───┐                                »\n",
        +       "q0_0: |0>───────────────░─┤ H ├──■───────────────────────░─┤ H ├─■─────────────■────────────────»\n",
        +       "                        ░ └───┘  │  ┌───┐                ░ └───┘ │1.5708 ┌───┐ │                »\n",
        +       "q0_1: |0>───────────────░────────┼──┤ H ├────────────────░───────■───────┤ H ├─┼────────■───────»\n",
        +       "                        ░        │  └───┘┌───┐           ░               └───┘ │0.7854  │1.5708 »\n",
        +       "q0_2: |0>───────────────░────────┼───────┤ H ├──■────────░─────────────────────■────────■───────»\n",
        +       "                        ░        │       └───┘  │  ┌───┐ ░                                      »\n",
        +       "q0_3: |0>───────────────░────────┼──────────────┼──┤ H ├─░──────────────────────────────────────»\n",
        +       "         ┌────────────┐ ░      ┌─┴─┐          ┌─┴─┐└───┘ ░                                      »\n",
        +       "q0_4: |0>┤ Rx(0.7854) ├─░──────┤ H ├──────────┤ H ├──────░──────────────────────────────────────»\n",
        +       "         └────────────┘ ░      └───┘          └───┘      ░                                      »\n",
        +       " c0_0: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_1: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_2: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_3: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       " c0_4: 0 ═══════════════════════════════════════════════════════════════════════════════════════»\n",
        +       "                                                                                                »\n",
        +       "«                                           \n",
        +       "«q0_0: ──────■──────────────────────────────\n",
        +       "«            │                              \n",
        +       "«q0_1: ──────┼────────■─────────────────────\n",
        +       "«      ┌───┐ │        │                     \n",
        +       "«q0_2: ┤ H ├─┼────────┼────────■────────────\n",
        +       "«      └───┘ │0.3927  │0.7854  │1.5708 ┌───┐\n",
        +       "«q0_3: ──────■────────■────────■───────┤ H ├\n",
        +       "«                                      └───┘\n",
        +       "«q0_4: ─────────────────────────────────────\n",
        +       "«                                           \n",
        +       "«c0_0: ═════════════════════════════════════\n",
        +       "«                                           \n",
        +       "«c0_1: ═════════════════════════════════════\n",
        +       "«                                           \n",
        +       "«c0_2: ═════════════════════════════════════\n",
        +       "«                                           \n",
        +       "«c0_3: ═════════════════════════════════════\n",
        +       "«                                           \n",
        +       "«c0_4: ═════════════════════════════════════\n",
        +       "«                                           
        " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "filepath = 'my_qasm_file.txt'\n", + "qasm_file = open(filepath, \"w\")\n", + "qasm_file.write(unt_circ.qasm())\n", + "qasm_file.close()\n", + "\n", + "new_unt_circ = QuantumCircuit.from_qasm_file(filepath)\n", + "new_unt_circ.draw(line_length = lin_len)" + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "code", + "language": "python", + "name": "code" + }, + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}