{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Deutsch-Joszja Algorithm\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit\n", "from qiskit import Aer, execute\n", "from qiskit.tools.visualization import plot_histogram" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Create quantum/classical registers and a quantum circuit\n", "\n", "qin = QuantumRegister(2)\n", "qout = QuantumRegister(1)\n", "c = ClassicalRegister(2)\n", "qc = QuantumCircuit(qin,qout,c)\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Copy the equal2 function from Example 3\n", "# This is balanced function\n", "\n", "def equal2(circ, input, output) :\n", " circ.cx(input[0],output)\n", " circ.cx(input[1],output)\n", " circ.x(output)\n", "\n", "# This is a constant function that doesn't change anything\n", "def constant2(circ, input, output) :\n", " circ.iden(output)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/mueller/.local/lib/python3.7/site-packages/qiskit/util.py:109: DeprecationWarning: The QuantumCircuit.iden() method is deprecated as of 0.14.0, and will be removed no earlier than 3 months after that release date. You should use the QuantumCircuit.i() method instead.\n", " return func(*args, **kwargs)\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Build the Deutsh-Josza circuit\n", "\n", "# First apply phase shift to negate where f(x) == 1\n", "qc.h(qin)\n", "qc.x(qout)\n", "qc.h(qout)\n", "#is equal2() for balanced or constant2() for constant in line below\n", "constant2(qc,qin,qout)\n", "qc.h(qout)\n", "qc.barrier() # barrier to make circuit look nicer\n", "\n", "# Then Walsh-Hadamard on input bits\n", "qc.h(qin)\n", "\n", "# For constant function, output is |00> with probability 1\n", "# For balanced function, output is something other than |00> with probability 1\n", "qc.measure(qin,c)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qc.draw(output='mpl')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'00': 512}\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Simulate and show results\n", "backend = Aer.get_backend('qasm_simulator')\n", "job = execute(qc, backend, shots=512) # shots default = 1024\n", "result = job.result()\n", "print(result.get_counts())\n", "plot_histogram(result.get_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.9" } }, "nbformat": 4, "nbformat_minor": 2 }