Skip to content
Snippets Groups Projects
Commit 933356d4 authored by Stefan Stump's avatar Stefan Stump
Browse files

Added shors algorithmus and minor fixes in bernstein-vazirani

parent b4a87c55
No related branches found
No related tags found
1 merge request!3Summer25 dev
No preview for this file type
This diff is collapsed.
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="354.439" height="134.513" viewBox="0 0 265.829 100.885"><path stroke-width=".797" stroke-linecap="round" stroke-miterlimit="10" fill="none" stroke="#000" d="M36.924 26.444H22.75M68.158 26.444H53.985M102.336 26.444H88.162M145.044 26.444H122.34M177.75 26.444h-32.706M210.456 26.444H177.75M233.16 26.444V86.59M233.16 26.444h-22.704M247.334 26.444H233.16M45.454 56.89H22.75M78.16 55.19V34.58M76.46 56.89H45.454M112.338 56.89H79.861M136.514 56.89h-24.176M167.748 56.89h-14.173M210.456 56.89h-22.704M233.16 56.89h-22.704M247.334 56.89H233.16M45.454 86.589H22.75M78.16 86.589H45.454M112.338 84.888V34.581M110.637 86.589H78.16M145.044 86.589H114.04M177.75 84.888V65.026M176.05 86.589h-31.006M201.926 86.589H179.45M233.16 86.589h0M233.16 86.589h-14.173M247.334 86.589H233.16"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="m229.672 29.932 6.974-6.974m-6.974 0 6.974 6.974"/><path d="M79.862 56.891a1.7 1.7 0 1 0-3.402 0 1.7 1.7 0 0 0 3.402 0zm-1.701 0"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M79.862 56.891a1.7 1.7 0 1 0-3.402 0 1.7 1.7 0 0 0 3.402 0zm-1.701 0"/><path d="M114.039 86.589a1.7 1.7 0 1 0-3.402 0 1.7 1.7 0 0 0 3.402 0zm-1.701 0"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M114.039 86.589a1.7 1.7 0 1 0-3.402 0 1.7 1.7 0 0 0 3.402 0zm-1.701 0"/><path d="M179.45 86.589a1.7 1.7 0 1 0-3.4 0 1.7 1.7 0 0 0 3.4 0zm-1.7 0"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M179.45 86.589a1.7 1.7 0 1 0-3.4 0 1.7 1.7 0 0 0 3.4 0zM229.672 90.076l6.974-6.974m-6.974 0 6.974 6.974"/><symbol id="a"><path d="M.04.964C.04.982.04 1 .02 1S0 .982 0 .964V.036C0 .018 0 0 .02 0s.02.018.02.036v.928z"/></symbol><use xlink:href="#a" transform="matrix(9.9626 0 0 -9.9626 4.507 31.427)"/><symbol id="b"><path d="M.41.83C.41.849.396.866.372.866.349.866.319.843.319.813c0-.02.014-.036.037-.036C.383.777.41.803.41.83M.209.155C.19.079.142.022.086.022c-.006 0-.021 0-.039.009.03.007.045.033.045.053C.092.1.081.119.054.119A.056.056 0 0 1 0 .062C0 .022.04 0 .088 0c.07 0 .163.053.188.152l.092.366c.005.02.005.034.005.037a.089.089 0 0 1-.092.092C.179.647.122.502.122.493c0-.01.01-.01.012-.01.009 0 .01.001.018.02.025.061.071.122.126.122C.292.625.31.621.31.579.31.556.307.545.303.528L.209.155z"/></symbol><use xlink:href="#b" transform="matrix(9.9626 0 0 -9.9626 5.959 30.978)"/><symbol id="c"><path d="M.226.636c0 .027-.002.028-.03.028C.132.601.041.6 0 .6V.564c.024 0 .09 0 .145.028v-.51c0-.033 0-.046-.1-.046H.007V0l.178.004L.364 0v.036H.326c-.1 0-.1.013-.1.046v.554z"/></symbol><use xlink:href="#c" transform="matrix(6.9738 0 0 -6.9738 10.951 30.43)"/><symbol id="d"><path d="M.218.483C.223.495.223.497.223.5c0 .003 0 .005-.005.017l-.175.46C.037.994.031 1 .02 1A.02.02 0 0 1 0 .98C0 .977 0 .975.005.964L.182.5.005.038C0 .027 0 .025 0 .02A.02.02 0 0 1 .02 0c.013 0 .017.01.021.02l.177.463z"/></symbol><use xlink:href="#d" transform="matrix(9.9626 0 0 -9.9626 15.208 31.427)"/><path d="M36.924 33.833h17.06V19.055h-17.06z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M36.924 33.833h17.06V19.055h-17.06z"/><symbol id="e"><path d="M.724.606c.009.036.011.046.084.046.026 0 .034 0 .034.02 0 .011-.011.011-.014.011L.7.68.571.683c-.008 0-.019 0-.019-.02C.552.652.561.652.58.652c.002 0 .021 0 .038-.002C.636.648.645.647.645.634L.641.615.581.371H.276l.059.235c.009.036.012.046.084.046.026 0 .034 0 .034.02 0 .011-.011.011-.014.011L.311.68.182.683c-.008 0-.019 0-.019-.02 0-.011.009-.011.028-.011.002 0 .021 0 .038-.002C.247.648.256.647.256.634L.252.615.118.078C.108.039.106.031.027.031.009.031 0 .031 0 .011 0 0 .012 0 .014 0l.127.003.064-.001L.27 0c.008 0 .02 0 .02.02C.29.031.281.031.262.031c-.037 0-.065 0-.065.018C.197.055.199.06.2.066L.268.34h.305L.504.064C.494.032.475.031.413.031c-.015 0-.024 0-.024-.02C.389 0 .401 0 .403 0L.53.003.594.002.659 0c.008 0 .02 0 .02.02C.679.031.67.031.651.031c-.037 0-.065 0-.065.018 0 .006.002.011.003.017l.135.54z"/></symbol><use xlink:href="#e" transform="matrix(9.9626 0 0 -9.9626 41.299 29.849)"/><path d="M68.158 34.58h20.004V18.309H68.158z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M68.158 34.58h20.004V18.309H68.158z"/><symbol id="f"><path d="M.334.636C.34.66.343.67.362.673l.061.001c.071 0 .182 0 .182-.099A.228.228 0 0 0 .55.433C.524.407.471.375.381.375H.269l.065.261M.478.362c.101.022.22.092.22.193 0 .086-.09.15-.221.15H.192c-.02 0-.029 0-.029-.02 0-.011.009-.011.028-.011.002 0 .021 0 .038-.002C.247.67.256.669.256.656L.252.637.118.1C.108.061.106.053.027.053.009.053 0 .053 0 .033 0 .022.012.022.014.022L.14.025.267.022c.008 0 .02 0 .02.02 0 .011-.009.011-.028.011-.037 0-.065 0-.065.018 0 .006.002.011.003.017l.066.265h.119C.473.353.491.297.491.262A.382.382 0 0 0 .477.193.46.46 0 0 1 .461.108C.461 0 .581 0 .594 0c.085 0 .12.101.12.115 0 .012-.011.012-.012.012C.693.127.691.12.689.113.664.039.621.022.598.022c-.033 0-.04.022-.04.061 0 .031.006.082.01.114a.373.373 0 0 1 .004.047c0 .077-.067.108-.094.118z"/></symbol><use xlink:href="#f" transform="matrix(9.9626 0 0 -9.9626 72.552 29.321)"/><symbol id="g"><path d="M.442.182H.408C.405.16.395.101.382.091.374.085.297.085.283.085H.099a3.5 3.5 0 0 0 .2.168c.074.059.143.121.143.216C.442.59.336.664.208.664.084.664 0 .577 0 .485 0 .434.043.429.053.429c.024 0 .053.017.053.053C.106.5.099.535.047.535a.157.157 0 0 0 .146.093c.1 0 .152-.078.152-.159C.345.382.283.313.251.277L.01.039C0 .03 0 .028 0 0h.412l.03.182z"/></symbol><use xlink:href="#g" transform="matrix(6.9738 0 0 -6.9738 80.148 30.596)"/><path d="M102.336 34.58h20.004V18.309h-20.004z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M102.336 34.58h20.004V18.309h-20.004z"/><use xlink:href="#f" transform="matrix(9.9626 0 0 -9.9626 106.73 29.321)"/><symbol id="h"><path d="M.219.354C.297.354.353.3.353.193.353.069.281.032.223.032c-.04 0-.128.011-.17.07C.1.104.111.137.111.158a.054.054 0 0 1-.055.055C.028.213 0 .196 0 .155 0 .061.104 0 .225 0 .364 0 .46.093.46.193.46.271.396.349.286.372.391.41.429.485.429.546c0 .079-.091.138-.202.138C.116.684.031.63.031.55c0-.034.022-.053.052-.053a.05.05 0 0 1 .051.051c0 .029-.02.05-.051.052.035.044.104.055.141.055.045 0 .108-.022.108-.109a.192.192 0 0 0-.04-.119C.259.389.231.387.181.384L.149.381C.147.381.139.379.139.368c0-.014.009-.014.026-.014h.054z"/></symbol><use xlink:href="#h" transform="matrix(6.9738 0 0 -6.9738 114.263 30.735)"/><symbol id="i"><path d="m.453.873.003.015c0 .01-.007.011-.012.011-.01 0-.011-.002-.015-.02L.263.218C.187.227.149.264.149.33c0 .02 0 .046.054.186.004.012.011.029.011.049a.08.08 0 0 1-.082.082C.037.647 0 .502 0 .493c0-.01.01-.01.012-.01.01 0 .011.002.016.018.027.095.067.124.101.124.008 0 .025 0 .025-.032C.154.567.144.542.131.507.083.381.083.355.083.338c0-.095.078-.136.174-.142C.249.16.249.158.235.105A3.07 3.07 0 0 1 .212.01c0-.001 0-.01.012-.01.002 0 .007 0 .009.004a.174.174 0 0 1 .012.041l.038.149c.037 0 .125 0 .219.107.041.046.062.09.073.12a.671.671 0 0 1 .031.156c0 .056-.027.07-.044.07-.025 0-.05-.026-.05-.048C.512.586.518.58.527.572A.114.114 0 0 0 .563.487C.563.423.511.341.476.305.388.216.324.216.288.216l.165.657z"/></symbol><use xlink:href="#i" transform="matrix(9.9626 0 0 -9.9626 251.838 30.978)"/><use xlink:href="#h" transform="matrix(6.9738 0 0 -6.9738 258.416 30.57)"/><use xlink:href="#a" transform="matrix(9.9626 0 0 -9.9626 4.507 61.872)"/><use xlink:href="#b" transform="matrix(9.9626 0 0 -9.9626 5.959 61.423)"/><use xlink:href="#g" transform="matrix(6.9738 0 0 -6.9738 10.63 60.876)"/><use xlink:href="#d" transform="matrix(9.9626 0 0 -9.9626 15.208 61.872)"/><path d="M136.514 64.28h17.06V49.5h-17.06z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M136.514 64.28h17.06V49.5h-17.06z"/><use xlink:href="#e" transform="matrix(9.9626 0 0 -9.9626 140.887 60.294)"/><path d="M167.748 65.026h20.004V48.754h-20.004z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M167.748 65.026h20.004V48.754h-20.004z"/><use xlink:href="#f" transform="matrix(9.9626 0 0 -9.9626 172.141 59.766)"/><use xlink:href="#g" transform="matrix(6.9738 0 0 -6.9738 179.736 61.042)"/><use xlink:href="#i" transform="matrix(9.9626 0 0 -9.9626 251.838 61.423)"/><use xlink:href="#g" transform="matrix(6.9738 0 0 -6.9738 258.478 60.876)"/><use xlink:href="#a" transform="matrix(9.9626 0 0 -9.9626 4.507 91.57)"/><use xlink:href="#b" transform="matrix(9.9626 0 0 -9.9626 5.959 91.121)"/><use xlink:href="#h" transform="matrix(6.9738 0 0 -6.9738 10.568 90.713)"/><use xlink:href="#d" transform="matrix(9.9626 0 0 -9.9626 15.208 91.57)"/><path d="M201.926 93.978h17.061V79.2h-17.061z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M201.926 93.978h17.061V79.2h-17.061z"/><use xlink:href="#e" transform="matrix(9.9626 0 0 -9.9626 206.299 89.993)"/><use xlink:href="#i" transform="matrix(9.9626 0 0 -9.9626 251.838 91.121)"/><use xlink:href="#c" transform="matrix(6.9738 0 0 -6.9738 258.8 90.574)"/><path stroke-width=".797" stroke-dasharray="4.98138,2.98883" stroke-miterlimit="10" fill="none" stroke="red" d="M61.072 14.788v85.699"/><symbol id="j"><path d="M.205.64c0 .024 0 .026-.023.026C.12.602.032.602 0 .602V.571a.3.3 0 0 1 .131.026V.079C.131.043.128.031.038.031H.006V0c.035.003.122.003.162.003.04 0 .127 0 .162-.003v.031H.298c-.09 0-.093.011-.093.048V.64z"/></symbol><use xlink:href="#j" transform="matrix(9.9626 0 0 -9.9626 59.469 10.406)"/><path stroke-width=".797" stroke-dasharray="4.98138,2.98883" stroke-miterlimit="10" fill="none" stroke="red" d="M95.25 14.788v85.699"/><symbol id="k"><path d="M.077.077.183.18c.156.138.216.192.216.292 0 .114-.09.194-.212.194A.185.185 0 0 1 0 .485C0 .429.05.429.053.429c.017 0 .052.012.052.053a.05.05 0 0 1-.053.052L.039.533a.144.144 0 0 0 .135.102C.265.635.308.554.308.472c0-.08-.05-.159-.105-.221L.011.037C0 .026 0 .024 0 0h.371l.028.174H.374C.369.144.362.1.352.085.345.077.279.077.257.077h-.18z"/></symbol><use xlink:href="#k" transform="matrix(9.9626 0 0 -9.9626 93.257 10.406)"/><path stroke-width=".797" stroke-dasharray="4.98138,2.98883" stroke-miterlimit="10" fill="none" stroke="red" d="M129.427 14.788v85.699"/><symbol id="l"><path d="M.248.374c.082.027.14.097.14.176C.388.632.3.688.204.688.103.688.027.628.027.552.027.519.049.5.078.5.109.5.129.522.129.551c0 .05-.047.05-.062.05C.098.65.164.663.2.663.241.663.296.641.296.551A.25.25 0 0 0 .268.437C.238.389.204.386.179.385A.554.554 0 0 0 .14.382C.132.381.125.38.125.37c0-.011.007-.011.024-.011h.044C.275.359.312.291.312.193.312.057.243.028.199.028.156.028.081.045.046.104.081.099.112.121.112.159a.054.054 0 0 1-.056.056C.032.215 0 .201 0 .157 0 .066.093 0 .202 0c.122 0 .213.091.213.193 0 .082-.063.16-.167.181z"/></symbol><use xlink:href="#l" transform="matrix(9.9626 0 0 -9.9626 127.354 10.625)"/><path stroke-width=".797" stroke-dasharray="4.98138,2.98883" stroke-miterlimit="10" fill="none" stroke="red" d="M160.661 14.788v85.699"/><symbol id="m"><path d="M.266.165V.078C.266.042.264.031.19.031H.169V0C.21.003.262.003.304.003.346.003.399.003.44 0v.031H.419C.345.031.343.042.343.078v.087h.1v.031h-.1v.455c0 .02 0 .026-.016.026-.009 0-.012 0-.02-.012L0 .196V.165h.266m.006.031H.028l.244.373V.196z"/></symbol><use xlink:href="#m" transform="matrix(9.9626 0 0 -9.9626 158.449 10.406)"/><path stroke-width=".797" stroke-dasharray="4.98138,2.98883" stroke-miterlimit="10" fill="none" stroke="red" d="M194.84 14.788v85.699"/><symbol id="n"><path d="M.399.223c0 .119-.082.219-.19.219A.176.176 0 0 1 .082.391v.195A.317.317 0 0 1 .167.573C.29.573.36.664.36.677.36.683.357.688.35.688c-.001 0-.003 0-.008-.003A.33.33 0 0 0 .073.684L.061.687c-.01 0-.01-.008-.01-.024V.367c0-.018 0-.026.014-.026.007 0 .009.003.013.009.011.016.048.07.129.07C.259.42.284.374.292.356A.308.308 0 0 0 .31.23C.31.195.31.135.286.093A.125.125 0 0 0 .179.028.156.156 0 0 0 .032.14C.035.139.038.138.049.138c.033 0 .05.025.05.049a.048.048 0 0 1-.05.049C.035.236 0 .229 0 .183 0 .097.069 0 .181 0a.22.22 0 0 1 .218.223z"/></symbol><use xlink:href="#n" transform="matrix(9.9626 0 0 -9.9626 192.846 10.625)"/><path stroke-width=".797" stroke-dasharray="4.98138,2.98883" stroke-miterlimit="10" fill="none" stroke="red" d="M226.074 14.788v85.699"/><symbol id="o"><path d="M.09.35v.024c0 .253.124.289.175.289.024 0 .066-.006.088-.04-.015 0-.055 0-.055-.045 0-.031.024-.046.046-.046C.36.532.39.541.39.58.39.64.346.688.263.688.135.688 0 .559 0 .338 0 .071.116 0 .209 0 .32 0 .415.094.415.226c0 .127-.089.223-.2.223C.147.449.11.398.09.35M.209.028C.146.028.116.088.11.103.092.15.092.23.092.248c0 .078.032.178.122.178.016 0 .062 0 .093-.062C.325.327.325.276.325.227c0-.048 0-.098-.017-.134C.278.033.232.028.209.028z"/></symbol><use xlink:href="#o" transform="matrix(9.9626 0 0 -9.9626 224 10.625)"/><path stroke-width=".797" stroke-dasharray="4.98138,2.98883" stroke-miterlimit="10" fill="none" stroke="red" d="M240.247 14.788v85.699"/><symbol id="p"><path d="M.42.631c.009.012.009.014.009.035H.186C.064.666.062.679.058.698H.033L0 .492h.025C.028.508.037.571.05.583c.007.006.085.006.098.006h.207C.344.573.265.464.243.431A.699.699 0 0 1 .12.055C.12.045.12 0 .166 0s.046.045.046.055v.051c0 .055.003.11.011.164.004.023.018.109.062.171l.135.19z"/></symbol><use xlink:href="#p" transform="matrix(9.9626 0 0 -9.9626 238.313 10.625)"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="725.484" height="191.451" viewBox="0 0 544.113 143.588"><path stroke-width=".797" stroke-linecap="round" stroke-miterlimit="10" fill="none" stroke="#000" d="M48.074 11.87H33.9M79.308 11.87H65.135M113.486 11.87H99.312M141.833 11.87h-14.174M187.162 11.87h-14.173M230.824 11.87H208.12M254.912 11.87h-24.088M270.469 11.87h-15.557M300.22 11.87H270.47M345.55 11.87h-45.33M375.3 11.87h-29.75M389.474 11.87h-14.173M412.178 11.87h-22.704M444.884 11.87h-32.706M477.59 11.87h-32.706M500.294 11.87v121.01M500.294 11.87H477.59M514.468 11.87h-14.174M56.604 43.147H33.9M89.31 41.446V20.007M87.61 43.147H56.604M113.486 43.147H91.01M157.41 43.147h-29.75M197.64 43.147h-40.23M222.293 43.147h-24.652M254.912 43.147h-15.558M284.642 43.147H270.47M329.971 43.147h-14.173M375.3 43.147h-14.173M412.178 43.147h-22.704M444.884 43.147h-32.706M477.59 43.147h-32.706M500.294 43.147v60.034M500.294 43.147H477.59M514.468 43.147h-14.174M56.604 103.18H33.9M89.31 103.18H56.604M113.486 103.18H89.31M127.66 103.18h-14.174M157.41 101.48V20.422M155.71 103.18h-28.05M197.64 103.18h-38.529M230.824 103.18H197.64M254.912 103.18h-24.088M270.469 103.18h-15.557M300.22 101.48V51.698M298.52 103.18h-28.051M345.55 103.18h-43.63M375.3 103.18h-29.75M403.648 103.18h-14.174M434.882 103.18H420.71M477.59 103.18h-22.704M500.294 103.18h0M500.294 103.18H477.59M514.468 103.18h-14.174M56.604 132.88H33.9M89.31 132.88H56.604M113.486 132.88H89.31M127.66 132.88h-14.174M157.41 132.88h-29.75M197.64 131.179V20.007M195.94 132.88h-38.53M230.824 132.88h-31.482M254.912 132.88h-24.088M270.469 132.88h-15.557M300.22 132.88H270.47M345.55 131.179v-79.48M343.849 132.88H300.22M375.3 132.88h-28.05M412.178 132.88h-22.704M444.884 131.179v-19.862M443.184 132.88h-31.006M469.06 132.88h-22.475M500.294 132.88h0M500.294 132.88h-14.173M514.468 132.88h-14.174"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="m496.804 15.359 6.974-6.974m-6.974 0 6.974 6.974"/><path d="M91.014 43.147a1.7 1.7 0 1 0-3.402 0 1.7 1.7 0 0 0 3.402 0zm-1.701 0"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M91.014 43.147a1.7 1.7 0 1 0-3.402 0 1.7 1.7 0 0 0 3.402 0zM496.804 46.634l6.974-6.974m-6.974 0 6.974 6.974"/><symbol id="a"><path d="M.106.053a.053.053 0 0 1-.053.053A.053.053 0 0 1 0 .053C0 .024.024 0 .053 0c.029 0 .053.024.053.053z"/></symbol><use xlink:href="#a" transform="matrix(9.9626 0 0 -9.9626 56.08 72.901)"/><use xlink:href="#a" transform="matrix(9.9626 0 0 -9.9626 56.08 76.886)"/><use xlink:href="#a" transform="matrix(9.9626 0 0 -9.9626 56.08 80.871)"/><use xlink:href="#a" transform="matrix(9.9626 0 0 -9.9626 254.385 72.901)"/><use xlink:href="#a" transform="matrix(9.9626 0 0 -9.9626 254.385 76.886)"/><use xlink:href="#a" transform="matrix(9.9626 0 0 -9.9626 254.385 80.871)"/><use xlink:href="#a" transform="matrix(9.9626 0 0 -9.9626 444.355 72.901)"/><use xlink:href="#a" transform="matrix(9.9626 0 0 -9.9626 444.355 76.886)"/><use xlink:href="#a" transform="matrix(9.9626 0 0 -9.9626 444.355 80.871)"/><path d="M159.113 103.18a1.7 1.7 0 1 0-3.402 0 1.7 1.7 0 0 0 3.402 0zm-1.701 0"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M159.113 103.18a1.7 1.7 0 1 0-3.402 0 1.7 1.7 0 0 0 3.402 0zm-1.701 0"/><path d="M301.92 103.18a1.7 1.7 0 1 0-3.4 0 1.7 1.7 0 0 0 3.4 0zm-1.7 0"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M301.92 103.18a1.7 1.7 0 1 0-3.4 0 1.7 1.7 0 0 0 3.4 0zM496.804 106.667l6.974-6.974m-6.974 0 6.974 6.974"/><path d="M199.343 132.879a1.7 1.7 0 1 0-3.402 0 1.7 1.7 0 0 0 3.402 0zm-1.701 0"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M199.343 132.879a1.7 1.7 0 1 0-3.402 0 1.7 1.7 0 0 0 3.402 0zm-1.701 0"/><path d="M347.249 132.879a1.7 1.7 0 1 0-3.402 0 1.7 1.7 0 0 0 3.402 0zm-1.701 0"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M347.249 132.879a1.7 1.7 0 1 0-3.402 0 1.7 1.7 0 0 0 3.402 0zm-1.701 0"/><path d="M446.583 132.879a1.7 1.7 0 1 0-3.402 0 1.7 1.7 0 0 0 3.402 0zm-1.701 0"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M446.583 132.879a1.7 1.7 0 1 0-3.402 0 1.7 1.7 0 0 0 3.402 0zM496.804 136.366l6.974-6.974m-6.974 0 6.974 6.974"/><symbol id="b"><path d="M.04.964C.04.982.04 1 .02 1S0 .982 0 .964V.036C0 .018 0 0 .02 0s.02.018.02.036v.928z"/></symbol><use xlink:href="#b" transform="matrix(9.9626 0 0 -9.9626 15.658 16.853)"/><symbol id="c"><path d="M.41.83C.41.849.396.866.372.866.349.866.319.843.319.813c0-.02.014-.036.037-.036C.383.777.41.803.41.83M.209.155C.19.079.142.022.086.022c-.006 0-.021 0-.039.009.03.007.045.033.045.053C.092.1.081.119.054.119A.056.056 0 0 1 0 .062C0 .022.04 0 .088 0c.07 0 .163.053.188.152l.092.366c.005.02.005.034.005.037a.089.089 0 0 1-.092.092C.179.647.122.502.122.493c0-.01.01-.01.012-.01.009 0 .01.001.018.02.025.061.071.122.126.122C.292.625.31.621.31.579.31.556.307.545.303.528L.209.155z"/></symbol><use xlink:href="#c" transform="matrix(9.9626 0 0 -9.9626 17.11 16.404)"/><symbol id="d"><path d="M.226.636c0 .027-.002.028-.03.028C.132.601.041.6 0 .6V.564c.024 0 .09 0 .145.028v-.51c0-.033 0-.046-.1-.046H.007V0l.178.004L.364 0v.036H.326c-.1 0-.1.013-.1.046v.554z"/></symbol><use xlink:href="#d" transform="matrix(6.9738 0 0 -6.9738 22.102 15.857)"/><symbol id="e"><path d="M.218.483C.223.495.223.497.223.5c0 .003 0 .005-.005.017l-.175.46C.037.994.031 1 .02 1A.02.02 0 0 1 0 .98C0 .977 0 .975.005.964L.182.5.005.038C0 .027 0 .025 0 .02A.02.02 0 0 1 .02 0c.013 0 .017.01.021.02l.177.463z"/></symbol><use xlink:href="#e" transform="matrix(9.9626 0 0 -9.9626 26.36 16.853)"/><path d="M48.074 19.26h17.06V4.482h-17.06z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M48.074 19.26h17.06V4.482h-17.06z"/><symbol id="f"><path d="M.724.606c.009.036.011.046.084.046.026 0 .034 0 .034.02 0 .011-.011.011-.014.011L.7.68.571.683c-.008 0-.019 0-.019-.02C.552.652.561.652.58.652c.002 0 .021 0 .038-.002C.636.648.645.647.645.634L.641.615.581.371H.276l.059.235c.009.036.012.046.084.046.026 0 .034 0 .034.02 0 .011-.011.011-.014.011L.311.68.182.683c-.008 0-.019 0-.019-.02 0-.011.009-.011.028-.011.002 0 .021 0 .038-.002C.247.648.256.647.256.634L.252.615.118.078C.108.039.106.031.027.031.009.031 0 .031 0 .011 0 0 .012 0 .014 0l.127.003.064-.001L.27 0c.008 0 .02 0 .02.02C.29.031.281.031.262.031c-.037 0-.065 0-.065.018C.197.055.199.06.2.066L.268.34h.305L.504.064C.494.032.475.031.413.031c-.015 0-.024 0-.024-.02C.389 0 .401 0 .403 0L.53.003.594.002.659 0c.008 0 .02 0 .02.02C.679.031.67.031.651.031c-.037 0-.065 0-.065.018 0 .006.002.011.003.017l.135.54z"/></symbol><use xlink:href="#f" transform="matrix(9.9626 0 0 -9.9626 52.45 15.275)"/><path d="M79.308 20.007h20.004V3.735H79.308z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M79.308 20.007h20.004V3.735H79.308z"/><symbol id="g"><path d="M.334.636C.34.66.343.67.362.673l.061.001c.071 0 .182 0 .182-.099A.228.228 0 0 0 .55.433C.524.407.471.375.381.375H.269l.065.261M.478.362c.101.022.22.092.22.193 0 .086-.09.15-.221.15H.192c-.02 0-.029 0-.029-.02 0-.011.009-.011.028-.011.002 0 .021 0 .038-.002C.247.67.256.669.256.656L.252.637.118.1C.108.061.106.053.027.053.009.053 0 .053 0 .033 0 .022.012.022.014.022L.14.025.267.022c.008 0 .02 0 .02.02 0 .011-.009.011-.028.011-.037 0-.065 0-.065.018 0 .006.002.011.003.017l.066.265h.119C.473.353.491.297.491.262A.382.382 0 0 0 .477.193.46.46 0 0 1 .461.108C.461 0 .581 0 .594 0c.085 0 .12.101.12.115 0 .012-.011.012-.012.012C.693.127.691.12.689.113.664.039.621.022.598.022c-.033 0-.04.022-.04.061 0 .031.006.082.01.114a.373.373 0 0 1 .004.047c0 .077-.067.108-.094.118z"/></symbol><use xlink:href="#g" transform="matrix(9.9626 0 0 -9.9626 83.704 14.747)"/><symbol id="h"><path d="M.442.182H.408C.405.16.395.101.382.091.374.085.297.085.283.085H.099a3.5 3.5 0 0 0 .2.168c.074.059.143.121.143.216C.442.59.336.664.208.664.084.664 0 .577 0 .485 0 .434.043.429.053.429c.024 0 .053.017.053.053C.106.5.099.535.047.535a.157.157 0 0 0 .146.093c.1 0 .152-.078.152-.159C.345.382.283.313.251.277L.01.039C0 .03 0 .028 0 0h.412l.03.182z"/></symbol><use xlink:href="#h" transform="matrix(6.9738 0 0 -6.9738 91.3 16.023)"/><path d="M141.833 20.422h31.156V3.32h-31.156z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M141.833 20.422h31.156V3.32h-31.156z"/><use xlink:href="#g" transform="matrix(9.9626 0 0 -9.9626 146.227 14.332)"/><symbol id="i"><path d="M.075.073a.378.378 0 0 1-.01-.041C.065.01.083 0 .099 0a.05.05 0 0 1 .039.022.408.408 0 0 1 .018.062l.022.09.017.067c.011.041.013.049.042.09.028.04.075.092.15.092.058 0 .059-.051.059-.07C.446.293.403.182.387.14.376.112.372.103.372.086.372.033.416 0 .467 0c.1 0 .144.138.144.153 0 .013-.013.013-.016.013C.581.166.58.16.576.149.553.069.51.028.47.028.449.028.445.042.445.063c0 .023.005.036.023.081a.733.733 0 0 1 .053.193c0 .097-.077.114-.13.114A.213.213 0 0 1 .222.36C.215.429.156.451.115.451.072.451.049.42.036.397A.355.355 0 0 1 0 .298C0 .285.014.285.017.285c.014 0 .015.003.022.03.015.059.034.108.073.108.026 0 .033-.022.033-.049A.442.442 0 0 0 .129.291a3.78 3.78 0 0 1-.022-.09L.075.073z"/></symbol><use xlink:href="#i" transform="matrix(6.9738 0 0 -6.9738 153.712 15.677)"/><symbol id="j"><path d="M.636 0c.016 0 .04 0 .04.024 0 .025-.023.025-.04.025H.04c-.016 0-.04 0-.04-.024C0 0 .023 0 .04 0h.596z"/></symbol><use xlink:href="#j" transform="matrix(6.9738 0 0 -6.9738 159.062 14.03)"/><use xlink:href="#d" transform="matrix(6.9738 0 0 -6.9738 165.295 15.607)"/><path d="M187.162 20.007h20.958V3.735h-20.958z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M187.162 20.007h20.958V3.735h-20.958z"/><use xlink:href="#g" transform="matrix(9.9626 0 0 -9.9626 191.556 14.747)"/><use xlink:href="#i" transform="matrix(6.9738 0 0 -6.9738 199.04 16.092)"/><symbol id="k"><path d="m.453.873.003.015c0 .01-.007.011-.012.011-.01 0-.011-.002-.015-.02L.263.218C.187.227.149.264.149.33c0 .02 0 .046.054.186.004.012.011.029.011.049a.08.08 0 0 1-.082.082C.037.647 0 .502 0 .493c0-.01.01-.01.012-.01.01 0 .011.002.016.018.027.095.067.124.101.124.008 0 .025 0 .025-.032C.154.567.144.542.131.507.083.381.083.355.083.338c0-.095.078-.136.174-.142C.249.16.249.158.235.105A3.07 3.07 0 0 1 .212.01c0-.001 0-.01.012-.01.002 0 .007 0 .009.004a.174.174 0 0 1 .012.041l.038.149c.037 0 .125 0 .219.107.041.046.062.09.073.12a.671.671 0 0 1 .031.156c0 .056-.027.07-.044.07-.025 0-.05-.026-.05-.048C.512.586.518.58.527.572A.114.114 0 0 0 .563.487C.563.423.511.341.476.305.388.216.324.216.288.216l.165.657z"/></symbol><use xlink:href="#k" transform="matrix(9.9626 0 0 -9.9626 518.971 16.404)"/><use xlink:href="#d" transform="matrix(6.9738 0 0 -6.9738 525.931 15.856)"/><use xlink:href="#b" transform="matrix(9.9626 0 0 -9.9626 15.658 48.129)"/><use xlink:href="#c" transform="matrix(9.9626 0 0 -9.9626 17.11 47.68)"/><use xlink:href="#h" transform="matrix(6.9738 0 0 -6.9738 21.781 47.132)"/><use xlink:href="#e" transform="matrix(9.9626 0 0 -9.9626 26.36 48.129)"/><path d="M222.293 50.536h17.061V35.758h-17.06z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M222.293 50.536h17.061V35.758h-17.06z"/><use xlink:href="#f" transform="matrix(9.9626 0 0 -9.9626 226.668 46.551)"/><path d="M284.642 51.698h31.156V34.596h-31.156z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M284.642 51.698h31.156V34.596h-31.156z"/><use xlink:href="#g" transform="matrix(9.9626 0 0 -9.9626 289.035 45.608)"/><use xlink:href="#i" transform="matrix(6.9738 0 0 -6.9738 296.519 46.953)"/><use xlink:href="#j" transform="matrix(6.9738 0 0 -6.9738 301.87 45.307)"/><use xlink:href="#h" transform="matrix(6.9738 0 0 -6.9738 307.782 46.883)"/><path d="M329.971 51.698h31.156V34.596h-31.156z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M329.971 51.698h31.156V34.596h-31.156z"/><use xlink:href="#g" transform="matrix(9.9626 0 0 -9.9626 334.364 45.608)"/><use xlink:href="#i" transform="matrix(6.9738 0 0 -6.9738 341.848 46.953)"/><use xlink:href="#j" transform="matrix(6.9738 0 0 -6.9738 347.198 45.307)"/><use xlink:href="#d" transform="matrix(6.9738 0 0 -6.9738 353.432 46.883)"/><use xlink:href="#k" transform="matrix(9.9626 0 0 -9.9626 518.971 47.68)"/><use xlink:href="#h" transform="matrix(6.9738 0 0 -6.9738 525.61 47.132)"/><use xlink:href="#b" transform="matrix(9.9626 0 0 -9.9626 4.507 108.162)"/><use xlink:href="#c" transform="matrix(9.9626 0 0 -9.9626 5.958 107.713)"/><use xlink:href="#i" transform="matrix(6.9738 0 0 -6.9738 10.519 107.235)"/><use xlink:href="#j" transform="matrix(6.9738 0 0 -6.9738 15.87 105.589)"/><use xlink:href="#d" transform="matrix(6.9738 0 0 -6.9738 22.102 107.165)"/><use xlink:href="#e" transform="matrix(9.9626 0 0 -9.9626 26.36 108.162)"/><path d="M403.648 110.57h17.06V95.792h-17.06z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M403.648 110.57h17.06V95.792h-17.06z"/><use xlink:href="#f" transform="matrix(9.9626 0 0 -9.9626 408.02 106.584)"/><path d="M434.882 111.317h20.004V95.045h-20.004z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M434.882 111.317h20.004V95.045h-20.004z"/><use xlink:href="#g" transform="matrix(9.9626 0 0 -9.9626 439.273 106.056)"/><use xlink:href="#h" transform="matrix(6.9738 0 0 -6.9738 446.87 107.331)"/><use xlink:href="#k" transform="matrix(9.9626 0 0 -9.9626 518.971 107.52)"/><use xlink:href="#i" transform="matrix(6.9738 0 0 -6.9738 525.499 107.042)"/><use xlink:href="#j" transform="matrix(6.9738 0 0 -6.9738 530.85 105.396)"/><use xlink:href="#d" transform="matrix(6.9738 0 0 -6.9738 537.083 106.972)"/><use xlink:href="#b" transform="matrix(9.9626 0 0 -9.9626 14.705 137.86)"/><use xlink:href="#c" transform="matrix(9.9626 0 0 -9.9626 16.156 137.411)"/><use xlink:href="#i" transform="matrix(6.9738 0 0 -6.9738 20.717 136.934)"/><use xlink:href="#e" transform="matrix(9.9626 0 0 -9.9626 26.36 137.86)"/><path d="M469.06 140.269h17.061V125.49H469.06z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M469.06 140.269h17.061V125.49H469.06z"/><use xlink:href="#f" transform="matrix(9.9626 0 0 -9.9626 473.43 136.282)"/><use xlink:href="#k" transform="matrix(9.9626 0 0 -9.9626 518.971 137.411)"/><use xlink:href="#i" transform="matrix(6.9738 0 0 -6.9738 525.499 136.934)"/></svg>
\ No newline at end of file
No preview for this file type
<?xml version='1.0' encoding='UTF-8'?>
<!-- This file was generated by dvisvgm 3.4.3 -->
<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='258.693024pt' height='76.46501pt' viewBox='-68.681163 -69.078205 258.693024 76.46501'>
<defs>
<font id='cmsy10' horiz-adv-x='0'>
<font-face font-family='cmsy10' units-per-em='1000' ascent='775' descent='960'/>
<glyph unicode='' horiz-adv-x='388' vert-adv-y='388' glyph-name='angbracketright' d='M273 233C278 245 278 247 278 250S278 255 273 267L98 727C92 744 86 750 75 750S55 741 55 730C55 727 55 725 60 714L237 250L60-212C55-223 55-225 55-230C55-241 64-250 75-250C88-250 92-240 96-230L273 233Z'/>
<glyph unicode='|' horiz-adv-x='277' vert-adv-y='277' glyph-name='bar' d='M159 714C159 732 159 750 139 750S119 732 119 714V-214C119-232 119-250 139-250S159-232 159-214V714Z'/>
</font>
<font id='cmr7' horiz-adv-x='0'>
<font-face font-family='cmr7' units-per-em='1000' ascent='750' descent='250'/>
<glyph unicode='1' horiz-adv-x='569' vert-adv-y='569' glyph-name='one' d='M335 636C335 663 333 664 305 664C241 601 150 600 109 600V564C133 564 199 564 254 592V82C254 49 254 36 154 36H116V0C134 1 257 4 294 4C325 4 451 1 473 0V36H435C335 36 335 49 335 82V636Z'/>
<glyph unicode='2' horiz-adv-x='569' vert-adv-y='569' glyph-name='two' d='M505 182H471C468 160 458 101 445 91C437 85 360 85 346 85H162C267 178 302 206 362 253C436 312 505 374 505 469C505 590 399 664 271 664C147 664 63 577 63 485C63 434 106 429 116 429C140 429 169 446 169 482C169 500 162 535 110 535C141 606 209 628 256 628C356 628 408 550 408 469C408 382 346 313 314 277L73 39C63 30 63 28 63 0H475L505 182Z'/>
<glyph unicode='3' horiz-adv-x='569' vert-adv-y='569' glyph-name='three' d='M273 334C351 334 407 280 407 173C407 49 335 12 277 12C237 12 149 23 107 82C154 84 165 117 165 138C165 170 141 193 110 193C82 193 54 176 54 135C54 41 158-20 279-20C418-20 514 73 514 173C514 251 450 329 340 352C445 390 483 465 483 526C483 605 392 664 281 664S85 610 85 530C85 496 107 477 137 477C168 477 188 500 188 528C188 557 168 578 137 580C172 624 241 635 278 635C323 635 386 613 386 526C386 484 372 438 346 407C313 369 285 367 235 364C210 362 208 362 203 361C201 361 193 359 193 348C193 334 202 334 219 334H273Z'/>
</font>
<font id='cmmi10' horiz-adv-x='0'>
<font-face font-family='cmmi10' units-per-em='1000' ascent='750' descent='250'/>
<glyph unicode='ψ' horiz-adv-x='651' vert-adv-y='651' glyph-name='psi' d='M482 668C483 672 485 678 485 683C485 693 478 694 473 694C463 694 462 692 458 674L292 13C216 22 178 59 178 125C178 145 178 171 232 311C236 323 243 340 243 360C243 405 211 442 161 442C66 442 29 297 29 288C29 278 39 278 41 278C51 278 52 280 57 296C84 391 124 420 158 420C166 420 183 420 183 388C183 362 173 337 160 302C112 176 112 150 112 133C112 38 190-3 286-9C278-45 278-47 264-100C261-111 241-192 241-195C241-196 241-205 253-205C255-205 260-205 262-201C265-199 271-174 274-160L312-11C349-11 437-11 531 96C572 142 593 186 604 216C613 241 635 328 635 372C635 428 608 442 591 442C566 442 541 416 541 394C541 381 547 375 556 367C567 356 592 330 592 282C592 218 540 136 505 100C417 11 353 11 317 11L482 668Z'/>
<glyph unicode='H' horiz-adv-x='831' vert-adv-y='831' glyph-name='H' d='M763 606C772 642 774 652 847 652C873 652 881 652 881 672C881 683 870 683 867 683C839 683 767 680 739 680C710 680 639 683 610 683C602 683 591 683 591 663C591 652 600 652 619 652C621 652 640 652 657 650C675 648 684 647 684 634C684 630 683 628 680 615L620 371H315L374 606C383 642 386 652 458 652C484 652 492 652 492 672C492 683 481 683 478 683C450 683 378 680 350 680C321 680 250 683 221 683C213 683 202 683 202 663C202 652 211 652 230 652C232 652 251 652 268 650C286 648 295 647 295 634C295 630 294 627 291 615L157 78C147 39 145 31 66 31C48 31 39 31 39 11C39 0 51 0 53 0C81 0 152 3 180 3C201 3 223 2 244 2C266 2 288 0 309 0C317 0 329 0 329 20C329 31 320 31 301 31C264 31 236 31 236 49C236 55 238 60 239 66L307 340H612C570 174 547 79 543 64C533 32 514 31 452 31C437 31 428 31 428 11C428 0 440 0 442 0C470 0 541 3 569 3C590 3 612 2 633 2C655 2 677 0 698 0C706 0 718 0 718 20C718 31 709 31 690 31C653 31 625 31 625 49C625 55 627 60 628 66L763 606Z'/>
<glyph unicode='R' horiz-adv-x='759' vert-adv-y='759' glyph-name='R' d='M375 614C381 638 384 648 403 651C412 652 444 652 464 652C535 652 646 652 646 553C646 519 630 450 591 411C565 385 512 353 422 353H310L375 614ZM519 340C620 362 739 432 739 533C739 619 649 683 518 683H233C213 683 204 683 204 663C204 652 213 652 232 652C234 652 253 652 270 650C288 648 297 647 297 634C297 630 296 627 293 615L159 78C149 39 147 31 68 31C50 31 41 31 41 11C41 0 53 0 55 0C83 0 153 3 181 3S280 0 308 0C316 0 328 0 328 20C328 31 319 31 300 31C263 31 235 31 235 49C235 55 237 60 238 66L304 331H423C514 331 532 275 532 240C532 225 524 194 518 171C511 143 502 106 502 86C502-22 622-22 635-22C720-22 755 79 755 93C755 105 744 105 743 105C734 105 732 98 730 91C705 17 662 0 639 0C606 0 599 22 599 61C599 92 605 143 609 175C611 189 613 208 613 222C613 299 546 330 519 340Z'/>
<glyph unicode='j' horiz-adv-x='411' vert-adv-y='411' glyph-name='j' d='M397 625C397 644 383 661 359 661C336 661 306 638 306 608C306 588 320 572 343 572C370 572 397 598 397 625ZM196-50C177-126 129-183 73-183C67-183 52-183 34-174C64-167 79-141 79-121C79-105 68-86 41-86C16-86-13-107-13-143C-13-183 27-205 75-205C145-205 238-152 263-53L355 313C360 333 360 347 360 350C360 407 318 442 268 442C166 442 109 297 109 288C109 278 119 278 121 278C130 278 131 279 139 298C164 359 210 420 265 420C279 420 297 416 297 374C297 351 294 340 290 323L196-50Z'/>
</font>
</defs>
<style type='text/css'>
<![CDATA[text.f0 {font-family:cmsy10;font-size:9.96264px}
text.f1 {font-family:cmmi10;font-size:9.96264px}
text.f2 {font-family:cmr7;font-size:6.973848px}
]]>
</style>
<g id='page1'>
<path d='M-35.0781-60.543H-49.2502' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-3.8438-60.543H-18.0156' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M30.3359-60.543H16.1641' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M73.043-60.543H50.3398' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M73.043-60.543H50.3398' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M105.75-60.543H73.043' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M105.75-60.543H73.043' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M138.457-60.543H105.75' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M138.457-60.543H105.75' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M161.1602-60.543V-.3984' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M161.1602-60.543H138.457' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M175.3318-60.543H161.1602' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-26.5469-30.097656H-49.2502' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-26.5469-30.097656H-49.2502' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M6.1602-31.796875V-52.4062' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M4.4609-30.097656H-26.5469' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M40.3359-30.097656H7.8594' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M40.3359-30.097656H7.8594' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M64.51172-30.097656H40.3359' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M95.7461-30.097656H81.5742' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M138.457-30.097656H115.7539' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M138.457-30.097656H115.7539' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M161.1602-30.097656H138.457' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M161.1602-30.097656H138.457' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M175.3318-30.097656H161.1602' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-26.5469-.3984H-49.2502' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-26.5469-.3984H-49.2502' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M6.1602-.3984H-26.5469' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M6.1602-.3984H-26.5469' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M40.3359-2.1016V-52.4062' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M38.6367-.3984H6.1602' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M73.043-.3984H42.0391' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M73.043-.3984H42.0391' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M105.75-2.1016V-21.96094' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M104.0508-.3984H73.043' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M129.9258-.3984H107.4492' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M161.1602-.3984H146.9883' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M175.3318-.3984H161.1602' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M157.67165-57.05465L164.6443-64.03121M157.67165-64.03121L164.6443-57.05465' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<path d='M7.85916-30.097616C7.85916-31.035116 7.097438-31.79683 6.159938-31.79683C5.218532-31.79683 4.45681-31.035116 4.45681-30.097616C4.45681-29.156209 5.218532-28.3984 6.159938-28.3984C7.097438-28.3984 7.85916-29.156209 7.85916-30.097616Z'/>
<path d='M7.85938-30.097616C7.85938-31.035116 7.097658-31.79683 6.160158-31.79683C5.218752-31.79683 4.45703-31.035116 4.45703-30.097616C4.45703-29.156209 5.218752-28.3984 6.160158-28.3984C7.097658-28.3984 7.85938-29.156209 7.85938-30.097616Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<path d='M42.03493-.398397C42.03493-1.339803 41.277116-2.10152 40.33571-2.10152C39.39821-2.10152 38.63649-1.339803 38.63649-.398397C38.63649 .539103 39.39821 1.30082 40.33571 1.30082C41.277116 1.30082 42.03493 .539103 42.03493-.398397Z'/>
<path d='M42.03513-.398437C42.03513-1.339843 41.277316-2.10156 40.33591-2.10156C39.39841-2.10156 38.63669-1.339843 38.63669-.398437C38.63669 .539063 39.39841 1.30078 40.33591 1.30078C41.277316 1.30078 42.03513 .539063 42.03513-.398437Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<path d='M107.449-.398397C107.449-1.339803 106.687285-2.10152 105.749785-2.10152C104.808379-2.10152 104.04666-1.339803 104.04666-.398397C104.04666 .539103 104.808379 1.30082 105.749785 1.30082C106.687285 1.30082 107.449 .539103 107.449-.398397Z'/>
<path d='M107.449-.398437C107.449-1.339843 106.687285-2.10156 105.749785-2.10156C104.808379-2.10156 104.04666-1.339843 104.04666-.398437C104.04666 .539063 104.808379 1.30078 105.749785 1.30078C106.687285 1.30078 107.449 .539063 107.449-.398437Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<path d='M157.67165 3.08594L164.6443-3.88672M157.67165-3.88672L164.6443 3.08594' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<text class='f0' x='63.041837' y='-30.845055' transform='matrix(1 0 0 1 -131.723 -27.208)'>|</text>
<text class='f1' x='65.809246' y='-30.845055' transform='matrix(1 0 0 1 -131.723 -27.208)'>j</text>
<text class='f2' x='69.911931' y='-29.350674' transform='matrix(1 0 0 1 -131.723 -27.208)'>1</text>
<text class='f0' x='74.381301' y='-30.845055' transform='matrix(1 0 0 1 -131.723 -27.208)'></text>
<path d='M-35.0781-53.1562H-18.0156V-67.9336H-35.0781Z' fill='#fff'/>
<path d='M-35.0781-53.1562H-18.0156V-67.9336H-35.0781Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<text class='f1' x='63.041837' y='-30.845055' transform='matrix(1 0 0 1 -94.1333 -26.2947)'>H</text>
<path d='M-3.8438-52.4062H16.1641V-68.6797H-3.8438Z' fill='#fff'/>
<path d='M-3.8438-52.4062H16.1641V-68.6797H-3.8438Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<text class='f1' x='63.041837' y='-30.845055' transform='matrix(1 0 0 1 -62.898669 -27.0419)'>R</text>
<text class='f2' x='70.606368' y='-29.350674' transform='matrix(1 0 0 1 -62.898669 -27.0419)'>2</text>
<path d='M30.3359-52.4062H50.3398V-68.6797H30.3359Z' fill='#fff'/>
<path d='M30.3359-52.4062H50.3398V-68.6797H30.3359Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<text class='f1' x='63.041837' y='-30.845055' transform='matrix(1 0 0 1 -28.721 -27.0419)'>R</text>
<text class='f2' x='70.606368' y='-29.350674' transform='matrix(1 0 0 1 -28.721 -27.0419)'>3</text>
<text class='f1' x='63.041837' y='-30.845055' transform='matrix(1 0 0 1 116.5092 -27.208)'>ψ</text>
<text class='f2' x='69.531421' y='-29.350674' transform='matrix(1 0 0 1 116.5092 -27.208)'>1</text>
<text class='f0' x='63.041837' y='-30.845055' transform='matrix(1 0 0 1 -131.723 3.2379)'>|</text>
<text class='f1' x='65.809246' y='-30.845055' transform='matrix(1 0 0 1 -131.723 3.2379)'>j</text>
<text class='f2' x='69.911931' y='-29.350674' transform='matrix(1 0 0 1 -131.723 3.2379)'>2</text>
<text class='f0' x='74.381301' y='-30.845055' transform='matrix(1 0 0 1 -131.723 3.2379)'></text>
<path d='M64.51172-22.70703H81.5742V-37.48828H64.51172Z' fill='#fff'/>
<path d='M64.51172-22.70703H81.5742V-37.48828H64.51172Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<text class='f1' x='63.041837' y='-30.845055' transform='matrix(1 0 0 1 5.4566 4.1511)'>H</text>
<path d='M95.7461-21.96094H115.7539V-38.23437H95.7461Z' fill='#fff'/>
<path d='M95.7461-21.96094H115.7539V-38.23437H95.7461Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<text class='f1' x='63.041837' y='-30.845055' transform='matrix(1 0 0 1 36.6912 3.4039)'>R</text>
<text class='f2' x='70.606368' y='-29.350674' transform='matrix(1 0 0 1 36.6912 3.4039)'>2</text>
<text class='f1' x='63.041837' y='-30.845055' transform='matrix(1 0 0 1 116.5092 3.2379)'>ψ</text>
<text class='f2' x='69.531421' y='-29.350674' transform='matrix(1 0 0 1 116.5092 3.2379)'>2</text>
<text class='f0' x='63.041837' y='-30.845055' transform='matrix(1 0 0 1 -131.723 32.93655)'>|</text>
<text class='f1' x='65.809246' y='-30.845055' transform='matrix(1 0 0 1 -131.723 32.93655)'>j</text>
<text class='f2' x='69.911931' y='-29.350674' transform='matrix(1 0 0 1 -131.723 32.93655)'>3</text>
<text class='f0' x='74.381301' y='-30.845055' transform='matrix(1 0 0 1 -131.723 32.93655)'></text>
<path d='M129.9258 6.9883H146.9883V-7.7891H129.9258Z' fill='#fff'/>
<path d='M129.9258 6.9883H146.9883V-7.7891H129.9258Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<text class='f1' x='63.041837' y='-30.845055' transform='matrix(1 0 0 1 70.8692 33.8498)'>H</text>
<text class='f1' x='63.041837' y='-30.845055' transform='matrix(1 0 0 1 116.5092 32.93655)'>ψ</text>
<text class='f2' x='69.531421' y='-29.350674' transform='matrix(1 0 0 1 116.5092 32.93655)'>3</text>
</g>
</svg>
\ No newline at end of file
No preview for this file type
This diff is collapsed.
No preview for this file type
This diff is collapsed.
......@@ -3,8 +3,8 @@
\begin{document}
\begin{quantikz}[slice all, remove end slices=1, slice titles=$\psi_\col$]
\lstick{$\ket{0}^n$} &\qwbundle{n} &\gate{H^{\otimes n}} &\gate[2]{U_f} &\gate{H^{\otimes n}} &\metercw{s} & \\
\begin{quantikz}
\lstick{$\ket{0^n}$} &\qwbundle{n} \slice{\ket{\psi_0}} &\gate{H^{\otimes n}} \slice{\ket{\psi_1}} &\gate[2]{U_f} \slice{\ket{\psi_2}} &\gate{H^{\otimes n}} \slice{\ket{\psi_3}} &\metercw{s} & \\
\lstick{\ket{1}} &\qw &\gate{H} &\qw &\qw &\qw &
\end{quantikz}
......
......
\documentclass{standalone}
\usepackage{quantikz}
\begin{document}
\begin{quantikz}
\lstick{$\ket{j_1}$} &\gate{H} &\gate{R_2} &\gate{R_3} &\qw &\qw &\qw &\swap{2} & \rstick{$\psi_1$} \\
\lstick{$\ket{j_2}$} &\qw &\ctrl{-1} &\qw &\gate{H} &\gate{R_2} &\qw &\qw & \rstick{$\psi_2$} \\
\lstick{$\ket{j_3}$} &\qw &\qw &\ctrl{-2} &\qw &\ctrl{-1} &\gate{H} &\targX{} & \rstick{$\psi_3$}
\end{quantikz}
\end{document}
\ No newline at end of file
\documentclass{standalone}
\usepackage{quantikz}
\begin{document}
% Wires: j_1, j_2, j_{n-1}, j_n
\begin{quantikz}
\lstick{$\ket{j_1}$} &\gate{H} &\gate{R_2} &\push{\:\:\dots\:\:} &\gate{R_{n-1}} &\gate{R_n} & &\qw &\qw &\qw &\qw &\qw &\qw &\qw &\swap{4} & \rstick{$\psi_1$} \\
\lstick{$\ket{j_2}$} &\qw &\ctrl{-1} &\qw &\qw &\qw &\gate{H} &\push{\:\:\dots\:\:} &\gate{R_{n-2}} &\gate{R_{n-1}} &\qw &\qw &\qw &\qw &\targX{} & \rstick{$\psi_2$} \\
\setwiretype{n} &\push{\vdots} & &\push{\vdots} & & & &\push{\vdots} & & &\push{\vdots} & & &\push{\vdots} \\
\lstick{$\ket{j_{n-1}}$} &\qw &\qw &\qw &\ctrl{-3} &\qw &\qw &\qw &\ctrl{-2} &\qw &\push{\:\:\dots\:\:} &\gate{H} &\gate{R_2} &\qw &\targX{} & \rstick{$\psi_{n-1}$} \\
\lstick{$\ket{j_n}$} &\qw &\qw &\qw &\qw &\ctrl{-4} &\qw &\qw &\qw &\ctrl{-3} &\push{\:\:\dots\:\:} &\qw &\ctrl{-1} &\gate{H} &\targX{} & \rstick{$\psi_n$}
\end{quantikz}
% Wires: j_1, j_2, j_3, j_{n-1}, j_n
%\begin{quantikz}
% \lstick{$\ket{j_1}$} &\gate{H} &\gate{R_2} &\gate{R_3} &\push{\:\:\dots\:\:} &\gate{R_{n-1}} &\gate{R_n} & &\qw &\qw &\qw &\qw &\qw &\qw &\qw &\qw &\qw &\qw &\qw &\qw &\swap{5} & \rstick{$\psi_1$} \\
% \lstick{$\ket{j_2}$} &\qw &\ctrl{-1} &\qw &\qw &\qw &\qw &\gate{H} &\gate{R_2} &\push{\:\:\dots\:\:} &\gate{R_{n-2}} &\gate{R_{n-1}} &\qw &\qw &\qw &\qw &\qw &\qw &\qw &\qw &\targX{} & \rstick{$\psi_2$} \\
% \lstick{$\ket{j_3}$} &\qw &\qw &\ctrl{-2} &\qw &\qw &\qw &\qw &\ctrl{-1} &\qw &\qw &\qw &\gate{H} &\push{\:\:\dots\:\:} &\gate{R_{n-3}} &\gate{R_{n-2}} &\qw &\qw &\qw &\qw &\targX{} & \rstick{$\psi_3$} \\
% \setwiretype{n} &\push{\vdots} & & &\push{\vdots} & & & &\push{\vdots} & & & & &\push{\vdots} & & &\push{\vdots} & & &\push{\vdots} \\
% \lstick{$\ket{j_{n-1}}$} &\qw &\qw &\qw &\qw &\ctrl{-4} &\qw &\qw &\qw &\qw &\ctrl{-3} &\qw &\qw &\qw &\ctrl{-2} &\qw &\push{\:\:\dots\:\:} &\gate{H} &\gate{R_2} &\qw &\targX{} & \rstick{$\psi_{n-1}$} \\
% \lstick{$\ket{j_n}$} &\qw &\qw &\qw &\qw &\qw &\ctrl{-5} &\qw &\qw &\qw &\qw &\ctrl{-4} &\qw &\qw &\qw &\ctrl{-3} &\push{\:\:\dots\:\:} &\qw &\ctrl{-1} &\gate{H} &\targX{} & \rstick{$\psi_n$}
%\end{quantikz}
\end{document}
\ No newline at end of file
\documentclass{standalone}
\usepackage{quantikz}
\begin{document}
\begin{quantikz}
\lstick{$\ket{0^n}$} &\qwbundle{n}\slice{\ket{\phi_1}} &\gate{H^{\otimes n}}\slice{\ket{\phi_2}} &\gate[2]{U_f}\slice{\ket{\phi_3}} &\qw\slice{\ket{\phi_4}} &\gate{DFT_{2n}}\slice{\ket{\phi_5}} &\metercw{c}\slice{\ket{\phi_6}} & \\
\lstick{$\ket{0^m}$} &\qwbundle{m} &\qw &\qw &\metercw{y} &\qw &\qw &\qw
\end{quantikz}
\end{document}
\ No newline at end of file
......@@ -2,6 +2,7 @@
One of the best known quantum algorithm is Shor's algorithm for finding the prime factors of an integer. It was developed by Peter Shor in 1994.
## Discrete Fourier Transformation
One of the tools required for Shor's algorithm is the Discrete Fourier Transformation (DFT). Generally, a Fourier transformation is a mathematical technique that decomposes a function into its constituent frequencies. We use the DFT to find the period of a vector.
......@@ -13,14 +14,16 @@ The DFT is defined as follows:
## Discrete Fourier Transformation (DFT)
The discrete Fourier transform (DFT) is a linear transformation on $\mathbb{C}^M$ represented by the matrix
The discrete Fourier transform (DFT) is a linear transformation on $\mathbb{C}^N$ represented by the matrix
$$
\operatorname{DFT}_M = \frac{1}{\sqrt{M}} (\omega^{kl})_{kl} \in \mathbb{C}^{M\times M}
\operatorname{DFT}_N = \frac{1}{\sqrt{N}} (\omega^{kl})_{kl=0,\dots,N-1} \in \mathbb{C}^{N\times N}
$$
with $\omega = e^{2i\pi/M}$, which is the $M$-th root of unity.
with $\omega = e^{2i\pi/N}$, which is the $N$-th root of unity.
:::
:::
It applies $\omega^N=1$ and $\omega^M \neq 1$ for all $0 < M < N$.
This transformation is best imagined as a process, which takes a periodic vector as an input and outputs the period of that vector. The DFT has some important properties, which help us later on.
::: {.callout-note appearance="minimal" icon=false}
......@@ -30,26 +33,39 @@ This transformation is best imagined as a process, which takes a periodic vector
Here are some properties of the DFT which can be used without further proof.
1. The DFT is unitary.
2. $\omega^t = \omega^{t\mod M}$ for all $t \in \mathbb{Z}$.
3. Given a quantum state $\psi \in \mathbb{C}^M$ which is $r$-periodic and where $r\mid M$, $\operatorname{DFT}_M \psi$ will compute a quantum state $\phi \in \mathbb{C}^M$, which has non-zero values on the multiples of $\frac{M}{r}$. Note that $\frac{M}{r}$ intuitively represents the frequency of $\psi$. This means, that
1. The $\operatorname{DFT}_N$ is unitary.
2. $\omega^t = \omega^{t\mod N}$ for all $t \in \mathbb{Z}$.
3. Let $t \mid N$ and $s$ be fix variables and the quantum state $\psi \in \mathbb{C}^N$ g given by
$$
|\psi_i| =
\begin{cases}
\sqrt{\frac{t}{N}} & \text{if } i = at+s \text{ for some } a \\
0 & \text{else.}
\end{cases}
$$
|\phi_i| = \begin{cases} \frac{1}{\sqrt{r}}, & \text{if}\ \frac{M}{r}\mid i \\ 0, & \text{otherwise} \end{cases}
In other words $\psi$ is $t$-periodic. Then for $\phi \coloneqq \operatorname{DFT}_N$ it applies
$$
|\phi_i| =
\begin{cases}
\frac{1}{\sqrt{t}} & \text{if } \frac{N}{t} \mid i \\
0 & \text{else.}
\end{cases}
$$
The first peak of $\phi$ is at $\frac{N}{t}$.
:::
:::
## Reducing factoring to period finding
With the DFT, we have seen, that we can use a unitary to find the period of a quantum state. We now look into using period finding to factor integers. We first look at the definition of the two problems:
## Reducing factoring to period finding
With the DFT, we have seen, that we can use a unitary to find the period of a quantum state. We now look into using period finding to factor integers. We first look at the definition of some problems:
::: {.callout-note appearance="minimal" icon=false}
::: {.definition #def-shor-factoring}
## Factoring problem
Given integer $N$ with two prime factors $p,q$ such that $pq=N$ and $p \neq q$, find $p$ and $q$.
Given integer $N$ with two prime factors $p,q > 2$ such that $pq = N$ and $p \neq q$, find $p$ and $q$.
:::
:::
Note that this definition of the factoring problem is a simplified version of the factoring problem, where $N$ has only 2 prime factors.
......@@ -59,8 +75,9 @@ Note that this definition of the factoring problem is a simplified version of th
## Period finding problem
Given $f: \mathbb{Z} \to X$ with $f(x) = f(y)$ iff $x \equiv y \bmod r$ for some fixed secret $r$. $r$ is called the *period* of $f$.
Find $r$.
Given $f: \mathbb{Z} \to X$ with $f(x) = f(y)$ iff $x \equiv y \bmod r$ for some fixed secret $r$, find $r$.
We call $r$ the *period* of $f$.
:::
:::
......@@ -72,40 +89,44 @@ To start the reduction, we need a special case of the period finding problem cal
## Order finding problem
For known $a$ and $N$ which are relatively prime, find the period $r$ of $f(i) = a^i \bmod N$. We call $r$ the order of $a$ written $r = \text{ ord } a$. (This is similar to finding the smallest $i > 0$ with $f(i) = 1$).
For known $a$ and $N$ which are relatively prime, find the period $r$ of $f(i) = a^i \bmod N$. We call $r$ the order of $a$ written $r = \text{ ord } a$. (This is similar to finding the smallest $i > 0$ with $f(i) = a^i \bmod N = 1$).
:::
:::
Since the order finding problem is just the period finding problem for a specific $f(x)$, we know that if we can solve the period finding problem within reasonable runtime, we can also solve the order finding problem within reasonable runtime. We now reduce the factoring problem to the order finding problem:
We have a integer $N$ as an input for the factoring problem.
We have an integer $N$ as an input for the factoring problem.
1. Pick an $a \in \{1,\dots,N-1\}$ with $a$ relatively prime to $N$.
2. Compute the order of $a$, so that $r = \text{ ord } a$ (using the solver for the order finding problem).
3. If the order $r$ is odd, we abort.
1. Pick an $a \in \{2, \dots, N-1\}$ relatively prime to $N$.
2. Compute the order of $a$, so that $r \coloneqq \operatorname{ord} \operatorname{mod} a$ (using one solver for the order finding problem).
3. If the order $r$ is odd, restart at 1.
4. Calculate $x:= a^{\frac{r}{2}} + 1 \bmod N$ and $y:= a^{\frac{r}{2}} - 1 \bmod N$.
5. If $\gcd(x,N) \in \{1,N\}$, we abort.
6. We compute $p = \gcd(x,N)$ and $q = \gcd(y,N)$.
5. If $\gcd(x,N) \in \{1,N\}$, we restart at 1.
6. Return $p = \gcd(x,N)$ and $q = \frac{N}{\gcd(y,N)}$.
The output of the reduction are $p,q$, such that $pq = N$. This holds, since
$$
xy = (a^{\frac{r}{2}}+1) (a^{\frac{r}{2}}-1) = a^r - 1 \equiv 1-1 = 0 \pmod N
xy = (a^{\frac{r}{2}}+1) (a^{\frac{r}{2}}-1) = a^r - 1 \equiv 1-1 = 0 \pmod N.
$$
This means that $N \mid xy$ an therefore $p \mid xy$ and $q \mid xy$. From this it can be concluded that $p \mid x$, $q \mid y$, $p \mid y$ and $q \nmid x$ which leads to $\gcd(x,N) = p$. Or $p$ and $q$ swapped.
::: {.callout-note appearance="minimal" icon=false}
::: {.therorem #thm-shor-abort}
## Probability of an abort
If $N$ has at least two different prime factors and $N$ is odd, then the probability to abort is $\leq \frac{1}{2}$.
If $N$ has at least two different prime factors and $N$ is odd, then the probability to restart is $\leq \frac{1}{2}$.
:::
:::
All in all this reduction shows, that if we have an oracle which can solve the period finding problem within reasonable runtime, we can also solve the factoring problem within reasonable runtime (since all other operations are classically fast to compute).
## The quantum algorithm for period finding {#sec-shor-algo}
We now look into an quantum algorithm that solves the period finding problem within reasonable runtime. The quantum circuit for Shor's algorithm requires a $f:\mathbb{Z}\rightarrow X$ which is $r$-periodic. $X$ denotes an arbitrary set here. We choose a number $m$ which needs to be big enough to encode the values of $X$ and choose a number $n$ under the condition of $n\geq 2 \log_2(r)$ for the post processing to work. Note that when using this algorithm for factoring, we choose $n$ to be $n:=2\lvert N \rvert$, since $r \leq N$. $\lvert N\rvert$ denotes the number of bits needed to encode $N$ here.
We now look into an quantum algorithm that solves the period finding problem within reasonable runtime.
For the quantum circuit we need an $f: \{0,1\}^n \rightarrow \{0,1\}^m$ which is $r$-periodic with $r < 2^n$.
The quantum algorithm for period finding is shown in this figure:
......@@ -113,15 +134,15 @@ The quantum algorithm for period finding is shown in this figure:
The algorithm works as follows:
1. We start with a $\ket{0}$ entry on every wire.
2. We bring the top wire into the superposition over all entries. The quantum state is then $2^\frac{-n}{2}\sum_x \ket{x} \otimes \ket{0^m}$.
3. We apply $U_f$, which is the unitary of $f:\{0,1\}^n\rightarrow\{0,1\}^m$. This calculates the superposition over all possible values $f(x)$ on the bottom wire. The resulting quantum state is $2^\frac{-n}{2}\sum_x \ket{x,f(x)}$.
4. To understand the algorithm better, we measure the bottom wire at this point. This will give us one random value $f(x_0)$ for some $x_0$. The top wire will then contain a superposition over all values $x$ where $f(x) = f(x_0)$. Since $f$ is known to be $r$-periodic, we know, that $f(x) = f(x_0)$ iff $x \equiv x_0 \bmod r$. This means, that the resulting quantum state on the top wire is periodic and can be written as $\frac{\sqrt{r}}{\sqrt{2^n}} \sum_{x\equiv x_0 \bmod r} \ket{x} \otimes \ket{f(x_0)}$. For simplicity we assume, that $r \mid 2^n$ holds.
5. We apply the Discrete Fourier Transform on the top wire. This will "analyze" the top wire for the period and output a vector with entries at multiples of $\frac{2^n}{r}$ as seen in @thm-dft-properties. For simplicity we still assume, that $r \mid 2^n$ holds.
6. We measure the top wire and get one random multiple of $\frac{2^n}{r}$, which we can denote as $a\cdot\frac{2^n}{r}$
1. We start with $\ket{\psi_1} = \ket{0^n} \otimes \ket{0^m}$.
2. We bring the top wire into the superposition over all entries. The quantum state is then $\ket{\psi_2} = G \cdot \sum_{x \in \{0,\dots,2^n-1\}} \ket{x} \otimes \ket{0^m}$ with the constant $G \coloneqq 2^\frac{-n}{2}$.
3. We apply $U_f$, which is the unitary of $f: \{0,1\}^n \rightarrow \{0,1\}^m$. This calculates the superposition over all possible values $f(x)$ on the bottom wire. The resulting quantum state is $\ket{\psi_3} = G \cdot \sum_{x \in \{0,\dots,2^n-1\}} \ket{x,f(x)}$.
4. To understand the algorithm better, we measure the bottom wire at this point. This will give us one random value $y = f(x_0)$ for some $x_0$. The top wire will then contain a superposition over all values $x$ where $f(x) = f(x_0)$. Since $f$ is known to be $r$-periodic, we know, that $f(x) = f(x_0)$ iff $x \equiv x_0 \bmod r$. This means, that the resulting quantum state on the top wire is periodic. So the complete quantum state is $\ket{\psi_4} = C \cdot \sum_{x\equiv x_0 \bmod r} \ket{x} \otimes \ket{f(x_0)}$ with the constant $C = \frac{\sqrt{r}}{\sqrt{2^n}}$.
5. We apply the Discrete Fourier Transform on the top wire. This will "analyze" the top wire for the period and output a vector with entries at multiples of $\frac{2^n}{r}$ as seen in @thm-dft-properties.
6. We measure the top wire and get one random multiple of $\frac{2^n}{r}$, which we can denote as $c = a \cdot \frac{2^n}{r}$ for some $a$.
Since we get a multiple of $\frac{2^n}{r}$ on each run, we can simply run the algorithm multiple times to get different multiples and then compute $\frac{2^n}{r}$ by taking the gcd of those multiples. From that we compute $r$. Unfortunately this only works because we assumed $r \mid 2^n$. Since this does usually not hold, we only get approximate multiples of $\frac{2^n}{r}$ (which is not even an integer) and thus we need a post processing.
Since we get a multiple of $\frac{2^n}{r}$ on each run, we can simply run the algorithm multiple times to get different multiples and then compute $\frac{2^n}{r}$ by taking the gcd of those multiples. From that we compute $r$. Unfortunately this only works because we assumed $r \mid 2^n$. Since this does usually not hold, we only get approximate multiples of $\frac{2^n}{r}$ (which is not even an integer) and thus post processing is a bit more complex.
## Post processing
......@@ -131,7 +152,7 @@ So far we have seen the DFT to analyze the period of a quantum state, we have se
::: {.therorem #thm-shor-post-process}
##
Iff $f: \mathbb{Z} \rightarrow X$ is $r$-periodic, the following holds with probability $\Omega(1/\log\log r)$:
Iff $f: \{0,1\}^n \rightarrow \{0,1\}^m$ is $r$-periodic, the following holds with probability $\Omega(1/\log\log r)$:
$$
\frac{-r}{2} \leq rc\bmod 2^n \leq \frac{r}{2}
$$
......@@ -174,7 +195,7 @@ For a given continued expansion, a prefix $[a_0,\dots,a_i]$ is called a converge
::: {.callout-tip icon=false}
## Example: continued expansion of a fraction
## Example: Continued expansion of a fraction
The number $2.3$ can be written as
$$
......@@ -265,7 +286,7 @@ The next step is to construct the $\psi_2$ state on the middle wire. We again us
On the bottom wire, we can just do a Hadamad-gate to bring $\ket{j_3}$ into the superposition $\frac{1}{\sqrt{2}}(\ket{0} + e^{2 \pi i 0.j_3} \ket{1})$. We then have $\psi_1$ on the bottom wire. The full circuit is described in this figure:
![The DTF for three qubits](img/dft1){width=100%}
![The DTF for three qubits](img/dft_3_qubits){width=100%}
When applying this circuit, we get the state $\psi_3 \otimes \psi_2 \otimes \psi_1$ as a result. This very close to our desired state $\psi_1 \otimes \psi_2 \otimes \psi_3$, just the order of the wires is flipped. To solve this, we apply a $\operatorname{SWAP}$ onto all wires, which flips the order of the wires an delivers the correct output for $\operatorname{DFT}_{2^3}$.
:::
......@@ -282,4 +303,4 @@ Note: If the the output of the DFT circuit is measured right after applying it (
The more general layout of the quantum circuit for the $\operatorname{DFT_{2^n}}$ with the $\operatorname{SWAP}$ is shown in this figure.
![The DTF for $n$ qubits](img/dft2){width=100%}
![The DTF for $n$ qubits](img/dft_n_qubits){width=100%}
......@@ -14,10 +14,3 @@ If you spot an error, please report it to [Gitlab](https://git.rwth-aachen.de/un
These lecture notes are released under the CC BY-NC 4.0 license, which can be found [here](https://creativecommons.org/licenses/by-nc/4.0/).
The Jupyter notebooks created during the lectures can be found in the [JupyterHub](https://jupyter.rwth-aachen.de/) in the course "[IQC] Introduction to Quantum Computing" or in Moodle. These will be added shortly after the lectures. If changes are made to the files, they can be easily reset with the usual git commands using "Git" and then "Open Git Repository in Terminal.
## Changelog {.unnumbered}
#### 16.05.2025
- started the lecture notes for the summer term 2025
- added chapters 1 to 9 (except 4.3)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment