bachelor_thesis/computations/lookup_table_2_qbits_CZ.ipynb
2019-11-13 16:08:33 +01:00

865 lines
177 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left[ \\left[\\begin{matrix}\\frac{\\sqrt{2}}{2} & \\frac{\\sqrt{2}}{2}\\\\\\frac{\\sqrt{2}}{2} & - \\frac{\\sqrt{2}}{2}\\end{matrix}\\right], \\ \\left[\\begin{matrix}1 & 0\\\\0 & i\\end{matrix}\\right], \\ \\left[\\begin{matrix}1 & 0\\\\0 & 1\\end{matrix}\\right], \\ \\left[\\begin{matrix}\\frac{\\sqrt{2}}{2} & \\frac{\\sqrt{2}}{2}\\\\\\frac{\\sqrt{2} i}{2} & - \\frac{\\sqrt{2} i}{2}\\end{matrix}\\right], \\ \\left[\\begin{matrix}\\frac{\\sqrt{2}}{2} & \\frac{\\sqrt{2} i}{2}\\\\\\frac{\\sqrt{2}}{2} & - \\frac{\\sqrt{2} i}{2}\\end{matrix}\\right], \\ \\left[\\begin{matrix}1 & 0\\\\0 & -1\\end{matrix}\\right], \\ \\left[\\begin{matrix}\\frac{\\sqrt{2}}{2} & \\frac{\\sqrt{2} i}{2}\\\\\\frac{\\sqrt{2} i}{2} & \\frac{\\sqrt{2}}{2}\\end{matrix}\\right], \\ \\left[\\begin{matrix}\\frac{\\sqrt{2}}{2} & - \\frac{\\sqrt{2}}{2}\\\\\\frac{\\sqrt{2}}{2} & \\frac{\\sqrt{2}}{2}\\end{matrix}\\right], \\ \\left[\\begin{matrix}1 & 0\\\\0 & - i\\end{matrix}\\right], \\ \\left[\\begin{matrix}\\frac{\\sqrt{2}}{2} & - \\frac{\\sqrt{2}}{2}\\\\\\frac{\\sqrt{2} i}{2} & \\frac{\\sqrt{2} i}{2}\\end{matrix}\\right], \\ \\left[\\begin{matrix}\\frac{\\sqrt{2}}{2} & - \\frac{\\sqrt{2} i}{2}\\\\\\frac{\\sqrt{2}}{2} & \\frac{\\sqrt{2} i}{2}\\end{matrix}\\right], \\ \\left[\\begin{matrix}\\frac{\\sqrt{2}}{2} & - \\frac{\\sqrt{2} i}{2}\\\\\\frac{\\sqrt{2} i}{2} & - \\frac{\\sqrt{2}}{2}\\end{matrix}\\right], \\ \\left[\\begin{matrix}\\frac{1}{2} + \\frac{i}{2} & \\frac{1}{2} - \\frac{i}{2}\\\\\\frac{1}{2} - \\frac{i}{2} & \\frac{1}{2} + \\frac{i}{2}\\end{matrix}\\right], \\ \\left[\\begin{matrix}\\frac{\\sqrt{2}}{2} & \\frac{\\sqrt{2}}{2}\\\\- \\frac{\\sqrt{2}}{2} & \\frac{\\sqrt{2}}{2}\\end{matrix}\\right], \\ \\left[\\begin{matrix}0 & 1\\\\1 & 0\\end{matrix}\\right], \\ \\left[\\begin{matrix}\\frac{\\sqrt{2}}{2} & \\frac{\\sqrt{2}}{2}\\\\- \\frac{\\sqrt{2} i}{2} & \\frac{\\sqrt{2} i}{2}\\end{matrix}\\right], \\ \\left[\\begin{matrix}0 & 1\\\\i & 0\\end{matrix}\\right], \\ \\left[\\begin{matrix}\\frac{1}{2} - \\frac{i}{2} & \\frac{1}{2} + \\frac{i}{2}\\\\- \\frac{1}{2} + \\frac{i}{2} & \\frac{1}{2} + \\frac{i}{2}\\end{matrix}\\right], \\ \\left[\\begin{matrix}0 & i\\\\1 & 0\\end{matrix}\\right], \\ \\left[\\begin{matrix}\\frac{\\sqrt{2}}{2} & \\frac{\\sqrt{2} i}{2}\\\\- \\frac{\\sqrt{2} i}{2} & - \\frac{\\sqrt{2}}{2}\\end{matrix}\\right], \\ \\left[\\begin{matrix}\\frac{1}{2} - \\frac{i}{2} & - \\frac{1}{2} + \\frac{i}{2}\\\\- \\frac{1}{2} + \\frac{i}{2} & - \\frac{1}{2} + \\frac{i}{2}\\end{matrix}\\right], \\ \\left[\\begin{matrix}0 & -1\\\\1 & 0\\end{matrix}\\right], \\ \\left[\\begin{matrix}\\frac{\\sqrt{2}}{2} & - \\frac{\\sqrt{2}}{2}\\\\- \\frac{\\sqrt{2} i}{2} & - \\frac{\\sqrt{2} i}{2}\\end{matrix}\\right], \\ \\left[\\begin{matrix}\\frac{1}{2} - \\frac{i}{2} & \\frac{i \\left(-1 + i\\right)}{2}\\\\- \\frac{1}{2} + \\frac{i}{2} & \\frac{i \\left(-1 + i\\right)}{2}\\end{matrix}\\right]\\right]$"
],
"text/plain": [
"⎡⎡√2 √2 ⎤ ⎡ √2 √2 ⎤ ⎡√2 √2⋅ ⎤ ⎡ √2 √2⋅\n",
"⎢⎢── ── ⎥ ⎢ ── ── ⎥ ⎢── ──── ⎥ ⎢ ── ───\n",
"⎢⎢2 2 ⎥ ⎡1 0⎤ ⎡1 0⎤ ⎢ 2 2 ⎥ ⎢2 2 ⎥ ⎡1 0 ⎤ ⎢ 2 2 \n",
"⎢⎢ ⎥, ⎢ ⎥, ⎢ ⎥, ⎢ ⎥, ⎢ ⎥, ⎢ ⎥, ⎢ \n",
"⎢⎢√2 -√2 ⎥ ⎣0 ⅈ⎦ ⎣0 1⎦ ⎢√2⋅ -√2⋅ ⎥ ⎢√2 -√2⋅ ⎥ ⎣0 -1⎦ ⎢√2⋅ √2\n",
"⎢⎢── ────⎥ ⎢──── ──────⎥ ⎢── ──────⎥ ⎢──── ──\n",
"⎣⎣2 2 ⎦ ⎣ 2 2 ⎦ ⎣2 2 ⎦ ⎣ 2 2 \n",
"\n",
"ⅈ⎤ ⎡√2 -√2 ⎤ ⎡ √2 -√2 ⎤ ⎡√2 -√2⋅ ⎤ ⎡ √2 -√2⋅ ⎤ ⎡1 1\n",
"─⎥ ⎢── ────⎥ ⎢ ── ────⎥ ⎢── ──────⎥ ⎢ ── ──────⎥ ⎢─ + ─ ─\n",
" ⎥ ⎢2 2 ⎥ ⎡1 0 ⎤ ⎢ 2 2 ⎥ ⎢2 2 ⎥ ⎢ 2 2 ⎥ ⎢2 2 2\n",
" ⎥, ⎢ ⎥, ⎢ ⎥, ⎢ ⎥, ⎢ ⎥, ⎢ ⎥, ⎢ \n",
" ⎥ ⎢√2 √2 ⎥ ⎣0 -ⅈ⎦ ⎢√2⋅ √2⋅⎥ ⎢√2 √2⋅ ⎥ ⎢√2⋅ -√2 ⎥ ⎢1 1\n",
" ⎥ ⎢── ── ⎥ ⎢──── ────⎥ ⎢── ──── ⎥ ⎢──── ──── ⎥ ⎢─ - ─ ─\n",
" ⎦ ⎣2 2 ⎦ ⎣ 2 2 ⎦ ⎣2 2 ⎦ ⎣ 2 2 ⎦ ⎣2 2 2\n",
"\n",
" ⅈ⎤ ⎡ √2 √2⎤ ⎡ √2 √2 ⎤ ⎡ 1 1 ⅈ⎤ ⎡\n",
" - ─⎥ ⎢ ── ──⎥ ⎢ ── ── ⎥ ⎢ ─ - ─ ─ + ─⎥ ⎢\n",
" 2⎥ ⎢ 2 2 ⎥ ⎡0 1⎤ ⎢ 2 2 ⎥ ⎡0 1⎤ ⎢ 2 2 2 2⎥ ⎡0 ⅈ⎤ ⎢\n",
" ⎥, ⎢ ⎥, ⎢ ⎥, ⎢ ⎥, ⎢ ⎥, ⎢ ⎥, ⎢ ⎥, ⎢\n",
" ⅈ⎥ ⎢-√2 √2⎥ ⎣1 0⎦ ⎢-√2⋅ √2⋅⎥ ⎣ⅈ 0⎦ ⎢ 1 1 ⅈ⎥ ⎣1 0⎦ ⎢\n",
" + ─⎥ ⎢──── ──⎥ ⎢────── ────⎥ ⎢- ─ + ─ ─ + ─⎥ ⎢\n",
" 2⎦ ⎣ 2 2 ⎦ ⎣ 2 2 ⎦ ⎣ 2 2 2 2⎦ ⎣\n",
"\n",
" √2 √2⋅⎤ ⎡ 1 1 ⅈ⎤ ⎡ √2 -√2 ⎤ ⎡ 1 ⅈ⋅(-1 \n",
" ── ────⎥ ⎢ ─ - ─ - ─ + ─⎥ ⎢ ── ──── ⎥ ⎢ ─ - ─ ──────\n",
" 2 2 ⎥ ⎢ 2 2 2 2⎥ ⎡0 -1⎤ ⎢ 2 2 ⎥ ⎢ 2 2 2 \n",
" ⎥, ⎢ ⎥, ⎢ ⎥, ⎢ ⎥, ⎢ \n",
"-√2⋅ -√2 ⎥ ⎢ 1 1 ⅈ⎥ ⎣1 0 ⎦ ⎢-√2⋅ -√2⋅ ⎥ ⎢ 1 ⅈ⋅(-1 \n",
"────── ────⎥ ⎢- ─ + ─ - ─ + ─⎥ ⎢────── ──────⎥ ⎢- ─ + ─ ──────\n",
" 2 2 ⎦ ⎣ 2 2 2 2⎦ ⎣ 2 2 ⎦ ⎣ 2 2 2 \n",
"\n",
"+ )⎤⎤\n",
"────⎥⎥\n",
" ⎥⎥\n",
" ⎥⎥\n",
"+ )⎥⎥\n",
"────⎥⎥\n",
" ⎦⎦"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import sympy\n",
"import numpy as np\n",
"\n",
"M = sympy.Matrix\n",
"simplify = sympy.simplify\n",
"sqrt = sympy.sqrt\n",
"i = sympy.I\n",
"_i = i\n",
"\n",
"from sympy.physics.quantum import Dagger\n",
"from sympy.physics.quantum import tensorproduct\n",
"\n",
"sympy.init_printing()\n",
"H = simplify(M([[1, 1], [1, -1]]) / sqrt(2))\n",
"S = M([[1, 0], [0, i]])\n",
"C_L = [H, S]\n",
"basis_vectors = [M([1, 0]), M([0, 1])]\n",
"\n",
"def getitem(m, i, j):\n",
" # Note that sympy uses an extremely weird way to store the matrices,\n",
" # in particular the internal representation is vastly different from what\n",
" # is printed. For instance the H matrix is stored as a Mul object\n",
" # (even after using simplify) instead of a matrix. \n",
" # Therefore m[i][j] will NOT work. This is a workaround.\n",
" return (Dagger(basis_vectors[i]) * m * basis_vectors[j])[0]\n",
"\n",
"def is_known(C_L, a):\n",
" for c in C_L:\n",
" test = c * Dagger(a)\n",
" if(simplify(getitem(test, 0, 1)) != 0):\n",
" continue\n",
" if(simplify(getitem(test, 0, 0) / getitem(test, 1, 1)) == 1):\n",
" return True\n",
" return False\n",
"for i in range(5):\n",
" for m in (H, S):\n",
" for c in C_L:\n",
" c = simplify(c*m)\n",
" if(is_known(C_L, c)):\n",
" continue\n",
" C_L.append(c)\n",
"C_L"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAALQAAABlCAYAAADkr8m4AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAIeklEQVR4Ae1d7Y3cNhTcDVyA08K6geDcQIBsOojdQeIaAuR/kHRgF5A/SQdOOohdgIG7AvIjOaSAXGZuJULeD5JvSZHv0U+AfFpRFGeGI+otpX3ePjw8bCTLdrt9iuNfYn2Fus8ldVseawVnjiajcGnB4wkauYGo7y4I+xtM+2Ium47dT59pbJWLFZw54o3CpRYPnOcWuu3OaQevbp8sCn7GNg9eLnfLD6jwHp/f46TfLPdr27aCM0e3UbhU5PHTGd2+xr5HTy4N/RqNfmTgMxV9lyvQVQF49M0xAAyw3PVo6M+OC/2zK2BZATe05d5z7CcKuKFPJPEdlhVwQ1vuPcd+ooAb+kQS32FZgeUsR5IHvk3ucNArrJyL3uHza/y9xTdPTvmpWazgzBFsFC6teHC+Y36w8syn7XIs5sdoUwAXy3fAxGnnrYcc2nrH8RQp4IYuks8ra1MgO4bGsJ58i4lDfm+CVnDm6DQKl5Y8sg2twaw5JrCC81Pi0rJPPOTIcZYfY0aB7BGajHDr4Cuj30/sOIXH5VtcgfeHTR3/WsGZo9YoXFry4LQd4+MdjLmJrTiGUyPhGH7GynnosE/DthWcOVqNwmVNHjg3p+0g5+FrnsTQrLGfOwLbHKW572bep+HvhEk9zhytRuGyJg+cOxhaGkPzKeGfWLUvVnDm6DgKlyY8RDE0RpTjl6sJ8g77+UsWNYsVnDmCjcKlFQ/pCB36AEE+QxX+SkDtD2UJ1gpOYk0to3BZk8dVhgYgxs78bddzXHmqZjiWprCCc4n50vYoXNbmIQo5KPYMCEbmDxPnEfAen1X9HtEKTmqYWkbh0oKHaISeAHGq7kds33DFNuPov1Od0rLcCs4cTUbh0pKHZNruH3QCp+k+WjE6a5uHTuIEBz4k4nTPO234l3iAL8llebzW7RweOOaqPkG9MG0nDTm+QuU9Vi7MnPTssKnrX+D6PIZourPMPCii5sWE5ikBW/WJyNAAZSLRTIa4ZniMonmrPhHF0ClQXu4K9FbADd27B7z9qgq4oavK6SfrrYAbuncPePtVFXBDV5XTT9ZbATd07x7w9qsqIJq2m5728Mkg53DVJppJKWSJhyWsKd1j5bV4eqKZmMpeZkIBXAx8UuiJZkz0loMUKeAxtEguP1i7Aoyh+abcL1j/i4HFsM4XkqILHtOummgGGPjexR9YJe9fvJgeHz9i18AjKuKiUDvWGv1BuhV4fsBp6OGNx9BUwRfTCuCC8BjadA86+IsKSKfteKtXn2jmItupYLpVmuBhCWtK91h5TZ6SF/xNJJpBzBz9wQGENcPDEtaU7rHyEp6oy5ADpz98zZMYmjXMJ3AheSs8LGGNGTZVVsITdYOhpdN2TZKFAODaiyUelrCW9FsVnqIYGleZiUQzKVUt8bCENaV7rLwWT+kIHTAhiGeooj7RTAB8YcMSD0tYL8idtbuE51WGRoM7IFOfaCalniUelrCmdI+Vl/IUhRwEMjeIW4TqRDMx0azxGEXzFn0iGqEnYdUnmskUzgSPUTRv2SdfojFOY32BUTc1f2sm6Qn48CEQp3NOEslgnyUeSawxrqk+1VJe0ieo+wNWUHnYMOT4FyuX+e/h0/l/TSQ9wajGL6z7icLJi0wgHk1Ec556n70prCmufVBf1WqJt/6aWxTF0BDXRIIWKzjnTij5OwrXWjxEMXSJ8F7XFWihgBu6hcreRjMF3NDNpPaGWijghm6hsrfRTAE3dDOpvaEWCrihW6jsbTRTQDRtNz214mt+nONVm2jGCs4avTwK11o8/EeyNVzl5+iqAC4G/5Fs1x7wxldTwGPo1aT1E/dQIDuGxrB++AViBCUeX66aaCbSdCiygBMY+X5JUcIcEu7NVSOPbENrMGtwbWTDAk5gvAeF4v9SujdXjTw85IhcHF5kT4HsEZrUpluM+gQtVnDWsMsoXGvy4LvDjI93uIWkXvA3kaAFXEzgTOmdUz4K1xIeqBvycmB7IzG0iQQt4GQCZ45hU8eMwrWEB+oGQ0tj6CrJQABg7cUKzho6jMK1Cg9RDI3RwkSiGSs4a7h5FK61eEhH6NAHCOIZqqhPNGMFZxC2YGMUriU8rjI0GtxBd/WJZqzgLPBwqDoK11IeopCD6s0N4hahOtGMFZzBkQUbo3CtwUM0Qk8Nqk/QYgVngYdD1VG41uQhmbZLJj3ByB2dy25Rjt5O4sQxFxPRtMBYq40crrXaKj1PTPMSHqgbpu2kIUdJMhC022aB8NFEMhgNeBHvJzQniWjaoKzWiok+SWme6rNctUSGRqMmEs2kyI/CgzytcGmFUxRDp4zi5a5AbwXc0L17wNuvqoAbuqqcfrLeCrihe/eAt19VATd0VTn9ZL0VcEP37gFvv6oComm76WkOX/PjHK7aRDMphUbhQZ5WuLTC6YlmUu73cvUK4GLxRDPqe8kBXqWAx9BXyeaVtCqQHUNjWO+eaAYYihO0jMKDhtLAJcfYLXFmGxrP4rtnRQKG4gQto/CgkTRwyTF0S5wecuT0iB9jRoHsEZqMplu++kQzKfVH4WGpT1pqLnnBf4gELjDCEDxwK6enTXBZEyfOHV7wpyASQw+RwAWch+AxGdoElzU1x7mDoaUxdJVkIADQexmFB3W0wqUJTlEMjRHBRKKZ1NUyCg/ytMKlFU7pCB28giCfoYr6RDMB8IWNUXiQnhUua+K8ytAAtIN+6hPNXPBw2D0KDxKywmVtnKKQYykcbiGqE80E117YmIW1zsNSn7TSfJ7l4Lfl4/VXdHjIs4FyjsxvsbLOvDLxzNPlcdq3gXcIHtTZCpdaOHGeW6zHPn38TD34OJvvR7zEem65w0G/zwW4wpjA5SSPBY7p/lh8xpjzdxQe5GqFSy2cOA+n6M4u8OGb/wFmtDR28OD1wgAAAABJRU5ErkJggg==\n",
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}\\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2}\\\\\\frac{1}{2} & - \\frac{1}{2} & \\frac{1}{2} & - \\frac{1}{2}\\\\\\frac{1}{2} & \\frac{1}{2} & - \\frac{1}{2} & - \\frac{1}{2}\\\\\\frac{1}{2} & - \\frac{1}{2} & - \\frac{1}{2} & \\frac{1}{2}\\end{matrix}\\right]$"
],
"text/plain": [
"⎡1/2 1/2 1/2 1/2 ⎤\n",
"⎢ ⎥\n",
"⎢1/2 -1/2 1/2 -1/2⎥\n",
"⎢ ⎥\n",
"⎢1/2 1/2 -1/2 -1/2⎥\n",
"⎢ ⎥\n",
"⎣1/2 -1/2 -1/2 1/2 ⎦"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"H2 = tensorproduct.matrix_tensor_product(H, H)\n",
"H2"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"zero_state = M([1, 0, 0, 0])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAB0AAABlCAYAAACx4uijAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC/klEQVRoBe1ay03DQBB1EGeUEwWYDkgJhA4QHRBKQFSAQgdJAVxSApRAKAApKYADIArAvOfsrhxn7czYgIOYkSb78ey89dvfZJMky7JEo0mS9KEj6FzTrmi71+v1jqFZhc7gPAhtUSAggalRgd2iwl/GBvuFVrfILwplZpfFMnr7hPITHJ4V6yP5caTuFHV5uyLoBE7XQCINRVXwMy0boqOsykH3yg9/o2ygP8pyJ/QWZ+/Wt8MMTGF0CR1CU5QnSBeYrVxuYlGBuiV1JfZeYdgJvZ2AiunF+OX7ZgVjeTXoz7edOhs+E4NKHW4D5PPdppc9BMU8zq6Zh3D5UC7AwvsqK/sU0+vcjQHAdZqLW6dzFI5clSjR0jsC0LDgmecmNwke7mLRgvItH8XeKwxV9ILa8uHMTixRz4hCLNo3DY4dpYwEBqFSmGkECsAU/jmeA+3MZb9U9LKBBwQYAy2WOYneURbHV6o3dYA8zm4I5gA5rq9QsWjflGuSGwTTIHjLsHZDZU1GC3oCX0Pn7xJgqk3B90MFChBpsO39R1PVmEY9NKg00AakyZv8H3pVS8btSNwIuFYt2N46ozqZSBxTnhB30M+6LmI82wbbzw4nh+F5SIcp9lbV9Y7GHv55K4MmmQXbICIuFmzHeamoVW2DmHkWbFcQGa9W0UsX7qThLP57wfaBI8GncU5WtW2C7UPvmPR+uIJP/bNY2ibYfvEOVWOKcbRg2zMnSjuJHAxUNDZNjVRLxoJtLc2dzF7xmH5DsB0IEYNi3xVdlQfPNZndppcdB8V2s80vYWLRjim/+tvN9o/Rmzv2sS8KdrNdS7V4G3Re2gTboSNa0DbBdjNQC7YDb8KMdhsUuq03M9B6flo+Va1TC7a1bHcye8VjasG2djxpL6aXxhZsgwELtjkVNqTx5uAotb+RbFBaruDM429tMZ0hAgy/v8Emhd5D2cYr/1bSL9nxz8kxfzDLEt4j8Nv1OTQm/K/Rg3+AcXxDnvZrApu1+wjY8ce8qMB2+gXddflBWpRqZgAAAABJRU5ErkJggg==\n",
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}\\frac{1}{2}\\\\\\frac{1}{2}\\\\\\frac{1}{2}\\\\\\frac{1}{2}\\end{matrix}\\right]$"
],
"text/plain": [
"⎡1/2⎤\n",
"⎢ ⎥\n",
"⎢1/2⎥\n",
"⎢ ⎥\n",
"⎢1/2⎥\n",
"⎢ ⎥\n",
"⎣1/2⎦"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plus_state = H2 * zero_state\n",
"plus_state"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"I = M([[1, 0], [0, 1]])"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"C_L_0 = [tensorproduct.matrix_tensor_product(I, c) for c in C_L]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"C_L_1 = [tensorproduct.matrix_tensor_product(c, I) for c in C_L]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}1 & 0 & 0 & 0\\\\0 & 1 & 0 & 0\\\\0 & 0 & 1 & 0\\\\0 & 0 & 0 & -1\\end{matrix}\\right]$"
],
"text/plain": [
"⎡1 0 0 0 ⎤\n",
"⎢ ⎥\n",
"⎢0 1 0 0 ⎥\n",
"⎢ ⎥\n",
"⎢0 0 1 0 ⎥\n",
"⎢ ⎥\n",
"⎣0 0 0 -1⎦"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"CZ = M([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, -1]])\n",
"CZ"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAC0AAABlCAYAAADZEWqbAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAD30lEQVR4Ae1cXW7UMBjcVDyj0gcOsEgcgB6B7Q2AB95pj4A4ASo3aA/Qlx4BuAHtAZC2B+ABVhyAZSZ8jtxgb7Lx2CjIllz/xPt5Mpn97HxNttlutwtlaprmEPZeIZ/B9rHStrN1gEmeIW8j+doNHFPSFsadIhM486QEO+sInpbhB57VD6ivvTard732ziaYvcWAW0z4YufA4YPngSEn6Gvt+qAvMOleIAOGJV3Acdk3BCLY1YI+6B+cQ7uCLnWVKtOlmPa9R/Kc+IYvYeQMeYW8RPsC5RregO5UlqSgzWW+laGLGKqajhAj75bJA/od3HlBPu2ylnoWMtAqQGNOaJaaljFNhiARbkffGVt0f0xvcBU2f6qav1LQgHQOgPTTbTI/fYPGE+uSFGp5nALoykPGfTEXGd4cyJIaNFn+IkMXMSSVB6TR37zzJO7QzzsaWVIz3QEzSfBOQ35zmwU0AC8Blno+VnsOsiKVBw06wADLG1G2+SXcoC27/5QybYC5HX1PsAaYuv6OLEtqpumTucCw7BJY7nx315lQUYN+Diwrw8MIk3RRcecpBQ2QqmCNwxcspZoOzpChs4LOQGrQZGU6SEuGzlkyLXV5tiJyIaGvrsEaX2WzlMcsQVPT3IFdIf/yL8G+deg5d7Dmq+FckOkj5NfISaxj39EMZcyRkp7iw8SZBjQFQcpn1S6vBmtiVyNJxwGjNVgTIKXtkmoa3qMGa2JMqzXdzmMbpxqs8VmXMm0MFwnWPLSzcKV/UvvWcwZrHjsw9B4/reFKd2xKmTNY880BUru8GqxxzPZL6RexbzxXu4LOxWzfbmW6z0iuttTl1WDNjstUNb2DHOkhmaYLBGu6E5eBZqCms5q5MktNy5gmuZBIDdbEVKaWRw3WxJiWaroGa2I0o1+t6XYq2zjVYI1PvJRpYzh7sIYnwGeM+E+eJb5Ii5QMGz/MFu112beJfi5AfOvoxu8fqttnMGyrffAKBh/BeDThSpCglQ0g+ElJ6vKGEOCkJMEcqaaHQKuOV9AqJofsVKaHGFIdnyXTRV2erZjJT94UBQ0/zSd7k1+TmqU8Zgl6lDygRe4TPiPvs194act26zRgQ/bkzSjQmHyDmZOe7YcNWTDn/5VHe30Ff0xmya9JjZKHAK8zIXlNqrQ8JMGc0qC5Gia/JlVUHvAgkidvSjPttO1e2pn0mtQ/AW0bp8nBnKLyIM0OMKSS9JqUi3t0cQrYdvVrGE+Khfifh90l8kdkzukygzuHvXH8cRSH4V7JcVxauZ/gb8yEEt8l/BQ6MKUPLDOY89f+BXPcW+IxjsGcYMLYy9/xqBy2/jxphQAAAABJRU5ErkJggg==\n",
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}\\frac{1}{2}\\\\\\frac{1}{2}\\\\\\frac{1}{2}\\\\- \\frac{1}{2}\\end{matrix}\\right]$"
],
"text/plain": [
"⎡1/2 ⎤\n",
"⎢ ⎥\n",
"⎢1/2 ⎥\n",
"⎢ ⎥\n",
"⎢1/2 ⎥\n",
"⎢ ⎥\n",
"⎣-1/2⎦"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"CZ * plus_state"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}1 & 0 & 0 & 0\\\\0 & 1 & 0 & 0\\\\0 & 0 & 1 & 0\\\\0 & 0 & 0 & 1\\end{matrix}\\right]$"
],
"text/plain": [
"⎡1 0 0 0⎤\n",
"⎢ ⎥\n",
"⎢0 1 0 0⎥\n",
"⎢ ⎥\n",
"⎢0 0 1 0⎥\n",
"⎢ ⎥\n",
"⎣0 0 0 1⎦"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"I_4 = M([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]])\n",
"I_4"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"from itertools import product\n",
"starting_states = [ c0 * c1 * ent * plus_state for ent, c0, c1 in product((I_4, CZ), C_L_0, C_L_1)]\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(starting_states) == 2 * 24**2"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"resulting_states = [CZ * s for s in starting_states]"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"starting_states_np = [np.array(s).astype(np.cdouble)[:, 0] for s in starting_states]\n",
"resulting_states_np = [np.array(s).astype(np.cdouble)[:, 0] for s in resulting_states]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"from collections import defaultdict"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"state_indices = defaultdict(list)\n",
"\n",
"for rs_np in resulting_states_np:\n",
" for j, ss_np in enumerate(starting_states_np):\n",
" c = ss_np.transpose().conjugate().dot(rs_np)\n",
" if(c * c.conjugate() == 1):\n",
" state_indices[tuple(rs_np)].append(i)\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAB0AAAAPCAYAAAAYjcSfAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB2klEQVQ4EZ2UgU0CQRBFgVCA2oHQAWAFYgcYO4AOtARDCZRgsAPowEgH0oFCB/jeenO5W+6McZKf3f0zOzM3M3ud0+nUQUauVcBdgEFw7sFcPrj/rl0vdrvdg87ADijulTH6oxtsZixr9y1yxPayquPOsnpm/4LNrl+QX6xiBPbgFTxHQPbKDTAp9dpWZcrhKQiCWZUNWOBjKw9nwmIYQXco71X+IpZ1nOuLALbGREN0vo2ABWn1TLiT+siyxqDW0/yMzSznPOd3tQMqWnv/56AtAe1ZbQg5v4NDk31wUV5rniaTC8oQrDCyh41SlNWAZS8LQ+dih971AXwC/VnN1N/4UpteloO9g2CJppFdvqKzbzU9Z/vmPb92Xr3D2ReSWtTaRwxM5KN6MfbwKak4xwofQaHqM4JuBdLT7LFpEydtENOZGS04n5WeQOlNo/uZ0volv96kJj2cboBEm2iYixOav9WwMWAED666DvzSCWhyfKUl2de+iAS1tbxtjg3a5A86SarCMq+/Z8T6b3IdnH8fDZzus5kIfa7THqSnxJqyrjmAe9QAlBMdTuDi8Tcmqx3iEJZ69n55Ob19jPaUbAnMRLGs9usaXVMJLbf8G2gU7t01+LyFT636Br8XM4/ij6J4AAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle 576$"
],
"text/plain": [
"576"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"missing = []\n",
"for rs, rs_np in zip(resulting_states, resulting_states_np):\n",
" if(not tuple(rs_np) in state_indices\n",
" or state_indices[tuple(rs_np)] == []):\n",
" missing.append(rs)\n",
"len(missing)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAACMAAAAOCAYAAACl66WxAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB+ElEQVQ4EZWVjW3CMBCFk4oBEN0ANqDtBE03oOoGZQOYgW4AK9ANygYVbFA6AYUN0vdZPnRxHAQnnWy/e7bvx7mUdV0XZVkOi6KYS5FH6Z90LtsOoEu0byzbVLxpFyfFtWcRsYPGkXSh/Xvj4cgap0whSGtpZVhulP1H2tib4xkm7lY6cet+PGMIhqylfSPYKOyI2jodZZtJr3ZG3Hf4mXMI/Av8TpNKelT68NLLRot+LKHHKSvlOUVt2C4sXmXLlf1beMX9OMOle3nG4TlJnYTzJv4qR76AETRvMRW7t+rpUDzOCdHzjhrRKALKs8xt6MKIusvm8AGZaUksAw/bvrDAEQ52koPn19/anAcGEbYseJZlK5TJG2zOo17p0g8D4shnfGt5kiM6l/etzCh6SrDRpY3eIZyv4abyuGstegedp5a1Q8OZeCHvJHWE8vD531qecKP2WXlyb8ewfc/8kyMTzUfeEWE4gTA+aU35vPDIhxHni2y8MU/UnK/WzvMmy8wmdF1ZOJS2fO7CzCV8Oa2GaDzZaIxXdWDxKHOriQqj9FvOLDXB2y8pnnvB47FI/D+yoozgMe/rxQjCSDtO7oQ/GM4oGx2bf95nXMP9lT4LCy2E/wWH5jR4LGKasRCN20MwM+NpzqVLW9sojMtp/2QcpewEHM7/BytymT8mTB2JAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle 24.0$"
],
"text/plain": [
"24.0"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(missing) / 24 "
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}\\frac{\\sqrt{2}}{2}\\\\0\\\\\\frac{\\sqrt{2} i}{2}\\\\0\\end{matrix}\\right]$"
],
"text/plain": [
"⎡ √2 ⎤\n",
"⎢ ── ⎥\n",
"⎢ 2 ⎥\n",
"⎢ ⎥\n",
"⎢ 0 ⎥\n",
"⎢ ⎥\n",
"⎢√2⋅⎥\n",
"⎢────⎥\n",
"⎢ 2 ⎥\n",
"⎢ ⎥\n",
"⎣ 0 ⎦"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"missing[0]"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"starting_matrices = [a * b * c for a, b, c in product(C_L_0, C_L_1, (I_4, CZ))]"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"resulting_matrices = [CZ * c for c in starting_matrices]"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAGoAAAAVCAYAAACuVXuDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADtklEQVRoBe2ZjXEaMRCFjScFMEkHuAMSOsAdJKQDuwOnhqQDu4Q4HWCXQDqADmLTAXmfkDQSJ7jjLGlgxjuzSFrt7Vvt6u+OwWazuQhpMBiMJFuFsvd63QikcnAZuiCFO7XHoSx3XRgN+5INcS431hnbG9lc+CH4RKnjq6SftJr++N6gov6xeCkeBuJGtYPes3Q24oXlpYwsxC+hMfXh7L1ldOfiRpLDZ3LWwQI7p82UrRSOcvCErvrIyZbs1kfwF9RDlgz5oxiHCSb75DDUCZ5v1bO6JAbGFuVPcWRTbVbXY4hj9XhmGspL1YWDb5EPJbAO4aiPmJvYmMSoQSJuDjmifrbFZKLC59r01N86eHTEUfLAEL3CIV6JujAYa/FEteGo/0Z8zxjd1jdT40HCU6GpHHnV0t/dZtkSip5nbEXCWFtWUYa64NiczIjDpX4Iyqnd8kjISo4SsBTtJjCl01f2vdKk7YpDbmYf9PNNbA6vviM79jlNDpa0C/aV6izvv86O6viUInOZCHVTSn1l8ostr8YF4hgccnNNor7UcE4YjkjQbwXbrBYFh4sDt8lryfZOGPWTJHR/iLOT9WMtH4ruLj1wOCunnFEELroaZ49CYFCBICEmSYhtYEhQ20zmgvEg/V88V4BuZbvGOX0sDrkZkqiPYh+4AgHoYpJZzHsTK6ZBkpPEJwXyttGZQSD75naVwdRBEz1xTGxIVDWSo7y08m6wj1jdEdnBsfJKJYnJwatAjS2vD45ZSJxRONgIUBStfA3Ow9Q2izMkw18oaCtJvJlfhUmSzKy6jIHF3kR22VpDMmeilXMDfevZ2BeH3LyQKAJnBh96WajOGZMa8FR40UVCASJQk4Q+yYvOEukyU3tt33oO3AhbbSYJL9dst9ENtC/WsTj4YIlJvLrUD7N4YoWlC/PtLgTRwLmqQj4gkjFxzNcJ1d33PkpkHMY+KZIx43g5PrSlSuVowi7sqRBWA8cDbiufVcypMpuXGrz5nLRbqo/goMgMc9/nkN2Fump31SMJXA5gnqFkRXh8td13RfB2OfVNkissHNkJbXatywb+hPiM3Y9V9SxYbTjOX4s3MsGxjbHrPMdSY2BLfHOiuoy9FpZwmNRmEbH1QXzBLnKrMtbr/HCeretAmbOzBhbnObm5MInSADmc977HoHjKZM+OfzV8rIUlHFYT/7ZvL05uqUvIoTZ37XMq5ffBv2hyjqUWFrkQ+618wCAc2Szyx1x0/XX972WdCCgPfCnh1cC/hP8HWgYo7Ny1PQYAAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle \\left( 1152, \\ 4, \\ 4\\right)$"
],
"text/plain": [
"(1152, 4, 4)"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"starting_matrices_np = np.array([np.array(m).astype(np.cdouble) for m in starting_matrices])\n",
"\n",
"starting_matrices_np.shape"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAGoAAAAVCAYAAACuVXuDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADtklEQVRoBe2ZjXEaMRCFjScFMEkHuAMSOsAdJKQDuwOnhqQDu4Q4HWCXQDqADmLTAXmfkDQSJ7jjLGlgxjuzSFrt7Vvt6u+OwWazuQhpMBiMJFuFsvd63QikcnAZuiCFO7XHoSx3XRgN+5INcS431hnbG9lc+CH4RKnjq6SftJr++N6gov6xeCkeBuJGtYPes3Q24oXlpYwsxC+hMfXh7L1ldOfiRpLDZ3LWwQI7p82UrRSOcvCErvrIyZbs1kfwF9RDlgz5oxiHCSb75DDUCZ5v1bO6JAbGFuVPcWRTbVbXY4hj9XhmGspL1YWDb5EPJbAO4aiPmJvYmMSoQSJuDjmifrbFZKLC59r01N86eHTEUfLAEL3CIV6JujAYa/FEteGo/0Z8zxjd1jdT40HCU6GpHHnV0t/dZtkSip5nbEXCWFtWUYa64NiczIjDpX4Iyqnd8kjISo4SsBTtJjCl01f2vdKk7YpDbmYf9PNNbA6vviM79jlNDpa0C/aV6izvv86O6viUInOZCHVTSn1l8ostr8YF4hgccnNNor7UcE4YjkjQbwXbrBYFh4sDt8lryfZOGPWTJHR/iLOT9WMtH4ruLj1wOCunnFEELroaZ49CYFCBICEmSYhtYEhQ20zmgvEg/V88V4BuZbvGOX0sDrkZkqiPYh+4AgHoYpJZzHsTK6ZBkpPEJwXyttGZQSD75naVwdRBEz1xTGxIVDWSo7y08m6wj1jdEdnBsfJKJYnJwatAjS2vD45ZSJxRONgIUBStfA3Ow9Q2izMkw18oaCtJvJlfhUmSzKy6jIHF3kR22VpDMmeilXMDfevZ2BeH3LyQKAJnBh96WajOGZMa8FR40UVCASJQk4Q+yYvOEukyU3tt33oO3AhbbSYJL9dst9ENtC/WsTj4YIlJvLrUD7N4YoWlC/PtLgTRwLmqQj4gkjFxzNcJ1d33PkpkHMY+KZIx43g5PrSlSuVowi7sqRBWA8cDbiufVcypMpuXGrz5nLRbqo/goMgMc9/nkN2Fump31SMJXA5gnqFkRXh8td13RfB2OfVNkissHNkJbXatywb+hPiM3Y9V9SxYbTjOX4s3MsGxjbHrPMdSY2BLfHOiuoy9FpZwmNRmEbH1QXzBLnKrMtbr/HCeretAmbOzBhbnObm5MInSADmc977HoHjKZM+OfzV8rIUlHFYT/7ZvL05uqUvIoTZ37XMq5ffBv2hyjqUWFrkQ+618wCAc2Szyx1x0/XX972WdCCgPfCnh1cC/hP8HWgYo7Ny1PQYAAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle \\left( 1152, \\ 4, \\ 4\\right)$"
],
"text/plain": [
"(1152, 4, 4)"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"resulting_matrices_np = np.array([np.array(m).astype(np.cdouble) for m in resulting_matrices])\n",
"\n",
"resulting_matrices_np.shape"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
"resulting_matrices_np_invers = np.array([m.transpose().conjugate() for m in resulting_matrices_np])"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAACcAAAAPCAYAAABnXNZuAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABw0lEQVRIDcWWgVECMRBFOccCbigBOkDtADvQFrQDqUE7wBKkBOjAkQ6gBKADfC8kR+5A0BmQnVmS3fxsfjabHMV6vW6dWoqi6BF3msfFV2K38c9z/8G+5JIC7KEztEy+fe0xHONL1F1/RTXmTlx8HXQYVewYdWOBE/2WOxqhggQYdIecPvQozsBIIqNh/xWtxcSW2CgRifPEOacf7MbgSxysBcoxMchBXHPR5vwYw43urIPPrC/FXNG5lPRZeBlrMecwwSjxdy5JThJzMrTKmWX98jozTtpl508EtE6VLjqESHWD6T+Gkd0fL6UXYnoucpL6SFnxiLBntPf4zNheYVxiYgcBADh/Sg4WesIy8Ve4hLdFfCZmua/Zdxw1w4HTf9acj28nZpFuXfD7lE0g9pxGTk6ORcao7+VPkuqwGgdvfZqtipj2OWrulrgLgzekrQ2B6lJoQ+yBppsTw2fdneWde2chb2dTfNdqlwESXoA78JsLsJ0h4cU5MjdkUYu6OiJsL5BSPR8xO34lJuLD6ObHDPt9fSv4MbXhU4LTI7EmLF7T/ymINsgfcNvngH8iTPaYB8RabSKF47Quzdw+mYK9+QYkdqlSSVVlyAAAAABJRU5ErkJggg==\n",
"text/latex": [
"$\\displaystyle 1152$"
],
"text/plain": [
"1152"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"indices = defaultdict(list)\n",
"\n",
"for rm_np, rm_np_i in zip(resulting_matrices_np, resulting_matrices_np_invers):\n",
" for i, sm_np in enumerate(starting_matrices_np):\n",
" test = sm_np.dot(rm_np_i)\n",
" check_indices_zero = [(1,2), (1,3), (1,4), (2,3), (2,4), (3,4)]\n",
" check_indices_zero += [(k,i) for i,k in check_indices_zero]\n",
" check_indices_zero = [(i - 1, k - 1) for i, k in check_indices_zero]\n",
" for check in check_indices_zero:\n",
" if(not np.allclose(test[check], 0)):\n",
" continue\n",
"\n",
" diag = np.diagonal(test)\n",
" phases = np.angle(diag)\n",
" phases = phases - phases[0]\n",
" if(not np.allclose(phases, np.zeros(4))):\n",
" continue\n",
" indices[tuple((tuple(r) for r in rm_np))].append(i)\n",
" \n",
"len(indices.keys())"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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FJp3/c7ab/Z5edHyvLVvKTTn+tZ9jq6M1609o5K/zZ11FzXuzL/Z/fOZ8Xhn3XfOMzM8x2bnzRxdGa931n6zMzM8x2ZrP0fXltete0uhede39vO0rXm+s+4S1535N3stM+ddu7PuO+fn5UXL853z5s7sO+dbmTnv+s6bedq2PN9Z+83emt1517f287Steb6z7hLXnfk3ey0z5127s+475+flRcvznfPmzuw751uZOe/6zpt52rY831n7zd6a3XnXt/bztK153rr//+3T4W0UQQwGUIUSqI3QAh3QAxRHS8eNRKT8yMzsRveh9fmddApar4z9/N1KJ1tjn/Wdda/sPnaqPL/ZZ6nMPq/sLvPZbKy6V85N5dllfpXKbE1usr6r7pXtzb66bLbGPus7617ZfexUeX6zz1KZfV7Z/YyMPc9oXftdt7z2fc5O1+GeHXYcd7fn2fRf9323vO5tPjNZh3t22HHcvsOeHXbscssue8rsuPTzfDrcs8OOI5H29LusJiCz1S42n9ct5zYVKx3u2WHHkT17VvwFfjyzW37sUvVph3t22HHkr8OeHXbscssue8rsuPTzfb48YKXvt9vt9wP67Fr8r/9nN8f7upnea8z/zWlu81Zh9Cax/stp7fNW5fQmsf7Lae1ztnpFz6M7mP2o1OPfY/940yMduR9RyrzDPuO668p9J5Srs8/ZrjpXdh97VZ7f7Ktk5mqV3WU+l4td58q5qTy7zO+SmavLTc5217myvdl3183V2edsV50ru4+9Ks9v9lUyc7XK7jKfy8Wuc+XcVJ5d5nfJzNXlJme761zZ3uy76+bq7HO2q87cVzrZGvus76x7ZfexU+X5zT5LZfZ5ZXeZz2Zj1V1uVjrZWmV7s2ezserOfqWTq3HP2e46s98JZeqV3YdI5fnNnsn0rmtld5nfXTdXr5ybyrPLfC7Tu85ysxPK1Svbmz2Xi11n9juhTJ17xvVIV/ZHlB7/TmX3oVF5frM/Ps9HOlZ2l/kjF868IzcZ1yNdK9ub/ciFM++wz7juunLfCeXq7HO2q86V3cdelec3+yqZuVpld5nP5WLXuXJuKs8u87tk5upyk7Pdda5sb/bddXN19jnbVefK7mOvyvObfZXMXK2yu8zncrHrXDk3lWeX+V0yc3W5ydnuOle2N/vuurk6+5ztqjP3lU62xj7rO+te2X3sVHl+s89SmX1e2V3ms9lYda+cm8qzy/wqldma3GR9V90r25t9ddlsjX3Wd9a9svvYqfL8Zp+lMvu8svsZGXue0br2u2557fucna7DPTvsOO5uz7Ppv+77bnnd23xmsg737LDjuH2HPTvs2OWWXfaU2XHp5/l0uGeHHUci7el3WU1AZqtdbD6vW85tKlY63LPDjiN79qz4C/x4Zrf82KXq0w737LDjyF+HPTvs2OWWXfaU2XHpJ/u83Pf5df9++7fX6+12+/NkO1qHAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFiAi8vLz/vI/+4f7/ev69/AYm7tJVU7WDkAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle \\left[ 3, \\ 5, \\ 11, \\ 14, \\ 17, \\ 18, \\ 40, \\ 44, \\ 49, \\ 62, \\ 66, \\ 88, \\ 92, \\ 97, \\ 110, \\ 114, \\ 125, \\ 136, \\ 140, \\ 158, \\ 162, \\ 184, \\ 188, \\ 206, \\ 210, \\ 213, \\ 215, \\ 217, \\ 232, \\ 236, \\ 239, \\ 241, \\ 251, \\ 254, \\ 258, \\ 280, \\ 284, \\ 302, \\ 306, \\ 309, \\ 311, \\ 313, \\ 328, \\ 332, \\ 335, \\ 336, \\ 338, \\ 340, \\ 342, \\ 344, \\ 346, \\ 348, \\ 350, \\ 352, \\ 354, \\ 356, \\ 358, \\ 360, \\ 362, \\ 364, \\ 365, \\ 366, \\ 368, \\ 369, \\ 370, \\ 372, \\ 374, \\ 376, \\ 378, \\ 380, \\ 382, \\ 385, \\ 398, \\ 402, \\ 424, \\ 428, \\ 432, \\ 434, \\ 436, \\ 438, \\ 440, \\ 442, \\ 444, \\ 446, \\ 448, \\ 450, \\ 452, \\ 454, \\ 456, \\ 458, \\ 460, \\ 462, \\ 464, \\ 466, \\ 468, \\ 470, \\ 472, \\ 474, \\ 476, \\ 478, \\ 489, \\ 493, \\ 494, \\ 498, \\ 515, \\ 519, \\ 520, \\ 524, \\ 537, \\ 541, \\ 542, \\ 546, \\ 563, \\ 567, \\ 568, \\ 572, \\ 585, \\ 589, \\ 590, \\ 594, \\ 611, \\ 615, \\ 616, \\ 620, \\ 638, \\ 642, \\ 653, \\ 661, \\ 664, \\ 667, \\ 668, \\ 677, \\ 686, \\ 687, \\ 690, \\ 699, \\ 712, \\ 716, \\ 734, \\ 738, \\ 760, \\ 764, \\ 782, \\ 783, \\ 786, \\ 808, \\ 812, \\ 830, \\ 834, \\ 837, \\ 839, \\ 841, \\ 856, \\ 860, \\ 863, \\ 878, \\ 882, \\ 891, \\ 904, \\ 908, \\ 926, \\ 930, \\ 933, \\ 935, \\ 937, \\ 952, \\ 956, \\ 959, \\ 960, \\ 962, \\ 964, \\ 966, \\ 968, \\ 970, \\ 972, \\ 974, \\ 976, \\ 978, \\ 980, \\ 982, \\ 984, \\ 986, \\ 988, \\ 990, \\ 992, \\ 994, \\ 996, \\ 998, \\ 1000, \\ 1002, \\ 1004, \\ 1006, \\ 1022, \\ 1026, \\ 1035, \\ 1048, \\ 1051, \\ 1052, \\ 1056, \\ 1058, \\ 1060, \\ 1062, \\ 1064, \\ 1066, \\ 1068, \\ 1070, \\ 1072, \\ 1074, \\ 1076, \\ 1078, \\ 1080, \\ 1082, \\ 1084, \\ 1086, \\ 1088, \\ 1090, \\ 1092, \\ 1094, \\ 1096, \\ 1098, \\ 1100, \\ 1102, \\ 1113, \\ 1117, \\ 1118, \\ 1122, \\ 1139, \\ 1143, \\ 1144, \\ 1148\\right]$"
],
"text/plain": [
"[3, 5, 11, 14, 17, 18, 40, 44, 49, 62, 66, 88, 92, 97, 110, 114, 125, 136, 140\n",
", 158, 162, 184, 188, 206, 210, 213, 215, 217, 232, 236, 239, 241, 251, 254, 2\n",
"58, 280, 284, 302, 306, 309, 311, 313, 328, 332, 335, 336, 338, 340, 342, 344,\n",
" 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 365, 366, 368, 369, 370, 37\n",
"2, 374, 376, 378, 380, 382, 385, 398, 402, 424, 428, 432, 434, 436, 438, 440, \n",
"442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472\n",
", 474, 476, 478, 489, 493, 494, 498, 515, 519, 520, 524, 537, 541, 542, 546, 5\n",
"63, 567, 568, 572, 585, 589, 590, 594, 611, 615, 616, 620, 638, 642, 653, 661,\n",
" 664, 667, 668, 677, 686, 687, 690, 699, 712, 716, 734, 738, 760, 764, 782, 78\n",
"3, 786, 808, 812, 830, 834, 837, 839, 841, 856, 860, 863, 878, 882, 891, 904, \n",
"908, 926, 930, 933, 935, 937, 952, 956, 959, 960, 962, 964, 966, 968, 970, 972\n",
", 974, 976, 978, 980, 982, 984, 986, 988, 990, 992, 994, 996, 998, 1000, 1002,\n",
" 1004, 1006, 1022, 1026, 1035, 1048, 1051, 1052, 1056, 1058, 1060, 1062, 1064,\n",
" 1066, 1068, 1070, 1072, 1074, 1076, 1078, 1080, 1082, 1084, 1086, 1088, 1090,\n",
" 1092, 1094, 1096, 1098, 1100, 1102, 1113, 1117, 1118, 1122, 1139, 1143, 1144,\n",
" 1148]"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"indices[tuple(((tuple(r) for r in resulting_matrices_np[0])))]"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left[ 2, \\ 4, \\ 10, \\ 15, \\ 16, \\ 19, \\ 41, \\ 45, \\ 48, \\ 63, \\ 67, \\ 89, \\ 93, \\ 96, \\ 111, \\ 115, \\ 124, \\ 137, \\ 141, \\ 159, \\ 163, \\ 185, \\ 189, \\ 207, \\ 211, \\ 212, \\ 214, \\ 216, \\ 233, \\ 237, \\ 238, \\ 240, \\ 250, \\ 255, \\ 259, \\ 281, \\ 285, \\ 303, \\ 307, \\ 308, \\ 310, \\ 312, \\ 329, \\ 333, \\ 334, \\ 337, \\ 339, \\ 341, \\ 343, \\ 345, \\ 347, \\ 349, \\ 351, \\ 353, \\ 355, \\ 357, \\ 359, \\ 361, \\ 363, \\ 364, \\ 365, \\ 367, \\ 368, \\ 369, \\ 371, \\ 373, \\ 375, \\ 377, \\ 379, \\ 381, \\ 383, \\ 384, \\ 399, \\ 403, \\ 425, \\ 429, \\ 433, \\ 435, \\ 437, \\ 439, \\ 441, \\ 443, \\ 445, \\ 447, \\ 449, \\ 451, \\ 453, \\ 455, \\ 457, \\ 459, \\ 461, \\ 463, \\ 465, \\ 467, \\ 469, \\ 471, \\ 473, \\ 475, \\ 477, \\ 479, \\ 488, \\ 492, \\ 495, \\ 499, \\ 514, \\ 518, \\ 521, \\ 525, \\ 536, \\ 540, \\ 543, \\ 547, \\ 562, \\ 566, \\ 569, \\ 573, \\ 584, \\ 588, \\ 591, \\ 595, \\ 610, \\ 614, \\ 617, \\ 621, \\ 639, \\ 643, \\ 652, \\ 660, \\ 665, \\ 666, \\ 669, \\ 676, \\ 686, \\ 687, \\ 691, \\ 698, \\ 713, \\ 717, \\ 735, \\ 739, \\ 761, \\ 765, \\ 782, \\ 783, \\ 787, \\ 809, \\ 813, \\ 831, \\ 835, \\ 836, \\ 838, \\ 840, \\ 857, \\ 861, \\ 862, \\ 879, \\ 883, \\ 890, \\ 905, \\ 909, \\ 927, \\ 931, \\ 932, \\ 934, \\ 936, \\ 953, \\ 957, \\ 958, \\ 961, \\ 963, \\ 965, \\ 967, \\ 969, \\ 971, \\ 973, \\ 975, \\ 977, \\ 979, \\ 981, \\ 983, \\ 985, \\ 987, \\ 989, \\ 991, \\ 993, \\ 995, \\ 997, \\ 999, \\ 1001, \\ 1003, \\ 1005, \\ 1007, \\ 1023, \\ 1027, \\ 1034, \\ 1049, \\ 1050, \\ 1053, \\ 1057, \\ 1059, \\ 1061, \\ 1063, \\ 1065, \\ 1067, \\ 1069, \\ 1071, \\ 1073, \\ 1075, \\ 1077, \\ 1079, \\ 1081, \\ 1083, \\ 1085, \\ 1087, \\ 1089, \\ 1091, \\ 1093, \\ 1095, \\ 1097, \\ 1099, \\ 1101, \\ 1103, \\ 1112, \\ 1116, \\ 1119, \\ 1123, \\ 1138, \\ 1142, \\ 1145, \\ 1149\\right]$"
],
"text/plain": [
"[2, 4, 10, 15, 16, 19, 41, 45, 48, 63, 67, 89, 93, 96, 111, 115, 124, 137, 141\n",
", 159, 163, 185, 189, 207, 211, 212, 214, 216, 233, 237, 238, 240, 250, 255, 2\n",
"59, 281, 285, 303, 307, 308, 310, 312, 329, 333, 334, 337, 339, 341, 343, 345,\n",
" 347, 349, 351, 353, 355, 357, 359, 361, 363, 364, 365, 367, 368, 369, 371, 37\n",
"3, 375, 377, 379, 381, 383, 384, 399, 403, 425, 429, 433, 435, 437, 439, 441, \n",
"443, 445, 447, 449, 451, 453, 455, 457, 459, 461, 463, 465, 467, 469, 471, 473\n",
", 475, 477, 479, 488, 492, 495, 499, 514, 518, 521, 525, 536, 540, 543, 547, 5\n",
"62, 566, 569, 573, 584, 588, 591, 595, 610, 614, 617, 621, 639, 643, 652, 660,\n",
" 665, 666, 669, 676, 686, 687, 691, 698, 713, 717, 735, 739, 761, 765, 782, 78\n",
"3, 787, 809, 813, 831, 835, 836, 838, 840, 857, 861, 862, 879, 883, 890, 905, \n",
"909, 927, 931, 932, 934, 936, 953, 957, 958, 961, 963, 965, 967, 969, 971, 973\n",
", 975, 977, 979, 981, 983, 985, 987, 989, 991, 993, 995, 997, 999, 1001, 1003,\n",
" 1005, 1007, 1023, 1027, 1034, 1049, 1050, 1053, 1057, 1059, 1061, 1063, 1065,\n",
" 1067, 1069, 1071, 1073, 1075, 1077, 1079, 1081, 1083, 1085, 1087, 1089, 1091,\n",
" 1093, 1095, 1097, 1099, 1101, 1103, 1112, 1116, 1119, 1123, 1138, 1142, 1145,\n",
" 1149]"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"indices[tuple(((tuple(r) for r in resulting_matrices_np[1])))]"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}\\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2}\\\\\\frac{1}{2} & - \\frac{1}{2} & \\frac{1}{2} & - \\frac{1}{2}\\\\\\frac{1}{2} & \\frac{1}{2} & - \\frac{1}{2} & - \\frac{1}{2}\\\\- \\frac{1}{2} & \\frac{1}{2} & \\frac{1}{2} & - \\frac{1}{2}\\end{matrix}\\right]$"
],
"text/plain": [
"⎡1/2 1/2 1/2 1/2 ⎤\n",
"⎢ ⎥\n",
"⎢1/2 -1/2 1/2 -1/2⎥\n",
"⎢ ⎥\n",
"⎢1/2 1/2 -1/2 -1/2⎥\n",
"⎢ ⎥\n",
"⎣-1/2 1/2 1/2 -1/2⎦"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"resulting_matrices[0]"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAGAAAAAVCAYAAAC5d+tKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADDElEQVRYCe2ZjVHjMBCFzxkKyNx1YDqAowPoAEIHXAdQAyVwLXAdhBZCB6EDfjrIvU+RzFqW73IeyzfKZGc2lp5+vHqydtdOtdlsvlipqqoW9mKxQ3kcBlLczuzU6nCr+onFDuVRGag9x82kzQao4VLoNz39v5pWFdg16YPXla5L6V83iT6MsXONVda8Rdokbp/gQPbD9Va8C5qrtqJsVVgtfYywe2H4rXOLx2W1r+OxcZ8hdc1ZvE1aw0o6Z/2OcFV4Um9iQoQ9ho62Tdg7ajFbVhuuLNcGFG+TuLmRPsBZcEELVX4KjOVcwLuODCfECkdpjiuwIGVhuKcPr0BjS/E2ea4X8DrTDwvqy3og+kUDIDQl8cbQ57pnM1Pjh2D7YhOcL470cyV1wSFmQ0TSlhIXhNX+bBu1mbieLIE33GcfbPJrgfMLXNB3Kf56J/EuBtdzZwcIB/sQQX2nyXYftVySTWbhcO5cOIVLEdfKgPrq6kt/F0BsH2H3UZ1I38qgbPuY5ZJsCuuWzaSia07AV2mfj1fTp+hJw708aZIfn6gLvC6qW2yqckk2RZzgKWo2YCfRQiGZUxKTzzEip/0frqcYmxIkuwefIAxxqWymGSPyOS7Hlnxhzn8J53qmOvm5FQI1b6zgZFKtmGE7DimXZlPiAYXzN9a+lN6qQzIGqA0iW/6dvoyRure51Fi18bLWiQF/GpOaJ4VpjuJt0ho4vctKP3xa4AtoJ+X0TzkbFKepHJ8TjTnWNSkayy4RLy5CB2HsOhvzLPw04P9y3RebtA7iqcs+eRFbi5DOCRBOJgORKe18O2IOCRPbca0TpjZuivaenpQtAYvmju0qySY4qB3pnhCe6M4m5MB0P2LKoA3IYQ9zTmmT7kXcdA/9jDtLcEOt7Mah+X7OtOidUt98JnRmntImEhI4336MExl8iCNjCZkNbVnEx4HXLJMPnHRKmzzHxNztx0+OHyohQC5DPddV9+h89s51r13nndImOJY27rfCyCB+d/ijJfVpOnQ7XAcyIH5JPckMm5fW3+gnifLF8ptzAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle \\left( 24, \\ 24, \\ 2\\right)$"
],
"text/plain": [
"(24, 24, 2)"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from collections import deque\n",
"lookup_edge_c0_c1_to_number = []\n",
"r = []\n",
"c = []\n",
"\n",
"i = 0\n",
"\n",
"for _ in C_L_0:\n",
" r = []\n",
" for _ in C_L_1:\n",
" c = []\n",
" for _ in (I_4, CZ):\n",
" c.append(i)\n",
" i += 1 \n",
" r.append(c)\n",
" lookup_edge_c0_c1_to_number.append(r)\n",
" \n",
"lookup_edge_c0_c1_to_number = np.array(lookup_edge_c0_c1_to_number, dtype=np.int)\n",
"lookup_edge_c0_c1_to_number.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"indices_contracted = {k: contract_indices(v) for k,v in indices.items()}"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\n",
" , { {0, 1}, {2, 3}, {4, 5}, {6, 7}, {8, 9}, {10, 11}, {12, 13}, {14, 15}, {16, 17}, {18, 19}, {20, 21}, {22, 23}, {24, 25}, {26, 27}, {28, 29}, {30, 31}, {32, 33}, {34, 35}, {36, 37}, {38, 39}, {40, 41}, {42, 43}, {44, 45}, {46, 47} }\n",
" , { {48, 49}, {50, 51}, {52, 53}, {54, 55}, {56, 57}, {58, 59}, {60, 61}, {62, 63}, {64, 65}, {66, 67}, {68, 69}, {70, 71}, {72, 73}, {74, 75}, {76, 77}, {78, 79}, {80, 81}, {82, 83}, {84, 85}, {86, 87}, {88, 89}, {90, 91}, {92, 93}, {94, 95} }\n",
" , { {96, 97}, {98, 99}, {100, 101}, {102, 103}, {104, 105}, {106, 107}, {108, 109}, {110, 111}, {112, 113}, {114, 115}, {116, 117}, {118, 119}, {120, 121}, {122, 123}, {124, 125}, {126, 127}, {128, 129}, {130, 131}, {132, 133}, {134, 135}, {136, 137}, {138, 139}, {140, 141}, {142, 143} }\n",
" , { {144, 145}, {146, 147}, {148, 149}, {150, 151}, {152, 153}, {154, 155}, {156, 157}, {158, 159}, {160, 161}, {162, 163}, {164, 165}, {166, 167}, {168, 169}, {170, 171}, {172, 173}, {174, 175}, {176, 177}, {178, 179}, {180, 181}, {182, 183}, {184, 185}, {186, 187}, {188, 189}, {190, 191} }\n",
" , { {192, 193}, {194, 195}, {196, 197}, {198, 199}, {200, 201}, {202, 203}, {204, 205}, {206, 207}, {208, 209}, {210, 211}, {212, 213}, {214, 215}, {216, 217}, {218, 219}, {220, 221}, {222, 223}, {224, 225}, {226, 227}, {228, 229}, {230, 231}, {232, 233}, {234, 235}, {236, 237}, {238, 239} }\n",
" , { {240, 241}, {242, 243}, {244, 245}, {246, 247}, {248, 249}, {250, 251}, {252, 253}, {254, 255}, {256, 257}, {258, 259}, {260, 261}, {262, 263}, {264, 265}, {266, 267}, {268, 269}, {270, 271}, {272, 273}, {274, 275}, {276, 277}, {278, 279}, {280, 281}, {282, 283}, {284, 285}, {286, 287} }\n",
" , { {288, 289}, {290, 291}, {292, 293}, {294, 295}, {296, 297}, {298, 299}, {300, 301}, {302, 303}, {304, 305}, {306, 307}, {308, 309}, {310, 311}, {312, 313}, {314, 315}, {316, 317}, {318, 319}, {320, 321}, {322, 323}, {324, 325}, {326, 327}, {328, 329}, {330, 331}, {332, 333}, {334, 335} }\n",
" , { {336, 337}, {338, 339}, {340, 341}, {342, 343}, {344, 345}, {346, 347}, {348, 349}, {350, 351}, {352, 353}, {354, 355}, {356, 357}, {358, 359}, {360, 361}, {362, 363}, {364, 365}, {366, 367}, {368, 369}, {370, 371}, {372, 373}, {374, 375}, {376, 377}, {378, 379}, {380, 381}, {382, 383} }\n",
" , { {384, 385}, {386, 387}, {388, 389}, {390, 391}, {392, 393}, {394, 395}, {396, 397}, {398, 399}, {400, 401}, {402, 403}, {404, 405}, {406, 407}, {408, 409}, {410, 411}, {412, 413}, {414, 415}, {416, 417}, {418, 419}, {420, 421}, {422, 423}, {424, 425}, {426, 427}, {428, 429}, {430, 431} }\n",
" , { {432, 433}, {434, 435}, {436, 437}, {438, 439}, {440, 441}, {442, 443}, {444, 445}, {446, 447}, {448, 449}, {450, 451}, {452, 453}, {454, 455}, {456, 457}, {458, 459}, {460, 461}, {462, 463}, {464, 465}, {466, 467}, {468, 469}, {470, 471}, {472, 473}, {474, 475}, {476, 477}, {478, 479} }\n",
" , { {480, 481}, {482, 483}, {484, 485}, {486, 487}, {488, 489}, {490, 491}, {492, 493}, {494, 495}, {496, 497}, {498, 499}, {500, 501}, {502, 503}, {504, 505}, {506, 507}, {508, 509}, {510, 511}, {512, 513}, {514, 515}, {516, 517}, {518, 519}, {520, 521}, {522, 523}, {524, 525}, {526, 527} }\n",
" , { {528, 529}, {530, 531}, {532, 533}, {534, 535}, {536, 537}, {538, 539}, {540, 541}, {542, 543}, {544, 545}, {546, 547}, {548, 549}, {550, 551}, {552, 553}, {554, 555}, {556, 557}, {558, 559}, {560, 561}, {562, 563}, {564, 565}, {566, 567}, {568, 569}, {570, 571}, {572, 573}, {574, 575} }\n",
" , { {576, 577}, {578, 579}, {580, 581}, {582, 583}, {584, 585}, {586, 587}, {588, 589}, {590, 591}, {592, 593}, {594, 595}, {596, 597}, {598, 599}, {600, 601}, {602, 603}, {604, 605}, {606, 607}, {608, 609}, {610, 611}, {612, 613}, {614, 615}, {616, 617}, {618, 619}, {620, 621}, {622, 623} }\n",
" , { {624, 625}, {626, 627}, {628, 629}, {630, 631}, {632, 633}, {634, 635}, {636, 637}, {638, 639}, {640, 641}, {642, 643}, {644, 645}, {646, 647}, {648, 649}, {650, 651}, {652, 653}, {654, 655}, {656, 657}, {658, 659}, {660, 661}, {662, 663}, {664, 665}, {666, 667}, {668, 669}, {670, 671} }\n",
" , { {672, 673}, {674, 675}, {676, 677}, {678, 679}, {680, 681}, {682, 683}, {684, 685}, {686, 687}, {688, 689}, {690, 691}, {692, 693}, {694, 695}, {696, 697}, {698, 699}, {700, 701}, {702, 703}, {704, 705}, {706, 707}, {708, 709}, {710, 711}, {712, 713}, {714, 715}, {716, 717}, {718, 719} }\n",
" , { {720, 721}, {722, 723}, {724, 725}, {726, 727}, {728, 729}, {730, 731}, {732, 733}, {734, 735}, {736, 737}, {738, 739}, {740, 741}, {742, 743}, {744, 745}, {746, 747}, {748, 749}, {750, 751}, {752, 753}, {754, 755}, {756, 757}, {758, 759}, {760, 761}, {762, 763}, {764, 765}, {766, 767} }\n",
" , { {768, 769}, {770, 771}, {772, 773}, {774, 775}, {776, 777}, {778, 779}, {780, 781}, {782, 783}, {784, 785}, {786, 787}, {788, 789}, {790, 791}, {792, 793}, {794, 795}, {796, 797}, {798, 799}, {800, 801}, {802, 803}, {804, 805}, {806, 807}, {808, 809}, {810, 811}, {812, 813}, {814, 815} }\n",
" , { {816, 817}, {818, 819}, {820, 821}, {822, 823}, {824, 825}, {826, 827}, {828, 829}, {830, 831}, {832, 833}, {834, 835}, {836, 837}, {838, 839}, {840, 841}, {842, 843}, {844, 845}, {846, 847}, {848, 849}, {850, 851}, {852, 853}, {854, 855}, {856, 857}, {858, 859}, {860, 861}, {862, 863} }\n",
" , { {864, 865}, {866, 867}, {868, 869}, {870, 871}, {872, 873}, {874, 875}, {876, 877}, {878, 879}, {880, 881}, {882, 883}, {884, 885}, {886, 887}, {888, 889}, {890, 891}, {892, 893}, {894, 895}, {896, 897}, {898, 899}, {900, 901}, {902, 903}, {904, 905}, {906, 907}, {908, 909}, {910, 911} }\n",
" , { {912, 913}, {914, 915}, {916, 917}, {918, 919}, {920, 921}, {922, 923}, {924, 925}, {926, 927}, {928, 929}, {930, 931}, {932, 933}, {934, 935}, {936, 937}, {938, 939}, {940, 941}, {942, 943}, {944, 945}, {946, 947}, {948, 949}, {950, 951}, {952, 953}, {954, 955}, {956, 957}, {958, 959} }\n",
" , { {960, 961}, {962, 963}, {964, 965}, {966, 967}, {968, 969}, {970, 971}, {972, 973}, {974, 975}, {976, 977}, {978, 979}, {980, 981}, {982, 983}, {984, 985}, {986, 987}, {988, 989}, {990, 991}, {992, 993}, {994, 995}, {996, 997}, {998, 999}, {1000, 1001}, {1002, 1003}, {1004, 1005}, {1006, 1007} }\n",
" , { {1008, 1009}, {1010, 1011}, {1012, 1013}, {1014, 1015}, {1016, 1017}, {1018, 1019}, {1020, 1021}, {1022, 1023}, {1024, 1025}, {1026, 1027}, {1028, 1029}, {1030, 1031}, {1032, 1033}, {1034, 1035}, {1036, 1037}, {1038, 1039}, {1040, 1041}, {1042, 1043}, {1044, 1045}, {1046, 1047}, {1048, 1049}, {1050, 1051}, {1052, 1053}, {1054, 1055} }\n",
" , { {1056, 1057}, {1058, 1059}, {1060, 1061}, {1062, 1063}, {1064, 1065}, {1066, 1067}, {1068, 1069}, {1070, 1071}, {1072, 1073}, {1074, 1075}, {1076, 1077}, {1078, 1079}, {1080, 1081}, {1082, 1083}, {1084, 1085}, {1086, 1087}, {1088, 1089}, {1090, 1091}, {1092, 1093}, {1094, 1095}, {1096, 1097}, {1098, 1099}, {1100, 1101}, {1102, 1103} }\n",
" , { {1104, 1105}, {1106, 1107}, {1108, 1109}, {1110, 1111}, {1112, 1113}, {1114, 1115}, {1116, 1117}, {1118, 1119}, {1120, 1121}, {1122, 1123}, {1124, 1125}, {1126, 1127}, {1128, 1129}, {1130, 1131}, {1132, 1133}, {1134, 1135}, {1136, 1137}, {1138, 1139}, {1140, 1141}, {1142, 1143}, {1144, 1145}, {1146, 1147}, {1148, 1149}, {1150, 1151} }\n",
"}\n"
]
}
],
"source": [
"print(\"{\")\n",
"for r in lookup_edge_c0_c1_to_number:\n",
" print(\" , {\", \", \".join((\"{%d, %d}\" % (c[0], c[1]) for c in r)), \"}\")\n",
"print(\"}\") "
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,\n",
" 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,\n",
" 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,\n",
" 135, 136, 137, 138, 139, 140, 141, 142, 143])"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"I0_indices = lookup_edge_c0_c1_to_number[2, :, :].reshape(2*24)\n",
"I0_indices"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 4, 5, 52, 53, 100, 101, 148, 149, 196, 197, 244,\n",
" 245, 292, 293, 340, 341, 388, 389, 436, 437, 484, 485,\n",
" 532, 533, 580, 581, 628, 629, 676, 677, 724, 725, 772,\n",
" 773, 820, 821, 868, 869, 916, 917, 964, 965, 1012, 1013,\n",
" 1060, 1061, 1108, 1109])"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"I1_indices = lookup_edge_c0_c1_to_number[:, 2, :].reshape(2*24)\n",
"I1_indices"
]
},
{
"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.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}