QuantumKatas/index.ipynb

101 строка
6.0 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Quantum Katas and Tutorials as Jupyter Notebooks\n",
"\n",
"\n",
"## List of Notebook Tutorials\n",
"\n",
"* **[Deutsch–Jozsa algorithm](./tutorials/DeutschJozsaAlgorithm/DeutschJozsaAlgorithmTutorial.ipynb)**.\n",
" This tutorial teaches you to implement classical functions and equivalent quantum oracles, \n",
" discusses the classical solution to the Deutsch–Jozsa problem and introduces Deutsch and Deutsch–Jozsa algorithms.\n",
"\n",
"\n",
"## List of Katas\n",
"\n",
"#### Quantum computing concepts\n",
"\n",
"* **[Basic quantum computing gates](./BasicGates/BasicGates.ipynb)**.\n",
" This kata focuses on main single-qubit and multi-qubit gates used in quantum computing.\n",
"* **[Superposition](./Superposition/Superposition.ipynb)**.\n",
" The tasks focus on preparing a certain superposition state on one or multiple qubits.\n",
"* **[Measurements](./Measurements/Measurements.ipynb)**.\n",
" The tasks focus on distinguishing quantum states using measurements.\n",
"* **[JointMeasurements](./JointMeasurements/JointMeasurements.ipynb)**.\n",
" The tasks focus on using joint (parity) measurements for distinguishing quantum states and performing unitary transformations.\n",
" \n",
"#### Simple algorithms\n",
"\n",
"* **[Teleportation](./Teleportation/Teleportation.ipynb)**. This kata walks you through the standard teleportation protocol and several variations.\n",
"* **[Superdense coding](./SuperdenseCoding/SuperdenseCoding.ipynb)**. This kata walks you through the superdense coding protocol.\n",
"* **[Deutsch–Jozsa algorithm](./DeutschJozsaAlgorithm/DeutschJozsaAlgorithm.ipynb)**.\n",
" This kata starts with writing quantum oracles which implement classical functions, and continues to introduce the Bernstein–Vazirani and Deutsch–Jozsa algorithms.\n",
"\n",
"#### Grover's algorithm\n",
"\n",
"* **[Grover's algorithm](./GroversAlgorithm/GroversAlgorithm.ipynb)**. This kata introduces Grover's search algorithm and writing quantum oracles to be used with it.\n",
"* **[Solving SAT problems using Grover's algorithm](./SolveSATWithGrover/SolveSATWithGrover.ipynb)**. This kata continues the exploration of Grover's search algorithm, using \n",
"SAT problems as an example. It covers implementing quantum oracles based on the problem description instead of a \n",
"hard-coded answer and using Grover's algorithm to solve problems with unknown number of solutions.\n",
"* **[Solving graph coloring problems using Grover's algorithm](./GraphColoring/GraphColoring.ipynb)**.\n",
"This kata continues the exploration of Grover's search algorithm, using graph coloring problems as an example.\n",
"\n",
"#### Entanglement games\n",
"\n",
"* **[CHSH game](./CHSHGame/CHSHGame.ipynb)**.\n",
"* **[GHZ Game](./GHZGame/GHZGame.ipynb)**.\n",
"* **[Magic Square Game](./MagicSquareGame/MagicSquareGame.ipynb)**.\n",
"\n",
"#### Miscellaneous\n",
"\n",
"* **[Phase estimation](./PhaseEstimation/PhaseEstimation.ipynb)**.\n",
"This kata covers phase estimation algorithms.\n",
"* **[Bit-flip error correcting code](./QEC_BitFlipCode/QEC_BitFlipCode.ipynb)**.\n",
" This kata introduces a 3-qubit error correcting code for protecting against bit-flip errors.\n",
"* **[Ripple-carry adder](./RippleCarryAdder/RippleCarryAdder.ipynb)**.\n",
" This kata walks you through building a ripple-carry adder on a quantum computer.\n",
"* **[Unitary Patterns](./UnitaryPatterns/UnitaryPatterns.ipynb)**.\n",
"This unusual kata offers tasks on implementing unitaries with matrices that follow certain patterns of \n",
"zero and non-zero elements.\n",
"\n",
"\n",
"For a full list of Quantum Katas available as Q# projects instead of Jupyter Notebooks, see the [QuantumKatas repository](https://github.com/Microsoft/QuantumKatas#list-of-katas-).\n",
"\n",
"\n",
"## Getting Started with Kata Notebooks and Tutorials\n",
"\n",
"Each kata notebook presents the tasks of the respective kata (Q# project) in Jupyter Notebook format. This makes getting started with the katas a lot easier - you don't need to install anything locally to try them out!\n",
"\n",
"Notebook tutorials are designed with Notebook format in mind - in addition to programming exercises they include a lot of theoretical explanations and code samples for you to learn from.\n",
"\n",
"Make sure you're viewing this file on Binder (if not, use [this link](https://mybinder.org/v2/gh/Microsoft/QuantumKatas/master?filepath=index.ipynb)). From here you can navigate to the individual kata or tutorial notebooks using the links above.\n",
"\n",
"* Each tutorial or kata notebook contains a sequence of tasks on the topic, progressing from trivial to challenging.\n",
"* Each task is defined in a separate code cell, preceded by the description of the task in a Markdown cell.\n",
" Your goal is to fill in the blanks in the code (marked with `// ...` comments) with some Q# code that solves the task. \n",
"* To verify your solution, run the code cell using Ctrl + Enter (or ⌘ + Enter on macOS). This will invoke the test covering the task and let you know whether it passes or fails, and if it fails, what the error is.\n",
"* You can find pointers to reference materials you might need to solve the tasks, both on quantum computing and on Q#, either in the beginning of the tutorial or the kata or next to the task to which they are relevant.\n",
"* You can find reference solutions in `ReferenceImplementation.qs` files of the corresponding katas or tutorials."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Q#",
"language": "qsharp",
"name": "iqsharp"
},
"language_info": {
"file_extension": ".qs",
"mimetype": "text/x-qsharp",
"name": "qsharp",
"version": "0.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}