Date: Mon, 12 Aug 2019 22:59:18 -0300
Subject: [PATCH 27/49] Algoritmo de Grover concertado
---
.ipynb_checkpoints/grover-checkpoint.ipynb | 89 ++++++++++++----------
grover.ipynb | 89 ++++++++++++----------
2 files changed, 98 insertions(+), 80 deletions(-)
diff --git a/.ipynb_checkpoints/grover-checkpoint.ipynb b/.ipynb_checkpoints/grover-checkpoint.ipynb
index c80ed0d..438676d 100755
--- a/.ipynb_checkpoints/grover-checkpoint.ipynb
+++ b/.ipynb_checkpoints/grover-checkpoint.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 57,
+ "execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
@@ -48,7 +48,7 @@
"source": [
"## Introdução \n",
"\n",
- " Dado um conjunto desordenado de elementos de tamanho $n$, como fazer para achar um elemento específico dentro do conjunto? A solução mais simples que não envolve a ordenação do conjunto implica a verificação de cada elemento do array até que o elemento desejado seja encontrado. No pior caso, seria necessário fazer $n$ requisições. O algoritmo proposto por Luv Grover tem a capacidade de fazê-lo em $\\sqrt{N}$ vezes. \n",
+ " Dado um conjunto desordenado de elementos de tamanho $n$, como fazer para achar um elemento específico dentro do conjunto? A solução mais simples que não envolve a ordenação do conjunto implica a verificação de cada elemento do conjunto até que o elemento desejado seja encontrado. No pior caso, seria necessário fazer $n$ requisições. O algoritmo proposto por Luv Grover tem a capacidade de fazê-lo em $\\sqrt{N}$ vezes. \n",
" "
]
},
@@ -232,14 +232,6 @@
"qc.draw()"
]
},
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Considerando este reusltado podemos fazer as seguintes observações: Se aplicarmos uma medição nos qubits superiores qualquer um dos estados poderia ser retornado com mesma probabilidade dado que $\\left| \\frac{1}{2} \\right|^2 = \\left| - \\frac{1}{2} \\right|^2 $ o que não é muito interessante para quem faz a busca.\n",
- " Por isso que o algoritmo de Grover faz uso de um passo muito importante para resolver este problema chamado de _inversão sobre a média_. "
- ]
- },
{
"cell_type": "code",
"execution_count": 27,
@@ -267,6 +259,14 @@
"plot_histogram(counts, title='O indíce procurado')"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Considerando este resultado podemos fazer as seguintes observações: Se aplicarmos uma medição nos qubits superiores qualquer um dos estados poderia ser retornado com mesma probabilidade dado que $\\left| \\frac{1}{2} \\right|^2 = \\left| - \\frac{1}{2} \\right|^2 $ o que não é muito interessante para quem faz a busca.\n",
+ " Por isso que o algoritmo de Grover faz uso de um passo muito importante para resolver este problema chamado de _inversão sobre a média_. "
+ ]
+ },
{
"cell_type": "markdown",
"metadata": {},
@@ -346,36 +346,38 @@
},
{
"cell_type": "code",
- "execution_count": 61,
+ "execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
- " ┌───┐ ┌───┐┌───┐┌───┐ ┌───┐┌───┐┌───┐\n",
- "q_0: |0>┤ H ├───────■──┤ H ├┤ Z ├┤ H ├──■──┤ H ├┤ Z ├┤ H ├\n",
- " ├───┤ │ ├───┤├───┤├───┤ │ ├───┤├───┤├───┤\n",
- "q_1: |0>┤ H ├───────■──┤ H ├┤ Z ├┤ H ├──■──┤ H ├┤ Z ├┤ H ├\n",
- " ├───┤┌───┐┌─┴─┐└───┘└───┘└───┘┌─┴─┐└───┘└───┘└───┘\n",
- "q_2: |0>┤ X ├┤ H ├┤ X ├───────────────┤ X ├───────────────\n",
- " └───┘└───┘└───┘ └───┘ \n",
+ " ┌───┐ ┌───┐┌───┐ ┌───┐┌───┐ \n",
+ "q_0: |0>┤ H ├───────■──┤ H ├┤ X ├───────■──┤ X ├┤ H ├─────\n",
+ " ├───┤ │ ├───┤├───┤┌───┐┌─┴─┐├───┤├───┤┌───┐\n",
+ "q_1: |0>┤ H ├───────■──┤ H ├┤ X ├┤ H ├┤ X ├┤ H ├┤ X ├┤ H ├\n",
+ " ├───┤┌───┐┌─┴─┐└───┘└───┘└───┘└───┘└───┘└───┘└───┘\n",
+ "q_2: |0>┤ X ├┤ H ├┤ X ├───────────────────────────────────\n",
+ " └───┘└───┘└───┘ \n",
" c_0: 0 ══════════════════════════════════════════════════\n",
" \n",
" c_1: 0 ══════════════════════════════════════════════════\n",
"
"
],
"text/plain": [
- ""
+ ""
]
},
- "execution_count": 61,
+ "execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
+ "n_qubits = 2\n",
+ "n_ancila = 1\n",
"#Inicialização dos estados\n",
- "qub = QuantumRegister(3,'q')\n",
+ "qub = QuantumRegister(n_qubits+n_ancila,'q')\n",
"cb = ClassicalRegister(2,'c')\n",
"qc = QuantumCircuit(qub,cb)\n",
"qc.h(qub[0])\n",
@@ -385,7 +387,7 @@
"qc.h(qub[2])\n",
"\n",
"#Interação de grover\n",
- "for i in range(int(np.ceil(np.sqrt(4)))):\n",
+ "for i in range(int(np.floor(np.sqrt(n_qubits)))):\n",
" # Oracle\n",
" qc.ccx(qub[0], qub[1], qub[2])\n",
"\n",
@@ -394,8 +396,15 @@
" qc.h(qub[1])\n",
"\n",
" #----Troca de fase\n",
- " qc.z(qub[0])\n",
- " qc.z(qub[1])\n",
+ " qc.x(qub[0])\n",
+ " qc.x(qub[1])\n",
+ " qc.h(qub[1])\n",
+ " \n",
+ " qc.cx(qub[0],qub[1])\n",
+ " \n",
+ " qc.h(qub[1])\n",
+ " qc.x(qub[0])\n",
+ " qc.x(qub[1])\n",
"\n",
" #--- Hadarmard\n",
" qc.h(qub[0])\n",
@@ -414,29 +423,29 @@
},
{
"cell_type": "code",
- "execution_count": 62,
+ "execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
- " ┌───┐ ┌───┐┌───┐┌───┐ ┌───┐┌───┐┌───┐┌─┐ \n",
- "q_0: |0>┤ H ├───────■──┤ H ├┤ Z ├┤ H ├──■──┤ H ├┤ Z ├┤ H ├┤M├───\n",
- " ├───┤ │ ├───┤├───┤├───┤ │ ├───┤├───┤├───┤└╥┘┌─┐\n",
- "q_1: |0>┤ H ├───────■──┤ H ├┤ Z ├┤ H ├──■──┤ H ├┤ Z ├┤ H ├─╫─┤M├\n",
- " ├───┤┌───┐┌─┴─┐└───┘└───┘└───┘┌─┴─┐└───┘└───┘└───┘ ║ └╥┘\n",
- "q_2: |0>┤ X ├┤ H ├┤ X ├───────────────┤ X ├────────────────╫──╫─\n",
- " └───┘└───┘└───┘ └───┘ ║ ║ \n",
- " c_0: 0 ═══════════════════════════════════════════════════╩══╬═\n",
+ " ┌───┐ ┌───┐┌───┐ ┌───┐┌───┐┌─┐ \n",
+ "q_0: |0>┤ H ├───────■──┤ H ├┤ X ├───────■──┤ X ├┤ H ├┤M├────────\n",
+ " ├───┤ │ ├───┤├───┤┌───┐┌─┴─┐├───┤├───┤└╥┘┌───┐┌─┐\n",
+ "q_1: |0>┤ H ├───────■──┤ H ├┤ X ├┤ H ├┤ X ├┤ H ├┤ X ├─╫─┤ H ├┤M├\n",
+ " ├───┤┌───┐┌─┴─┐└───┘└───┘└───┘└───┘└───┘└───┘ ║ └───┘└╥┘\n",
+ "q_2: |0>┤ X ├┤ H ├┤ X ├───────────────────────────────╫───────╫─\n",
+ " └───┘└───┘└───┘ ║ ║ \n",
+ " c_0: 0 ══════════════════════════════════════════════╩═══════╬═\n",
" ║ \n",
" c_1: 0 ══════════════════════════════════════════════════════╩═\n",
"
"
],
"text/plain": [
- ""
+ ""
]
},
- "execution_count": 62,
+ "execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
@@ -449,17 +458,17 @@
},
{
"cell_type": "code",
- "execution_count": 69,
+ "execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
- "image/png": "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f/mX7L777lx88cVrrL/sssvYa6+92HfffTnmmGN49tlnV62bN28exx57LHvuuSd77bUXzzzzDACZyXnnncd73vMe9txzT6688spe+zwaOIb2dQGS1J7m5ma+/OUvc8stt9DY2MghhxzC4Ycfzo477riqzS677MLUqVMZPnw411xzDZMnT+aaa64B4JRTTuGMM87goIMO4tVXX2W99Yo+w5QpU3juuee4//77WW+99Vi4cGGffD71b/ZAJdWtBx98kHe84x1sv/32bLDBBhx77LHcdtttq7XZb7/9GD58OAB77LEH8+fPB+BPf/oTK1eu5KCDDgLgbW9726p23//+9/nSl760KlBHjRrVWx9JA4gBKqluLViwgLe//e2rnjc2NrJgwYJ2299www28733vA+Cpp55i0003ZdKkSRxwwAF8/etfp7m5GYCnn36an/zkJxx88MF8+MMf5qmnnurZD6IByQCVVLcyc41lEdFm25tuuolp06Zx6qmnArBy5Uruu+8+zj33XH79618zZ84cpkyZAsDy5cvZcMMNmTp1KpMmTVr1GqkzDFBJdauxsZHnnntu1fP58+ezzTbbrNHuN7/5DRdddBFTpkxhww03XPXaXXbZhe23356hQ4dy5JFH8sgjj6xad/TRRwPwgQ98gD/+8Y+98Gk00BigkurWbrvtxuzZs5k7dy7Lly/nlltu4fDDD1+tzSOPPMIZZ5zBlClTVjuXudtuu/Hyyy+zaNEiAO666y7Gjx8PwBFHHMFdd90FwD333MO4ceN66RNpIPEqXEl1a+jQoVxwwQUcd9xxNDc38/GPf5wJEyZw/vnn09TUxPvf/34mT57MsmXL+NSnPgXA6NGjmTJlCkOGDOHcc8/lmGOOITPZddddmTRpEgCnn346J510Et/97ncZMWIEl1xySV9+TPVT0dY5hsGiqakpp06d2tdlSJLqyMiRIx/MzD3W1c5DuJIkVWCASpJUgQHaR7oyPdmWW27J/vvvz/7778/HPvaxNV575plnsu222/Zo/ZI02HkRUR/o6vRkw4YNW3UFYWvTpk1jyZIlvfI5JGkwswfaB7oyPdnaNDc3M3nyZM4+++yeKFuSVMMA7QNdmZ4M4I033uDggw/m0EMP5Re/+MWq5VdddRWHH354mwPNJUndy0O4faDK9GS33nrrqmWPPPIIDQ0NzJkzhw9+8IPstNNObLTRRvz0pz/l5z//eY/VLUn6XwZoH+js9GS33nrrqunJABoaGgDYfvvt2XfffXnkkUcYNmwYTz/9NLvvvjsAr732GrvvvjsPPvhgD38aSRqcPITbB7oyPdnLL7/Mm2++CcDixYu5//77GT9+PIcddhh/+tOfmD59OtOnT2f48OGGpyT1IHugfaAr05PNmjWLM844g/XWW4+33nqL0047bbWrdyVJvcOp/JzKT6U777yTr371qzQ3N/OJT3yC008/fbX1l112Gddffz1Dhw5lyy235NJLL11tvO0rr7zC3nvvzZFHHskFF1wAwFFHHcULL7zARhttBMCPf/xjb94s1bmOTuVnD1Si62NzAc4//3z22WefNbZ95ZVX0tTU1CufQ1LvMUAlVh+bC6wam1sboPvtt9+qx3vssQc33XTTqucPP/wwCxcu5JBDDuHhhx/utbr7my9ft3lfl9BtLjjxpb4uQX3Mi4gkujY296233uKss87inHPOabPt5z//efbff38uvPDCNocwSeqf7IFKdG1s7tVXX82hhx7K6NGj12h75ZVX0tjYyNKlSznxxBO58cYb+ehHP9q9xUvqEwaoRNfG5v7+97/nvvvu4+qrr2bZsmUsX76cESNGMHnyZBobGwHYeOONOe6443jooYcMUGmAMEAlVh+b29DQwC233ML3vve91dq0jM29+eabV7uStrbdlClTePjhh5k8eTIrV65kyZIlbLHFFqxYsYLbb7+dAw88sLc+kqQeZoBKdG1sbnvefPNNjjvuOFasWEFzczMHHHAAkyZN6q2PJKmHOQ7UcaBSr/Eq3IGh6pjpZ599lkmTJtHc3MyKFSs46aSTVv1BWk9jph0HKknqdl0ZM7311lvzq1/9ig033JBXX32V9773vRx++OGr5vfub2OmHcYiSeqwrtzPeIMNNlh18d3y5ct56623erf4bmaASpI6rKv3M543bx777rsvO++8M6eddtqq3if0vzHTHsLtBp7XkTRYdPV+xqNHj+buu+9mwYIFfOITn+Doo49mq6226pdjpu2BSpI6rLNjpqdMmbLa/YxbNDQ0MH78eO67775V24XVx0zXOwNUktRhXbmf8XPPPcfrr78OFPc2fuCBB9hhhx1YuXIlixcvBlg1ZnrChAm996Eq8hCuJKnDujJm+vHHH+ess84iIshMPve5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\n",
+ "image/png": "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\n",
"text/plain": [
"