{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# n-制御NOTゲート\n", "\n", "input: c[:n]\n", "\n", "output: c[n]\n", "\n", "ancilla: c[n+1:]" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from blueqat import Circuit" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def cccx(n, c):\n", " c = c.ccx[0, 1, n + 1]\n", " for i in range(0, n - 3):\n", " c = c.ccx[i + 2, n + 1 + i, n + 1 + i + 1]\n", " c = c.ccx[n - 1, n + 1 + (n - 2) - 1, n]\n", " return c" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Counter({'11110': 15,\n", " '00100': 13,\n", " '10000': 18,\n", " '11000': 9,\n", " '01000': 12,\n", " '00000': 18,\n", " '10100': 8,\n", " '01100': 7})" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cccx(3, Circuit().h[:3]).m[:4].run(shots=100)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Counter({'1110000': 9,\n", " '1001000': 9,\n", " '0001000': 8,\n", " '1111100': 5,\n", " '1101000': 11,\n", " '1000000': 7,\n", " '0110000': 4,\n", " '0011000': 11,\n", " '0010000': 7,\n", " '1100000': 5,\n", " '0000000': 9,\n", " '1010000': 4,\n", " '0101000': 2,\n", " '1011000': 6,\n", " '0100000': 1,\n", " '0111000': 2})" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cccx(4, Circuit().h[:4]).m[:5].run(shots=100)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Counter({'101000000': 25,\n", " '111000000': 31,\n", " '001100000': 37,\n", " '111100000': 31,\n", " '110010000': 30,\n", " '011100000': 33,\n", " '011010000': 24,\n", " '000100000': 48,\n", " '010000000': 32,\n", " '001110000': 25,\n", " '011110000': 28,\n", " '011000000': 31,\n", " '100010000': 26,\n", " '101110000': 38,\n", " '000000000': 32,\n", " '100110000': 29,\n", " '101010000': 48,\n", " '111111000': 29,\n", " '110000000': 37,\n", " '000010000': 23,\n", " '000110000': 41,\n", " '110110000': 32,\n", " '001010000': 30,\n", " '100000000': 32,\n", " '100100000': 32,\n", " '001000000': 32,\n", " '110100000': 25,\n", " '010010000': 31,\n", " '101100000': 27,\n", " '111010000': 37,\n", " '010110000': 22,\n", " '010100000': 22})" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cccx(5, Circuit().h[:5]).m[:6].run(shots=1000)" ] } ], "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 }