Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • main
  • summer25-dev
  • Summer2024
3 results

Target

Select target project
  • j1/intro-qc
  • ili16/intro-qc
  • unruh/script-intro-qc
3 results
Select Git revision
  • dev
  • main
  • pre-release
3 results
Show changes
Commits on Source (14)
Showing
with 4097 additions and 4 deletions
# Directories for latex files and outputs
LATEX_DIR := content/latex
IMG_DIR := content/img
# Get all .tex files in the LaTeX source directory
TEX_FILES := $(wildcard $(LATEX_DIR)/*.tex)
# Define target PDF, DVI and SVG files in the image output directory
PDF_TARGETS := $(patsubst $(LATEX_DIR)/%.tex,$(IMG_DIR)/%.pdf,$(TEX_FILES))
DVI_TARGETS := $(patsubst $(LATEX_DIR)/%.tex,$(IMG_DIR)/%.dvi,$(TEX_FILES))
SVG_TARGETS := $(patsubst $(LATEX_DIR)/%.tex,$(IMG_DIR)/%.svg,$(TEX_FILES))
# Default removal command for Unix-like systems
RMDEL = rm -f
# Default command to create the output directory if it doesn't exist for Unix-like systems
MKDIR_IMG = mkdir -p $(IMG_DIR)
# Default command to delete all PDFs and SVGs to which a .tex file belongs
RM_CLEAN = \
@for texfile in $(TEX_FILES); do \
filename=$$(basename $$texfile .tex); \
pdf="$(IMG_DIR)/$$filename.pdf"; \
svg="$(IMG_DIR)/$$filename.svg"; \
[ -f "$$pdf" ] && $(RMDEL) "$$pdf"; \
[ -f "$$svg" ] && $(RMDEL) "$$svg"; \
done
# Generated files to clean up
AUX_FILES = $(IMG_DIR)/*.aux
LOG_FILES = $(IMG_DIR)/*.log
PDF_FILES = $(IMG_DIR)/*.pdf
DVI_FILES = $(IMG_DIR)/*.dvi
SVG_FILES = $(IMG_DIR)/*.svg
# Windows-specific settings: commands and backslash path separator
ifeq ($(OS),Windows_NT)
RMDEL = del /Q
MKDIR_IMG = if not exist $(subst /,\,$(IMG_DIR)) mkdir $(subst /,\,$(IMG_DIR))
RM_CLEAN = \
@for %%f in ($(TEX_FILES)) do ( \
if exist "$(IMG_DIR)\%%~nf.pdf" $(RMDEL) "$(IMG_DIR)\%%~nf.pdf" & \
if exist "$(IMG_DIR)\%%~nf.svg" $(RMDEL) "$(IMG_DIR)\%%~nf.svg" )
AUX_FILES = $(subst /,\\,$(IMG_DIR))\\*.aux
LOG_FILES = $(subst /,\\,$(IMG_DIR))\\*.log
DVI_FILES = $(subst /,\\,$(IMG_DIR))\\*.dvi
SVG_FILES = $(subst /,\\,$(IMG_DIR))\\*.svg
PDF_FILES = $(subst /,\\,$(IMG_DIR))\\*.pdf
endif
.PHONY: all preview clean clean-temp clean-dvi
# Default target: build all PDFs and SVGs, then clean .aux and .log files and run quarto render
all: $(PDF_TARGETS) $(SVG_TARGETS)
-@$(RMDEL) $(AUX_FILES)
-@$(RMDEL) $(LOG_FILES)
quarto render --to all
# Rule to live-preview the script in the browser
preview: $(PDF_TARGETS) $(SVG_TARGETS)
quarto preview index.qmd
# Rule to build PDFs: run pdflatex with output to IMG_DIR
$(IMG_DIR)/%.pdf: $(LATEX_DIR)/%.tex | $(IMG_DIR)
pdflatex -output-directory=$(IMG_DIR) $<
# Rule to build DVI files: run latex with output to IMG_DIR
$(IMG_DIR)/%.dvi: $(LATEX_DIR)/%.tex | $(IMG_DIR)
latex -output-directory=$(IMG_DIR) $<
# Rule to build SVG files from DVI files: run dvisvgm
$(IMG_DIR)/%.svg: $(IMG_DIR)/%.dvi
dvisvgm --no-fonts -o $@ $<
# Ensure output directory exists before building targets that depend on it
$(IMG_DIR):
$(MKDIR_IMG)
# Clean only final output files (SVGs and PDFs)
clean:
$(RM_CLEAN)
# Clean auxiliary files generated during LaTeX compilation
clean-temp:
-@$(RMDEL) $(AUX_FILES)
-@$(RMDEL) $(LOG_FILES)
# Clean intermediate DVI files
clean-dvi:
-@$(RMDEL) $(DVI_FILES)
# Introduction to Quantum Computing - Lecture notes
Lecture note for the lecture "Introduction to Quantum Computing" by Dominique Unruh at RWTH Aachen.
## Installation guide
This guide is for VS Code. There may be other extensions for other development environments.
### 1. Install Quarto
Download and install Quarto from the official website:
<https://quarto.org/docs/get-started/>
### 2. Install the VS Code extension
Install the Quarto Extension for Visual Studio Code:
https://quarto.org/docs/get-started/
You can also find it in the Extensions tab by searching for `"Quarto"`.
### 3. Preview the script
To live-preview the project, use the following command in your terminal:
`"make preview"`
This will open your browser.
### 4. Render the script
To render the entire project to .pdf and .html use:
`"make"`
The output will be generated in the _book folder.
### 5. Add pictures to the lecture notes
Not all LaTeX packages are supported for output as HTML, so graphics and similar elements created with LaTeX must be included via external files. For HTML, the preferred format is **SVG** and for PDF documents, it is **PDF**.
The easiest way is to create LaTeX files in the `content/latex` folder. These are automatically converted to SVG and PDF by **make**.
The resulting files can then be integrated using:
`"![Figure description](img/filename){width=xxx%}"`
**Important:**
The SVGs and PDFs have the same name as the LaTeX files, and no file extension should be specified when including them.
## Project structure
The main components of the project are:
### `_quarto.yml`
This is the main configuration file for your project. It contains:
- **Title**, **authors**, **output formats** and other metadata
- The **structure** of the script is under the `chapters:` section
You can **toggle chapter visibility** by commenting/uncommenting lines using `#`. This is useful for revealing content gradually throughout the semester.
### `index.qmd`
This file contains the **introduction** of the script.
It must be located in the same directory as the `quarto.yml` file.
### `Makefile`
Generates all the required images and the lecture notes from them, regardless of the operating system.
The Makefile is explained with comments.
### `content/`
This folder contains all the **chapters** of the script, as individual `.qmd` files.
### `content/img/`
Subfolder that contains all **images** and **pdfs** used throughout the script.
### `content/latex/`
Subfolder that contains all **tex-files** for creating some PDFs and SVGs. Unfortunately, not all latex files are available anymore.
### `_extensions/`
This folder includes any **custom Quarto extensions** that add functionality or styling to your project.
### `_book/`
This is the **output folder** generated by Quarto after rendering.
It contains the final script in the formats **HTML** and **PDF**.
File deleted
No preview for this file type
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="196.551" height="72.605" viewBox="0 0 147.413 54.454"><path stroke-width=".797" stroke-linecap="round" stroke-miterlimit="10" fill="none" stroke="#000" d="M17.52 14.71H3.32M48.727 14.71h-14.2M87.29 14.71H64.586M109.994 14.71H87.29M17.493 43.745H3.319M48.727 43.745H34.554M78.76 43.745H64.585M119.957 43.745H95.82M144.093 43.745h-24.136"/><path d="M17.52 22.1h17.006V7.32H17.52z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M17.52 22.1h17.006V7.32H17.52z"/><symbol id="a"><path d="M.458.411.374.61.369.623c0 .006.017.025.059.029.01.001.02.002.02.019 0 .012-.012.012-.015.012L.307.68.195.683c-.006 0-.018 0-.018-.02C.177.652.187.652.2.652.26.652.266.642.275.62L.393.341.182.114.169.103A.202.202 0 0 0 .022.031C.009.03 0 .03 0 .011 0 .01 0 0 .013 0l.094.003L.219 0c.006 0 .018 0 .018.02 0 .01-.01.011-.012.011-.009.001-.04.003-.04.031 0 .016.015.032.027.045l.102.108.09.098.101-.239L.51.06C.51.052.491.035.452.031.441.03.432.029.432.012.432 0 .443 0 .447 0l.126.003L.684 0c.007 0 .019 0 .019.019 0 .012-.01.012-.018.012C.618.032.616.035.599.075.56.168.493.324.47.384c.068.07.173.189.205.217a.204.204 0 0 0 .127.051c.013.001.022.001.022.02 0 .001 0 .011-.013.011L.717.68.606.683C.6.683.587.683.587.663c0-.007.005-.01.012-.011.009-.001.04-.003.04-.031C.639.607.628.594.62.585L.458.411z"/></symbol><use xlink:href="#a" transform="matrix(9.9626 0 0 -9.9626 21.775 18.114)"/><path d="M48.727 51.134h15.859V7.32H48.727z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M48.727 51.134h15.859V7.32H48.727z"/><symbol id="b"><path d="M.568.6c.01.041.028.071.108.074.005 0 .017.001.017.02 0 .001 0 .011-.013.011L.578.702.474.705c-.006 0-.018 0-.018-.02 0-.011.01-.011.018-.011C.531.673.542.652.542.63A.152.152 0 0 0 .539.609L.449.252C.415.118.3.031.2.031c-.068 0-.122.044-.122.13 0 .002 0 .034.011.078l.097.389C.195.664.197.674.27.674c.026 0 .034 0 .034.02C.304.705.293.705.29.705L.162.702.033.705c-.008 0-.019 0-.019-.02 0-.011.009-.011.028-.011.002 0 .021 0 .038-.002C.098.67.107.669.107.656.107.65.096.608.09.585L.068.497.007.25C0 .222 0 .207 0 .192 0 .07.091 0 .196 0c.126 0 .25.113.283.245L.568.6z"/></symbol><use xlink:href="#b" transform="matrix(9.9626 0 0 -9.9626 53.38 32.85)"/><path d="M109.994 22.182h19.925V7.238h-19.925z" fill="#fff"/><clipPath id="c"><path transform="matrix(1 0 0 -1 73.706 29.186)" d="M36.288 7.004h19.925v14.944H36.288z"/></clipPath><g clip-path="url(#c)"><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M112.829 16.411c3.573-4.259 10.682-4.259 14.256 0M119.957 17.545l4.847-5.783"/><path d="M126.04 10.288c-.2.141-1.135.712-1.844.965l1.215 1.018c.125-.742.524-1.763.629-1.983z"/><path stroke-width=".78896844" stroke-miterlimit="10" fill="none" stroke="#000" d="M126.04 10.288c-.2.141-1.135.712-1.844.965l1.215 1.018c.125-.742.524-1.763.629-1.983z"/></g><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M109.994 22.182h19.925V7.238h-19.925z"/><path d="M17.493 51.134h17.06V36.356h-17.06z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M17.493 51.134h17.06V36.356h-17.06z"/><symbol id="d"><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="#d" transform="matrix(9.9626 0 0 -9.9626 21.868 47.148)"/><path d="M78.76 51.134h17.06V36.356H78.76z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M78.76 51.134h17.06V36.356H78.76z"/><use xlink:href="#d" transform="matrix(9.9626 0 0 -9.9626 83.134 47.148)"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="280.303" height="105.911" viewBox="0 0 210.227 79.433"><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="m29.401 32.918 4.536-6.803"/><symbol id="a"><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="#a" transform="matrix(6.9738 0 0 -6.9738 34.665 25.786)"/><path stroke-width=".797" stroke-linecap="round" stroke-miterlimit="10" fill="none" stroke="#000" d="M38.756 29.516H24.582M52.93 29.516H38.755M95.814 29.516H81.64M129.924 29.516h-14.173M172.809 29.516h-14.174M206.908 29.516h-14.174M38.756 63.712H24.582M58.754 63.712H38.756M95.814 63.712H75.815M144.28 63.712h-28.53M182.771 63.712H144.28M206.908 63.712H182.77"/><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 4.507 34.768)"/><symbol id="c"><path d="M.421.342c0 .08-.005.16-.04.234A.185.185 0 0 1 .037.569.535.535 0 0 1 0 .342C0 .267.004.177.045.101A.183.183 0 0 1 .21 0c.054 0 .13.021.174.116a.533.533 0 0 1 .037.226M.21.022C.171.022.112.047.094.143.083.203.083.295.083.354c0 .064 0 .13.008.184C.11.657.185.666.21.666.243.666.309.648.328.549c.01-.056.01-.132.01-.195 0-.075 0-.143-.011-.207C.312.052.255.022.21.022z"/></symbol><use xlink:href="#c" transform="matrix(9.9626 0 0 -9.9626 6.477 32.496)"/><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 11.617 34.768)"/><use xlink:href="#a" transform="matrix(6.9738 0 0 -6.9738 15.272 27.338)"/><path d="M52.93 37.467h28.71V21.565H52.93z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M52.93 37.467h28.71V21.565H52.93z"/><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 57.304 33.483)"/><symbol id="f"><path d="M.738.368a.37.37 0 1 1-.739 0 .37.37 0 0 1 .739 0M.145.617a.336.336 0 0 0 .448 0L.369.393.145.617M.121.145a.328.328 0 0 0 0 .447L.345.369.121.145m.496.447a.328.328 0 0 0 0-.447L.393.368l.224.224M.593.12a.336.336 0 0 0-.448 0l.224.224L.593.12z"/></symbol><use xlink:href="#f" transform="matrix(6.9738 0 0 -6.9738 66.543 30.69)"/><use xlink:href="#a" transform="matrix(6.9738 0 0 -6.9738 72.56 29.937)"/><path d="M95.814 72.526h19.937V20.702H95.814z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M95.814 72.526h19.937V20.702H95.814z"/><symbol id="g"><path d="M.568.6c.01.041.028.071.108.074.005 0 .017.001.017.02 0 .001 0 .011-.013.011L.578.702.474.705c-.006 0-.018 0-.018-.02 0-.011.01-.011.018-.011C.531.673.542.652.542.63A.152.152 0 0 0 .539.609L.449.252C.415.118.3.031.2.031c-.068 0-.122.044-.122.13 0 .002 0 .034.011.078l.097.389C.195.664.197.674.27.674c.026 0 .034 0 .034.02C.304.705.293.705.29.705L.162.702.033.705c-.008 0-.019 0-.019-.02 0-.011.009-.011.028-.011.002 0 .021 0 .038-.002C.098.67.107.669.107.656.107.65.096.608.09.585L.068.497.007.25C0 .222 0 .207 0 .192 0 .07.091 0 .196 0c.126 0 .25.113.283.245L.568.6z"/></symbol><use xlink:href="#g" transform="matrix(9.9626 0 0 -9.9626 100.466 48.812)"/><symbol id="h"><path d="M.334.599h.098c.02 0 .033 0 .033.022 0 .014-.013.014-.031.014H.341C.364.762.372.808.38.837.385.859.407.88.431.88.432.88.459.88.478.868A.06.06 0 0 1 .434.813c0-.022.017-.037.04-.037a.06.06 0 0 1 .057.061c0 .046-.049.071-.1.071a.139.139 0 0 1-.12-.075C.291.796.283.751.262.635H.183C.163.635.15.635.15.613.15.599.163.599.181.599h.074A18.16 18.16 0 0 0 .167.126C.162.104.145.028.097.028c-.001 0-.025 0-.044.012a.06.06 0 0 1 .044.055c0 .022-.017.037-.04.037A.06.06 0 0 1 0 .071C0 .026.047 0 .097 0c.064 0 .108.066.12.088A.85.85 0 0 1 .278.29l.056.309z"/></symbol><use xlink:href="#h" transform="matrix(6.9738 0 0 -6.9738 107.11 51.51)"/><path d="M129.924 37.467h28.711V21.565h-28.71z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M129.924 37.467h28.711V21.565h-28.71z"/><use xlink:href="#e" transform="matrix(9.9626 0 0 -9.9626 134.298 33.483)"/><use xlink:href="#f" transform="matrix(6.9738 0 0 -6.9738 143.537 30.69)"/><use xlink:href="#a" transform="matrix(6.9738 0 0 -6.9738 149.555 29.937)"/><clipPath id="i"><path transform="matrix(1 0 0 -1 115.745 45.417)" d="M57.064 8.429h19.925v22.416H57.064z"/></clipPath><g clip-path="url(#i)"><path d="M173.207 36.59h19.129V22.044h-19.129z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M173.207 36.59h19.129V22.044h-19.129zM183.622 22.044v-7.472M181.921 22.044v-7.472"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M175.644 31.018c3.573-4.26 10.682-4.26 14.255 0M182.771 32.152l4.848-5.783"/><path d="M188.855 24.894c-.2.142-1.135.713-1.844.966l1.215 1.018c.125-.742.524-1.763.629-1.984z"/><path stroke-width=".78896844" stroke-miterlimit="10" fill="none" stroke="#000" d="M188.855 24.894c-.2.142-1.135.713-1.844.966l1.215 1.018c.125-.742.524-1.763.629-1.984z"/></g><symbol id="j"><path d="M.339.385C.311.384.291.362.291.34.291.326.3.311.322.311s.046.017.046.056c0 .045-.043.086-.119.086C.117.453.08.351.08.307.08.229.154.214.183.208.235.198.287.187.287.132c0-.026-.023-.11-.143-.11-.014 0-.091 0-.114.053a.055.055 0 0 1 .063.053c0 .023-.016.035-.037.035C.03.163 0 .142 0 .097 0 .04.057 0 .143 0c.162 0 .201.121.201.166a.104.104 0 0 1-.031.073C.286.267.257.272.213.281.177.289.137.296.137.341c0 .029.024.09.112.09.025 0 .075-.007.09-.046z"/></symbol><use xlink:href="#j" transform="matrix(9.9626 0 0 -9.9626 180.954 10.764)"/><use xlink:href="#b" transform="matrix(9.9626 0 0 -9.9626 9.929 68.693)"/><symbol id="k"><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="#k" transform="matrix(9.9626 0 0 -9.9626 12.398 66.202)"/><use xlink:href="#d" transform="matrix(9.9626 0 0 -9.9626 17.04 68.693)"/><path d="M58.754 71.1h17.061V56.324h-17.06z" fill="#fff"/><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M58.754 71.1h17.061V56.324h-17.06z"/><use xlink:href="#e" transform="matrix(9.9626 0 0 -9.9626 63.129 67.115)"/><path stroke-width=".797" stroke-dasharray="4.98138,2.98883" stroke-miterlimit="10" fill="none" stroke="red" d="M45.842 14.788v64.247"/><use xlink:href="#k" transform="matrix(9.9626 0 0 -9.9626 44.24 10.405)"/><path stroke-width=".797" stroke-dasharray="4.98138,2.98883" stroke-miterlimit="10" fill="none" stroke="red" d="M88.727 14.788v64.247"/><symbol id="l"><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="#l" transform="matrix(9.9626 0 0 -9.9626 86.735 10.405)"/><path stroke-width=".797" stroke-dasharray="4.98138,2.98883" stroke-miterlimit="10" fill="none" stroke="red" d="M122.838 14.788v64.247"/><symbol id="m"><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="#m" transform="matrix(9.9626 0 0 -9.9626 120.765 10.624)"/><path stroke-width=".797" stroke-dasharray="4.98138,2.98883" stroke-miterlimit="10" fill="none" stroke="red" d="M165.722 14.788v64.247"/><symbol id="n"><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="#n" transform="matrix(9.9626 0 0 -9.9626 163.51 10.405)"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="58.985" height="44.623" viewBox="0 0 44.239 33.467"><path stroke-width=".797" stroke-linecap="round" stroke-miterlimit="10" fill="none" stroke="#000" d="M22.119 6.722v14.97M20.418 5.022H3.32M40.918 5.022H23.82M17.892 25.92H3.32M40.918 25.92H26.346"/><path d="M23.82 5.021a1.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="M23.82 5.021a1.7 1.7 0 1 0-3.402 0 1.7 1.7 0 0 0 3.402 0zm-1.701 0"/><clipPath id="a"><path transform="matrix(1 0 0 -1 22.119 25.919)" d="M4.227 0a4.227 4.227 0 1 1-8.454 0 4.227 4.227 0 0 1 8.454 0zM0 0"/></clipPath><g clip-path="url(#a)"><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M22.119 21.692v8.454m-4.227-4.227h8.454"/></g><path stroke-width=".797" stroke-miterlimit="10" fill="none" stroke="#000" d="M26.346 25.919a4.227 4.227 0 1 0-8.454 0 4.227 4.227 0 0 0 8.454 0zm-4.227 0"/></svg>
\ No newline at end of file
......@@ -2,12 +2,12 @@
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.4.553">
<meta name="generator" content="quarto-1.7.31">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>Introduction to Quantum Computing - 8&nbsp; Bernstein-Vazirani Algorithm</title>
<title>9&nbsp; Bernstein-Vazirani Algorithm – Introduction to Quantum Computing</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
......@@ -23,24 +23,25 @@ ul.task-list li input[type="checkbox"] {
</style>
<script src="site_libs/quarto-nav/quarto-nav.js"></script>
<script src="site_libs/quarto-nav/headroom.min.js"></script>
<script src="site_libs/clipboard/clipboard.min.js"></script>
<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="site_libs/quarto-search/fuse.min.js"></script>
<script src="site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="./">
<link href="./shorsAlgorithm.html" rel="next">
<link href="./quantumAlgorithms.html" rel="prev">
<script src="site_libs/quarto-html/quarto.js"></script>
<script src="site_libs/quarto-html/popper.min.js"></script>
<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="site_libs/quarto-html/anchor.min.js"></script>
<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light">
<script src="../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../site_libs/clipboard/clipboard.min.js"></script>
<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../site_libs/quarto-search/fuse.min.js"></script>
<script src="../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../">
<link href="../content/dft.html" rel="next">
<link href="../content/ketNotation.html" rel="prev">
<script src="../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../site_libs/quarto-html/popper.min.js"></script>
<script src="../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../site_libs/quarto-html/anchor.min.js"></script>
<link href="../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../site_libs/quarto-html/quarto-syntax-highlighting-e1a5c8363afafaef2c763b6775fbf3ca.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../site_libs/bootstrap/bootstrap-364982630eef5352dd1537128a8ed5cb.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "sidebar",
"copy-button": false,
......@@ -69,7 +70,7 @@ ul.task-list li input[type="checkbox"] {
}
}</script>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js" type="text/javascript"></script>
<script type="text/javascript">
......@@ -101,19 +102,19 @@ window.Quarto = {
</head>
<body class="nav-sidebar floating">
<body class="nav-sidebar floating quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top">
<nav class="quarto-secondary-nav">
<div class="container-fluid d-flex">
<button type="button" class="quarto-btn-toggle btn" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<button type="button" class="quarto-btn-toggle btn" data-bs-toggle="collapse" role="button" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<i class="bi bi-layout-text-sidebar-reverse"></i>
</button>
<nav class="quarto-page-breadcrumbs" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="./quantumAlgorithms.html">Quantum Algorithms</a></li><li class="breadcrumb-item"><a href="./bernsteinVazirani.html"><span class="chapter-number">8</span>&nbsp; <span class="chapter-title">Bernstein-Vazirani Algorithm</span></a></li></ol></nav>
<a class="flex-grow-1" role="button" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<nav class="quarto-page-breadcrumbs" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="../content/bernsteinVazirani.html">Quantum algorithms</a></li><li class="breadcrumb-item"><a href="../content/bernsteinVazirani.html"><span class="chapter-number">9</span>&nbsp; <span class="chapter-title">Bernstein-Vazirani Algorithm</span></a></li></ol></nav>
<a class="flex-grow-1" role="navigation" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
</a>
<button type="button" class="btn quarto-search-button" aria-label="" onclick="window.quartoOpenSearch();">
<button type="button" class="btn quarto-search-button" aria-label="Search" onclick="window.quartoOpenSearch();">
<i class="bi bi-search"></i>
</button>
</div>
......@@ -125,26 +126,10 @@ window.Quarto = {
<nav id="quarto-sidebar" class="sidebar collapse collapse-horizontal quarto-sidebar-collapse-item sidebar-navigation floating overflow-auto">
<div class="pt-lg-2 mt-2 text-left sidebar-header">
<div class="sidebar-title mb-0 py-0">
<a href="./">Introduction to Quantum Computing</a>
<a href="../">Introduction to Quantum Computing</a>
<div class="sidebar-tools-main">
<a href="https://git.rwth-aachen.de/j1/intro-qc/" title="Source Code" class="quarto-navigation-tool px-1" aria-label="Source Code"><i class="bi bi-git"></i></a>
<div class="dropdown">
<a href="" title="Download" id="quarto-navigation-tool-dropdown-0" class="quarto-navigation-tool dropdown-toggle px-1" data-bs-toggle="dropdown" aria-expanded="false" aria-label="Download"><i class="bi bi-download"></i></a>
<ul class="dropdown-menu" aria-labelledby="quarto-navigation-tool-dropdown-0">
<li>
<a class="dropdown-item sidebar-tools-main-item" href="./Introduction-to-Quantum-Computing.pdf">
<i class="bi bi-bi-file-pdf pe-1"></i>
Download PDF
</a>
</li>
<li>
<a class="dropdown-item sidebar-tools-main-item" href="./Introduction-to-Quantum-Computing.epub">
<i class="bi bi-bi-journal pe-1"></i>
Download ePub
</a>
</li>
</ul>
</div>
<a href="https://git.rwth-aachen.de/unruh/script-intro-qc/" title="Source Code" class="quarto-navigation-tool px-1" aria-label="Source Code"><i class="bi bi-git"></i></a>
<a href="../Introduction-to-Quantum-Computing.pdf" title="Download PDF" class="quarto-navigation-tool px-1" aria-label="Download PDF"><i class="bi bi-file-pdf"></i></a>
</div>
</div>
</div>
......@@ -157,129 +142,100 @@ window.Quarto = {
<ul class="list-unstyled mt-1">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./index.html" class="sidebar-item-text sidebar-link">
<a href="../index.html" class="sidebar-item-text sidebar-link">
<span class="menu-text">Welcome</span></a>
</div>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a href="./quantumBasics.html" class="sidebar-item-text sidebar-link">
<span class="menu-text">Quantum Basics</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-1" aria-expanded="true" aria-label="Toggle section">
<a class="sidebar-item-text sidebar-link text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-1" role="navigation" aria-expanded="true">
<span class="menu-text">Quantum basics</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-1" role="navigation" aria-expanded="true" aria-label="Toggle section">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-1" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./introduction.html" class="sidebar-item-text sidebar-link">
<a href="../content/introduction.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">1</span>&nbsp; <span class="chapter-title">Introduction</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./probabilisticSystems.html" class="sidebar-item-text sidebar-link">
<a href="../content/probabilisticSystems.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">2</span>&nbsp; <span class="chapter-title">Probabilistic systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./quantumSystems.html" class="sidebar-item-text sidebar-link">
<a href="../content/quantumSystems.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">3</span>&nbsp; <span class="chapter-title">Quantum systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./observingSystems.html" class="sidebar-item-text sidebar-link">
<a href="../content/observingSystems.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">4</span>&nbsp; <span class="chapter-title">Observing probabilistic and measuring quantum systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./partialObserving.html" class="sidebar-item-text sidebar-link">
<a href="../content/partialObserving.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">5</span>&nbsp; <span class="chapter-title">Partial observing and measuring systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./compositeSystems.html" class="sidebar-item-text sidebar-link">
<a href="../content/compositeSystems.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">6</span>&nbsp; <span class="chapter-title">Composite Systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./quantumCircutsKetNotation.html" class="sidebar-item-text sidebar-link">
<a href="../content/quantumCircuits.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">7</span>&nbsp; <span class="chapter-title">Quantum Circuits</span></span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a href="./quantumAlgorithms.html" class="sidebar-item-text sidebar-link">
<span class="menu-text">Quantum Algorithms</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-2" aria-expanded="true" aria-label="Toggle section">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-2" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./bernsteinVazirani.html" class="sidebar-item-text sidebar-link active">
<span class="menu-text"><span class="chapter-number">8</span>&nbsp; <span class="chapter-title">Bernstein-Vazirani Algorithm</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./shorsAlgorithm.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">9</span>&nbsp; <span class="chapter-title">Shor’s Algorithm</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./groversAlgorithm.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">Grover’s algorithm</span></span></a>
<a href="../content/ketNotation.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">8</span>&nbsp; <span class="chapter-title">Ket Notation</span></span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a href="./physicalBackground.html" class="sidebar-item-text sidebar-link">
<span class="menu-text">Physical Background</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-3" aria-expanded="true" aria-label="Toggle section">
<a class="sidebar-item-text sidebar-link text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-2" role="navigation" aria-expanded="true">
<span class="menu-text">Quantum algorithms</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-2" role="navigation" aria-expanded="true" aria-label="Toggle section">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-3" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./physics.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">11</span>&nbsp; <span class="chapter-title">Quantum Physics</span></span></a>
</div>
</li>
<ul id="quarto-sidebar-section-2" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./physicsToQC.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">12</span>&nbsp; <span class="chapter-title">From Quantum Physics to a Quantum Computer</span></span></a>
<a href="../content/bernsteinVazirani.html" class="sidebar-item-text sidebar-link active">
<span class="menu-text"><span class="chapter-number">9</span>&nbsp; <span class="chapter-title">Bernstein-Vazirani Algorithm</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./ionBasedQC.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">13</span>&nbsp; <span class="chapter-title">Ion-based quantum computers</span></span></a>
<a href="../content/dft.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">Discrete Fourier Transformation</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./universalGates.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">14</span>&nbsp; <span class="chapter-title">Universal set of gates</span></span></a>
<a href="../content/shorsAlgorithm.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">11</span>&nbsp; <span class="chapter-title">Shor’s Algorithm</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./errorCorrection.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">15</span>&nbsp; <span class="chapter-title">Repetition code</span></span></a>
<a href="../content/groversAlgorithm.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">12</span>&nbsp; <span class="chapter-title">Grover’s algorithm</span></span></a>
</div>
</li>
</ul>
......@@ -289,15 +245,15 @@ window.Quarto = {
</nav>
<div id="quarto-sidebar-glass" class="quarto-sidebar-collapse-item" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item"></div>
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar zindex-bottom">
</div>
<!-- main -->
<main class="content" id="quarto-document-content">
<header id="title-block-header" class="quarto-title-block default"><nav class="quarto-page-breadcrumbs quarto-title-breadcrumbs d-none d-lg-block" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="./quantumAlgorithms.html">Quantum Algorithms</a></li><li class="breadcrumb-item"><a href="./bernsteinVazirani.html"><span class="chapter-number">8</span>&nbsp; <span class="chapter-title">Bernstein-Vazirani Algorithm</span></a></li></ol></nav>
<header id="title-block-header" class="quarto-title-block default"><nav class="quarto-page-breadcrumbs quarto-title-breadcrumbs d-none d-lg-block" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="../content/bernsteinVazirani.html">Quantum algorithms</a></li><li class="breadcrumb-item"><a href="../content/bernsteinVazirani.html"><span class="chapter-number">9</span>&nbsp; <span class="chapter-title">Bernstein-Vazirani Algorithm</span></a></li></ol></nav>
<div class="quarto-title">
<h1 class="title"><span class="chapter-number">8</span>&nbsp; <span class="chapter-title">Bernstein-Vazirani Algorithm</span></h1>
<h1 class="title"><span class="chapter-number">9</span>&nbsp; <span class="chapter-title">Bernstein-Vazirani Algorithm</span></h1>
</div>
......@@ -321,35 +277,40 @@ window.Quarto = {
<p>We will now look at a quantum algorithm which will find <span class="math inline">\(s\)</span> with only one evaluation of <span class="math inline">\(f\)</span>. This algorithm is sketched in the following circuit:</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="bernstein_vazirani.svg" class="img-fluid figure-img" style="width:90.0%"></p>
<p><img src="img/bernstein_vazirani.svg" class="img-fluid figure-img" style="width:90.0%"></p>
<figcaption>The quantum circuit for Bernstein-Vazirani</figcaption>
</figure>
</div>
<p>Note that <span class="math inline">\(U_f\)</span> is defined with the explanation below.</p>
<p>We start with <span class="math inline">\(n\)</span> qubits on the top wire. All of these qubits are in the state <span class="math inline">\(\ket{0}\)</span>, which we write <span class="math inline">\(\ket{0}^n = \ket{0} \otimes \dots \otimes \ket{0}\)</span>. The bottom wire is in the state <span class="math inline">\(\ket{1}\)</span>. Both wires composed together can be written as <span class="math inline">\(\psi_1 = \ket{0}^n \otimes \ket{1}\)</span>, which is the overall starting state of our algorithm (the state at slice 1). We now perform the following steps</p>
<p>We start with <span class="math inline">\(n\)</span> qubits on the top wire. All of these qubits are in the state <span class="math inline">\(\ket{0}\)</span>, which we write <span class="math inline">\(\ket{0}^n = \ket{0} \otimes \dots \otimes \ket{0}\)</span>. The bottom wire is in the state <span class="math inline">\(\ket{1}\)</span>. Both wires composed together can be written as <span class="math inline">\(\ket{\psi_0} = \ket{0^n1} = \ket{0}^n \otimes \ket{1}\)</span>, which is the overall starting state of our algorithm. We now perform the following steps</p>
<ol type="1">
<li><p>First we apply a Hadamard gate on all qubits. This is denoted for the first <span class="math inline">\(n\)</span> qubits by the <span class="math inline">\(H^{\otimes n}\)</span> gate and for the last qubit by the <span class="math inline">\(H\)</span> gate on the bottom wire. The resulting quantum state is calculated as follows: <span class="math display">\[
\begin{aligned}
\psi_2&amp;= \left(H^{\otimes n} \otimes H\right) \left(\ket{0}^n \otimes \ket{1}\right)\\
\ket{\psi_1}
&amp;= \left(H^{\otimes n} \otimes H\right) \left(\ket{\psi_0}\right)\\
&amp;= \left(H^{\otimes n} \otimes H\right) \left(\ket{0}^n \otimes \ket{1}\right)\\
&amp;=\left(H^{\otimes n}\ket{0}^n\right) \otimes H\ket{1}\\
&amp;=\left(\ket{+}\right)^{\otimes n} \otimes \ket{-}\\
&amp;=\ket{+}^{\otimes n} \otimes \ket{-}\\
&amp;=\left(\frac{1}{\sqrt{2}} \ket{0} + \frac{1}{\sqrt{2}} \ket{1} \right)^{\otimes n} \otimes \ket{-}\\
&amp;=\frac{1}{\sqrt{2^{n}}}\sum_{x\in \{0,1\}^n} \ket{x} \otimes \ket{-}
\end{aligned}
\]</span> Roughly speaking, we are now in the superposition over all classical possibilities on the top wire and in <span class="math inline">\(\ket{-}\)</span> on the bottom wire at slice 2.</p></li>
\]</span> Roughly speaking, we are now in the superposition over all classical possibilities on the top wire and in <span class="math inline">\(\ket{-}\)</span> on the bottom wire.</p></li>
<li><p>Next, we apply the unitary <span class="math inline">\(U_f\)</span> on both wires. This unitary is defined as <span class="math display">\[
U_f\,\ket{x,y} = \ket{x,y \oplus f(x)}
\]</span> This unitary represents the function <span class="math inline">\(f\)</span> and combines the output of <span class="math inline">\(f(x)\)</span> with the bottom wire <span class="math inline">\(y\)</span>. For our quantum states, this means that the state after <span class="math inline">\(U_f\)</span> at slice 3 can be calculated as follows: <span class="math display">\[
\]</span> This unitary represents the function <span class="math inline">\(f\)</span> and combines the output of <span class="math inline">\(f(x)\)</span> with the bottom wire <span class="math inline">\(y\)</span>. For our quantum states, this means that the state after <span class="math inline">\(U_f\)</span> can be calculated as follows: <span class="math display">\[
\begin{aligned}
\psi_3&amp;=U_f\frac{1}{\sqrt{2^{n}}}\sum_{x\in \{0,1\}^n} \ket{x} \otimes \ket{-}\\
\ket{\psi_2}
&amp;= U_f\ket{\psi_1}\\
&amp;= U_f\frac{1}{\sqrt{2^{n}}}\sum_{x\in \{0,1\}^n} \ket{x} \otimes \ket{-}\\
&amp;= U_f\frac{1}{\sqrt{2^{n}}}\sum_{x\in \{0,1\}^n} \ket{x} \otimes \ket{-}\\
&amp;=\frac{1}{\sqrt{2^{n}}}\sum_{x\in \{0,1\}^n} U_f\Bigl (\ket{x} \otimes \ket{-}\Bigr) \\
&amp;\stackrel{*}{=}\frac{1}{\sqrt{2^{n}}}\sum_{x\in \{0,1\}^n} (-1)^{f(x)}\ket{x} \otimes \ket{-} \\
&amp;=\left(\frac{1}{\sqrt{2^{n}}}\sum_{x\in \{0,1\}^n} (-1)^{f(x)}\ket{x} \right) \otimes \ket{-}
\end{aligned}
\]</span> Note that the <span class="math inline">\(*\)</span> holds since we can rewrite <span class="math inline">\(U_f(\ket{x}\otimes\ket{-})\)</span> as <span class="math display">\[
\]</span> Note that the <span class="math inline">\(*\)</span> holds since we can rewrite <span class="math inline">\(U_f\Bigl(\ket{x}\otimes\ket{-}\Bigr)\)</span> as <span class="math display">\[
\begin{aligned}
&amp;U_f\Bigl(\ket{x}\otimes\ket{-}\Bigr)\\
&amp;= \frac{1}{\sqrt{2}} U_f\ket{x,0} - \frac{1}{\sqrt{2}} \ket{x,1}\\
U_f\Bigl(\ket{x}\otimes\ket{-}\Bigr)
&amp;= \frac{1}{\sqrt{2}} U_f\ket{x,0} - \frac{1}{\sqrt{2}} U_f\ket{x,1}\\
&amp;= \frac{1}{\sqrt{2}} \ket{x,f(x)} - \frac{1}{\sqrt{2}} \ket{x,\overline{f(x)}}\\
&amp;= \begin{cases} \frac{1}{\sqrt{2}} \ket{x,0} - \frac{1}{\sqrt{2}} \ket{x,1} &amp; f(x)=0\\
\frac{1}{\sqrt{2}} \ket{x,1} - \frac{1}{\sqrt{2}} \ket{x,0} &amp; f(x)=1 \end{cases}\\
......@@ -358,9 +319,11 @@ U_f\,\ket{x,y} = \ket{x,y \oplus f(x)}
&amp;= (-1)^{f(x)} \ket{x} \otimes \ket{-}
\end{aligned}
\]</span> The bottom wire has not changed and is still <span class="math inline">\(\ket{-}\)</span>. But on the top wire, we now have <span class="math inline">\(f(x)\)</span> somehow encoded into our quantum state. The phenomenon that the output of <span class="math inline">\(f\)</span> is encoded as a <span class="math inline">\(-1\)</span> in the input register is called phase kickback. Measuring this quantum state would not give us any advantage, since we would just get one random <span class="math inline">\(x\)</span>. We therefore perform one final step before measuring.</p></li>
<li><p>As the final unitary, we perform another <span class="math inline">\(H^{\otimes n}\)</span> on the top wire. We hope that the result of this unitary transformation is the state <span class="math inline">\(\ket{s}\)</span>. To check, whether our hopes become reality, we can calculate <span class="math inline">\(\left(H^{\otimes n}\right)^\dagger \ket{s} \otimes \ket{-}\)</span> and check if it is equal to <span class="math inline">\(\psi_3\)</span>. We do it in this direction, since these calculations are a bit simpler: <span class="math display">\[
<li><p>As the final unitary, we perform another <span class="math inline">\(H^{\otimes n}\)</span> on the top wire. We hope that the result of this unitary transformation is the state <span class="math inline">\(\ket{\psi_3} = \ket{s} \otimes \ket{-}\)</span>. To check, whether our hopes become reality, we can calculate <span class="math inline">\(\left(H^{\otimes n}\right)^\dagger \ket{s} \otimes \ket{-}\)</span> and check if it is equal to <span class="math inline">\(\ket{\psi_2}\)</span>. We do it in this direction, since these calculations are a bit simpler: <span class="math display">\[
\begin{aligned}
\left( H^{\otimes n}\right )^\dagger \ket{s}\otimes \ket{-} &amp;= H^{\otimes n} \ket{s}\otimes \ket{-} \\
\left(\left( H^{\otimes n}\right )^\dagger \otimes I \right) \ket{\psi_3}
&amp;= \left( H^{\otimes n}\right )^\dagger \ket{s}\otimes \ket{-}\\
&amp;= H^{\otimes n} \ket{s}\otimes \ket{-} \\
&amp;= H^{\otimes n} (\ket{s_1} \otimes \dots \otimes \ket{s_n})\otimes \ket{-}\\
&amp;= H\ket{s_1} \otimes \dots \otimes H\ket{s_n}\otimes \ket{-}\\
&amp;= \bigotimes_{i=1}^n \left(\frac{1}{\sqrt{2}} \ket{0} + (-1)^{s_i}\frac{1}{\sqrt{2}} \ket{1}\right) \otimes \ket{-}\\
......@@ -369,9 +332,9 @@ U_f\,\ket{x,y} = \ket{x,y \oplus f(x)}
&amp;=\frac{1}{\sqrt{2^{n}}}\sum_{x\in\{0,1\}^n} \left( (-1)^{\sum_i x_is_i \bmod 2}\ket{x}\right) \otimes \ket{-}\\
&amp;=\frac{1}{\sqrt{2^{n}}}\sum_{x\in\{0,1\}^n} (-1)^{s\cdot x}\ket{x} \otimes \ket{-}\\
&amp;=\frac{1}{\sqrt{2^{n}}}\sum_{x\in \{0,1\}^n} (-1)^{f(x)}\ket{x} \otimes \ket{-}\\
&amp;= \psi_3
&amp;= \ket{\psi_2}
\end{aligned}
\]</span> This calculation shows that we have the quantum state <span class="math inline">\(\ket{s} \otimes \ket{-}\)</span> at slice 4.</p></li>
\]</span> This calculation shows that we have the quantum state <span class="math inline">\(\ket{s} \otimes \ket{-}\)</span> before the measurement.</p></li>
<li><p>We now perform a measurement on the top wire and measure <span class="math inline">\(s\)</span> as a result.</p></li>
</ol>
<p>This concludes the Bernstein-Vazirani algorithm.</p>
......@@ -381,24 +344,6 @@ U_f\,\ket{x,y} = \ket{x,y \oplus f(x)}
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const toggleBodyColorMode = (bsSheetEl) => {
const mode = bsSheetEl.getAttribute("data-mode");
const bodyEl = window.document.querySelector("body");
if (mode === "dark") {
bodyEl.classList.add("quarto-dark");
bodyEl.classList.remove("quarto-light");
} else {
bodyEl.classList.add("quarto-light");
bodyEl.classList.remove("quarto-dark");
}
}
const toggleBodyColorPrimary = () => {
const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
if (bsSheetEl) {
toggleBodyColorMode(bsSheetEl);
}
}
toggleBodyColorPrimary();
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
......@@ -414,18 +359,7 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
}
return false;
}
const clipboard = new window.ClipboardJS('.code-copy-button', {
text: function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
});
clipboard.on('success', function(e) {
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
......@@ -457,15 +391,35 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp("https:\/\/qis\.rwth-aachen\.de\/teaching\/24ss\/intro-quantum-computing\/script\/");
var filterRegex = new RegExp("https:\/\/qis\.rwth-aachen\.de\/teaching\/25ss\/intro-quantum-computing\/script\/");
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool)');
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
......@@ -562,7 +516,6 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
// TODO in 1.5, we should make sure this works without a callout special case
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
......@@ -790,13 +743,13 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
</script>
<nav class="page-navigation">
<div class="nav-page nav-page-previous">
<a href="./quantumAlgorithms.html" class="pagination-link" aria-label="Quantum Algorithms">
<i class="bi bi-arrow-left-short"></i> <span class="nav-page-text">Quantum Algorithms</span>
<a href="../content/ketNotation.html" class="pagination-link" aria-label="Ket Notation">
<i class="bi bi-arrow-left-short"></i> <span class="nav-page-text"><span class="chapter-number">8</span>&nbsp; <span class="chapter-title">Ket Notation</span></span>
</a>
</div>
<div class="nav-page nav-page-next">
<a href="./shorsAlgorithm.html" class="pagination-link" aria-label="Shor's Algorithm">
<span class="nav-page-text"><span class="chapter-number">9</span>&nbsp; <span class="chapter-title">Shor’s Algorithm</span></span> <i class="bi bi-arrow-right-short"></i>
<a href="../content/dft.html" class="pagination-link" aria-label="Discrete Fourier Transformation">
<span class="nav-page-text"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">Discrete Fourier Transformation</span></span> <i class="bi bi-arrow-right-short"></i>
</a>
</div>
</nav>
......
......@@ -2,12 +2,12 @@
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.4.553">
<meta name="generator" content="quarto-1.7.31">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>Introduction to Quantum Computing - 6&nbsp; Composite Systems</title>
<title>6&nbsp; Composite Systems – Introduction to Quantum Computing</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
......@@ -23,24 +23,25 @@ ul.task-list li input[type="checkbox"] {
</style>
<script src="site_libs/quarto-nav/quarto-nav.js"></script>
<script src="site_libs/quarto-nav/headroom.min.js"></script>
<script src="site_libs/clipboard/clipboard.min.js"></script>
<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="site_libs/quarto-search/fuse.min.js"></script>
<script src="site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="./">
<link href="./quantumCircutsKetNotation.html" rel="next">
<link href="./partialObserving.html" rel="prev">
<script src="site_libs/quarto-html/quarto.js"></script>
<script src="site_libs/quarto-html/popper.min.js"></script>
<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="site_libs/quarto-html/anchor.min.js"></script>
<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light">
<script src="../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../site_libs/clipboard/clipboard.min.js"></script>
<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../site_libs/quarto-search/fuse.min.js"></script>
<script src="../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../">
<link href="../content/quantumCircuits.html" rel="next">
<link href="../content/partialObserving.html" rel="prev">
<script src="../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../site_libs/quarto-html/popper.min.js"></script>
<script src="../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../site_libs/quarto-html/anchor.min.js"></script>
<link href="../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../site_libs/quarto-html/quarto-syntax-highlighting-e1a5c8363afafaef2c763b6775fbf3ca.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../site_libs/bootstrap/bootstrap-364982630eef5352dd1537128a8ed5cb.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "sidebar",
"copy-button": false,
......@@ -69,7 +70,7 @@ ul.task-list li input[type="checkbox"] {
}
}</script>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js" type="text/javascript"></script>
<script type="text/javascript">
......@@ -101,19 +102,19 @@ window.Quarto = {
</head>
<body class="nav-sidebar floating">
<body class="nav-sidebar floating quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top">
<nav class="quarto-secondary-nav">
<div class="container-fluid d-flex">
<button type="button" class="quarto-btn-toggle btn" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<button type="button" class="quarto-btn-toggle btn" data-bs-toggle="collapse" role="button" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<i class="bi bi-layout-text-sidebar-reverse"></i>
</button>
<nav class="quarto-page-breadcrumbs" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="./quantumBasics.html">Quantum Basics</a></li><li class="breadcrumb-item"><a href="./compositeSystems.html"><span class="chapter-number">6</span>&nbsp; <span class="chapter-title">Composite Systems</span></a></li></ol></nav>
<a class="flex-grow-1" role="button" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<nav class="quarto-page-breadcrumbs" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="../content/introduction.html">Quantum basics</a></li><li class="breadcrumb-item"><a href="../content/compositeSystems.html"><span class="chapter-number">6</span>&nbsp; <span class="chapter-title">Composite Systems</span></a></li></ol></nav>
<a class="flex-grow-1" role="navigation" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
</a>
<button type="button" class="btn quarto-search-button" aria-label="" onclick="window.quartoOpenSearch();">
<button type="button" class="btn quarto-search-button" aria-label="Search" onclick="window.quartoOpenSearch();">
<i class="bi bi-search"></i>
</button>
</div>
......@@ -125,26 +126,10 @@ window.Quarto = {
<nav id="quarto-sidebar" class="sidebar collapse collapse-horizontal quarto-sidebar-collapse-item sidebar-navigation floating overflow-auto">
<div class="pt-lg-2 mt-2 text-left sidebar-header">
<div class="sidebar-title mb-0 py-0">
<a href="./">Introduction to Quantum Computing</a>
<a href="../">Introduction to Quantum Computing</a>
<div class="sidebar-tools-main">
<a href="https://git.rwth-aachen.de/j1/intro-qc/" title="Source Code" class="quarto-navigation-tool px-1" aria-label="Source Code"><i class="bi bi-git"></i></a>
<div class="dropdown">
<a href="" title="Download" id="quarto-navigation-tool-dropdown-0" class="quarto-navigation-tool dropdown-toggle px-1" data-bs-toggle="dropdown" aria-expanded="false" aria-label="Download"><i class="bi bi-download"></i></a>
<ul class="dropdown-menu" aria-labelledby="quarto-navigation-tool-dropdown-0">
<li>
<a class="dropdown-item sidebar-tools-main-item" href="./Introduction-to-Quantum-Computing.pdf">
<i class="bi bi-bi-file-pdf pe-1"></i>
Download PDF
</a>
</li>
<li>
<a class="dropdown-item sidebar-tools-main-item" href="./Introduction-to-Quantum-Computing.epub">
<i class="bi bi-bi-journal pe-1"></i>
Download ePub
</a>
</li>
</ul>
</div>
<a href="https://git.rwth-aachen.de/unruh/script-intro-qc/" title="Source Code" class="quarto-navigation-tool px-1" aria-label="Source Code"><i class="bi bi-git"></i></a>
<a href="../Introduction-to-Quantum-Computing.pdf" title="Download PDF" class="quarto-navigation-tool px-1" aria-label="Download PDF"><i class="bi bi-file-pdf"></i></a>
</div>
</div>
</div>
......@@ -157,129 +142,100 @@ window.Quarto = {
<ul class="list-unstyled mt-1">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./index.html" class="sidebar-item-text sidebar-link">
<a href="../index.html" class="sidebar-item-text sidebar-link">
<span class="menu-text">Welcome</span></a>
</div>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a href="./quantumBasics.html" class="sidebar-item-text sidebar-link">
<span class="menu-text">Quantum Basics</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-1" aria-expanded="true" aria-label="Toggle section">
<a class="sidebar-item-text sidebar-link text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-1" role="navigation" aria-expanded="true">
<span class="menu-text">Quantum basics</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-1" role="navigation" aria-expanded="true" aria-label="Toggle section">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-1" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./introduction.html" class="sidebar-item-text sidebar-link">
<a href="../content/introduction.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">1</span>&nbsp; <span class="chapter-title">Introduction</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./probabilisticSystems.html" class="sidebar-item-text sidebar-link">
<a href="../content/probabilisticSystems.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">2</span>&nbsp; <span class="chapter-title">Probabilistic systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./quantumSystems.html" class="sidebar-item-text sidebar-link">
<a href="../content/quantumSystems.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">3</span>&nbsp; <span class="chapter-title">Quantum systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./observingSystems.html" class="sidebar-item-text sidebar-link">
<a href="../content/observingSystems.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">4</span>&nbsp; <span class="chapter-title">Observing probabilistic and measuring quantum systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./partialObserving.html" class="sidebar-item-text sidebar-link">
<a href="../content/partialObserving.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">5</span>&nbsp; <span class="chapter-title">Partial observing and measuring systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./compositeSystems.html" class="sidebar-item-text sidebar-link active">
<a href="../content/compositeSystems.html" class="sidebar-item-text sidebar-link active">
<span class="menu-text"><span class="chapter-number">6</span>&nbsp; <span class="chapter-title">Composite Systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./quantumCircutsKetNotation.html" class="sidebar-item-text sidebar-link">
<a href="../content/quantumCircuits.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">7</span>&nbsp; <span class="chapter-title">Quantum Circuits</span></span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a href="./quantumAlgorithms.html" class="sidebar-item-text sidebar-link">
<span class="menu-text">Quantum Algorithms</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-2" aria-expanded="true" aria-label="Toggle section">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-2" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./bernsteinVazirani.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">8</span>&nbsp; <span class="chapter-title">Bernstein-Vazirani Algorithm</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./shorsAlgorithm.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">9</span>&nbsp; <span class="chapter-title">Shor’s Algorithm</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./groversAlgorithm.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">Grover’s algorithm</span></span></a>
<a href="../content/ketNotation.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">8</span>&nbsp; <span class="chapter-title">Ket Notation</span></span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a href="./physicalBackground.html" class="sidebar-item-text sidebar-link">
<span class="menu-text">Physical Background</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-3" aria-expanded="true" aria-label="Toggle section">
<a class="sidebar-item-text sidebar-link text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-2" role="navigation" aria-expanded="true">
<span class="menu-text">Quantum algorithms</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-2" role="navigation" aria-expanded="true" aria-label="Toggle section">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-3" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./physics.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">11</span>&nbsp; <span class="chapter-title">Quantum Physics</span></span></a>
</div>
</li>
<ul id="quarto-sidebar-section-2" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./physicsToQC.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">12</span>&nbsp; <span class="chapter-title">From Quantum Physics to a Quantum Computer</span></span></a>
<a href="../content/bernsteinVazirani.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">9</span>&nbsp; <span class="chapter-title">Bernstein-Vazirani Algorithm</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./ionBasedQC.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">13</span>&nbsp; <span class="chapter-title">Ion-based quantum computers</span></span></a>
<a href="../content/dft.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">Discrete Fourier Transformation</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./universalGates.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">14</span>&nbsp; <span class="chapter-title">Universal set of gates</span></span></a>
<a href="../content/shorsAlgorithm.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">11</span>&nbsp; <span class="chapter-title">Shor’s Algorithm</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./errorCorrection.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">15</span>&nbsp; <span class="chapter-title">Repetition code</span></span></a>
<a href="../content/groversAlgorithm.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">12</span>&nbsp; <span class="chapter-title">Grover’s algorithm</span></span></a>
</div>
</li>
</ul>
......@@ -302,7 +258,7 @@ window.Quarto = {
<!-- main -->
<main class="content" id="quarto-document-content">
<header id="title-block-header" class="quarto-title-block default"><nav class="quarto-page-breadcrumbs quarto-title-breadcrumbs d-none d-lg-block" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="./quantumBasics.html">Quantum Basics</a></li><li class="breadcrumb-item"><a href="./compositeSystems.html"><span class="chapter-number">6</span>&nbsp; <span class="chapter-title">Composite Systems</span></a></li></ol></nav>
<header id="title-block-header" class="quarto-title-block default"><nav class="quarto-page-breadcrumbs quarto-title-breadcrumbs d-none d-lg-block" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="../content/introduction.html">Quantum basics</a></li><li class="breadcrumb-item"><a href="../content/compositeSystems.html"><span class="chapter-number">6</span>&nbsp; <span class="chapter-title">Composite Systems</span></a></li></ol></nav>
<div class="quarto-title">
<h1 class="title"><span class="chapter-number">6</span>&nbsp; <span class="chapter-title">Composite Systems</span></h1>
</div>
......@@ -333,33 +289,40 @@ window.Quarto = {
</div>
<div class="callout-body-container">
<div id="def-composite-systems" class="definition theorem">
<p><span class="theorem-title"><strong>Definition 6.1 (Composite systems / Tensor product)</strong></span> Given two probabilistic or quantum systems <span class="math inline">\(A\)</span> and <span class="math inline">\(B\)</span> with the possibilities of <span class="math inline">\(A\)</span> given by <span class="math inline">\(1,\dots,N\)</span><a href="#fn1" class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a> and a distribution/state <span class="math inline">\(a\)</span> and with the possibilities of <span class="math inline">\(B\)</span> given by <span class="math inline">\(1,\dots,M\)</span> and a distribution/state <span class="math inline">\(b\)</span>, the <em>composite</em> system called <span class="math inline">\(AB\)</span> has the possibilities <span class="math display">\[
11,12,\dots,1M,21,22,\dots,2M,\dots,N1,N2,\dots,NM
\]</span></p>
<p>and the distribution/state <span class="math inline">\(ab\)</span> of <span class="math inline">\(AB\)</span> is given by the <em>tensor product</em> <span class="math display">\[
ab= a \otimes b = \begin{pmatrix} a_1 \cdot b\\ \vdots \\ a_N \cdot b \end{pmatrix}
\]</span> This vector has the size <span class="math inline">\(NM\)</span>.</p>
<p><span class="theorem-title"><strong>Definition 6.1 (Composite systems / Tensor product)</strong></span> Given two probabilistic or quantum systems <span class="math inline">\(A\)</span> and <span class="math inline">\(B\)</span> with the possibilities of <span class="math inline">\(A\)</span> given by <span class="math inline">\(x_1, \dots, x_N\)</span> and a distribution/state <span class="math inline">\(\mu_A\)</span> and with the possibilities of <span class="math inline">\(B\)</span> given by <span class="math inline">\(y_1, \dots, y_M\)</span> and a distribution/state <span class="math inline">\(\mu_B\)</span>, the <em>composite</em> system called <span class="math inline">\(AB\)</span> has the possibilities <span class="math display">\[
x_1y_1, x_1y_2, \dots, x_1y_M, x_2y_1, x_2y_2, \dots, x_2y_M,\dots, x_Ny_1, x_Ny_2, \dots, x_Ny_M
\]</span> and the distribution/state <span class="math inline">\(\mu_{AB}\)</span> of <span class="math inline">\(AB\)</span> is given by the <em>tensor product</em> <span class="math display">\[
\mu_{AB}
\coloneqq \mu_A \otimes \mu_B
= \begin{pmatrix} (\mu_A)_1 \cdot \mu_b \\ \vdots \\ (\mu_A)_N \cdot \mu_b \end{pmatrix}.
\]</span> This vector has the size <span class="math inline">\(NM\)</span>. Here <span class="math inline">\((\mu_A)_i\)</span> stands for the i-th entry of <span class="math inline">\(\mu_A\)</span>.</p>
</div>
</div>
</div>
</div>
<p>Note that the definition of combining a probabilistic and a quantum system are the same.</p>
<p>The definition of combining a probabilistic and a quantum system are the same.</p>
<p>Notice that the entry corresponding to the possibility <span class="math inline">\(x_i y_j\)</span> in the composite system is then <span class="math inline">\((\mu_{AB})_{x_i y_j} = (\mu_A)_{x_i} (\mu_B)_{y_j}\)</span>. Here we identify the classical possibility <span class="math inline">\(x_i\)</span> and <span class="math inline">\(y_j\)</span> with the indices <span class="math inline">\(1, \dots, N\)</span> and <span class="math inline">\(1, \dots, M\)</span>, respectively the classical possibility <span class="math inline">\(x_i y_j\)</span> with the indices <span class="math inline">\(1, \dots, NM\)</span>. (So <span class="math inline">\((\mu_{AB})_{x_i y_j}\)</span> has just one index, namely <span class="math inline">\(x_i y_j \in \{1, \dots NM \}\)</span>.)</p>
<div class="callout callout-style-simple callout-tip no-icon callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Example: Tensor product
Example: Composite system
</div>
</div>
<div class="callout-body-container callout-body">
<p>Given two vectors <span class="math inline">\(a\)</span> and <span class="math inline">\(b\)</span>, with <span class="math display">\[
<p>Let the distributions for the system <span class="math inline">\(A\)</span> with the possibilities <span class="math inline">\(1,2\)</span> and the system <span class="math inline">\(B\)</span> with the possibilities <span class="math inline">\(a,b,c\)</span> be given by <span class="math display">\[
\begin{aligned}
a &amp;= \begin{pmatrix} 1 \\ 2 \\ 4 \end{pmatrix} &amp; b &amp;= \begin{pmatrix} 10 \\ 100 \end{pmatrix}
\mu_A &amp;= \begin{pmatrix} \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} \end{pmatrix},&amp;
\mu_B &amp;= \begin{pmatrix} \frac{1}{2} \\ 0 \\ \frac{\sqrt{3}}{2} \end{pmatrix}.
\end{aligned}
\]</span> the tensor product of those vectors is given by <span class="math display">\[
a\otimes b = \begin{pmatrix} 1 \\ 2 \\ 4 \end{pmatrix} \otimes \begin{pmatrix} 10 \\ 100 \end{pmatrix} = \begin{pmatrix} 1\cdot 10 \\ 1 \cdot 100 \\ 2\cdot 10 \\ 2 \cdot 100 \\ 4\cdot 10 \\ 4 \cdot 100 \end{pmatrix} = \begin{pmatrix} 10 \\ 100 \\ 20 \\ 200 \\ 40 \\ 400 \end{pmatrix}
\]</span> Then the composite system <span class="math inline">\(AB\)</span> has the possibilities <span class="math inline">\(1a, 1b, 1c, 2a, 2b, 2c\)</span> and the distribution <span class="math display">\[
\mu_{AB}
= \mu_A \otimes \mu_B
= \begin{pmatrix} \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} \end{pmatrix} \otimes \begin{pmatrix} \frac{1}{2} \\ 0 \\ \frac{\sqrt{3}}{2} \end{pmatrix}
= \begin{pmatrix} \frac{1}{\sqrt{2}} \cdot \frac{1}{2} \\[3pt] \frac{1}{\sqrt{2}} \cdot 0 \\[3pt] \frac{1}{\sqrt{2}} \cdot \frac{\sqrt{3}}{2} \\[3pt] -\frac{1}{\sqrt{2}} \cdot \frac{1}{2} \\[3pt] -\frac{1}{\sqrt{2}} \cdot 0 \\[3pt] -\frac{1}{\sqrt{2}} \cdot \frac{\sqrt{3}}{2} \end{pmatrix}.
= \begin{pmatrix} \frac{1}{2\sqrt{2}} \\[3pt] 0 \\[3pt] \frac{\sqrt{3}}{2\sqrt{2}} \\[3pt] -\frac{1}{2\sqrt{2}} \\[3pt] 0 \\[3pt] -\frac{\sqrt{3}}{2\sqrt{2}} \end{pmatrix}.
\]</span></p>
</div>
</div>
......@@ -372,15 +335,45 @@ a\otimes b = \begin{pmatrix} 1 \\ 2 \\ 4 \end{pmatrix} \otimes \begin{pmatrix} 1
<div class="callout-body-container">
<div id="def-composite-systems-matrix" class="definition theorem">
<p><span class="theorem-title"><strong>Definition 6.2 (Composite matrices / Tensor product)</strong></span> Given two matrices <span class="math inline">\(S\)</span> and <span class="math inline">\(T\)</span> with <span class="math inline">\(S\)</span> of the size <span class="math inline">\(N \times N\)</span> and <span class="math inline">\(T\)</span> of the size <span class="math inline">\(M \times M\)</span>. The tensor product <span class="math inline">\(S \otimes T\)</span> of is given by <span class="math display">\[
S\otimes T = \begin{pmatrix} S_{11}T &amp; \dots &amp; S_{1N} T\\ \vdots &amp; \ddots &amp; \vdots\\ S_{N1} T &amp; \dots &amp; S_{NN}T \end{pmatrix}
S \otimes T
= \begin{pmatrix}
S_{11}T &amp; \dots &amp; S_{1N} T\\
\vdots &amp; \ddots &amp; \vdots\\
S_{N1} T &amp; \dots &amp; S_{NN}T
\end{pmatrix}.
\]</span></p>
</div>
</div>
</div>
</div>
<p>Overall we can say: If we apply <span class="math inline">\(S\)</span> to the system <span class="math inline">\(A\)</span> and <span class="math inline">\(T\)</span> to the system <span class="math inline">\(B\)</span>, we apply <span class="math inline">\(S\otimes T\)</span> to the composite system <span class="math inline">\(AB\)</span>.</p>
<p>If the distribution <span class="math inline">\(d_{AB}\)</span> of a given probabilistic system <span class="math inline">\(AB\)</span> can be written as a composite of two distributions <span class="math inline">\(d_A\)</span> and <span class="math inline">\(d_B\)</span>, we know that <span class="math inline">\(A\)</span> and <span class="math inline">\(B\)</span> are independent of each other. If we can not write <span class="math inline">\(d_{AB}\)</span> as two septate systems, the probabilities are depended on each other.</p>
<p>If the distribution <span class="math inline">\(d_{AB}\)</span> of a given probabilistic system <span class="math inline">\(AB\)</span> can be written as a composite of two distributions <span class="math inline">\(d_A\)</span> and <span class="math inline">\(d_B\)</span>, we know that <span class="math inline">\(A\)</span> and <span class="math inline">\(B\)</span> are independent of each other. If we cannot write <span class="math inline">\(d_{AB}\)</span> as two separate distributions, the probabilities are depended on each other.</p>
<p>If the quantum state <span class="math inline">\(\psi_{AB}\)</span> of a given quantum system <span class="math inline">\(AB\)</span> can be written as a composite of two different quantum states <span class="math inline">\(\psi_A\)</span> and <span class="math inline">\(\psi_B\)</span>, the quantum states of <span class="math inline">\(A\)</span> and <span class="math inline">\(B\)</span> are independent of each other. If we can not write <span class="math inline">\(\psi_{AB}\)</span> as a tensor product of two quantum systems, the quantum states depend on each other. We call this <em>entangled</em>.</p>
<div class="callout callout-style-simple callout-note no-icon">
<div class="callout-body d-flex">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-body-container">
<div id="lem-math-composite" class="lemma theorem">
<p><span class="theorem-title"><strong>Lemma 6.1</strong></span> For the (unitary) matrices <span class="math inline">\(A, B, C\)</span> and <span class="math inline">\(D\)</span>, the vectors (quantum states) <span class="math inline">\(\psi, \phi\)</span> and <span class="math inline">\(\chi\)</span> and the constant <span class="math inline">\(c\)</span>, the following applies</p>
<ul>
<li><span class="math inline">\((A \otimes B)(\psi \otimes \phi) = A\psi \otimes B\phi\)</span>,</li>
<li><span class="math inline">\((A \otimes B)(C \otimes D) = AC \otimes BD\)</span>,</li>
<li><span class="math inline">\(\psi \otimes (\phi + \chi) = (\psi \otimes \phi) + (\phi \otimes \chi)\)</span>,</li>
<li><span class="math inline">\((\psi + \phi) \otimes \chi = (\psi \otimes \chi) + (\phi \otimes \chi)\)</span>,</li>
<li><span class="math inline">\(A \otimes (B + C) = (A \otimes B) + (A \otimes C)\)</span>,</li>
<li><span class="math inline">\((A + B) \otimes C = (A \otimes C) + (B \otimes C)\)</span>,</li>
<li><span class="math inline">\(c\phi \otimes \psi = c(\phi \otimes \psi)\)</span>,</li>
<li><span class="math inline">\(\phi \otimes c\psi = c(\phi \otimes \psi)\)</span>,</li>
<li><span class="math inline">\(A \otimes cB = c(A \otimes B)\)</span> and</li>
<li><span class="math inline">\(cA \otimes B = c(A \otimes B)\)</span>.</li>
</ul>
<p>These rules only apply if the dimensions of the matrices and vectors match.</p>
</div>
</div>
</div>
</div>
</section>
<section id="measuring-composite-systems" class="level2" data-number="6.2">
<h2 data-number="6.2" class="anchored" data-anchor-id="measuring-composite-systems"><span class="header-section-number">6.2</span> Measuring composite systems</h2>
......@@ -392,43 +385,56 @@ S\otimes T = \begin{pmatrix} S_{11}T &amp; \dots &amp; S_{1N} T\\ \vdots &amp; \
</div>
<div class="callout-body-container">
<div id="def-composite-systems-measure" class="definition theorem">
<p><span class="theorem-title"><strong>Definition 6.3 (Composite measurements)</strong></span> Given two systems <span class="math inline">\(A\)</span> and <span class="math inline">\(B\)</span> with possibilities <span class="math inline">\(1,\dots, N\)</span> and <span class="math inline">\(1,\dots, M\)</span> and two partial measurements <span class="math inline">\(M_A\)</span> and <span class="math inline">\(M_B\)</span> on systems <span class="math inline">\(A\)</span> and <span class="math inline">\(B\)</span> with alternatives <span class="math inline">\(A_1,\dots,A_N \subseteq \{1,\dots,N\}\)</span> and <span class="math inline">\(B_1,\dots,B_M \subseteq \{1,\dots,M\}\)</span>. The measurement <span class="math inline">\(M_A \otimes M_B\)</span> on <span class="math inline">\(AB\)</span> is a measurement with the alternatives <span class="math inline">\(C_{11},C_{12},\dots,C_{NM}\)</span> where <span class="math inline">\(C_{ij} = A_i \times B_j\)</span>.</p>
<p>If we only have a set of alternatives for system <span class="math inline">\(A\)</span>, we can do a measurement <span class="math inline">\(M_A \otimes I\)</span> with alternatives <span class="math inline">\(C_1, \dots ,C_N := A \otimes \{1,\dots, M \}\)</span>.</p>
<p><span class="theorem-title"><strong>Definition 6.3 (Composite measurements)</strong></span> Given two systems <span class="math inline">\(A\)</span> and <span class="math inline">\(B\)</span> with possibilities <span class="math inline">\(1,\dots, N\)</span> and <span class="math inline">\(1,\dots, M\)</span> and two partial measurements <span class="math inline">\(M_A\)</span> and <span class="math inline">\(M_B\)</span> on systems <span class="math inline">\(A\)</span> and <span class="math inline">\(B\)</span> with alternatives <span class="math inline">\(A_1, \dots, A_N \subseteq \{x_1, \dots, x_n\}\)</span> and <span class="math inline">\(B_1, \dots, B_M \subseteq \{y_1, \dots, y_M\}\)</span>. The measurement <span class="math inline">\(M_A \otimes M_B\)</span> on <span class="math inline">\(AB\)</span> is a measurement with the alternatives <span class="math inline">\(C_{11},C_{12},\dots,C_{NM}\)</span> where <span class="math inline">\(C_{ij} = A_i \times B_j\)</span>.</p>
<p>If we only have a set of alternatives for system <span class="math inline">\(A\)</span>, we can do a measurement <span class="math inline">\(M_A \otimes I\)</span> with alternatives <span class="math inline">\(C_1, \dots ,C_N \coloneqq A \otimes \{y_1, \dots, y_M\}\)</span>.</p>
</div>
</div>
</div>
</div>
<div class="callout callout-style-simple callout-tip no-icon callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Example: Composite measurement (quantum)
</div>
</div>
<div class="callout-body-container callout-body">
<p>Let <span class="math inline">\(A\)</span> be a system with the states <span class="math inline">\(1,2,3\)</span> and <span class="math inline">\(\mu_A\)</span> a measurement with the two alternatives <span class="math inline">\(A_{\text{low}} = \{1,2\}\)</span>, <span class="math inline">\(A_{\text{high}} = \{3\}\)</span>. The quantum state is <span class="math display">\[
\psi_A = \begin{pmatrix} \frac{2}{3} \\[2pt] \frac{1}{3} \\[2pt] -\frac{2}{3} \end{pmatrix}.
\]</span></p>
<p>Another system <span class="math inline">\(B\)</span> has the states <span class="math inline">\(a, b, c\)</span>. The measurement <span class="math inline">\(\mu_B\)</span> the two alternatives <span class="math inline">\(B_{\text{vocal}} = \{a\}\)</span>, <span class="math inline">\(B_{\text{consonant}} = \{b, c\}\)</span>. The quantum state is <span class="math display">\[
\psi_B = \begin{pmatrix} \frac{1}{2} \\[2pt] \frac{1}{2}i \\[2pt] \frac{1}{\sqrt{2}} \end{pmatrix}.
\]</span></p>
<p>So the composite system <span class="math inline">\(C = AB\)</span> has the classical possibilities <span class="math inline">\(1a, 1b, 1c, 2a, 2b, 2c, 3a, 3b\)</span> and <span class="math inline">\(3c\)</span>. The measurement <span class="math inline">\(\mu_C \coloneqq \mu_A \otimes \mu_B\)</span> has the alternatives <span class="math display">\[
\begin{aligned}
C_{\text{low, vocal}} &amp;= \{1a, 2a\}, &amp;&amp; C_{\text{low, consonant}} &amp;= \{1b, 1c, 2b, 2c\}, \\
C_{\text{high, vocal}} &amp;= \{3a\}, &amp;&amp; C_{\text{high, consonant}} &amp;= \{3b, 3c\}.
\end{aligned}
\]</span></p>
<p>The quantum state is <span class="math display">\[
\psi_C
= \psi_A \otimes \psi_B
= \begin{pmatrix} \frac{2}{3} \\[2pt] \frac{1}{3} \\[2pt] -\frac{2}{3} \end{pmatrix} \otimes \begin{pmatrix} \frac{1}{2} \\[2pt] \frac{1}{2}i \\[2pt] \frac{1}{\sqrt{2}} \end{pmatrix}
= \begin{pmatrix} \frac{2}{6} \\[4pt] \frac{2}{6}i \\[4pt] \frac{2}{3\sqrt{2}} \\[4pt] \frac{1}{6} \\[4pt] \frac{1}{6}i \\[4pt] \frac{1}{3\sqrt{2}} \\[4pt] -\frac{2}{6} \\[4pt] -\frac{2}{6}i \\[4pt] -\frac{2}{3\sqrt{2}} \end{pmatrix}.
\]</span></p>
<p>We get for the alternative <span class="math inline">\(C_{\text{low, vocal}}\)</span> the probability <span class="math display">\[
\left|\frac{2}{6}\right|^2 + \left|\frac{1}{6}\right|^2 = \frac{4}{36} + \frac{1}{36} = \frac{5}{36}
\]</span> and thus the post-measurement-state is <span class="math display">\[
\begin{pmatrix} \frac{2}{6} \\ 0 \\ 0 \\ \frac{1}{6} \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{pmatrix} / \sqrt{\frac{5}{36}}
= \begin{pmatrix} \frac{2}{6} \\ 0 \\ 0 \\ \frac{1}{6} \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{pmatrix} / \frac{\sqrt{5}}{6}
= \begin{pmatrix} \frac{2}{\sqrt{5}} \\ 0 \\ 0 \\ \frac{1}{\sqrt{5}} \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{pmatrix}.
\]</span></p>
</div>
</div>
</section>
<section id="footnotes" class="footnotes footnotes-end-of-document" role="doc-endnotes">
<hr>
<ol>
<li id="fn1"><p>Note that the possibilities are labels <span class="math inline">\(1,\dots,N\)</span> and do not have be the numbers <span class="math inline">\(1,\dots,N\)</span>. We could also label these e.g.&nbsp;<em>red</em>, <em>green</em> and <em>blue</em> (or any other label).<a href="#fnref1" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
</ol>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const toggleBodyColorMode = (bsSheetEl) => {
const mode = bsSheetEl.getAttribute("data-mode");
const bodyEl = window.document.querySelector("body");
if (mode === "dark") {
bodyEl.classList.add("quarto-dark");
bodyEl.classList.remove("quarto-light");
} else {
bodyEl.classList.add("quarto-light");
bodyEl.classList.remove("quarto-dark");
}
}
const toggleBodyColorPrimary = () => {
const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
if (bsSheetEl) {
toggleBodyColorMode(bsSheetEl);
}
}
toggleBodyColorPrimary();
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
......@@ -444,18 +450,7 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
}
return false;
}
const clipboard = new window.ClipboardJS('.code-copy-button', {
text: function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
});
clipboard.on('success', function(e) {
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
......@@ -487,15 +482,35 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp("https:\/\/qis\.rwth-aachen\.de\/teaching\/24ss\/intro-quantum-computing\/script\/");
var filterRegex = new RegExp("https:\/\/qis\.rwth-aachen\.de\/teaching\/25ss\/intro-quantum-computing\/script\/");
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool)');
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
......@@ -592,7 +607,6 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
// TODO in 1.5, we should make sure this works without a callout special case
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
......@@ -820,12 +834,12 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
</script>
<nav class="page-navigation">
<div class="nav-page nav-page-previous">
<a href="./partialObserving.html" class="pagination-link" aria-label="Partial observing and measuring systems">
<a href="../content/partialObserving.html" class="pagination-link" aria-label="Partial observing and measuring systems">
<i class="bi bi-arrow-left-short"></i> <span class="nav-page-text"><span class="chapter-number">5</span>&nbsp; <span class="chapter-title">Partial observing and measuring systems</span></span>
</a>
</div>
<div class="nav-page nav-page-next">
<a href="./quantumCircutsKetNotation.html" class="pagination-link" aria-label="Quantum Circuits">
<a href="../content/quantumCircuits.html" class="pagination-link" aria-label="Quantum Circuits">
<span class="nav-page-text"><span class="chapter-number">7</span>&nbsp; <span class="chapter-title">Quantum Circuits</span></span> <i class="bi bi-arrow-right-short"></i>
</a>
</div>
......
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.31">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>10&nbsp; Discrete Fourier Transformation – Introduction to Quantum Computing</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../site_libs/clipboard/clipboard.min.js"></script>
<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../site_libs/quarto-search/fuse.min.js"></script>
<script src="../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../">
<link href="../content/shorsAlgorithm.html" rel="next">
<link href="../content/bernsteinVazirani.html" rel="prev">
<script src="../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../site_libs/quarto-html/popper.min.js"></script>
<script src="../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../site_libs/quarto-html/anchor.min.js"></script>
<link href="../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../site_libs/quarto-html/quarto-syntax-highlighting-e1a5c8363afafaef2c763b6775fbf3ca.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../site_libs/bootstrap/bootstrap-364982630eef5352dd1537128a8ed5cb.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "sidebar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "start",
"type": "textbox",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "No results",
"search-matching-documents-text": "matching documents",
"search-copy-link-title": "Copy link to search",
"search-hide-matches-text": "Hide additional matches",
"search-more-match-text": "more match in this document",
"search-more-matches-text": "more matches in this document",
"search-clear-button-title": "Clear",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Cancel",
"search-submit-button-title": "Submit",
"search-label": "Search"
}
}</script>
<script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js" type="text/javascript"></script>
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-sidebar floating quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top">
<nav class="quarto-secondary-nav">
<div class="container-fluid d-flex">
<button type="button" class="quarto-btn-toggle btn" data-bs-toggle="collapse" role="button" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<i class="bi bi-layout-text-sidebar-reverse"></i>
</button>
<nav class="quarto-page-breadcrumbs" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="../content/bernsteinVazirani.html">Quantum algorithms</a></li><li class="breadcrumb-item"><a href="../content/dft.html"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">Discrete Fourier Transformation</span></a></li></ol></nav>
<a class="flex-grow-1" role="navigation" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
</a>
<button type="button" class="btn quarto-search-button" aria-label="Search" onclick="window.quartoOpenSearch();">
<i class="bi bi-search"></i>
</button>
</div>
</nav>
</header>
<!-- content -->
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article">
<!-- sidebar -->
<nav id="quarto-sidebar" class="sidebar collapse collapse-horizontal quarto-sidebar-collapse-item sidebar-navigation floating overflow-auto">
<div class="pt-lg-2 mt-2 text-left sidebar-header">
<div class="sidebar-title mb-0 py-0">
<a href="../">Introduction to Quantum Computing</a>
<div class="sidebar-tools-main">
<a href="https://git.rwth-aachen.de/unruh/script-intro-qc/" title="Source Code" class="quarto-navigation-tool px-1" aria-label="Source Code"><i class="bi bi-git"></i></a>
<a href="../Introduction-to-Quantum-Computing.pdf" title="Download PDF" class="quarto-navigation-tool px-1" aria-label="Download PDF"><i class="bi bi-file-pdf"></i></a>
</div>
</div>
</div>
<div class="mt-2 flex-shrink-0 align-items-center">
<div class="sidebar-search">
<div id="quarto-search" class="" title="Search"></div>
</div>
</div>
<div class="sidebar-menu-container">
<ul class="list-unstyled mt-1">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../index.html" class="sidebar-item-text sidebar-link">
<span class="menu-text">Welcome</span></a>
</div>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a class="sidebar-item-text sidebar-link text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-1" role="navigation" aria-expanded="true">
<span class="menu-text">Quantum basics</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-1" role="navigation" aria-expanded="true" aria-label="Toggle section">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-1" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../content/introduction.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">1</span>&nbsp; <span class="chapter-title">Introduction</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../content/probabilisticSystems.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">2</span>&nbsp; <span class="chapter-title">Probabilistic systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../content/quantumSystems.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">3</span>&nbsp; <span class="chapter-title">Quantum systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../content/observingSystems.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">4</span>&nbsp; <span class="chapter-title">Observing probabilistic and measuring quantum systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../content/partialObserving.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">5</span>&nbsp; <span class="chapter-title">Partial observing and measuring systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../content/compositeSystems.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">6</span>&nbsp; <span class="chapter-title">Composite Systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../content/quantumCircuits.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">7</span>&nbsp; <span class="chapter-title">Quantum Circuits</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../content/ketNotation.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">8</span>&nbsp; <span class="chapter-title">Ket Notation</span></span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a class="sidebar-item-text sidebar-link text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-2" role="navigation" aria-expanded="true">
<span class="menu-text">Quantum algorithms</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-2" role="navigation" aria-expanded="true" aria-label="Toggle section">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-2" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../content/bernsteinVazirani.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">9</span>&nbsp; <span class="chapter-title">Bernstein-Vazirani Algorithm</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../content/dft.html" class="sidebar-item-text sidebar-link active">
<span class="menu-text"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">Discrete Fourier Transformation</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../content/shorsAlgorithm.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">11</span>&nbsp; <span class="chapter-title">Shor’s Algorithm</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../content/groversAlgorithm.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">12</span>&nbsp; <span class="chapter-title">Grover’s algorithm</span></span></a>
</div>
</li>
</ul>
</li>
</ul>
</div>
</nav>
<div id="quarto-sidebar-glass" class="quarto-sidebar-collapse-item" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item"></div>
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Table of contents</h2>
<ul>
<li><a href="#definition-of-the-dft" id="toc-definition-of-the-dft" class="nav-link active" data-scroll-target="#definition-of-the-dft"><span class="header-section-number">10.1</span> Definition of the DFT</a></li>
<li><a href="#constructing-the-dft" id="toc-constructing-the-dft" class="nav-link" data-scroll-target="#constructing-the-dft"><span class="header-section-number">10.2</span> Constructing the DFT</a></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content" id="quarto-document-content">
<header id="title-block-header" class="quarto-title-block default"><nav class="quarto-page-breadcrumbs quarto-title-breadcrumbs d-none d-lg-block" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="../content/bernsteinVazirani.html">Quantum algorithms</a></li><li class="breadcrumb-item"><a href="../content/dft.html"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">Discrete Fourier Transformation</span></a></li></ol></nav>
<div class="quarto-title">
<h1 class="title"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">Discrete Fourier Transformation</span></h1>
</div>
<div class="quarto-title-meta">
</div>
</header>
<p>In <a href="shorsAlgorithm.html" class="quarto-xref"><span>Chapter 11</span></a>, we will discuss Shor’s algorithm, which requires 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.</p>
<section id="definition-of-the-dft" class="level2" data-number="10.1">
<h2 data-number="10.1" class="anchored" data-anchor-id="definition-of-the-dft"><span class="header-section-number">10.1</span> Definition of the DFT</h2>
<p>The DFT is defined as follows:</p>
<div class="callout callout-style-simple callout-note no-icon">
<div class="callout-body d-flex">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-body-container">
<div id="def-dft" class="definition theorem">
<p><span class="theorem-title"><strong>Definition 10.1 (Discrete Fourier Transformation)</strong></span> The discrete Fourier transform (DFT) is a linear transformation on <span class="math inline">\(\mathbb{C}^N\)</span> represented by the matrix <span class="math display">\[
\operatorname{DFT}_N \coloneqq \frac{1}{\sqrt{N}} (\omega^{kl})_{kl=0,\dots,N-1} \in \mathbb{C}^{N\times N}
\]</span> with <span class="math inline">\(\omega = e^{2i\pi/N}\)</span>, which is the <span class="math inline">\(N\)</span>-th root of unity.</p>
</div>
</div>
</div>
</div>
<p>It applies <span class="math inline">\(\omega^N=1\)</span> and <span class="math inline">\(\omega^i \neq 1\)</span> for all <span class="math inline">\(0 &lt; i &lt; N\)</span>.</p>
<p>This transformation is best imagined as a process that takes a periodic vector as an input and outputs the period of that vector. The DFT has some important properties which will help us later on.</p>
<div class="callout callout-style-simple callout-note no-icon">
<div class="callout-body d-flex">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-body-container">
<div id="thm-dft-properties" class="therorem theorem">
<p><span class="theorem-title"><strong>Theorem 10.1 (Properties of the DFT)</strong></span> Here are some properties of the DFT which can be used without further proof.</p>
<ol type="1">
<li>The <span class="math inline">\(\operatorname{DFT}_N\)</span> is unitary.</li>
<li><span class="math inline">\(\omega^t = \omega^{t\mod N}\)</span> for all <span class="math inline">\(t \in \mathbb{Z}\)</span>.</li>
<li>Let <span class="math inline">\(t \mid N\)</span> and <span class="math inline">\(s\)</span> be integers and the quantum state <span class="math inline">\(\psi \in \mathbb{C}^N\)</span> be given by <span class="math display">\[
\psi_i \coloneqq
\begin{cases}
\sqrt{\frac{t}{N}} &amp; \text{if } i = at+s \text{ for some } a \\
0 &amp; \text{else.}
\end{cases}
\]</span> In other words <span class="math inline">\(\psi\)</span> is <span class="math inline">\(t\)</span>-periodic. Then for <span class="math inline">\(\phi \coloneqq \operatorname{DFT}_N\)</span> we have <span class="math display">\[
|\phi_i| =
\begin{cases}
\frac{1}{\sqrt{t}} &amp; \text{if } \frac{N}{t} \mid i \\
0 &amp; \text{else.}
\end{cases}
\]</span> The first peak of <span class="math inline">\(\phi\)</span> (besides <span class="math inline">\(\phi_0\)</span>) is at <span class="math inline">\(\frac{N}{t}\)</span>.</li>
</ol>
</div>
</div>
</div>
</div>
</section>
<section id="constructing-the-dft" class="level2" data-number="10.2">
<h2 data-number="10.2" class="anchored" data-anchor-id="constructing-the-dft"><span class="header-section-number">10.2</span> Constructing the DFT</h2>
<p>So far we have described everything necessary for Shor’s algorithm, but only described the matrix representation of the <span class="math inline">\(\operatorname{DFT}_N\)</span>. We will now take a closer look into implementing the <span class="math inline">\(\operatorname{DFT}_M\)</span> as a quantum circuit. Since we only use the <span class="math inline">\(\operatorname{DFT}_N\)</span> for Shor’s algorithm so far, we will only look at <span class="math inline">\(N=2^n\)</span>, which is the <span class="math inline">\(\operatorname{DFT}\)</span> applied on <span class="math inline">\(n\)</span> qubits.</p>
<p>To start the circuit, we recall the definition of the <span class="math inline">\(\operatorname{DFT}_N\)</span> from <a href="#def-dft" class="quarto-xref">Definition&nbsp;<span>10.1</span></a>: <span class="math inline">\(\operatorname{DFT}_N \coloneqq \frac{1}{\sqrt{{2^n}}} (\omega^{kl})_{kl}\)</span> with <span class="math inline">\(\omega \coloneqq e^{2\pi i / 2^n}\)</span>. To apply the <span class="math inline">\(\operatorname{DFT}_N\)</span> to a quantum state <span class="math inline">\(\ket{j}\)</span> we calculate <span class="math display">\[
\begin{aligned}
\operatorname{DFT}_{N}\ket{j}
=&amp; \frac{1}{\sqrt{N}} \sum_{k=0}^{N-1} \omega^{jk} \ket{k}\\
=&amp; \frac{1}{\sqrt{N}} \sum_{k=0}^{N-1} e^{2\pi i j k / N} \ket{k}\\
=&amp; \frac{1}{\sqrt{N}} \sum_{k_1 \in \{0,1\}} \dots \sum_{k_n \in \{0,1\}} e^{2\pi i j (\sum_{l=1}^n k_l 2^{-l})} \ket{k_1 \dots k_n}\\
=&amp; \frac{1}{\sqrt{N}} \sum_{k_1 \in \{0,1\}} \dots \sum_{k_n \in \{0,1\}} \bigotimes_{l=1}^n e^{2\pi i j k_l 2^{-l}} \ket{k_l}\\
=&amp; \frac{1}{\sqrt{N}} \bigotimes_{l=1}^n \sum_{k_l \in \{0,1\}} e^{2\pi i j k_l 2^{-l}} \ket{k_l}\\
=&amp; \frac{1}{\sqrt{N}} \bigotimes_{l=1}^n (\ket{0} + e^{2\pi i j 2^{-l}} \ket{1})\\
=&amp; \frac{1}{\sqrt{N}} \bigotimes_{l=1}^n (\ket{0} + e^{2\pi i 0.j_{n-l+1} \dots j_{n}} \ket{1}).
\end{aligned}
\]</span> The expression <span class="math inline">\(0.j\)</span> expresses a binary fraction (e.g.&nbsp;<span class="math inline">\(0.101 = \frac{1}{2} + \frac{1}{8} = \frac{5}{8}\)</span>).</p>
<p>With this we have shown, that we can write <span class="math inline">\(\operatorname{DFT}_N \ket{j}\)</span> as the following tensor product of quantum states</p>
<p><span class="math display">\[
\frac{1}{\sqrt{2}}(\ket{0} + e^{2\pi i 0.j_n} \ket{1}) \otimes \frac{1}{\sqrt{2}}(\ket{0} + e^{2\pi i 0.j_{n-1}j_n} \ket{1}) \otimes \dots \otimes \frac{1}{\sqrt{2}}(\ket{0} + e^{2\pi i 0.j_1\dots j_n} \ket{1}).
\]</span></p>
<p>From this rewritten tensor product, we can get an idea on how to construct the quantum circuit for the <span class="math inline">\(\operatorname{DFT}_N\)</span>. Namely, we can construct a quantum circuit for each element of the tensor product and from this build the general circuit.</p>
<p>For this, we segment the tensor product into different elements <span class="math inline">\(\psi\)</span> as follows:</p>
<p><span class="math display">\[
\underbrace{\frac{1}{\sqrt{2}}(\ket{0} + e^{2\pi i 0.j_n} \ket{1})}_{\psi_1} \otimes \underbrace{\frac{1}{\sqrt{2}}(\ket{0} + e^{2\pi i 0.j_{n-1}j_n} \ket{1})}_{\psi_2} \otimes \dots \otimes \underbrace{\frac{1}{\sqrt{2}}(\ket{0} + e^{2\pi i 0.j_1\dots j_n} \ket{1})}_{\psi_n}.
\]</span></p>
<p>We also introduce a new gate <span class="math inline">\(R_k\)</span> which is defined by the following matrix:</p>
<p><span class="math display">\[
R_k:=\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; e^{2 \pi i / 2^k} \end{pmatrix}.
\]</span></p>
<p>To understand the construction of the circuit from these elements, we will look at an example for <span class="math inline">\(n=3\)</span> first:</p>
<div class="callout callout-style-simple callout-tip no-icon callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Example: Construction of the DFT circuit for <span class="math inline">\(n=3\)</span>
</div>
</div>
<div class="callout-body-container callout-body">
<p>We start by building the tensor product for <span class="math inline">\(n=3\)</span>. The input for the DFT circuit is <span class="math inline">\(\ket{j} = \ket{j_1j_2j_3}\)</span>. Using the formula from above, we can write the result of <span class="math inline">\(\operatorname{DFT}_{2^3} \ket{j}\)</span> as the following tensor product:</p>
<p><span class="math display">\[
\underbrace{\frac{1}{\sqrt{2}}(\ket{0} + e^{2\pi i 0.j_3} \ket{1})}_{\psi_1} \otimes \underbrace{\frac{1}{\sqrt{2}}(\ket{0} + e^{2\pi i 0.j_2j_3} \ket{1})}_{\psi_2} \otimes \underbrace{\frac{1}{\sqrt{2}}(\ket{0} + e^{2\pi i 0.j_1j_2j_3} \ket{1})}_{\psi_3}.
\]</span></p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="img/dft_3_qubits.svg" class="img-fluid figure-img" style="width:100.0%"></p>
<figcaption>The DTF for three qubits</figcaption>
</figure>
</div>
<ol type="1">
<li>First we construct the <span class="math inline">\(\psi_3\)</span> element. Contrary to the intuition, we use the top wire containing <span class="math inline">\(\ket{j_1}\)</span> for this. We use a Hadamad-gate to bring <span class="math inline">\(\ket{j_1}\)</span> into the superposition <span class="math inline">\(\frac{1}{\sqrt{2}}(\ket{0} + (-1)^{j_1} \ket{1}) = \frac{1}{\sqrt{2}}(\ket{0} + e^{2 \pi i 0.j_1} \ket{1})\)</span>. This looks close to <span class="math inline">\(\psi_3\)</span> already, we now need to add the last two decimal places <span class="math inline">\(j_2j_3\)</span> to the state. For this we use <span class="math inline">\(R_2\)</span> and <span class="math inline">\(R_3\)</span>. We apply <span class="math inline">\(R_2\)</span> controlled by the wire <span class="math inline">\(j_2\)</span> and <span class="math inline">\(R_3\)</span> controlled by the wire <span class="math inline">\(j_3\)</span>. This means, that we only apply the <span class="math inline">\(R\)</span>-gate, if the corresponding wire contains a <span class="math inline">\(1\)</span>. You can see this written as a quantum circuit at the figure below. After applying <span class="math inline">\(R_2\)</span> we have the state <span class="math inline">\(\frac{1}{\sqrt{2}}(\ket{0} + e^{2 \pi i 0.j_1j_2} \ket{1})\)</span> and after applying <span class="math inline">\(R_3\)</span> we have the state <span class="math inline">\(\frac{1}{\sqrt{2}}(\ket{0} + e^{2 \pi i 0.j_1j_2j_3} \ket{1})\)</span> on the top wire. This is the same as <span class="math inline">\(\psi_3\)</span>, so we are done on the first wire (We are at the first slice in the figure).</li>
<li>The next step is to construct the <span class="math inline">\(\psi_2\)</span> state on the middle wire. We again use a Hadamad-gate to bring <span class="math inline">\(\ket{j_2}\)</span> into the superposition <span class="math inline">\(\frac{1}{\sqrt{2}}(\ket{0} + e^{2 \pi i 0.j_2} \ket{1})\)</span>. We now need to include the last decimal point <span class="math inline">\(j_3\)</span>, for which we use <span class="math inline">\(R_2\)</span> again, this time controlled by <span class="math inline">\(j_3\)</span>. The resulting superposition is now <span class="math inline">\(\frac{1}{\sqrt{2}}(\ket{0} + e^{2\pi i 0.j_2j_3} \ket{1})\)</span>, which is <span class="math inline">\(\psi_2\)</span>. (We are at the second slice in the figure).</li>
<li>On the bottom wire, we can just do a Hadamad-gate to bring <span class="math inline">\(\ket{j_3}\)</span> into the superposition <span class="math inline">\(\frac{1}{\sqrt{2}}(\ket{0} + e^{2 \pi i 0.j_3} \ket{1})\)</span>. We then have <span class="math inline">\(\psi_1\)</span> on the bottom wire. (We are at the third slice in the figure).</li>
<li>When applying this circuit, we get the state <span class="math inline">\(\psi_3 \otimes \psi_2 \otimes \psi_1\)</span> as a result. This very close to our desired state <span class="math inline">\(\psi_1 \otimes \psi_2 \otimes \psi_3\)</span>, just the order of the wires is flipped. To solve this, we apply a <span class="math inline">\(\operatorname{SWAP}\)</span> onto all wires, which flips the order of the wires an delivers the correct output for <span class="math inline">\(\operatorname{DFT}_{2^3}\)</span>.</li>
</ol>
</div>
</div>
<p>The more general approach to construct the <span class="math inline">\(\operatorname{DFT}_N\)</span> as a quantum circuit with <span class="math inline">\(n\)</span> qubits (<span class="math inline">\(N = 2^n\)</span>) works as follows:</p>
<ol type="1">
<li>Initialize wires with input <span class="math inline">\(\ket{j}\)</span>, so that <span class="math inline">\(\ket{j_1}\)</span> is on the top wire and <span class="math inline">\(\ket{j_n}\)</span> is on the bottom wire. Note, that this is not part of the circuit yet.</li>
<li>Start with the top wire. For each wire <span class="math inline">\(j_i\)</span> do the following:
<ol type="1">
<li>Apply a Hadamad-gate on the wire <span class="math inline">\(j_i\)</span>.</li>
<li>For each wire <span class="math inline">\(j_k\)</span> below the current wire <span class="math inline">\(j_i\)</span> (with <span class="math inline">\(i &lt; k \leq n\)</span>), add a <span class="math inline">\(R_{k-i+1}\)</span>-gate controlled by <span class="math inline">\(j_k\)</span>. Start with <span class="math inline">\(k = i+1\)</span> (if <span class="math inline">\(i&lt;n\)</span>, else stop).</li>
</ol></li>
<li>Perform a <span class="math inline">\(\operatorname{SWAP}\)</span> to flip all the wires. This means, that the first wire is swapped with the last wire, the second wire is swapped with the second to last wire and so on.</li>
</ol>
<p>Note: If the the output of the DFT circuit is measured right after applying it (as in Shor’s algorithm) or if the rest of the algorithm allows for it, it is more efficient to perform the <span class="math inline">\(\operatorname{SWAP}\)</span> classically, since this is considered to be the cheaper operation.</p>
<p>The more general layout of the quantum circuit for the <span class="math inline">\(\operatorname{DFT_N}\)</span> with the <span class="math inline">\(\operatorname{SWAP}\)</span> is shown in this figure.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="img/dft_n_qubits.svg" class="img-fluid figure-img" style="width:100.0%"></p>
<figcaption>The DTF for <span class="math inline">\(n\)</span> qubits</figcaption>
</figure>
</div>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copied!");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copied!");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp("https:\/\/qis\.rwth-aachen\.de\/teaching\/25ss\/intro-quantum-computing\/script\/");
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
<nav class="page-navigation">
<div class="nav-page nav-page-previous">
<a href="../content/bernsteinVazirani.html" class="pagination-link" aria-label="Bernstein-Vazirani Algorithm">
<i class="bi bi-arrow-left-short"></i> <span class="nav-page-text"><span class="chapter-number">9</span>&nbsp; <span class="chapter-title">Bernstein-Vazirani Algorithm</span></span>
</a>
</div>
<div class="nav-page nav-page-next">
<a href="../content/shorsAlgorithm.html" class="pagination-link" aria-label="Shor's Algorithm">
<span class="nav-page-text"><span class="chapter-number">11</span>&nbsp; <span class="chapter-title">Shor’s Algorithm</span></span> <i class="bi bi-arrow-right-short"></i>
</a>
</div>
</nav>
</div> <!-- /content -->
</body></html>
\ No newline at end of file
......@@ -2,12 +2,12 @@
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.4.553">
<meta name="generator" content="quarto-1.7.31">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>Introduction to Quantum Computing - 10&nbsp; Grover’s algorithm</title>
<title>12&nbsp; Grover’s algorithm – Introduction to Quantum Computing</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
......@@ -23,24 +23,24 @@ ul.task-list li input[type="checkbox"] {
</style>
<script src="site_libs/quarto-nav/quarto-nav.js"></script>
<script src="site_libs/quarto-nav/headroom.min.js"></script>
<script src="site_libs/clipboard/clipboard.min.js"></script>
<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="site_libs/quarto-search/fuse.min.js"></script>
<script src="site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="./">
<link href="./physicalBackground.html" rel="next">
<link href="./shorsAlgorithm.html" rel="prev">
<script src="site_libs/quarto-html/quarto.js"></script>
<script src="site_libs/quarto-html/popper.min.js"></script>
<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="site_libs/quarto-html/anchor.min.js"></script>
<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light">
<script src="../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../site_libs/clipboard/clipboard.min.js"></script>
<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../site_libs/quarto-search/fuse.min.js"></script>
<script src="../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../">
<link href="../content/shorsAlgorithm.html" rel="prev">
<script src="../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../site_libs/quarto-html/popper.min.js"></script>
<script src="../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../site_libs/quarto-html/anchor.min.js"></script>
<link href="../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../site_libs/quarto-html/quarto-syntax-highlighting-e1a5c8363afafaef2c763b6775fbf3ca.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../site_libs/bootstrap/bootstrap-364982630eef5352dd1537128a8ed5cb.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "sidebar",
"copy-button": false,
......@@ -69,7 +69,7 @@ ul.task-list li input[type="checkbox"] {
}
}</script>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js" type="text/javascript"></script>
<script type="text/javascript">
......@@ -101,19 +101,19 @@ window.Quarto = {
</head>
<body class="nav-sidebar floating">
<body class="nav-sidebar floating quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top">
<nav class="quarto-secondary-nav">
<div class="container-fluid d-flex">
<button type="button" class="quarto-btn-toggle btn" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<button type="button" class="quarto-btn-toggle btn" data-bs-toggle="collapse" role="button" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<i class="bi bi-layout-text-sidebar-reverse"></i>
</button>
<nav class="quarto-page-breadcrumbs" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="./quantumAlgorithms.html">Quantum Algorithms</a></li><li class="breadcrumb-item"><a href="./groversAlgorithm.html"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">Grover’s algorithm</span></a></li></ol></nav>
<a class="flex-grow-1" role="button" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<nav class="quarto-page-breadcrumbs" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="../content/bernsteinVazirani.html">Quantum algorithms</a></li><li class="breadcrumb-item"><a href="../content/groversAlgorithm.html"><span class="chapter-number">12</span>&nbsp; <span class="chapter-title">Grover’s algorithm</span></a></li></ol></nav>
<a class="flex-grow-1" role="navigation" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
</a>
<button type="button" class="btn quarto-search-button" aria-label="" onclick="window.quartoOpenSearch();">
<button type="button" class="btn quarto-search-button" aria-label="Search" onclick="window.quartoOpenSearch();">
<i class="bi bi-search"></i>
</button>
</div>
......@@ -125,26 +125,10 @@ window.Quarto = {
<nav id="quarto-sidebar" class="sidebar collapse collapse-horizontal quarto-sidebar-collapse-item sidebar-navigation floating overflow-auto">
<div class="pt-lg-2 mt-2 text-left sidebar-header">
<div class="sidebar-title mb-0 py-0">
<a href="./">Introduction to Quantum Computing</a>
<a href="../">Introduction to Quantum Computing</a>
<div class="sidebar-tools-main">
<a href="https://git.rwth-aachen.de/j1/intro-qc/" title="Source Code" class="quarto-navigation-tool px-1" aria-label="Source Code"><i class="bi bi-git"></i></a>
<div class="dropdown">
<a href="" title="Download" id="quarto-navigation-tool-dropdown-0" class="quarto-navigation-tool dropdown-toggle px-1" data-bs-toggle="dropdown" aria-expanded="false" aria-label="Download"><i class="bi bi-download"></i></a>
<ul class="dropdown-menu" aria-labelledby="quarto-navigation-tool-dropdown-0">
<li>
<a class="dropdown-item sidebar-tools-main-item" href="./Introduction-to-Quantum-Computing.pdf">
<i class="bi bi-bi-file-pdf pe-1"></i>
Download PDF
</a>
</li>
<li>
<a class="dropdown-item sidebar-tools-main-item" href="./Introduction-to-Quantum-Computing.epub">
<i class="bi bi-bi-journal pe-1"></i>
Download ePub
</a>
</li>
</ul>
</div>
<a href="https://git.rwth-aachen.de/unruh/script-intro-qc/" title="Source Code" class="quarto-navigation-tool px-1" aria-label="Source Code"><i class="bi bi-git"></i></a>
<a href="../Introduction-to-Quantum-Computing.pdf" title="Download PDF" class="quarto-navigation-tool px-1" aria-label="Download PDF"><i class="bi bi-file-pdf"></i></a>
</div>
</div>
</div>
......@@ -157,129 +141,100 @@ window.Quarto = {
<ul class="list-unstyled mt-1">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./index.html" class="sidebar-item-text sidebar-link">
<a href="../index.html" class="sidebar-item-text sidebar-link">
<span class="menu-text">Welcome</span></a>
</div>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a href="./quantumBasics.html" class="sidebar-item-text sidebar-link">
<span class="menu-text">Quantum Basics</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-1" aria-expanded="true" aria-label="Toggle section">
<a class="sidebar-item-text sidebar-link text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-1" role="navigation" aria-expanded="true">
<span class="menu-text">Quantum basics</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-1" role="navigation" aria-expanded="true" aria-label="Toggle section">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-1" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./introduction.html" class="sidebar-item-text sidebar-link">
<a href="../content/introduction.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">1</span>&nbsp; <span class="chapter-title">Introduction</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./probabilisticSystems.html" class="sidebar-item-text sidebar-link">
<a href="../content/probabilisticSystems.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">2</span>&nbsp; <span class="chapter-title">Probabilistic systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./quantumSystems.html" class="sidebar-item-text sidebar-link">
<a href="../content/quantumSystems.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">3</span>&nbsp; <span class="chapter-title">Quantum systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./observingSystems.html" class="sidebar-item-text sidebar-link">
<a href="../content/observingSystems.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">4</span>&nbsp; <span class="chapter-title">Observing probabilistic and measuring quantum systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./partialObserving.html" class="sidebar-item-text sidebar-link">
<a href="../content/partialObserving.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">5</span>&nbsp; <span class="chapter-title">Partial observing and measuring systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./compositeSystems.html" class="sidebar-item-text sidebar-link">
<a href="../content/compositeSystems.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">6</span>&nbsp; <span class="chapter-title">Composite Systems</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./quantumCircutsKetNotation.html" class="sidebar-item-text sidebar-link">
<a href="../content/quantumCircuits.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">7</span>&nbsp; <span class="chapter-title">Quantum Circuits</span></span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a href="./quantumAlgorithms.html" class="sidebar-item-text sidebar-link">
<span class="menu-text">Quantum Algorithms</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-2" aria-expanded="true" aria-label="Toggle section">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-2" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./bernsteinVazirani.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">8</span>&nbsp; <span class="chapter-title">Bernstein-Vazirani Algorithm</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./shorsAlgorithm.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">9</span>&nbsp; <span class="chapter-title">Shor’s Algorithm</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./groversAlgorithm.html" class="sidebar-item-text sidebar-link active">
<span class="menu-text"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">Grover’s algorithm</span></span></a>
<a href="../content/ketNotation.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">8</span>&nbsp; <span class="chapter-title">Ket Notation</span></span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a href="./physicalBackground.html" class="sidebar-item-text sidebar-link">
<span class="menu-text">Physical Background</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-3" aria-expanded="true" aria-label="Toggle section">
<a class="sidebar-item-text sidebar-link text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-2" role="navigation" aria-expanded="true">
<span class="menu-text">Quantum algorithms</span></a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-2" role="navigation" aria-expanded="true" aria-label="Toggle section">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-3" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./physics.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">11</span>&nbsp; <span class="chapter-title">Quantum Physics</span></span></a>
</div>
</li>
<ul id="quarto-sidebar-section-2" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./physicsToQC.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">12</span>&nbsp; <span class="chapter-title">From Quantum Physics to a Quantum Computer</span></span></a>
<a href="../content/bernsteinVazirani.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">9</span>&nbsp; <span class="chapter-title">Bernstein-Vazirani Algorithm</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./ionBasedQC.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">13</span>&nbsp; <span class="chapter-title">Ion-based quantum computers</span></span></a>
<a href="../content/dft.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">Discrete Fourier Transformation</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./universalGates.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">14</span>&nbsp; <span class="chapter-title">Universal set of gates</span></span></a>
<a href="../content/shorsAlgorithm.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">11</span>&nbsp; <span class="chapter-title">Shor’s Algorithm</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="./errorCorrection.html" class="sidebar-item-text sidebar-link">
<span class="menu-text"><span class="chapter-number">15</span>&nbsp; <span class="chapter-title">Repetition code</span></span></a>
<a href="../content/groversAlgorithm.html" class="sidebar-item-text sidebar-link active">
<span class="menu-text"><span class="chapter-number">12</span>&nbsp; <span class="chapter-title">Grover’s algorithm</span></span></a>
</div>
</li>
</ul>
......@@ -294,14 +249,14 @@ window.Quarto = {
<h2 id="toc-title">Table of contents</h2>
<ul>
<li><a href="#preparations" id="toc-preparations" class="nav-link active" data-scroll-target="#preparations"><span class="header-section-number">10.1</span> Preparations</a>
<li><a href="#preparations" id="toc-preparations" class="nav-link active" data-scroll-target="#preparations"><span class="header-section-number">12.1</span> Preparations</a>
<ul class="collapse">
<li><a href="#constructing-the-oracle-v_f" id="toc-constructing-the-oracle-v_f" class="nav-link" data-scroll-target="#constructing-the-oracle-v_f"><span class="header-section-number">10.1.1</span> Constructing the oracle <span class="math inline">\(V_f\)</span></a></li>
<li><a href="#constructing-operatornameflip_" id="toc-constructing-operatornameflip_" class="nav-link" data-scroll-target="#constructing-operatornameflip_"><span class="header-section-number">10.1.2</span> Constructing <span class="math inline">\(\operatorname{FLIP}_*\)</span></a></li>
<li><a href="#constructing-the-oracle-v_f" id="toc-constructing-the-oracle-v_f" class="nav-link" data-scroll-target="#constructing-the-oracle-v_f"><span class="header-section-number">12.1.1</span> Constructing the oracle <span class="math inline">\(V_f\)</span></a></li>
<li><a href="#constructing-operatornameflip_" id="toc-constructing-operatornameflip_" class="nav-link" data-scroll-target="#constructing-operatornameflip_"><span class="header-section-number">12.1.2</span> Constructing <span class="math inline">\(\operatorname{FLIP}_*\)</span></a></li>
</ul></li>
<li><a href="#the-algorithm-for-searching" id="toc-the-algorithm-for-searching" class="nav-link" data-scroll-target="#the-algorithm-for-searching"><span class="header-section-number">10.2</span> The algorithm for searching</a>
<li><a href="#the-algorithm-for-searching" id="toc-the-algorithm-for-searching" class="nav-link" data-scroll-target="#the-algorithm-for-searching"><span class="header-section-number">12.2</span> The algorithm for searching</a>
<ul class="collapse">
<li><a href="#understanding-the-algorithm-for-searching" id="toc-understanding-the-algorithm-for-searching" class="nav-link" data-scroll-target="#understanding-the-algorithm-for-searching"><span class="header-section-number">10.2.1</span> Understanding the algorithm for searching</a></li>
<li><a href="#understanding-the-algorithm-for-searching" id="toc-understanding-the-algorithm-for-searching" class="nav-link" data-scroll-target="#understanding-the-algorithm-for-searching"><span class="header-section-number">12.2.1</span> Understanding the algorithm for searching</a></li>
</ul></li>
</ul>
</nav>
......@@ -309,9 +264,9 @@ window.Quarto = {
<!-- main -->
<main class="content" id="quarto-document-content">
<header id="title-block-header" class="quarto-title-block default"><nav class="quarto-page-breadcrumbs quarto-title-breadcrumbs d-none d-lg-block" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="./quantumAlgorithms.html">Quantum Algorithms</a></li><li class="breadcrumb-item"><a href="./groversAlgorithm.html"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">Grover’s algorithm</span></a></li></ol></nav>
<header id="title-block-header" class="quarto-title-block default"><nav class="quarto-page-breadcrumbs quarto-title-breadcrumbs d-none d-lg-block" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="../content/bernsteinVazirani.html">Quantum algorithms</a></li><li class="breadcrumb-item"><a href="../content/groversAlgorithm.html"><span class="chapter-number">12</span>&nbsp; <span class="chapter-title">Grover’s algorithm</span></a></li></ol></nav>
<div class="quarto-title">
<h1 class="title"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">Grover’s algorithm</span></h1>
<h1 class="title"><span class="chapter-number">12</span>&nbsp; <span class="chapter-title">Grover’s algorithm</span></h1>
</div>
......@@ -330,71 +285,98 @@ window.Quarto = {
<p>Another well known quantum algorithm is Grover’s algorithm for searching. It was developed by Lov Grover in 1996.</p>
<p>Grover’s algorithm takes a function <span class="math inline">\(f: \{0,1\}^n \rightarrow \{0,1\}\)</span>, where exactly one <span class="math inline">\(x_0\)</span> exists, such that <span class="math inline">\(f(x_0) = 1\)</span>. The goal is to find <span class="math inline">\(x_0\)</span>.</p>
<p>There are a number of interesting problems, which can be reduced to this general definition. One of these problems is the breaking of a (symmetric) encryption. The function <span class="math inline">\(f\)</span> would take a key as an input and output a <span class="math inline">\(1\)</span>, if the decryption is successful.</p>
<p>Classically, finding this <span class="math inline">\(x_0\)</span> takes approximately <span class="math inline">\(2^n\)</span> steps (when simply bruteforcing the function). Using Grover’s algorithm, we can reduce this runtime to approximately <span class="math inline">\(2^{\frac{n}{2}}\)</span> steps. As an example, a <span class="math inline">\(128\)</span>-bit encryption would only take about <span class="math inline">\(2^{64}\)</span> steps to break it, instead of about <span class="math inline">\(2^{128}\)</span> steps for the classical bruteforce.</p>
<section id="preparations" class="level2" data-number="10.1">
<h2 data-number="10.1" class="anchored" data-anchor-id="preparations"><span class="header-section-number">10.1</span> Preparations</h2>
<p>There are a number of interesting problems, which can be reduced to this general definition. One of these problems is the breaking of a (symmetric) encryption. The function <span class="math inline">\(f\)</span> would take a key as an input and output a <span class="math inline">\(1\)</span>, if the decryption is successful. Otherwise it will output a <span class="math inline">\(0\)</span>.</p>
<p>Classically, finding this <span class="math inline">\(x_0\)</span> takes approximately <span class="math inline">\(2^n\)</span> steps (when simply bruteforcing the function). Using Grover’s algorithm, we can reduce this runtime to approximately <span class="math inline">\(\sqrt{2^n}\)</span> steps. As an example, a <span class="math inline">\(128\)</span>-bit encryption would only take about <span class="math inline">\(2^{64}\)</span> steps to break it, instead of about <span class="math inline">\(2^{128}\)</span> steps for the classical bruteforce.</p>
<section id="preparations" class="level2" data-number="12.1">
<h2 data-number="12.1" class="anchored" data-anchor-id="preparations"><span class="header-section-number">12.1</span> Preparations</h2>
<p>To construct Grover’s algorithm, we first need to introduce two new gates <span class="math inline">\(V_f\)</span> and <span class="math inline">\(\operatorname{FLIP}_*\)</span>.</p>
<section id="constructing-the-oracle-v_f" class="level3" data-number="10.1.1">
<h3 data-number="10.1.1" class="anchored" data-anchor-id="constructing-the-oracle-v_f"><span class="header-section-number">10.1.1</span> Constructing the oracle <span class="math inline">\(V_f\)</span></h3>
<p>The uniform superposition <span class="math inline">\(\ket{*}\)</span> simply denotes the superposition over all classical possibilities <span class="math inline">\(\ket{*} = \frac{1}{\sqrt{2^n}} \sum_{x \in\{0,1\}^n} \ket{x}\)</span>.</p>
<section id="constructing-the-oracle-v_f" class="level3" data-number="12.1.1">
<h3 data-number="12.1.1" class="anchored" data-anchor-id="constructing-the-oracle-v_f"><span class="header-section-number">12.1.1</span> Constructing the oracle <span class="math inline">\(V_f\)</span></h3>
<p>In the previous algorithms, we have learned that we can implement a function <span class="math inline">\(f\)</span> as a unitary <span class="math inline">\(U_f\)</span> with <span class="math inline">\(U_f\ket{x,y} = \ket{x, y \oplus f(x)}\)</span>. We construct a different unitary called <span class="math inline">\(V_f\)</span> from this, which has the following behavior:</p>
<p><span class="math display">\[
V_f \ket{x} = \begin{cases} -\ket{x} &amp; \text{if } f(x) = 1\\ \ket{x} &amp; \text{else} \end{cases}
V_f \ket{x} \coloneqq
\begin{cases}
-\ket{x} &amp; \text{if } f(x) = 1 \\
\ket{x} &amp; \text{else}
\end{cases}
\]</span></p>
<p>We can construct <span class="math inline">\(V_f\)</span> from <span class="math inline">\(U_f\)</span> using the following circuit:</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="vf.svg" class="img-fluid figure-img" style="width:60.0%"></p>
<p><img src="img/vf.svg" class="img-fluid figure-img" style="width:60.0%"></p>
<figcaption>The circuit for <span class="math inline">\(V_f\)</span></figcaption>
</figure>
</div>
<p>The bottom wire can be discarded, since it always contains a <span class="math inline">\(\ket{-}\)</span> and thus is not entangled with the upper wire.</p>
</section>
<section id="constructing-operatornameflip_" class="level3" data-number="10.1.2">
<h3 data-number="10.1.2" class="anchored" data-anchor-id="constructing-operatornameflip_"><span class="header-section-number">10.1.2</span> Constructing <span class="math inline">\(\operatorname{FLIP}_*\)</span></h3>
<p>As a second ingredient for Grover’s algorithm, we define a unitary called <span class="math inline">\(\operatorname{FLIP}_*\)</span>. This unitary does nothing, if it is applied on the uniform superposition <span class="math inline">\(\ket{*}\)</span>. For any other quantum state <span class="math inline">\(\psi\)</span> with <span class="math inline">\(\psi\)</span> orthogonal to <span class="math inline">\(\ket{*}\)</span> it maps <span class="math inline">\(\psi\)</span> to <span class="math inline">\(-\psi\)</span>. The uniform superposition <span class="math inline">\(\ket{*}\)</span> simply denotes the superposition over all classical possibilities <span class="math inline">\(2^{-\frac{n}{2}}\sum_x \ket{x}\)</span>. We can construct this <span class="math inline">\(\operatorname{FLIP}_*\)</span> by the following quantum circuit:</p>
<section id="constructing-operatornameflip_" class="level3" data-number="12.1.2">
<h3 data-number="12.1.2" class="anchored" data-anchor-id="constructing-operatornameflip_"><span class="header-section-number">12.1.2</span> Constructing <span class="math inline">\(\operatorname{FLIP}_*\)</span></h3>
<p>As a second ingredient for Grover’s algorithm, we need a unitary <span class="math inline">\(\operatorname{FLIP}_*\)</span> (defined below). To realize this, we first need <span class="math inline">\(\operatorname{FLIP}_0\)</span>, which ist defined by the unitary <span class="math display">\[
\operatorname{FLIP}_0 \ket{x} \coloneqq
\begin{cases}
\ket{0} &amp; \text{if } x = 0 \\
-\ket{x} &amp; \text{else}.
\end{cases}
\]</span></p>
<p><span class="math inline">\(\operatorname{FLIP}_0\)</span> is implemented by the following quantum circuit:</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="flip.svg" class="img-fluid figure-img" style="width:60.0%"></p>
<figcaption>The circuit for <span class="math inline">\(\operatorname{FLIP}_*\)</span></figcaption>
<p><img src="img/flip_zero.svg" class="img-fluid figure-img" style="width:50.0%"></p>
<figcaption>The circuit for <span class="math inline">\(\operatorname{FLIP}_0\)</span></figcaption>
</figure>
</div>
<p><span class="math inline">\(\operatorname{FLIP}_0\)</span> is here definied by the unitary <span class="math display">\[
\operatorname{FLIP}_0 \ket{x} = \begin{cases} \ket{0} &amp; \text{if } x = 0\\ -\ket{x} &amp; \text{else} \end{cases}
<p><span class="math inline">\(Z\)</span> is the Pauli matrix from definition <a href="quantumCircuits.html#def-gates-pauli" class="quarto-xref">Definition&nbsp;<span>7.2</span></a>. The empty circles indicates a negative control wire. So <span class="math inline">\(Z\)</span> is only applied if the other wires are <span class="math inline">\(\ket{0}\)</span>.</p>
<p>Now we can define the unitary called <span class="math inline">\(\operatorname{FLIP}_*\)</span>. This unitary does nothing, if it is applied on the uniform superposition <span class="math inline">\(\ket{*}\)</span>. For any other quantum state <span class="math inline">\(\ket{\psi}\)</span> orthogonal to <span class="math inline">\(\ket{*}\)</span> it maps to <span class="math inline">\(-\ket{\psi}\)</span>. So <span class="math inline">\(\operatorname{FLIP}_*\)</span> is described by:</p>
<p><span class="math display">\[
\operatorname{FLIP}_* \ket{\psi} \coloneqq
\begin{cases}
\ket{*} &amp; \text{if } \ket{\psi} = \ket{*} \\
-\ket{x} &amp; \text{if } \braket{\psi | *} = 0 \text{ (orthogonal)}.
\end{cases}
\]</span></p>
<p>We can construct this <span class="math inline">\(\operatorname{FLIP}_*\)</span> by the following quantum circuit:</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="img/flip_star.svg" class="img-fluid figure-img" style="width:60.0%"></p>
<figcaption>The circuit for <span class="math inline">\(\operatorname{FLIP}_*\)</span></figcaption>
</figure>
</div>
</section>
</section>
<section id="the-algorithm-for-searching" class="level2" data-number="10.2">
<h2 data-number="10.2" class="anchored" data-anchor-id="the-algorithm-for-searching"><span class="header-section-number">10.2</span> The algorithm for searching</h2>
<section id="the-algorithm-for-searching" class="level2" data-number="12.2">
<h2 data-number="12.2" class="anchored" data-anchor-id="the-algorithm-for-searching"><span class="header-section-number">12.2</span> The algorithm for searching</h2>
<p>The actual algorithm takes a function <span class="math inline">\(f: \{0,1\}^n \rightarrow \{0,1\}\)</span> and outputs an <span class="math inline">\(x_0\)</span> with <span class="math inline">\(f(x_0)=1\)</span>. For simplicity, we assume that there is only one <span class="math inline">\(x_0\)</span> for which <span class="math inline">\(f(x_0) = 1\)</span> holds and for each other <span class="math inline">\(x \neq x_0\)</span> it holds that <span class="math inline">\(f(x)=0\)</span>.</p>
<p>With the two new unitaries <span class="math inline">\(V_f\)</span> and <span class="math inline">\(\operatorname{FLIP}_*\)</span> defined, we can construct the circuit for Grover’s algorithm, which is shown in the following figure:</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="grover.svg" class="img-fluid figure-img" style="width:70.0%"></p>
<p><img src="img/grover.svg" class="img-fluid figure-img" style="width:70.0%"></p>
<figcaption>The quantum circuit for Grover’s algorithm</figcaption>
</figure>
</div>
<p>The algorithm works as follows:</p>
<ol type="1">
<li>We start with a <span class="math inline">\(\ket{0}\)</span> entry on every qubit.</li>
<li>We bring the system into the superposition over all entries by applying <span class="math inline">\(H^{\otimes n}\)</span>. The quantum state is then <span class="math inline">\(2^\frac{-n}{2}\sum_x \ket{x}\)</span> which we also call <span class="math inline">\(\ket{*}\)</span>.</li>
<li>We bring the system into the superposition over all entries by applying <span class="math inline">\(H^{\otimes n}\)</span>. The quantum state is then <span class="math inline">\(\frac{1}{\sqrt{2^n}} \sum_{x \in \{0,1\}^n} \ket{x}\)</span> which we also call <span class="math inline">\(\ket{*}\)</span>.</li>
<li>We apply the unitary <span class="math inline">\(V_f\)</span>.</li>
<li>We apply the unitary <span class="math inline">\(\operatorname{FLIP}_*\)</span>.</li>
<li>We repeat steps 3 and 4 <span class="math inline">\(t\)</span> times, and then do a measurement.</li>
<li>We repeat steps 3 and 4 <span class="math inline">\(t\)</span> times.</li>
<li>We do a measurement.</li>
</ol>
<p>The measurement in step 5 will then give us <span class="math inline">\(x_0\)</span> with high probability.</p>
<section id="understanding-the-algorithm-for-searching" class="level3" data-number="10.2.1">
<h3 data-number="10.2.1" class="anchored" data-anchor-id="understanding-the-algorithm-for-searching"><span class="header-section-number">10.2.1</span> Understanding the algorithm for searching</h3>
<p>The measurement in step 6 will then give us <span class="math inline">\(x_0\)</span> with high probability.</p>
<section id="understanding-the-algorithm-for-searching" class="level3" data-number="12.2.1">
<h3 data-number="12.2.1" class="anchored" data-anchor-id="understanding-the-algorithm-for-searching"><span class="header-section-number">12.2.1</span> Understanding the algorithm for searching</h3>
<p>When looking at the quantum circuit, it is not completely intuitive why the algorithm gives the correct result. We therefore now look into what is happening in each step.</p>
<p>The desired quantum state after the algorithm finishes is <span class="math inline">\(\ket{x_0}\)</span>. At the beginning of the algorithm, we bring the system into the uniform superposition <span class="math inline">\(\ket{*} = 2^\frac{-n}{2}\sum_x \ket{x}\)</span>. We know that <span class="math inline">\(\ket{x_0}\)</span> is part of this superposition, therefore we can rewrite <span class="math inline">\(\ket{*}\)</span> as follows <span class="math display">\[
\ket{*} = 2^{-\frac{n}{2}}\sum_x \ket{x}
<p>The desired quantum state after the algorithm finishes is <span class="math inline">\(\ket{x_0}\)</span>. At the beginning of the algorithm, we bring the system into the uniform superposition <span class="math inline">\(\ket{*} = \frac{1}{\sqrt{2^n}} \sum_{x \in \{0,1\}^n} \ket{x}\)</span>. We know that <span class="math inline">\(\ket{x_0}\)</span> is part of this superposition, therefore we can rewrite <span class="math inline">\(\ket{*}\)</span> as follows <span class="math display">\[
\ket{*}
= \frac{1}{\sqrt{2^n}} \sum_{x \in \{0,1\}^n} \ket{x}
= \frac{1}{\sqrt{2^n}} \underbrace{\ket{x_0}}_{\textit{good}} + \sqrt{\frac{2^n-1}{2^n}} \underbrace{\sum_{x\neq x_0} \frac{1}{\sqrt{2^n-1}}\ket{x}}_{\textit{bad}}
\]</span></p>
<p>So the current state can be seen as a superposition of a “good” state <em>good</em> and a “bad” state <em>bad</em>.</p>
<p>The geometric interpretation of this superposition can be drawn as follows:</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="grover_plt1.svg" class="img-fluid figure-img" style="width:30.0%"></p>
<p><img src="img/grover_plot_1.svg" class="img-fluid figure-img" style="width:30.0%"></p>
<figcaption>Geometric interpretation of <span class="math inline">\(\ket{*}\)</span></figcaption>
</figure>
</div>
......@@ -407,7 +389,7 @@ V_f\ket{*}= -\frac{1}{\sqrt{2^n}} \underbrace{\ket{x_0}}_{\text{good}} + \sqrt{
<p>This looks like this in the geometric interpretation:</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="grover_plt2.svg" class="img-fluid figure-img" style="width:30.0%"></p>
<p><img src="img/grover_plot_2.svg" class="img-fluid figure-img" style="width:30.0%"></p>
<figcaption>Geometric interpretation after <span class="math inline">\(V_f\)</span></figcaption>
</figure>
</div>
......@@ -415,13 +397,13 @@ V_f\ket{*}= -\frac{1}{\sqrt{2^n}} \underbrace{\ket{x_0}}_{\text{good}} + \sqrt{
<p>After <span class="math inline">\(V_f\)</span>, we apply the <span class="math inline">\(\operatorname{FLIP}_*\)</span> operation on the quantum state. Since <span class="math inline">\(\operatorname{FLIP}_*\)</span> does nothing on the <span class="math inline">\(\ket{*}\)</span> entries and negates the amplitude of any vector orthogonal to it, <span class="math inline">\(\operatorname{FLIP}_*\)</span> mirrors the vector across <span class="math inline">\(\ket{*}\)</span>. This can be seen in the following figure:</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="grover_plt3.svg" class="img-fluid figure-img" style="width:30.0%"></p>
<p><img src="img/grover_plot_3.svg" class="img-fluid figure-img" style="width:30.0%"></p>
<figcaption>Geometric interpretation after <span class="math inline">\(\operatorname{FLIP}_*\)</span></figcaption>
</figure>
</div>
<p>All in all, we have seen that by applying <span class="math inline">\(V_f\)</span> and <span class="math inline">\(\operatorname{FLIP}_*\)</span>, we can increase the angle of the quantum state in relation to the “good” and “bad” states by <span class="math inline">\(2\theta\)</span>. Therefore two reflection give rotation. By repeating this step often enough, we can get the amplitude of <span class="math inline">\(\ket{x_0}\)</span> close to 1.</p>
<p>To be more precise: Since we know <span class="math inline">\(\theta\)</span> and we know that we will increase the <em>good</em>-ness of our quantum state by <span class="math inline">\(2\theta\)</span> each time, we can calculate that only <span class="math inline">\(t\)</span> iterations are necessary with <span class="math display">\[
t \approx \frac{\frac{\pi / 2}{\theta} - 1}{2} \approx \frac{\pi}{4 \theta} \approx \frac{\pi}{4} \cdot \sqrt{2^n}
t \approx \frac{\frac{\pi / 2}{\theta} - 1}{2} \approx \frac{\pi}{4 \theta} \approx \frac{\pi}{4} \cdot \sqrt{2^n}.
\]</span> Grover’s algorithm therefore takes <span class="math inline">\(O(\sqrt{2^n})\)</span> steps, where an evaluation of the circuit counts as one step.</p>
......@@ -431,24 +413,6 @@ t \approx \frac{\frac{\pi / 2}{\theta} - 1}{2} \approx \frac{\pi}{4 \theta} \app
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const toggleBodyColorMode = (bsSheetEl) => {
const mode = bsSheetEl.getAttribute("data-mode");
const bodyEl = window.document.querySelector("body");
if (mode === "dark") {
bodyEl.classList.add("quarto-dark");
bodyEl.classList.remove("quarto-light");
} else {
bodyEl.classList.add("quarto-light");
bodyEl.classList.remove("quarto-dark");
}
}
const toggleBodyColorPrimary = () => {
const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
if (bsSheetEl) {
toggleBodyColorMode(bsSheetEl);
}
}
toggleBodyColorPrimary();
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
......@@ -464,18 +428,7 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
}
return false;
}
const clipboard = new window.ClipboardJS('.code-copy-button', {
text: function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
});
clipboard.on('success', function(e) {
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
......@@ -507,15 +460,35 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp("https:\/\/qis\.rwth-aachen\.de\/teaching\/24ss\/intro-quantum-computing\/script\/");
var filterRegex = new RegExp("https:\/\/qis\.rwth-aachen\.de\/teaching\/25ss\/intro-quantum-computing\/script\/");
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool)');
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
......@@ -612,7 +585,6 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
// TODO in 1.5, we should make sure this works without a callout special case
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
......@@ -840,14 +812,11 @@ window.document.addEventListener("DOMContentLoaded", function (event) {
</script>
<nav class="page-navigation">
<div class="nav-page nav-page-previous">
<a href="./shorsAlgorithm.html" class="pagination-link" aria-label="Shor's Algorithm">
<i class="bi bi-arrow-left-short"></i> <span class="nav-page-text"><span class="chapter-number">9</span>&nbsp; <span class="chapter-title">Shor’s Algorithm</span></span>
<a href="../content/shorsAlgorithm.html" class="pagination-link" aria-label="Shor's Algorithm">
<i class="bi bi-arrow-left-short"></i> <span class="nav-page-text"><span class="chapter-number">11</span>&nbsp; <span class="chapter-title">Shor’s Algorithm</span></span>
</a>
</div>
<div class="nav-page nav-page-next">
<a href="./physicalBackground.html" class="pagination-link" aria-label="Physical Background">
<span class="nav-page-text">Physical Background</span> <i class="bi bi-arrow-right-short"></i>
</a>
</div>
</nav>
</div> <!-- /content -->
......
<?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='159.778348pt' height='44.69151pt' viewBox='-68.680643 -65.160205 159.778348 44.69151'>
<defs>
<clipPath id='clip1'>
<path d='M56.6016-49.8164H76.5273V-64.7617H56.6016Z'/>
</clipPath>
<path id='g0-105' d='M2.719801-2.321295C2.769614-2.440847 2.769614-2.460772 2.769614-2.49066S2.769614-2.540473 2.719801-2.660025L.976339-7.242839C.916563-7.412204 .856787-7.47198 .747198-7.47198S.547945-7.382316 .547945-7.272727C.547945-7.242839 .547945-7.222914 .597758-7.113325L2.361146-2.49066L.597758 2.11208C.547945 2.221669 .547945 2.241594 .547945 2.291407C.547945 2.400996 .637609 2.49066 .747198 2.49066C.876712 2.49066 .916563 2.391034 .956413 2.291407L2.719801-2.321295Z'/>
<path id='g0-106' d='M1.58406-7.113325C1.58406-7.292653 1.58406-7.47198 1.384807-7.47198S1.185554-7.292653 1.185554-7.113325V2.132005C1.185554 2.311333 1.185554 2.49066 1.384807 2.49066S1.58406 2.311333 1.58406 2.132005V-7.113325Z'/>
<path id='g1-72' d='M7.601494-6.03736C7.691158-6.396015 7.711083-6.495641 8.438356-6.495641C8.697385-6.495641 8.777086-6.495641 8.777086-6.694894C8.777086-6.804483 8.667497-6.804483 8.637609-6.804483C8.358655-6.804483 7.641345-6.774595 7.362391-6.774595C7.073474-6.774595 6.366127-6.804483 6.07721-6.804483C5.997509-6.804483 5.88792-6.804483 5.88792-6.60523C5.88792-6.495641 5.977584-6.495641 6.166874-6.495641C6.1868-6.495641 6.37609-6.495641 6.545455-6.475716C6.724782-6.455791 6.814446-6.445828 6.814446-6.316314C6.814446-6.276463 6.804483-6.256538 6.774595-6.127024L6.176837-3.696139H3.138232L3.726027-6.03736C3.815691-6.396015 3.845579-6.495641 4.562889-6.495641C4.821918-6.495641 4.901619-6.495641 4.901619-6.694894C4.901619-6.804483 4.79203-6.804483 4.762142-6.804483C4.483188-6.804483 3.765878-6.774595 3.486924-6.774595C3.198007-6.774595 2.49066-6.804483 2.201743-6.804483C2.122042-6.804483 2.012453-6.804483 2.012453-6.60523C2.012453-6.495641 2.102117-6.495641 2.291407-6.495641C2.311333-6.495641 2.500623-6.495641 2.669988-6.475716C2.849315-6.455791 2.938979-6.445828 2.938979-6.316314C2.938979-6.276463 2.929016-6.246575 2.899128-6.127024L1.564134-.777086C1.464508-.388543 1.444583-.308842 .657534-.308842C.478207-.308842 .388543-.308842 .388543-.109589C.388543 0 .508095 0 .52802 0C.806974 0 1.514321-.029888 1.793275-.029888C2.002491-.029888 2.221669-.019925 2.430884-.019925C2.650062-.019925 2.86924 0 3.078456 0C3.158157 0 3.277709 0 3.277709-.199253C3.277709-.308842 3.188045-.308842 2.998755-.308842C2.630137-.308842 2.351183-.308842 2.351183-.488169C2.351183-.547945 2.371108-.597758 2.381071-.657534L3.058531-3.387298H6.097136C5.678705-1.733499 5.449564-.787049 5.409714-.637609C5.310087-.318804 5.120797-.308842 4.503113-.308842C4.353674-.308842 4.26401-.308842 4.26401-.109589C4.26401 0 4.383562 0 4.403487 0C4.682441 0 5.389788-.029888 5.668742-.029888C5.877958-.029888 6.097136-.019925 6.306351-.019925C6.525529-.019925 6.744707 0 6.953923 0C7.033624 0 7.153176 0 7.153176-.199253C7.153176-.308842 7.063512-.308842 6.874222-.308842C6.505604-.308842 6.22665-.308842 6.22665-.488169C6.22665-.547945 6.246575-.597758 6.256538-.657534L7.601494-6.03736Z'/>
<path id='g1-85' d='M6.326276-5.758406C6.425903-6.166874 6.60523-6.465753 7.402242-6.495641C7.452055-6.495641 7.571606-6.505604 7.571606-6.694894C7.571606-6.704857 7.571606-6.804483 7.442092-6.804483C7.113325-6.804483 6.764633-6.774595 6.425903-6.774595S5.718555-6.804483 5.389788-6.804483C5.330012-6.804483 5.210461-6.804483 5.210461-6.60523C5.210461-6.495641 5.310087-6.495641 5.389788-6.495641C5.957659-6.485679 6.067248-6.276463 6.067248-6.057285C6.067248-6.027397 6.047323-5.877958 6.03736-5.84807L5.140722-2.291407C4.801993-.956413 3.656289-.089664 2.660025-.089664C1.982565-.089664 1.444583-.52802 1.444583-1.384807C1.444583-1.404732 1.444583-1.723537 1.554172-2.161893L2.520548-6.03736C2.610212-6.396015 2.630137-6.495641 3.35741-6.495641C3.616438-6.495641 3.696139-6.495641 3.696139-6.694894C3.696139-6.804483 3.58655-6.804483 3.556663-6.804483C3.277709-6.804483 2.560399-6.774595 2.281445-6.774595C1.992528-6.774595 1.285181-6.804483 .996264-6.804483C.916563-6.804483 .806974-6.804483 .806974-6.60523C.806974-6.495641 .896638-6.495641 1.085928-6.495641C1.105853-6.495641 1.295143-6.495641 1.464508-6.475716C1.643836-6.455791 1.733499-6.445828 1.733499-6.316314C1.733499-6.256538 1.62391-5.838107 1.564134-5.608966L1.344956-4.732254C1.255293-4.343711 .777086-2.460772 .737235-2.271482C.667497-1.992528 .667497-1.843088 .667497-1.693649C.667497-.478207 1.574097 .219178 2.620174 .219178C3.875467 .219178 5.110834-.9066 5.439601-2.221669L6.326276-5.758406Z'/>
<path id='g1-88' d='M4.83188-4.094645L3.995019-6.07721C3.965131-6.156912 3.945205-6.196762 3.945205-6.206725C3.945205-6.266501 4.11457-6.455791 4.533001-6.495641C4.632628-6.505604 4.732254-6.515567 4.732254-6.684932C4.732254-6.804483 4.612702-6.804483 4.582814-6.804483C4.174346-6.804483 3.745953-6.774595 3.327522-6.774595C3.078456-6.774595 2.460772-6.804483 2.211706-6.804483C2.15193-6.804483 2.032379-6.804483 2.032379-6.60523C2.032379-6.495641 2.132005-6.495641 2.261519-6.495641C2.859278-6.495641 2.919054-6.396015 3.008717-6.176837L4.184309-3.39726L2.082192-1.135741L1.952677-1.026152C1.464508-.498132 .996264-.33873 .488169-.308842C.358655-.298879 .268991-.298879 .268991-.109589C.268991-.099626 .268991 0 .398506 0C.697385 0 1.026152-.029888 1.334994-.029888C1.703611-.029888 2.092154 0 2.450809 0C2.510585 0 2.630137 0 2.630137-.199253C2.630137-.298879 2.530511-.308842 2.510585-.308842C2.420922-.318804 2.11208-.33873 2.11208-.617684C2.11208-.777086 2.261519-.936488 2.381071-1.066002L3.39726-2.141968L4.293898-3.118306L5.300125-.737235C5.339975-.627646 5.349938-.617684 5.349938-.597758C5.349938-.518057 5.160648-.348692 4.772105-.308842C4.662516-.298879 4.572852-.288917 4.572852-.119552C4.572852 0 4.682441 0 4.722291 0C5.001245 0 5.69863-.029888 5.977584-.029888C6.22665-.029888 6.834371 0 7.083437 0C7.153176 0 7.272727 0 7.272727-.18929C7.272727-.308842 7.173101-.308842 7.0934-.308842C6.425903-.318804 6.405978-.348692 6.236613-.747198C5.84807-1.673724 5.180573-3.227895 4.951432-3.825654C5.628892-4.523039 6.674969-5.708593 6.993773-5.987547C7.28269-6.22665 7.66127-6.465753 8.259029-6.495641C8.388543-6.505604 8.478207-6.505604 8.478207-6.694894C8.478207-6.704857 8.478207-6.804483 8.348692-6.804483C8.049813-6.804483 7.721046-6.774595 7.412204-6.774595C7.043587-6.774595 6.665006-6.804483 6.306351-6.804483C6.246575-6.804483 6.117061-6.804483 6.117061-6.60523C6.117061-6.535492 6.166874-6.505604 6.236613-6.495641C6.326276-6.485679 6.635118-6.465753 6.635118-6.1868C6.635118-6.047323 6.525529-5.917808 6.445828-5.828144L4.83188-4.094645Z'/>
<path id='g2-43' d='M4.07472-2.291407H6.854296C6.993773-2.291407 7.183064-2.291407 7.183064-2.49066S6.993773-2.689913 6.854296-2.689913H4.07472V-5.479452C4.07472-5.618929 4.07472-5.808219 3.875467-5.808219S3.676214-5.618929 3.676214-5.479452V-2.689913H.886675C.747198-2.689913 .557908-2.689913 .557908-2.49066S.747198-2.291407 .886675-2.291407H3.676214V.498132C3.676214 .637609 3.676214 .826899 3.875467 .826899S4.07472 .637609 4.07472 .498132V-2.291407Z'/>
<path id='g2-48' d='M4.582814-3.188045C4.582814-3.985056 4.533001-4.782067 4.184309-5.519303C3.726027-6.475716 2.909091-6.635118 2.49066-6.635118C1.892902-6.635118 1.165629-6.37609 .757161-5.449564C.438356-4.762142 .388543-3.985056 .388543-3.188045C.388543-2.440847 .428394-1.544209 .836862-.787049C1.265255 .019925 1.992528 .219178 2.480697 .219178C3.01868 .219178 3.775841 .009963 4.214197-.936488C4.533001-1.62391 4.582814-2.400996 4.582814-3.188045ZM2.480697 0C2.092154 0 1.504359-.249066 1.325031-1.205479C1.215442-1.803238 1.215442-2.719801 1.215442-3.307597C1.215442-3.945205 1.215442-4.60274 1.295143-5.140722C1.484433-6.326276 2.231631-6.41594 2.480697-6.41594C2.809465-6.41594 3.466999-6.236613 3.656289-5.250311C3.755915-4.692403 3.755915-3.935243 3.755915-3.307597C3.755915-2.560399 3.755915-1.882939 3.646326-1.24533C3.496887-.298879 2.929016 0 2.480697 0Z'/>
</defs>
<g id='page1'>
<path d='M-35.8711-57.2891H-50.0742' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-4.6641-57.2891H-18.8672' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M33.8984-57.2891H11.19531' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M33.8984-57.2891H11.19531' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M56.6016-57.2891H33.8984' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M90.6992-57.2891H76.5273' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M90.6992-57.2891H76.5273' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-35.8984-28.2539H-50.0742' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-4.6641-28.2539H-18.8398' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-4.6641-28.2539H-18.8398' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M25.36719-28.2539H11.19531' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M66.5664-28.2539H42.4297' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M90.6992-28.2539H66.5664' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<g transform='matrix(1 0 0 1 -86.2273 -11.9851)'>
<use x='20.314157' y='-42.813661' xlink:href='#g0-106'/>
<use x='23.081565' y='-42.813661' xlink:href='#g2-48'/>
<use x='28.062905' y='-42.813661' xlink:href='#g0-105'/>
</g>
<path d='M-35.8711-49.90234H-18.8672V-64.6797H-35.8711Z' fill='#fff'/>
<path d='M-35.8711-49.90234H-18.8672V-64.6797H-35.8711Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -52.2007 -11.0718)'>
<use x='20.314157' y='-42.813661' xlink:href='#g1-88'/>
</g>
<path d='M-4.6641-20.8672H11.19531V-64.6797H-4.6641Z' fill='#fff'/>
<path d='M-4.6641-20.8672H11.19531V-64.6797H-4.6641Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -20.993741 3.4454)'>
<use x='20.314157' y='-42.813661' xlink:href='#g1-85'/>
</g>
<path d='M56.6016-49.8164H76.5273V-64.7617H56.6016Z' fill='#fff'/>
<path d='M59.4375-55.5898C63.0117-59.8477 70.1211-59.8477 73.6914-55.5898' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' clip-path='url(#clip1)'/>
<path d='M66.5664-54.4531L71.4102-60.2383' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' clip-path='url(#clip1)'/>
<path d='M72.648432-61.710976C72.449214-61.570345 71.51171-61.000034 70.804686-60.746128L72.019527-59.726599C72.144528-60.468786 72.542962-61.492224 72.648432-61.710976Z' clip-path='url(#clip1)'/>
<path d='M72.648432-61.710976C72.449214-61.570345 71.51171-61.000034 70.804686-60.746128L72.019527-59.726599C72.144528-60.468786 72.542962-61.492224 72.648432-61.710976Z' stroke='#000' fill='none' stroke-width='.788999' stroke-miterlimit='10' clip-path='url(#clip1)'/>
<path d='M56.6016-49.8164H76.5273V-64.7617H56.6016Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -88.9948 17.0494)'>
<use x='20.314157' y='-42.813661' xlink:href='#g0-106'/>
<use x='23.081565' y='-42.813661' xlink:href='#g2-43'/>
<use x='30.830313' y='-42.813661' xlink:href='#g0-105'/>
</g>
<path d='M-35.8984-20.8672H-18.8398V-35.64453H-35.8984Z' fill='#fff'/>
<path d='M-35.8984-20.8672H-18.8398V-35.64453H-35.8984Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -52.2284 17.9627)'>
<use x='20.314157' y='-42.813661' xlink:href='#g1-72'/>
</g>
<path d='M25.36719-20.8672H42.4297V-35.64453H25.36719Z' fill='#fff'/>
<path d='M25.36719-20.8672H42.4297V-35.64453H25.36719Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 9.0384 17.9627)'>
<use x='20.314157' y='-42.813661' xlink:href='#g1-72'/>
</g>
</g>
</svg>
\ No newline at end of file
<?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='203.985663pt' height='78.992017pt' viewBox='-68.680958 -68.015412 203.985663 78.992017'>
<defs>
<clipPath id='clip1'>
<path d='M100.8086-31.46875H120.7344V-53.8867H100.8086Z'/>
</clipPath>
<path id='g3-102' d='M2.838356-2.75467H3.521793C3.66127-2.75467 3.75193-2.75467 3.75193-2.908095C3.75193-3.005729 3.66127-3.005729 3.535741-3.005729H2.887173C3.047572-3.891407 3.103362-4.212204 3.159153-4.414446C3.194022-4.56787 3.347447-4.714321 3.514819-4.714321C3.521793-4.714321 3.710087-4.714321 3.84259-4.630635C3.556663-4.539975 3.535741-4.288917 3.535741-4.247073C3.535741-4.093649 3.654296-3.989041 3.814695-3.989041C4.002989-3.989041 4.212204-4.14944 4.212204-4.414446C4.212204-4.735243 3.870486-4.909589 3.514819-4.909589C3.20797-4.909589 2.866252-4.735243 2.677958-4.38655C2.538481-4.128518 2.48269-3.814695 2.336239-3.005729H1.785305C1.645828-3.005729 1.555168-3.005729 1.555168-2.852304C1.555168-2.75467 1.645828-2.75467 1.771357-2.75467H2.287422C2.280448-2.712827 1.841096-.202242 1.673724 .54396C1.638854 .697385 1.520299 1.227397 1.185554 1.227397C1.17858 1.227397 1.011208 1.227397 .878705 1.143711C1.164633 1.053051 1.185554 .801993 1.185554 .760149C1.185554 .606725 1.066999 .502117 .9066 .502117C.718306 .502117 .509091 .662516 .509091 .927522C.509091 1.241345 .836862 1.422665 1.185554 1.422665C1.63188 1.422665 1.93873 .962391 2.022416 .808966C2.273474 .341719 2.433873-.516065 2.447821-.599751L2.838356-2.75467Z'/>
<path id='g3-110' d='M.850809-.439352C.822914-.348692 .781071-.174346 .781071-.153425C.781071 0 .9066 .069738 1.018182 .069738C1.143711 .069738 1.255293-.020922 1.290162-.083686S1.380822-.369614 1.415691-.516065C1.45056-.648568 1.527273-.969365 1.569116-1.143711C1.610959-1.297136 1.652802-1.45056 1.687671-1.610959C1.764384-1.896887 1.778331-1.952677 1.980573-2.238605C2.175841-2.517559 2.503611-2.880199 3.02665-2.880199C3.431133-2.880199 3.438107-2.524533 3.438107-2.39203C3.438107-1.973599 3.138232-1.199502 3.02665-.9066C2.949938-.711333 2.922042-.648568 2.922042-.530012C2.922042-.160399 3.228892 .069738 3.584558 .069738C4.281943 .069738 4.588792-.892653 4.588792-.99726C4.588792-1.08792 4.498132-1.08792 4.47721-1.08792C4.379577-1.08792 4.372603-1.046077 4.344707-.969365C4.184309-.411457 3.884433-.125529 3.605479-.125529C3.459029-.125529 3.431133-.223163 3.431133-.369614C3.431133-.530012 3.466002-.620672 3.591532-.934496C3.675218-1.150685 3.961146-1.889913 3.961146-2.280448C3.961146-2.956912 3.424159-3.075467 3.054545-3.075467C2.475716-3.075467 2.085181-2.719801 1.875965-2.440847C1.827148-2.922042 1.415691-3.075467 1.129763-3.075467C.829888-3.075467 .669489-2.859278 .578829-2.698879C.425405-2.440847 .327771-2.043337 .327771-2.008468C.327771-1.917808 .425405-1.917808 .446326-1.917808C.54396-1.917808 .550934-1.93873 .599751-2.127024C.704359-2.538481 .836862-2.880199 1.108842-2.880199C1.290162-2.880199 1.338979-2.726775 1.338979-2.538481C1.338979-2.405978 1.276214-2.147945 1.227397-1.959651S1.108842-1.48543 1.073973-1.332005L.850809-.439352Z'/>
<path id='g0-105' d='M2.719801-2.321295C2.769614-2.440847 2.769614-2.460772 2.769614-2.49066S2.769614-2.540473 2.719801-2.660025L.976339-7.242839C.916563-7.412204 .856787-7.47198 .747198-7.47198S.547945-7.382316 .547945-7.272727C.547945-7.242839 .547945-7.222914 .597758-7.113325L2.361146-2.49066L.597758 2.11208C.547945 2.221669 .547945 2.241594 .547945 2.291407C.547945 2.400996 .637609 2.49066 .747198 2.49066C.876712 2.49066 .916563 2.391034 .956413 2.291407L2.719801-2.321295Z'/>
<path id='g0-106' d='M1.58406-7.113325C1.58406-7.292653 1.58406-7.47198 1.384807-7.47198S1.185554-7.292653 1.185554-7.113325V2.132005C1.185554 2.311333 1.185554 2.49066 1.384807 2.49066S1.58406 2.311333 1.58406 2.132005V-7.113325Z'/>
<path id='g1-10' d='M5.683686-1.743462C5.683686-3.173101 4.519054-4.316812 3.110336-4.316812C1.687671-4.316812 .536986-3.152179 .536986-1.750436C.536986-.320797 1.701619 .822914 3.110336 .822914C4.533001 .822914 5.683686-.341719 5.683686-1.743462ZM1.548194-3.47995C1.834122-3.737983 2.371108-4.079701 3.110336-4.079701S4.38655-3.737983 4.672478-3.47995L3.110336-1.917808L1.548194-3.47995ZM1.380822-.188294C.99726-.585803 .774097-1.171606 .774097-1.743462C.774097-2.357161 1.018182-2.929016 1.380822-3.305604L2.942964-1.750436L1.380822-.188294ZM4.839851-3.305604C5.223412-2.908095 5.446575-2.322291 5.446575-1.750436C5.446575-1.136737 5.202491-.564882 4.839851-.188294L3.277709-1.743462L4.839851-3.305604ZM4.672478-.013948C4.38655 .244085 3.849564 .585803 3.110336 .585803S1.834122 .244085 1.548194-.013948L3.110336-1.57609L4.672478-.013948Z'/>
<path id='g4-48' d='M4.582814-3.188045C4.582814-3.985056 4.533001-4.782067 4.184309-5.519303C3.726027-6.475716 2.909091-6.635118 2.49066-6.635118C1.892902-6.635118 1.165629-6.37609 .757161-5.449564C.438356-4.762142 .388543-3.985056 .388543-3.188045C.388543-2.440847 .428394-1.544209 .836862-.787049C1.265255 .019925 1.992528 .219178 2.480697 .219178C3.01868 .219178 3.775841 .009963 4.214197-.936488C4.533001-1.62391 4.582814-2.400996 4.582814-3.188045ZM2.480697 0C2.092154 0 1.504359-.249066 1.325031-1.205479C1.215442-1.803238 1.215442-2.719801 1.215442-3.307597C1.215442-3.945205 1.215442-4.60274 1.295143-5.140722C1.484433-6.326276 2.231631-6.41594 2.480697-6.41594C2.809465-6.41594 3.466999-6.236613 3.656289-5.250311C3.755915-4.692403 3.755915-3.935243 3.755915-3.307597C3.755915-2.560399 3.755915-1.882939 3.646326-1.24533C3.496887-.298879 2.929016 0 2.480697 0Z'/>
<path id='g4-49' d='M2.929016-6.37609C2.929016-6.615193 2.929016-6.635118 2.699875-6.635118C2.082192-5.997509 1.205479-5.997509 .886675-5.997509V-5.688667C1.085928-5.688667 1.673724-5.688667 2.191781-5.947696V-.787049C2.191781-.428394 2.161893-.308842 1.265255-.308842H.946451V0C1.295143-.029888 2.161893-.029888 2.560399-.029888S3.825654-.029888 4.174346 0V-.308842H3.855542C2.958904-.308842 2.929016-.418431 2.929016-.787049V-6.37609Z'/>
<path id='g2-32' d='M4.801993-6.655044C4.811955-6.694894 4.83188-6.75467 4.83188-6.804483C4.83188-6.90411 4.762142-6.914072 4.712329-6.914072C4.612702-6.914072 4.60274-6.894147 4.562889-6.714819L2.909091-.129514C2.15193-.219178 1.77335-.587796 1.77335-1.24533C1.77335-1.444583 1.77335-1.703611 2.311333-3.098381C2.351183-3.217933 2.420922-3.387298 2.420922-3.58655C2.420922-4.034869 2.102117-4.403487 1.603985-4.403487C.657534-4.403487 .288917-2.958904 .288917-2.86924C.288917-2.769614 .388543-2.769614 .408468-2.769614C.508095-2.769614 .518057-2.789539 .56787-2.948941C.836862-3.895392 1.235367-4.184309 1.574097-4.184309C1.653798-4.184309 1.823163-4.184309 1.823163-3.865504C1.823163-3.606476 1.723537-3.35741 1.594022-3.008717C1.115816-1.753425 1.115816-1.494396 1.115816-1.325031C1.115816-.37858 1.892902 .029888 2.849315 .089664C2.769614 .448319 2.769614 .468244 2.630137 .996264C2.600249 1.105853 2.400996 1.912827 2.400996 1.942715C2.400996 1.952677 2.400996 2.042341 2.520548 2.042341C2.540473 2.042341 2.590286 2.042341 2.610212 2.002491C2.6401 1.982565 2.699875 1.733499 2.729763 1.594022L3.108344 .109589C3.476961 .109589 4.353674 .109589 5.290162-.956413C5.69863-1.414695 5.907846-1.853051 6.017435-2.15193C6.107098-2.400996 6.326276-3.267746 6.326276-3.706102C6.326276-4.26401 6.057285-4.403487 5.88792-4.403487C5.638854-4.403487 5.389788-4.144458 5.389788-3.92528C5.389788-3.795766 5.449564-3.73599 5.539228-3.656289C5.648817-3.5467 5.897883-3.287671 5.897883-2.809465C5.897883-2.171856 5.379826-1.354919 5.031133-.996264C4.154421-.109589 3.516812-.109589 3.158157-.109589L4.801993-6.655044Z'/>
<path id='g2-72' d='M7.601494-6.03736C7.691158-6.396015 7.711083-6.495641 8.438356-6.495641C8.697385-6.495641 8.777086-6.495641 8.777086-6.694894C8.777086-6.804483 8.667497-6.804483 8.637609-6.804483C8.358655-6.804483 7.641345-6.774595 7.362391-6.774595C7.073474-6.774595 6.366127-6.804483 6.07721-6.804483C5.997509-6.804483 5.88792-6.804483 5.88792-6.60523C5.88792-6.495641 5.977584-6.495641 6.166874-6.495641C6.1868-6.495641 6.37609-6.495641 6.545455-6.475716C6.724782-6.455791 6.814446-6.445828 6.814446-6.316314C6.814446-6.276463 6.804483-6.256538 6.774595-6.127024L6.176837-3.696139H3.138232L3.726027-6.03736C3.815691-6.396015 3.845579-6.495641 4.562889-6.495641C4.821918-6.495641 4.901619-6.495641 4.901619-6.694894C4.901619-6.804483 4.79203-6.804483 4.762142-6.804483C4.483188-6.804483 3.765878-6.774595 3.486924-6.774595C3.198007-6.774595 2.49066-6.804483 2.201743-6.804483C2.122042-6.804483 2.012453-6.804483 2.012453-6.60523C2.012453-6.495641 2.102117-6.495641 2.291407-6.495641C2.311333-6.495641 2.500623-6.495641 2.669988-6.475716C2.849315-6.455791 2.938979-6.445828 2.938979-6.316314C2.938979-6.276463 2.929016-6.246575 2.899128-6.127024L1.564134-.777086C1.464508-.388543 1.444583-.308842 .657534-.308842C.478207-.308842 .388543-.308842 .388543-.109589C.388543 0 .508095 0 .52802 0C.806974 0 1.514321-.029888 1.793275-.029888C2.002491-.029888 2.221669-.019925 2.430884-.019925C2.650062-.019925 2.86924 0 3.078456 0C3.158157 0 3.277709 0 3.277709-.199253C3.277709-.308842 3.188045-.308842 2.998755-.308842C2.630137-.308842 2.351183-.308842 2.351183-.488169C2.351183-.547945 2.371108-.597758 2.381071-.657534L3.058531-3.387298H6.097136C5.678705-1.733499 5.449564-.787049 5.409714-.637609C5.310087-.318804 5.120797-.308842 4.503113-.308842C4.353674-.308842 4.26401-.308842 4.26401-.109589C4.26401 0 4.383562 0 4.403487 0C4.682441 0 5.389788-.029888 5.668742-.029888C5.877958-.029888 6.097136-.019925 6.306351-.019925C6.525529-.019925 6.744707 0 6.953923 0C7.033624 0 7.153176 0 7.153176-.199253C7.153176-.308842 7.063512-.308842 6.874222-.308842C6.505604-.308842 6.22665-.308842 6.22665-.488169C6.22665-.547945 6.246575-.597758 6.256538-.657534L7.601494-6.03736Z'/>
<path id='g2-85' d='M6.326276-5.758406C6.425903-6.166874 6.60523-6.465753 7.402242-6.495641C7.452055-6.495641 7.571606-6.505604 7.571606-6.694894C7.571606-6.704857 7.571606-6.804483 7.442092-6.804483C7.113325-6.804483 6.764633-6.774595 6.425903-6.774595S5.718555-6.804483 5.389788-6.804483C5.330012-6.804483 5.210461-6.804483 5.210461-6.60523C5.210461-6.495641 5.310087-6.495641 5.389788-6.495641C5.957659-6.485679 6.067248-6.276463 6.067248-6.057285C6.067248-6.027397 6.047323-5.877958 6.03736-5.84807L5.140722-2.291407C4.801993-.956413 3.656289-.089664 2.660025-.089664C1.982565-.089664 1.444583-.52802 1.444583-1.384807C1.444583-1.404732 1.444583-1.723537 1.554172-2.161893L2.520548-6.03736C2.610212-6.396015 2.630137-6.495641 3.35741-6.495641C3.616438-6.495641 3.696139-6.495641 3.696139-6.694894C3.696139-6.804483 3.58655-6.804483 3.556663-6.804483C3.277709-6.804483 2.560399-6.774595 2.281445-6.774595C1.992528-6.774595 1.285181-6.804483 .996264-6.804483C.916563-6.804483 .806974-6.804483 .806974-6.60523C.806974-6.495641 .896638-6.495641 1.085928-6.495641C1.105853-6.495641 1.295143-6.495641 1.464508-6.475716C1.643836-6.455791 1.733499-6.445828 1.733499-6.316314C1.733499-6.256538 1.62391-5.838107 1.564134-5.608966L1.344956-4.732254C1.255293-4.343711 .777086-2.460772 .737235-2.271482C.667497-1.992528 .667497-1.843088 .667497-1.693649C.667497-.478207 1.574097 .219178 2.620174 .219178C3.875467 .219178 5.110834-.9066 5.439601-2.221669L6.326276-5.758406Z'/>
<path id='g2-115' d='M3.895392-3.726027C3.616438-3.716065 3.417186-3.496887 3.417186-3.277709C3.417186-3.138232 3.506849-2.988792 3.726027-2.988792S4.184309-3.158157 4.184309-3.5467C4.184309-3.995019 3.755915-4.403487 2.998755-4.403487C1.683686-4.403487 1.315068-3.387298 1.315068-2.948941C1.315068-2.171856 2.052304-2.022416 2.34122-1.96264C2.859278-1.863014 3.377335-1.753425 3.377335-1.205479C3.377335-.946451 3.148194-.109589 1.952677-.109589C1.8132-.109589 1.046077-.109589 .816936-.637609C1.195517-.587796 1.444583-.886675 1.444583-1.165629C1.444583-1.39477 1.285181-1.514321 1.075965-1.514321C.816936-1.514321 .518057-1.305106 .518057-.856787C.518057-.288917 1.085928 .109589 1.942715 .109589C3.556663 .109589 3.945205-1.09589 3.945205-1.544209C3.945205-1.902864 3.755915-2.15193 3.636364-2.271482C3.367372-2.550436 3.078456-2.600249 2.6401-2.689913C2.281445-2.769614 1.882939-2.839352 1.882939-3.287671C1.882939-3.576588 2.122042-4.184309 2.998755-4.184309C3.247821-4.184309 3.745953-4.11457 3.895392-3.726027Z'/>
<path id='g5-48' d='M3.598506-2.224658C3.598506-2.991781 3.507846-3.542715 3.187049-4.030884C2.970859-4.351681 2.538481-4.630635 1.980573-4.630635C.36264-4.630635 .36264-2.726775 .36264-2.224658S.36264 .139477 1.980573 .139477S3.598506-1.72254 3.598506-2.224658ZM1.980573-.055791C1.659776-.055791 1.234371-.244085 1.094894-.81594C.99726-1.227397 .99726-1.799253 .99726-2.315318C.99726-2.824408 .99726-3.354421 1.101868-3.737983C1.248319-4.288917 1.694645-4.435367 1.980573-4.435367C2.357161-4.435367 2.719801-4.20523 2.84533-3.800747C2.956912-3.424159 2.963885-2.922042 2.963885-2.315318C2.963885-1.799253 2.963885-1.283188 2.873225-.843836C2.733748-.209215 2.259527-.055791 1.980573-.055791Z'/>
<path id='g5-49' d='M2.336239-4.435367C2.336239-4.623661 2.322291-4.630635 2.127024-4.630635C1.680697-4.191283 1.046077-4.184309 .760149-4.184309V-3.93325C.927522-3.93325 1.387796-3.93325 1.771357-4.128518V-.571856C1.771357-.341719 1.771357-.251059 1.073973-.251059H.808966V0C.934496-.006974 1.792279-.027895 2.050311-.027895C2.266501-.027895 3.145205-.006974 3.29863 0V-.251059H3.033624C2.336239-.251059 2.336239-.341719 2.336239-.571856V-4.435367Z'/>
<path id='g5-50' d='M3.521793-1.26924H3.284682C3.263761-1.115816 3.194022-.704359 3.103362-.63462C3.047572-.592777 2.510585-.592777 2.412951-.592777H1.129763C1.862017-1.241345 2.106102-1.436613 2.524533-1.764384C3.040598-2.175841 3.521793-2.608219 3.521793-3.270735C3.521793-4.11457 2.782565-4.630635 1.889913-4.630635C1.025156-4.630635 .439352-4.02391 .439352-3.382316C.439352-3.02665 .739228-2.991781 .808966-2.991781C.976339-2.991781 1.17858-3.110336 1.17858-3.361395C1.17858-3.486924 1.129763-3.731009 .767123-3.731009C.983313-4.226152 1.457534-4.379577 1.785305-4.379577C2.48269-4.379577 2.84533-3.835616 2.84533-3.270735C2.84533-2.66401 2.412951-2.182814 2.189788-1.931756L.509091-.27198C.439352-.209215 .439352-.195268 .439352 0H3.312578L3.521793-1.26924Z'/>
<path id='g5-51' d='M1.903861-2.329265C2.447821-2.329265 2.838356-1.952677 2.838356-1.206476C2.838356-.341719 2.336239-.083686 1.931756-.083686C1.652802-.083686 1.039103-.160399 .746202-.571856C1.073973-.585803 1.150685-.81594 1.150685-.962391C1.150685-1.185554 .983313-1.345953 .767123-1.345953C.571856-1.345953 .376588-1.227397 .376588-.941469C.376588-.285928 1.101868 .139477 1.945704 .139477C2.915068 .139477 3.584558-.509091 3.584558-1.206476C3.584558-1.750436 3.138232-2.294396 2.371108-2.454795C3.103362-2.719801 3.368369-3.242839 3.368369-3.668244C3.368369-4.219178 2.733748-4.630635 1.959651-4.630635S.592777-4.254047 .592777-3.696139C.592777-3.459029 .746202-3.326526 .955417-3.326526C1.171606-3.326526 1.311083-3.486924 1.311083-3.682192C1.311083-3.884433 1.171606-4.030884 .955417-4.044832C1.199502-4.351681 1.680697-4.428394 1.93873-4.428394C2.252553-4.428394 2.691905-4.274969 2.691905-3.668244C2.691905-3.375342 2.594271-3.054545 2.412951-2.838356C2.182814-2.57335 1.987547-2.559402 1.638854-2.538481C1.464508-2.524533 1.45056-2.524533 1.415691-2.517559C1.401743-2.517559 1.345953-2.503611 1.345953-2.426899C1.345953-2.329265 1.408717-2.329265 1.527273-2.329265H1.903861Z'/>
</defs>
<g id='page1'>
<path d='M-42.5977-35.5391L-38.0625-42.3438' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -81.4096 -19.7009)'>
<use x='43.745242' y='-23.040232' xlink:href='#g3-110'/>
</g>
<path d='M-33.2422-38.9414H-47.418' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-19.0703-38.9414H-33.2422' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M23.8125-38.9414H9.6406' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M57.9258-38.9414H43.749999' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M100.8086-38.9414H86.6367' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M134.9062-38.9414H120.7344' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-33.2422-4.7461H-47.418' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-33.2422-4.7461H-47.418' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-13.2461-4.7461H-33.2422' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M23.8125-4.7461H3.8164' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M23.8125-4.7461H3.8164' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M72.2812-4.7461H43.749999' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M72.2812-4.7461H43.749999' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M110.7734-4.7461H72.2812' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M110.7734-4.7461H72.2812' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M134.9062-4.7461H110.7734' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<g transform='matrix(1 0 0 1 -112.4262 -13.4103)'>
<use x='43.745242' y='-23.040232' xlink:href='#g0-106'/>
<use x='46.51265' y='-23.040232' xlink:href='#g4-48'/>
<use x='51.493989' y='-26.655596' xlink:href='#g3-110'/>
<use x='56.916982' y='-23.040232' xlink:href='#g0-105'/>
</g>
<path d='M-19.0703-30.98828H9.6406V-46.8906H-19.0703Z' fill='#fff'/>
<path d='M-19.0703-30.98828H9.6406V-46.8906H-19.0703Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -58.8307 -11.9347)'>
<use x='43.745242' y='-23.040232' xlink:href='#g2-72'/>
<use x='52.836132' y='-26.655596' xlink:href='#g1-10'/>
<use x='59.062811' y='-26.655596' xlink:href='#g3-110'/>
</g>
<path d='M23.8125 4.0703H43.749999V-47.7539H23.8125Z' fill='#fff'/>
<path d='M23.8125 4.0703H43.749999V-47.7539H23.8125Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -15.9463 3.1756)'>
<use x='43.745242' y='-23.040232' xlink:href='#g2-85'/>
<use x='50.547507' y='-21.545851' xlink:href='#g3-102'/>
</g>
<path d='M57.9258-30.98828H86.6367V-46.8906H57.9258Z' fill='#fff'/>
<path d='M57.9258-30.98828H86.6367V-46.8906H57.9258Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 18.1644 -11.9347)'>
<use x='43.745242' y='-23.040232' xlink:href='#g2-72'/>
<use x='52.836132' y='-26.655596' xlink:href='#g1-10'/>
<use x='59.062811' y='-26.655596' xlink:href='#g3-110'/>
</g>
<path d='M101.207-31.86719H120.3359V-46.4141H101.207Z' fill='#fff' clip-path='url(#clip1)'/>
<path d='M101.207-31.86719H120.3359V-46.4141H101.207Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' clip-path='url(#clip1)'/>
<path d='M111.6211-46.4141V-53.8867' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' clip-path='url(#clip1)'/>
<path d='M109.9219-46.4141V-53.8867' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' clip-path='url(#clip1)'/>
<path d='M103.6445-37.4414C107.2187-41.6992 114.3242-41.6992 117.8984-37.4414' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' clip-path='url(#clip1)'/>
<path d='M110.7734-36.3047L115.6172-42.0898' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' clip-path='url(#clip1)'/>
<path d='M116.855696-43.562476C116.656469-43.421853 115.718979-42.85154 115.011943-42.597633L116.226788-41.578102C116.351787-42.320291 116.750221-43.343729 116.855696-43.562476Z' clip-path='url(#clip1)'/>
<path d='M116.855696-43.562476C116.656469-43.421853 115.718979-42.85154 115.011943-42.597633L116.226788-41.578102C116.351787-42.320291 116.750221-43.343729 116.855696-43.562476Z' stroke='#000' fill='none' stroke-width='.788999' stroke-miterlimit='10' clip-path='url(#clip1)'/>
<g transform='matrix(1 0 0 1 64.6918 -34.7635)'>
<use x='43.745242' y='-23.040232' xlink:href='#g2-115'/>
</g>
<g transform='matrix(1 0 0 1 -107.0031 20.7855)'>
<use x='43.745242' y='-23.040232' xlink:href='#g0-106'/>
<use x='46.51265' y='-23.040232' xlink:href='#g4-49'/>
<use x='51.493989' y='-23.040232' xlink:href='#g0-105'/>
</g>
<path d='M-13.2461 2.6445H3.8164V-12.1328H-13.2461Z' fill='#fff'/>
<path d='M-13.2461 2.6445H3.8164V-12.1328H-13.2461Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -53.00584 21.69875)'>
<use x='43.745242' y='-23.040232' xlink:href='#g2-72'/>
</g>
<path d='M-26.1563-53.668V10.5781' stroke='#f00' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-dasharray='4.98138 2.98883'/>
<g transform='matrix(1 0 0 1 -78.703 -37.5032)'>
<use x='43.745242' y='-23.040232' xlink:href='#g0-106'/>
<use x='46.51265' y='-23.040232' xlink:href='#g2-32'/>
<use x='53.002234' y='-21.545851' xlink:href='#g5-48'/>
<use x='57.471604' y='-23.040232' xlink:href='#g0-105'/>
</g>
<path d='M16.7266-53.668V10.5781' stroke='#f00' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-dasharray='4.98138 2.98883'/>
<g transform='matrix(1 0 0 1 -35.8186 -37.5032)'>
<use x='43.745242' y='-23.040232' xlink:href='#g0-106'/>
<use x='46.51265' y='-23.040232' xlink:href='#g2-32'/>
<use x='53.002234' y='-21.545851' xlink:href='#g5-49'/>
<use x='57.471604' y='-23.040232' xlink:href='#g0-105'/>
</g>
<path d='M50.83594-53.668V10.5781' stroke='#f00' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-dasharray='4.98138 2.98883'/>
<g transform='matrix(1 0 0 1 -1.7079 -37.5032)'>
<use x='43.745242' y='-23.040232' xlink:href='#g0-106'/>
<use x='46.51265' y='-23.040232' xlink:href='#g2-32'/>
<use x='53.002234' y='-21.545851' xlink:href='#g5-50'/>
<use x='57.471604' y='-23.040232' xlink:href='#g0-105'/>
</g>
<path d='M93.7227-53.668V10.5781' stroke='#f00' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-dasharray='4.98138 2.98883'/>
<g transform='matrix(1 0 0 1 41.1765 -37.5032)'>
<use x='43.745242' y='-23.040232' xlink:href='#g0-106'/>
<use x='46.51265' y='-23.040232' xlink:href='#g2-32'/>
<use x='53.002234' y='-21.545851' xlink:href='#g5-51'/>
<use x='57.471604' y='-23.040232' xlink:href='#g0-105'/>
</g>
</g>
</svg>
\ No newline at end of file
<?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='38.39471pt' height='27.62123pt' viewBox='-69.078205 -69.078205 38.39471 27.62123'>
<defs>
<clipPath id='clip1'>
<path d='M-45.65233-64.453139C-45.65233-66.78517-47.54686-68.6797-49.8828-68.6797C-52.21483-68.6797-54.10936-66.78517-54.10936-64.453139C-54.10936-62.1172-52.21483-60.22658-49.8828-60.22658C-47.54686-60.22658-45.65233-62.1172-45.65233-64.453139ZM-49.8828-64.453139'/>
</clipPath>
</defs>
<g id='page1'>
<path d='M-54.10938-64.45312H-68.6797' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-31.082-64.45312H-45.65234' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-49.878907-45.2539V-60.22656' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-51.58203-43.5547H-68.6797' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-31.082-43.5547H-48.17969' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-49.8828-68.6797V-60.22658M-54.10936-64.453139H-45.65233' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' clip-path='url(#clip1)'/>
<path d='M-45.65233-64.453139C-45.65233-66.78517-47.54686-68.6797-49.8828-68.6797C-52.21483-68.6797-54.10936-66.78517-54.10936-64.453139C-54.10936-62.1172-52.21483-60.22658-49.8828-60.22658C-47.54686-60.22658-45.65233-62.1172-45.65233-64.453139Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<path d='M-48.17967-43.554697C-48.17967-44.492197-48.941393-45.25392-49.8828-45.25392C-50.8203-45.25392-51.58202-44.492197-51.58202-43.554697C-51.58202-42.61329-50.8203-41.85548-49.8828-41.85548C-48.941393-41.85548-48.17967-42.61329-48.17967-43.554697Z'/>
<path d='M-48.17967-43.554697C-48.17967-44.492197-48.941393-45.25392-49.8828-45.25392C-50.8203-45.25392-51.58202-44.492197-51.58202-43.554697C-51.58202-42.61329-50.8203-41.85548-49.8828-41.85548C-48.941393-41.85548-48.17967-42.61329-48.17967-43.554697Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
</g>
</svg>
\ No newline at end of file
<?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='38.39471pt' height='27.62123pt' viewBox='-69.078205 -69.078225 38.39471 27.62123'>
<defs>
<clipPath id='clip1'>
<path d='M-45.65233-46.082028C-45.65233-48.41406-47.54686-50.30859-49.8828-50.30859C-52.21483-50.30859-54.10936-48.41406-54.10936-46.082028C-54.10936-43.74609-52.21483-41.85547-49.8828-41.85547C-47.54686-41.85547-45.65233-43.74609-45.65233-46.082028ZM-49.8828-46.082028'/>
</clipPath>
</defs>
<g id='page1'>
<path d='M-49.878907-65.2773V-50.30859' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-51.58203-66.9805H-68.6797' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-31.082-66.9805H-48.17969' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-54.10938-46.08203H-68.6797' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-31.082-46.08203H-45.65234' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-48.17967-66.980471C-48.17967-67.917971-48.941393-68.67969-49.8828-68.67969C-50.8203-68.67969-51.58202-67.917971-51.58202-66.980471C-51.58202-66.039064-50.8203-65.27735-49.8828-65.27735C-48.941393-65.27735-48.17967-66.039064-48.17967-66.980471Z'/>
<path d='M-48.17967-66.980501C-48.17967-67.918001-48.941393-68.67972-49.8828-68.67972C-50.8203-68.67972-51.58202-67.918001-51.58202-66.980501C-51.58202-66.039094-50.8203-65.27738-49.8828-65.27738C-48.941393-65.27738-48.17967-66.039094-48.17967-66.980501Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<path d='M-49.8828-50.30859V-41.85547M-54.10936-46.082028H-45.65233' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' clip-path='url(#clip1)'/>
<path d='M-45.65233-46.082058C-45.65233-48.41409-47.54686-50.30862-49.8828-50.30862C-52.21483-50.30862-54.10936-48.41409-54.10936-46.082058C-54.10936-43.74612-52.21483-41.8555-49.8828-41.8555C-47.54686-41.8555-45.65233-43.74612-45.65233-46.082058Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
</g>
</svg>
\ No newline at end of file
<?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='96.902316pt' viewBox='-68.681163 -68.015511 258.693024 96.902316'>
<defs>
<path id='g0-105' d='M2.719801-2.321295C2.769614-2.440847 2.769614-2.460772 2.769614-2.49066S2.769614-2.540473 2.719801-2.660025L.976339-7.242839C.916563-7.412204 .856787-7.47198 .747198-7.47198S.547945-7.382316 .547945-7.272727C.547945-7.242839 .547945-7.222914 .597758-7.113325L2.361146-2.49066L.597758 2.11208C.547945 2.221669 .547945 2.241594 .547945 2.291407C.547945 2.400996 .637609 2.49066 .747198 2.49066C.876712 2.49066 .916563 2.391034 .956413 2.291407L2.719801-2.321295Z'/>
<path id='g0-106' d='M1.58406-7.113325C1.58406-7.292653 1.58406-7.47198 1.384807-7.47198S1.185554-7.292653 1.185554-7.113325V2.132005C1.185554 2.311333 1.185554 2.49066 1.384807 2.49066S1.58406 2.311333 1.58406 2.132005V-7.113325Z'/>
<path id='g1-32' d='M4.801993-6.655044C4.811955-6.694894 4.83188-6.75467 4.83188-6.804483C4.83188-6.90411 4.762142-6.914072 4.712329-6.914072C4.612702-6.914072 4.60274-6.894147 4.562889-6.714819L2.909091-.129514C2.15193-.219178 1.77335-.587796 1.77335-1.24533C1.77335-1.444583 1.77335-1.703611 2.311333-3.098381C2.351183-3.217933 2.420922-3.387298 2.420922-3.58655C2.420922-4.034869 2.102117-4.403487 1.603985-4.403487C.657534-4.403487 .288917-2.958904 .288917-2.86924C.288917-2.769614 .388543-2.769614 .408468-2.769614C.508095-2.769614 .518057-2.789539 .56787-2.948941C.836862-3.895392 1.235367-4.184309 1.574097-4.184309C1.653798-4.184309 1.823163-4.184309 1.823163-3.865504C1.823163-3.606476 1.723537-3.35741 1.594022-3.008717C1.115816-1.753425 1.115816-1.494396 1.115816-1.325031C1.115816-.37858 1.892902 .029888 2.849315 .089664C2.769614 .448319 2.769614 .468244 2.630137 .996264C2.600249 1.105853 2.400996 1.912827 2.400996 1.942715C2.400996 1.952677 2.400996 2.042341 2.520548 2.042341C2.540473 2.042341 2.590286 2.042341 2.610212 2.002491C2.6401 1.982565 2.699875 1.733499 2.729763 1.594022L3.108344 .109589C3.476961 .109589 4.353674 .109589 5.290162-.956413C5.69863-1.414695 5.907846-1.853051 6.017435-2.15193C6.107098-2.400996 6.326276-3.267746 6.326276-3.706102C6.326276-4.26401 6.057285-4.403487 5.88792-4.403487C5.638854-4.403487 5.389788-4.144458 5.389788-3.92528C5.389788-3.795766 5.449564-3.73599 5.539228-3.656289C5.648817-3.5467 5.897883-3.287671 5.897883-2.809465C5.897883-2.171856 5.379826-1.354919 5.031133-.996264C4.154421-.109589 3.516812-.109589 3.158157-.109589L4.801993-6.655044Z'/>
<path id='g1-72' d='M7.601494-6.03736C7.691158-6.396015 7.711083-6.495641 8.438356-6.495641C8.697385-6.495641 8.777086-6.495641 8.777086-6.694894C8.777086-6.804483 8.667497-6.804483 8.637609-6.804483C8.358655-6.804483 7.641345-6.774595 7.362391-6.774595C7.073474-6.774595 6.366127-6.804483 6.07721-6.804483C5.997509-6.804483 5.88792-6.804483 5.88792-6.60523C5.88792-6.495641 5.977584-6.495641 6.166874-6.495641C6.1868-6.495641 6.37609-6.495641 6.545455-6.475716C6.724782-6.455791 6.814446-6.445828 6.814446-6.316314C6.814446-6.276463 6.804483-6.256538 6.774595-6.127024L6.176837-3.696139H3.138232L3.726027-6.03736C3.815691-6.396015 3.845579-6.495641 4.562889-6.495641C4.821918-6.495641 4.901619-6.495641 4.901619-6.694894C4.901619-6.804483 4.79203-6.804483 4.762142-6.804483C4.483188-6.804483 3.765878-6.774595 3.486924-6.774595C3.198007-6.774595 2.49066-6.804483 2.201743-6.804483C2.122042-6.804483 2.012453-6.804483 2.012453-6.60523C2.012453-6.495641 2.102117-6.495641 2.291407-6.495641C2.311333-6.495641 2.500623-6.495641 2.669988-6.475716C2.849315-6.455791 2.938979-6.445828 2.938979-6.316314C2.938979-6.276463 2.929016-6.246575 2.899128-6.127024L1.564134-.777086C1.464508-.388543 1.444583-.308842 .657534-.308842C.478207-.308842 .388543-.308842 .388543-.109589C.388543 0 .508095 0 .52802 0C.806974 0 1.514321-.029888 1.793275-.029888C2.002491-.029888 2.221669-.019925 2.430884-.019925C2.650062-.019925 2.86924 0 3.078456 0C3.158157 0 3.277709 0 3.277709-.199253C3.277709-.308842 3.188045-.308842 2.998755-.308842C2.630137-.308842 2.351183-.308842 2.351183-.488169C2.351183-.547945 2.371108-.597758 2.381071-.657534L3.058531-3.387298H6.097136C5.678705-1.733499 5.449564-.787049 5.409714-.637609C5.310087-.318804 5.120797-.308842 4.503113-.308842C4.353674-.308842 4.26401-.308842 4.26401-.109589C4.26401 0 4.383562 0 4.403487 0C4.682441 0 5.389788-.029888 5.668742-.029888C5.877958-.029888 6.097136-.019925 6.306351-.019925C6.525529-.019925 6.744707 0 6.953923 0C7.033624 0 7.153176 0 7.153176-.199253C7.153176-.308842 7.063512-.308842 6.874222-.308842C6.505604-.308842 6.22665-.308842 6.22665-.488169C6.22665-.547945 6.246575-.597758 6.256538-.657534L7.601494-6.03736Z'/>
<path id='g1-82' d='M3.73599-6.117061C3.795766-6.356164 3.825654-6.455791 4.014944-6.485679C4.104608-6.495641 4.423412-6.495641 4.622665-6.495641C5.330012-6.495641 6.435866-6.495641 6.435866-5.50934C6.435866-5.17061 6.276463-4.483188 5.88792-4.094645C5.628892-3.835616 5.100872-3.516812 4.204234-3.516812H3.088418L3.73599-6.117061ZM5.17061-3.387298C6.176837-3.606476 7.362391-4.303861 7.362391-5.310087C7.362391-6.166874 6.465753-6.804483 5.160648-6.804483H2.321295C2.122042-6.804483 2.032379-6.804483 2.032379-6.60523C2.032379-6.495641 2.122042-6.495641 2.311333-6.495641C2.331258-6.495641 2.520548-6.495641 2.689913-6.475716C2.86924-6.455791 2.958904-6.445828 2.958904-6.316314C2.958904-6.276463 2.948941-6.246575 2.919054-6.127024L1.58406-.777086C1.484433-.388543 1.464508-.308842 .67746-.308842C.498132-.308842 .408468-.308842 .408468-.109589C.408468 0 .52802 0 .547945 0C.826899 0 1.524284-.029888 1.803238-.029888S2.789539 0 3.068493 0C3.148194 0 3.267746 0 3.267746-.199253C3.267746-.308842 3.178082-.308842 2.988792-.308842C2.620174-.308842 2.34122-.308842 2.34122-.488169C2.34122-.547945 2.361146-.597758 2.371108-.657534L3.028643-3.297634H4.214197C5.120797-3.297634 5.300125-2.739726 5.300125-2.391034C5.300125-2.241594 5.220423-1.932752 5.160648-1.703611C5.090909-1.424658 5.001245-1.05604 5.001245-.856787C5.001245 .219178 6.196762 .219178 6.326276 .219178C7.173101 .219178 7.521793-.787049 7.521793-.926526C7.521793-1.046077 7.412204-1.046077 7.402242-1.046077C7.312578-1.046077 7.292653-.976339 7.272727-.9066C7.023661-.169365 6.595268 0 6.366127 0C6.03736 0 5.967621-.219178 5.967621-.607721C5.967621-.916563 6.027397-1.424658 6.067248-1.743462C6.087173-1.882939 6.107098-2.072229 6.107098-2.211706C6.107098-2.978829 5.439601-3.287671 5.17061-3.387298Z'/>
<path id='g1-106' d='M3.955168-6.22665C3.955168-6.41594 3.815691-6.585305 3.576588-6.585305C3.347447-6.585305 3.048568-6.356164 3.048568-6.057285C3.048568-5.858032 3.188045-5.69863 3.417186-5.69863C3.686177-5.69863 3.955168-5.957659 3.955168-6.22665ZM1.952677 .498132C1.763387 1.255293 1.285181 1.823163 .727273 1.823163C.667497 1.823163 .518057 1.823163 .33873 1.733499C.637609 1.663761 .787049 1.404732 .787049 1.205479C.787049 1.046077 .67746 .856787 .408468 .856787C.159402 .856787-.129514 1.066002-.129514 1.424658C-.129514 1.823163 .268991 2.042341 .747198 2.042341C1.444583 2.042341 2.371108 1.514321 2.620174 .52802L3.536737-3.118306C3.58655-3.317559 3.58655-3.457036 3.58655-3.486924C3.58655-4.054795 3.16812-4.403487 2.669988-4.403487C1.653798-4.403487 1.085928-2.958904 1.085928-2.86924C1.085928-2.769614 1.185554-2.769614 1.205479-2.769614C1.295143-2.769614 1.305106-2.779577 1.384807-2.968867C1.633873-3.576588 2.092154-4.184309 2.6401-4.184309C2.779577-4.184309 2.958904-4.144458 2.958904-3.726027C2.958904-3.496887 2.929016-3.387298 2.889166-3.217933L1.952677 .498132Z'/>
<path id='g3-49' d='M2.336239-4.435367C2.336239-4.623661 2.322291-4.630635 2.127024-4.630635C1.680697-4.191283 1.046077-4.184309 .760149-4.184309V-3.93325C.927522-3.93325 1.387796-3.93325 1.771357-4.128518V-.571856C1.771357-.341719 1.771357-.251059 1.073973-.251059H.808966V0C.934496-.006974 1.792279-.027895 2.050311-.027895C2.266501-.027895 3.145205-.006974 3.29863 0V-.251059H3.033624C2.336239-.251059 2.336239-.341719 2.336239-.571856V-4.435367Z'/>
<path id='g3-50' d='M3.521793-1.26924H3.284682C3.263761-1.115816 3.194022-.704359 3.103362-.63462C3.047572-.592777 2.510585-.592777 2.412951-.592777H1.129763C1.862017-1.241345 2.106102-1.436613 2.524533-1.764384C3.040598-2.175841 3.521793-2.608219 3.521793-3.270735C3.521793-4.11457 2.782565-4.630635 1.889913-4.630635C1.025156-4.630635 .439352-4.02391 .439352-3.382316C.439352-3.02665 .739228-2.991781 .808966-2.991781C.976339-2.991781 1.17858-3.110336 1.17858-3.361395C1.17858-3.486924 1.129763-3.731009 .767123-3.731009C.983313-4.226152 1.457534-4.379577 1.785305-4.379577C2.48269-4.379577 2.84533-3.835616 2.84533-3.270735C2.84533-2.66401 2.412951-2.182814 2.189788-1.931756L.509091-.27198C.439352-.209215 .439352-.195268 .439352 0H3.312578L3.521793-1.26924Z'/>
<path id='g3-51' d='M1.903861-2.329265C2.447821-2.329265 2.838356-1.952677 2.838356-1.206476C2.838356-.341719 2.336239-.083686 1.931756-.083686C1.652802-.083686 1.039103-.160399 .746202-.571856C1.073973-.585803 1.150685-.81594 1.150685-.962391C1.150685-1.185554 .983313-1.345953 .767123-1.345953C.571856-1.345953 .376588-1.227397 .376588-.941469C.376588-.285928 1.101868 .139477 1.945704 .139477C2.915068 .139477 3.584558-.509091 3.584558-1.206476C3.584558-1.750436 3.138232-2.294396 2.371108-2.454795C3.103362-2.719801 3.368369-3.242839 3.368369-3.668244C3.368369-4.219178 2.733748-4.630635 1.959651-4.630635S.592777-4.254047 .592777-3.696139C.592777-3.459029 .746202-3.326526 .955417-3.326526C1.171606-3.326526 1.311083-3.486924 1.311083-3.682192C1.311083-3.884433 1.171606-4.030884 .955417-4.044832C1.199502-4.351681 1.680697-4.428394 1.93873-4.428394C2.252553-4.428394 2.691905-4.274969 2.691905-3.668244C2.691905-3.375342 2.594271-3.054545 2.412951-2.838356C2.182814-2.57335 1.987547-2.559402 1.638854-2.538481C1.464508-2.524533 1.45056-2.524533 1.415691-2.517559C1.401743-2.517559 1.345953-2.503611 1.345953-2.426899C1.345953-2.329265 1.408717-2.329265 1.527273-2.329265H1.903861Z'/>
<path id='g2-49' d='M2.929016-6.37609C2.929016-6.615193 2.929016-6.635118 2.699875-6.635118C2.082192-5.997509 1.205479-5.997509 .886675-5.997509V-5.688667C1.085928-5.688667 1.673724-5.688667 2.191781-5.947696V-.787049C2.191781-.428394 2.161893-.308842 1.265255-.308842H.946451V0C1.295143-.029888 2.161893-.029888 2.560399-.029888S3.825654-.029888 4.174346 0V-.308842H3.855542C2.958904-.308842 2.929016-.418431 2.929016-.787049V-6.37609Z'/>
<path id='g2-50' d='M1.265255-.767123L2.321295-1.793275C3.875467-3.16812 4.473225-3.706102 4.473225-4.702366C4.473225-5.838107 3.576588-6.635118 2.361146-6.635118C1.235367-6.635118 .498132-5.718555 .498132-4.83188C.498132-4.273973 .996264-4.273973 1.026152-4.273973C1.195517-4.273973 1.544209-4.393524 1.544209-4.801993C1.544209-5.061021 1.364882-5.32005 1.016189-5.32005C.936488-5.32005 .916563-5.32005 .886675-5.310087C1.115816-5.957659 1.653798-6.326276 2.231631-6.326276C3.138232-6.326276 3.566625-5.519303 3.566625-4.702366C3.566625-3.905355 3.068493-3.118306 2.520548-2.500623L.607721-.368618C.498132-.259029 .498132-.239103 .498132 0H4.194271L4.473225-1.733499H4.224159C4.174346-1.43462 4.104608-.996264 4.004981-.846824C3.935243-.767123 3.277709-.767123 3.058531-.767123H1.265255Z'/>
<path id='g2-51' d='M2.889166-3.506849C3.706102-3.775841 4.283935-4.473225 4.283935-5.260274C4.283935-6.07721 3.407223-6.635118 2.450809-6.635118C1.444583-6.635118 .687422-6.03736 .687422-5.280199C.687422-4.951432 .9066-4.762142 1.195517-4.762142C1.504359-4.762142 1.703611-4.98132 1.703611-5.270237C1.703611-5.768369 1.235367-5.768369 1.085928-5.768369C1.39477-6.256538 2.052304-6.386052 2.410959-6.386052C2.819427-6.386052 3.367372-6.166874 3.367372-5.270237C3.367372-5.150685 3.347447-4.572852 3.088418-4.134496C2.789539-3.656289 2.450809-3.626401 2.201743-3.616438C2.122042-3.606476 1.882939-3.58655 1.8132-3.58655C1.733499-3.576588 1.663761-3.566625 1.663761-3.466999C1.663761-3.35741 1.733499-3.35741 1.902864-3.35741H2.34122C3.158157-3.35741 3.526775-2.67995 3.526775-1.703611C3.526775-.348692 2.839352-.059776 2.400996-.059776C1.972603-.059776 1.225405-.229141 .876712-.816936C1.225405-.767123 1.534247-.986301 1.534247-1.364882C1.534247-1.723537 1.265255-1.92279 .976339-1.92279C.737235-1.92279 .418431-1.783313 .418431-1.344956C.418431-.438356 1.344956 .219178 2.430884 .219178C3.646326 .219178 4.552927-.687422 4.552927-1.703611C4.552927-2.520548 3.92528-3.297634 2.889166-3.506849Z'/>
<path id='g2-52' d='M2.929016-1.643836V-.777086C2.929016-.418431 2.909091-.308842 2.171856-.308842H1.96264V0C2.371108-.029888 2.889166-.029888 3.307597-.029888S4.254047-.029888 4.662516 0V-.308842H4.4533C3.716065-.308842 3.696139-.418431 3.696139-.777086V-1.643836H4.692403V-1.952677H3.696139V-6.485679C3.696139-6.684932 3.696139-6.744707 3.536737-6.744707C3.447073-6.744707 3.417186-6.744707 3.337484-6.625156L.278954-1.952677V-1.643836H2.929016ZM2.988792-1.952677H.557908L2.988792-5.668742V-1.952677Z'/>
</defs>
<g id='page1'>
<path d='M-35.0781-45.5547H-49.2502' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-3.8438-45.5547H-18.0156' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M30.3359-45.5547H16.1641' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M73.043-45.5547H50.3398' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M73.043-45.5547H50.3398' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M105.75-45.5547H73.043' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M105.75-45.5547H73.043' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M138.457-45.5547H105.75' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M138.457-45.5547H105.75' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M161.1602-45.5547V14.5898' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M161.1602-45.5547H138.457' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M175.3318-45.5547H161.1602' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-26.5469-15.109375H-49.2502' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-26.5469-15.109375H-49.2502' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M6.1602-16.808594V-37.418' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M4.4609-15.109375H-26.5469' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M40.3359-15.109375H7.8594' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M40.3359-15.109375H7.8594' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M64.51172-15.109375H40.3359' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M95.7461-15.109375H81.5742' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M138.457-15.109375H115.7539' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M138.457-15.109375H115.7539' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M161.1602-15.109375H138.457' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M161.1602-15.109375H138.457' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M175.3318-15.109375H161.1602' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-26.5469 14.5898H-49.2502' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-26.5469 14.5898H-49.2502' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M6.1602 14.5898H-26.5469' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M6.1602 14.5898H-26.5469' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M40.3359 12.8867V-37.418' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M38.6367 14.5898H6.1602' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M73.043 14.5898H42.0391' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M73.043 14.5898H42.0391' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M105.75 12.8867V-6.97266' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M104.0508 14.5898H73.043' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M129.9258 14.5898H107.4492' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M161.1602 14.5898H146.9883' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M175.3318 14.5898H161.1602' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M157.67165-42.06637L164.6443-49.04293M157.67165-49.04293L164.6443-42.06637' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<path d='M7.85916-15.109335C7.85916-16.046835 7.097438-16.80855 6.159938-16.80855C5.218532-16.80855 4.45681-16.046835 4.45681-15.109335C4.45681-14.171835 5.218532-13.41012 6.159938-13.41012C7.097438-13.41012 7.85916-14.171835 7.85916-15.109335Z'/>
<path d='M7.85938-15.109335C7.85938-16.046835 7.097658-16.80855 6.160158-16.80855C5.218752-16.80855 4.45703-16.046835 4.45703-15.109335C4.45703-14.171835 5.218752-13.41012 6.160158-13.41012C7.097658-13.41012 7.85938-14.171835 7.85938-15.109335Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<path d='M42.03493 14.589884C42.03493 13.648478 41.277116 12.88676 40.33571 12.88676C39.39821 12.88676 38.63649 13.648478 38.63649 14.589884C38.63649 15.527384 39.39821 16.2891 40.33571 16.2891C41.277116 16.2891 42.03493 15.527384 42.03493 14.589884Z'/>
<path d='M42.03513 14.589884C42.03513 13.648478 41.277316 12.88676 40.33591 12.88676C39.39841 12.88676 38.63669 13.648478 38.63669 14.589884C38.63669 15.527384 39.39841 16.2891 40.33591 16.2891C41.277316 16.2891 42.03513 15.527384 42.03513 14.589884Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<path d='M107.449 14.589884C107.449 13.648478 106.687285 12.88676 105.749785 12.88676C104.808379 12.88676 104.04666 13.648478 104.04666 14.589884C104.04666 15.527384 104.808379 16.2891 105.749785 16.2891C106.687285 16.2891 107.449 15.527384 107.449 14.589884Z'/>
<path d='M107.449 14.589884C107.449 13.648478 106.687285 12.88676 105.749785 12.88676C104.808379 12.88676 104.04666 13.648478 104.04666 14.589884C104.04666 15.527384 104.808379 16.2891 105.749785 16.2891C106.687285 16.2891 107.449 15.527384 107.449 14.589884Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<path d='M157.67165 18.07426L164.6443 11.1016M157.67165 11.1016L164.6443 18.07426' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -131.723 -27.208)'>
<use x='63.041837' y='-15.856842' xlink:href='#g0-106'/>
<use x='65.809246' y='-15.856842' xlink:href='#g1-106'/>
<use x='69.911931' y='-14.362462' xlink:href='#g3-49'/>
<use x='74.381301' y='-15.856842' xlink:href='#g0-105'/>
</g>
<path d='M-35.0781-38.168H-18.0156V-52.9453H-35.0781Z' fill='#fff'/>
<path d='M-35.0781-38.168H-18.0156V-52.9453H-35.0781Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -94.1333 -26.2947)'>
<use x='63.041837' y='-15.856842' xlink:href='#g1-72'/>
</g>
<path d='M-3.8438-37.418H16.1641V-53.6914H-3.8438Z' fill='#fff'/>
<path d='M-3.8438-37.418H16.1641V-53.6914H-3.8438Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -62.898669 -27.0419)'>
<use x='63.041837' y='-15.856842' xlink:href='#g1-82'/>
<use x='70.606368' y='-14.362462' xlink:href='#g3-50'/>
</g>
<path d='M30.3359-37.418H50.3398V-53.6914H30.3359Z' fill='#fff'/>
<path d='M30.3359-37.418H50.3398V-53.6914H30.3359Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -28.721 -27.0419)'>
<use x='63.041837' y='-15.856842' xlink:href='#g1-82'/>
<use x='70.606368' y='-14.362462' xlink:href='#g3-51'/>
</g>
<g transform='matrix(1 0 0 1 116.5092 -27.208)'>
<use x='63.041837' y='-15.856842' xlink:href='#g1-32'/>
<use x='69.531421' y='-14.362462' xlink:href='#g3-49'/>
</g>
<g transform='matrix(1 0 0 1 -131.723 3.2379)'>
<use x='63.041837' y='-15.856842' xlink:href='#g0-106'/>
<use x='65.809246' y='-15.856842' xlink:href='#g1-106'/>
<use x='69.911931' y='-14.362462' xlink:href='#g3-50'/>
<use x='74.381301' y='-15.856842' xlink:href='#g0-105'/>
</g>
<path d='M64.51172-7.71875H81.5742V-22.5H64.51172Z' fill='#fff'/>
<path d='M64.51172-7.71875H81.5742V-22.5H64.51172Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 5.4566 4.1511)'>
<use x='63.041837' y='-15.856842' xlink:href='#g1-72'/>
</g>
<path d='M95.7461-6.97266H115.7539V-23.24609H95.7461Z' fill='#fff'/>
<path d='M95.7461-6.97266H115.7539V-23.24609H95.7461Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 36.6912 3.4039)'>
<use x='63.041837' y='-15.856842' xlink:href='#g1-82'/>
<use x='70.606368' y='-14.362462' xlink:href='#g3-50'/>
</g>
<g transform='matrix(1 0 0 1 116.5092 3.2379)'>
<use x='63.041837' y='-15.856842' xlink:href='#g1-32'/>
<use x='69.531421' y='-14.362462' xlink:href='#g3-50'/>
</g>
<g transform='matrix(1 0 0 1 -131.723 32.9366)'>
<use x='63.041837' y='-15.856842' xlink:href='#g0-106'/>
<use x='65.809246' y='-15.856842' xlink:href='#g1-106'/>
<use x='69.911931' y='-14.362462' xlink:href='#g3-51'/>
<use x='74.381301' y='-15.856842' xlink:href='#g0-105'/>
</g>
<path d='M129.9258 21.9766H146.9883V7.1992H129.9258Z' fill='#fff'/>
<path d='M129.9258 21.9766H146.9883V7.1992H129.9258Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 70.8692 33.8498)'>
<use x='63.041837' y='-15.856842' xlink:href='#g1-72'/>
</g>
<g transform='matrix(1 0 0 1 116.5092 32.9366)'>
<use x='63.041837' y='-15.856842' xlink:href='#g1-32'/>
<use x='69.531421' y='-14.362462' xlink:href='#g3-51'/>
</g>
<path d='M57.42578-57.2109V28.4883' stroke='#f00' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-dasharray='4.98138 2.98883'/>
<g transform='matrix(1 0 0 1 -8.1058 -45.7383)'>
<use x='63.041837' y='-15.856842' xlink:href='#g2-49'/>
</g>
<path d='M122.8398-57.2109V28.4883' stroke='#f00' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-dasharray='4.98138 2.98883'/>
<g transform='matrix(1 0 0 1 57.3062 -45.7383)'>
<use x='63.041837' y='-15.856842' xlink:href='#g2-50'/>
</g>
<path d='M154.0742-57.2109V28.4883' stroke='#f00' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-dasharray='4.98138 2.98883'/>
<g transform='matrix(1 0 0 1 88.5412 -45.7383)'>
<use x='63.041837' y='-15.856842' xlink:href='#g2-51'/>
</g>
<path d='M168.2458-57.2109V28.4883' stroke='#f00' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-dasharray='4.98138 2.98883'/>
<g transform='matrix(1 0 0 1 102.7142 -45.7383)'>
<use x='63.041837' y='-15.856842' xlink:href='#g2-52'/>
</g>
</g>
</svg>
\ No newline at end of file
<?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='587.306166pt' height='137.74631pt' viewBox='-68.683268 -69.078237 587.306166 137.74631'>
<defs>
<path id='g1-0' d='M5.188543-1.57609C5.300125-1.57609 5.467497-1.57609 5.467497-1.743462C5.467497-1.917808 5.307098-1.917808 5.188543-1.917808H1.03213C.920548-1.917808 .753176-1.917808 .753176-1.750436C.753176-1.57609 .913574-1.57609 1.03213-1.57609H5.188543Z'/>
<path id='g2-32' d='M4.801993-6.655044C4.811955-6.694894 4.83188-6.75467 4.83188-6.804483C4.83188-6.90411 4.762142-6.914072 4.712329-6.914072C4.612702-6.914072 4.60274-6.894147 4.562889-6.714819L2.909091-.129514C2.15193-.219178 1.77335-.587796 1.77335-1.24533C1.77335-1.444583 1.77335-1.703611 2.311333-3.098381C2.351183-3.217933 2.420922-3.387298 2.420922-3.58655C2.420922-4.034869 2.102117-4.403487 1.603985-4.403487C.657534-4.403487 .288917-2.958904 .288917-2.86924C.288917-2.769614 .388543-2.769614 .408468-2.769614C.508095-2.769614 .518057-2.789539 .56787-2.948941C.836862-3.895392 1.235367-4.184309 1.574097-4.184309C1.653798-4.184309 1.823163-4.184309 1.823163-3.865504C1.823163-3.606476 1.723537-3.35741 1.594022-3.008717C1.115816-1.753425 1.115816-1.494396 1.115816-1.325031C1.115816-.37858 1.892902 .029888 2.849315 .089664C2.769614 .448319 2.769614 .468244 2.630137 .996264C2.600249 1.105853 2.400996 1.912827 2.400996 1.942715C2.400996 1.952677 2.400996 2.042341 2.520548 2.042341C2.540473 2.042341 2.590286 2.042341 2.610212 2.002491C2.6401 1.982565 2.699875 1.733499 2.729763 1.594022L3.108344 .109589C3.476961 .109589 4.353674 .109589 5.290162-.956413C5.69863-1.414695 5.907846-1.853051 6.017435-2.15193C6.107098-2.400996 6.326276-3.267746 6.326276-3.706102C6.326276-4.26401 6.057285-4.403487 5.88792-4.403487C5.638854-4.403487 5.389788-4.144458 5.389788-3.92528C5.389788-3.795766 5.449564-3.73599 5.539228-3.656289C5.648817-3.5467 5.897883-3.287671 5.897883-2.809465C5.897883-2.171856 5.379826-1.354919 5.031133-.996264C4.154421-.109589 3.516812-.109589 3.158157-.109589L4.801993-6.655044Z'/>
<path id='g2-58' d='M1.912827-.52802C1.912827-.816936 1.673724-1.05604 1.384807-1.05604S.856787-.816936 .856787-.52802S1.09589 0 1.384807 0S1.912827-.239103 1.912827-.52802Z'/>
<path id='g2-72' d='M7.601494-6.03736C7.691158-6.396015 7.711083-6.495641 8.438356-6.495641C8.697385-6.495641 8.777086-6.495641 8.777086-6.694894C8.777086-6.804483 8.667497-6.804483 8.637609-6.804483C8.358655-6.804483 7.641345-6.774595 7.362391-6.774595C7.073474-6.774595 6.366127-6.804483 6.07721-6.804483C5.997509-6.804483 5.88792-6.804483 5.88792-6.60523C5.88792-6.495641 5.977584-6.495641 6.166874-6.495641C6.1868-6.495641 6.37609-6.495641 6.545455-6.475716C6.724782-6.455791 6.814446-6.445828 6.814446-6.316314C6.814446-6.276463 6.804483-6.256538 6.774595-6.127024L6.176837-3.696139H3.138232L3.726027-6.03736C3.815691-6.396015 3.845579-6.495641 4.562889-6.495641C4.821918-6.495641 4.901619-6.495641 4.901619-6.694894C4.901619-6.804483 4.79203-6.804483 4.762142-6.804483C4.483188-6.804483 3.765878-6.774595 3.486924-6.774595C3.198007-6.774595 2.49066-6.804483 2.201743-6.804483C2.122042-6.804483 2.012453-6.804483 2.012453-6.60523C2.012453-6.495641 2.102117-6.495641 2.291407-6.495641C2.311333-6.495641 2.500623-6.495641 2.669988-6.475716C2.849315-6.455791 2.938979-6.445828 2.938979-6.316314C2.938979-6.276463 2.929016-6.246575 2.899128-6.127024L1.564134-.777086C1.464508-.388543 1.444583-.308842 .657534-.308842C.478207-.308842 .388543-.308842 .388543-.109589C.388543 0 .508095 0 .52802 0C.806974 0 1.514321-.029888 1.793275-.029888C2.002491-.029888 2.221669-.019925 2.430884-.019925C2.650062-.019925 2.86924 0 3.078456 0C3.158157 0 3.277709 0 3.277709-.199253C3.277709-.308842 3.188045-.308842 2.998755-.308842C2.630137-.308842 2.351183-.308842 2.351183-.488169C2.351183-.547945 2.371108-.597758 2.381071-.657534L3.058531-3.387298H6.097136C5.678705-1.733499 5.449564-.787049 5.409714-.637609C5.310087-.318804 5.120797-.308842 4.503113-.308842C4.353674-.308842 4.26401-.308842 4.26401-.109589C4.26401 0 4.383562 0 4.403487 0C4.682441 0 5.389788-.029888 5.668742-.029888C5.877958-.029888 6.097136-.019925 6.306351-.019925C6.525529-.019925 6.744707 0 6.953923 0C7.033624 0 7.153176 0 7.153176-.199253C7.153176-.308842 7.063512-.308842 6.874222-.308842C6.505604-.308842 6.22665-.308842 6.22665-.488169C6.22665-.547945 6.246575-.597758 6.256538-.657534L7.601494-6.03736Z'/>
<path id='g2-82' d='M3.73599-6.117061C3.795766-6.356164 3.825654-6.455791 4.014944-6.485679C4.104608-6.495641 4.423412-6.495641 4.622665-6.495641C5.330012-6.495641 6.435866-6.495641 6.435866-5.50934C6.435866-5.17061 6.276463-4.483188 5.88792-4.094645C5.628892-3.835616 5.100872-3.516812 4.204234-3.516812H3.088418L3.73599-6.117061ZM5.17061-3.387298C6.176837-3.606476 7.362391-4.303861 7.362391-5.310087C7.362391-6.166874 6.465753-6.804483 5.160648-6.804483H2.321295C2.122042-6.804483 2.032379-6.804483 2.032379-6.60523C2.032379-6.495641 2.122042-6.495641 2.311333-6.495641C2.331258-6.495641 2.520548-6.495641 2.689913-6.475716C2.86924-6.455791 2.958904-6.445828 2.958904-6.316314C2.958904-6.276463 2.948941-6.246575 2.919054-6.127024L1.58406-.777086C1.484433-.388543 1.464508-.308842 .67746-.308842C.498132-.308842 .408468-.308842 .408468-.109589C.408468 0 .52802 0 .547945 0C.826899 0 1.524284-.029888 1.803238-.029888S2.789539 0 3.068493 0C3.148194 0 3.267746 0 3.267746-.199253C3.267746-.308842 3.178082-.308842 2.988792-.308842C2.620174-.308842 2.34122-.308842 2.34122-.488169C2.34122-.547945 2.361146-.597758 2.371108-.657534L3.028643-3.297634H4.214197C5.120797-3.297634 5.300125-2.739726 5.300125-2.391034C5.300125-2.241594 5.220423-1.932752 5.160648-1.703611C5.090909-1.424658 5.001245-1.05604 5.001245-.856787C5.001245 .219178 6.196762 .219178 6.326276 .219178C7.173101 .219178 7.521793-.787049 7.521793-.926526C7.521793-1.046077 7.412204-1.046077 7.402242-1.046077C7.312578-1.046077 7.292653-.976339 7.272727-.9066C7.023661-.169365 6.595268 0 6.366127 0C6.03736 0 5.967621-.219178 5.967621-.607721C5.967621-.916563 6.027397-1.424658 6.067248-1.743462C6.087173-1.882939 6.107098-2.072229 6.107098-2.211706C6.107098-2.978829 5.439601-3.287671 5.17061-3.387298Z'/>
<path id='g2-106' d='M3.955168-6.22665C3.955168-6.41594 3.815691-6.585305 3.576588-6.585305C3.347447-6.585305 3.048568-6.356164 3.048568-6.057285C3.048568-5.858032 3.188045-5.69863 3.417186-5.69863C3.686177-5.69863 3.955168-5.957659 3.955168-6.22665ZM1.952677 .498132C1.763387 1.255293 1.285181 1.823163 .727273 1.823163C.667497 1.823163 .518057 1.823163 .33873 1.733499C.637609 1.663761 .787049 1.404732 .787049 1.205479C.787049 1.046077 .67746 .856787 .408468 .856787C.159402 .856787-.129514 1.066002-.129514 1.424658C-.129514 1.823163 .268991 2.042341 .747198 2.042341C1.444583 2.042341 2.371108 1.514321 2.620174 .52802L3.536737-3.118306C3.58655-3.317559 3.58655-3.457036 3.58655-3.486924C3.58655-4.054795 3.16812-4.403487 2.669988-4.403487C1.653798-4.403487 1.085928-2.958904 1.085928-2.86924C1.085928-2.769614 1.185554-2.769614 1.205479-2.769614C1.295143-2.769614 1.305106-2.779577 1.384807-2.968867C1.633873-3.576588 2.092154-4.184309 2.6401-4.184309C2.779577-4.184309 2.958904-4.144458 2.958904-3.726027C2.958904-3.496887 2.929016-3.387298 2.889166-3.217933L1.952677 .498132Z'/>
<path id='g5-49' d='M2.336239-4.435367C2.336239-4.623661 2.322291-4.630635 2.127024-4.630635C1.680697-4.191283 1.046077-4.184309 .760149-4.184309V-3.93325C.927522-3.93325 1.387796-3.93325 1.771357-4.128518V-.571856C1.771357-.341719 1.771357-.251059 1.073973-.251059H.808966V0C.934496-.006974 1.792279-.027895 2.050311-.027895C2.266501-.027895 3.145205-.006974 3.29863 0V-.251059H3.033624C2.336239-.251059 2.336239-.341719 2.336239-.571856V-4.435367Z'/>
<path id='g5-50' d='M3.521793-1.26924H3.284682C3.263761-1.115816 3.194022-.704359 3.103362-.63462C3.047572-.592777 2.510585-.592777 2.412951-.592777H1.129763C1.862017-1.241345 2.106102-1.436613 2.524533-1.764384C3.040598-2.175841 3.521793-2.608219 3.521793-3.270735C3.521793-4.11457 2.782565-4.630635 1.889913-4.630635C1.025156-4.630635 .439352-4.02391 .439352-3.382316C.439352-3.02665 .739228-2.991781 .808966-2.991781C.976339-2.991781 1.17858-3.110336 1.17858-3.361395C1.17858-3.486924 1.129763-3.731009 .767123-3.731009C.983313-4.226152 1.457534-4.379577 1.785305-4.379577C2.48269-4.379577 2.84533-3.835616 2.84533-3.270735C2.84533-2.66401 2.412951-2.182814 2.189788-1.931756L.509091-.27198C.439352-.209215 .439352-.195268 .439352 0H3.312578L3.521793-1.26924Z'/>
<path id='g0-105' d='M2.719801-2.321295C2.769614-2.440847 2.769614-2.460772 2.769614-2.49066S2.769614-2.540473 2.719801-2.660025L.976339-7.242839C.916563-7.412204 .856787-7.47198 .747198-7.47198S.547945-7.382316 .547945-7.272727C.547945-7.242839 .547945-7.222914 .597758-7.113325L2.361146-2.49066L.597758 2.11208C.547945 2.221669 .547945 2.241594 .547945 2.291407C.547945 2.400996 .637609 2.49066 .747198 2.49066C.876712 2.49066 .916563 2.391034 .956413 2.291407L2.719801-2.321295Z'/>
<path id='g0-106' d='M1.58406-7.113325C1.58406-7.292653 1.58406-7.47198 1.384807-7.47198S1.185554-7.292653 1.185554-7.113325V2.132005C1.185554 2.311333 1.185554 2.49066 1.384807 2.49066S1.58406 2.311333 1.58406 2.132005V-7.113325Z'/>
<path id='g4-46' d='M1.912827-.52802C1.912827-.816936 1.673724-1.05604 1.384807-1.05604S.856787-.816936 .856787-.52802S1.09589 0 1.384807 0S1.912827-.239103 1.912827-.52802Z'/>
<path id='g3-110' d='M.850809-.439352C.822914-.348692 .781071-.174346 .781071-.153425C.781071 0 .9066 .069738 1.018182 .069738C1.143711 .069738 1.255293-.020922 1.290162-.083686S1.380822-.369614 1.415691-.516065C1.45056-.648568 1.527273-.969365 1.569116-1.143711C1.610959-1.297136 1.652802-1.45056 1.687671-1.610959C1.764384-1.896887 1.778331-1.952677 1.980573-2.238605C2.175841-2.517559 2.503611-2.880199 3.02665-2.880199C3.431133-2.880199 3.438107-2.524533 3.438107-2.39203C3.438107-1.973599 3.138232-1.199502 3.02665-.9066C2.949938-.711333 2.922042-.648568 2.922042-.530012C2.922042-.160399 3.228892 .069738 3.584558 .069738C4.281943 .069738 4.588792-.892653 4.588792-.99726C4.588792-1.08792 4.498132-1.08792 4.47721-1.08792C4.379577-1.08792 4.372603-1.046077 4.344707-.969365C4.184309-.411457 3.884433-.125529 3.605479-.125529C3.459029-.125529 3.431133-.223163 3.431133-.369614C3.431133-.530012 3.466002-.620672 3.591532-.934496C3.675218-1.150685 3.961146-1.889913 3.961146-2.280448C3.961146-2.956912 3.424159-3.075467 3.054545-3.075467C2.475716-3.075467 2.085181-2.719801 1.875965-2.440847C1.827148-2.922042 1.415691-3.075467 1.129763-3.075467C.829888-3.075467 .669489-2.859278 .578829-2.698879C.425405-2.440847 .327771-2.043337 .327771-2.008468C.327771-1.917808 .425405-1.917808 .446326-1.917808C.54396-1.917808 .550934-1.93873 .599751-2.127024C.704359-2.538481 .836862-2.880199 1.108842-2.880199C1.290162-2.880199 1.338979-2.726775 1.338979-2.538481C1.338979-2.405978 1.276214-2.147945 1.227397-1.959651S1.108842-1.48543 1.073973-1.332005L.850809-.439352Z'/>
</defs>
<g id='page1'>
<path d='M-23.926-60.128932H-38.102' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M7.309-60.128932H-6.867' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M41.484-60.128932H27.312' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M76.137-60.128932H61.965' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M121.469-60.128932H107.293' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M165.1289-60.128932H142.4258' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M197.8359-60.128932H165.1289' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M197.8359-60.128932H165.1289' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M232.25-60.128932H197.8359' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M232.25-60.128932H197.8359' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M272.2422-60.128932H232.25' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M272.2422-60.128932H232.25' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M317.5703-60.128932H272.2422' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M317.5703-60.128932H272.2422' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M357.562-60.128932H317.5703' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M357.562-60.128932H317.5703' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M390.504-60.128932H357.562' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M390.504-60.128932H357.562' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M423.211-60.128932H390.504' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M423.211-60.128932H390.504' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M455.918-60.128932H423.211' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M455.918-60.128932H423.211' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M478.621-60.128932V60.878868' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M478.621-60.128932H455.918' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M492.793-60.128932H478.621' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-15.395-28.851532H-38.102' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-15.395-28.851532H-38.102' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M17.309-30.554732V-51.992232' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M15.609-28.851532H-15.395' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M51.727-28.851532H19.012' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M51.727-28.851532H19.012' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M91.715-28.851532H51.727' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M91.715-28.851532H51.727' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M131.9453-28.851532H91.715' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M131.9453-28.851532H91.715' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M156.5977-28.851532H131.9453' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M187.832-28.851532H173.6602' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M222.01172-28.851532H207.8359' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M256.6641-28.851532H242.4883' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M301.9922-28.851532H287.8203' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M357.562-28.851532H333.148' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M357.562-28.851532H333.148' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M390.504-28.851532H357.562' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M390.504-28.851532H357.562' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M423.211-28.851532H390.504' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M423.211-28.851532H390.504' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M455.918-28.851532H423.211' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M455.918-28.851532H423.211' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M478.621-28.851532H455.918' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M492.793-28.851532H478.621' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-15.395 31.179668H-38.102' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-15.395 31.179668H-38.102' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M17.309 31.179668H-15.395' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M17.309 31.179668H-15.395' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M51.727 31.179668H17.309' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M51.727 31.179668H17.309' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M91.715 29.480468V-51.578132' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M90.016 31.179668H51.727' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M131.9453 31.179668H93.418' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M131.9453 31.179668H93.418' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M165.1289 31.179668H131.9453' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M165.1289 31.179668H131.9453' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M197.8359 31.179668H165.1289' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M197.8359 31.179668H165.1289' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M232.25 31.179668H197.8359' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M232.25 31.179668H197.8359' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M272.2422 29.480468V-20.300732' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M270.5391 31.179668H232.25' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M317.5703 31.179668H273.9414' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M317.5703 31.179668H273.9414' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M347.32 31.179668H317.5703' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M381.973 31.179668H367.801' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M413.207 31.179668H399.035' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M455.918 31.179668H433.211' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M455.918 31.179668H433.211' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M478.621 31.179668H455.918' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M492.793 31.179668H478.621' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-15.395 60.878868H-38.102' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M-15.395 60.878868H-38.102' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M17.309 60.878868H-15.395' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M17.309 60.878868H-15.395' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M51.727 60.878868H17.309' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M51.727 60.878868H17.309' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M91.715 60.878868H51.727' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M91.715 60.878868H51.727' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M131.9453 59.179668V-51.992232' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M130.2461 60.878868H91.715' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M165.1289 60.878868H133.6484' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M165.1289 60.878868H133.6484' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M197.8359 60.878868H165.1289' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M197.8359 60.878868H165.1289' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M232.25 60.878868H197.8359' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M232.25 60.878868H197.8359' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M272.2422 60.878868H232.25' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M272.2422 60.878868H232.25' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M317.5703 59.179668V-20.300732' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M315.8711 60.878868H272.2422' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M347.32 60.878868H319.2695' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M390.504 60.878868H367.801' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M390.504 60.878868H367.801' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M423.211 59.179668V39.316368' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M421.508 60.878868H390.504' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M447.387 60.878868H424.91' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M478.621 60.878868H464.445' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<path d='M492.793 60.878868H478.621' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10' stroke-linecap='round'/>
<g transform='matrix(1 0 0 1 -275.6863 61.6113)'>
<use x='321.59813' y='-121.212932' xlink:href='#g2-58'/>
<use x='326.025938' y='-121.212932' xlink:href='#g2-58'/>
<use x='330.453746' y='-121.212932' xlink:href='#g2-58'/>
</g>
<path d='M475.12493-56.64061L482.10149-63.61326M475.12493-63.61326L482.10149-56.64061' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<path d='M19.01164-28.85154C19.01164-29.78904 18.249918-30.55076 17.308512-30.55076C16.371012-30.55076 15.60929-29.78904 15.60929-28.85154C15.60929-27.91404 16.371012-27.15232 17.308512-27.15232C18.249918-27.15232 19.01164-27.91404 19.01164-28.85154Z'/>
<path d='M19.01174-28.85154C19.01174-29.78904 18.250018-30.55076 17.308612-30.55076C16.371112-30.55076 15.60939-29.78904 15.60939-28.85154C15.60939-27.91404 16.371112-27.15232 17.308612-27.15232C18.250018-27.15232 19.01174-27.91404 19.01174-28.85154Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -275.686 61.6113)'>
<use x='502.120831' y='-89.937226' xlink:href='#g2-58'/>
<use x='506.548639' y='-89.937226' xlink:href='#g2-58'/>
<use x='510.976447' y='-89.937226' xlink:href='#g2-58'/>
</g>
<path d='M475.12493-25.36326L482.10149-32.33982M475.12493-32.33982L482.10149-25.36326' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -266.8306 68.58522)'>
<use x='250.050242' y='-67.68323' xlink:href='#g4-46'/>
<use x='250.050242' y='-63.698174' xlink:href='#g4-46'/>
<use x='250.050242' y='-59.713118' xlink:href='#g4-46'/>
</g>
<g transform='matrix(1 0 0 1 -266.8306 68.58522)'>
<use x='317.170398' y='-67.68323' xlink:href='#g4-46'/>
<use x='317.170398' y='-63.698174' xlink:href='#g4-46'/>
<use x='317.170398' y='-59.713118' xlink:href='#g4-46'/>
</g>
<g transform='matrix(1 0 0 1 -266.831 68.58522)'>
<use x='497.693099' y='-67.68323' xlink:href='#g4-46'/>
<use x='497.693099' y='-63.698174' xlink:href='#g4-46'/>
<use x='497.693099' y='-59.713118' xlink:href='#g4-46'/>
</g>
<g transform='matrix(1 0 0 1 -266.831 68.58522)'>
<use x='623.002288' y='-67.68323' xlink:href='#g4-46'/>
<use x='623.002288' y='-63.698174' xlink:href='#g4-46'/>
<use x='623.002288' y='-59.713118' xlink:href='#g4-46'/>
</g>
<g transform='matrix(1 0 0 1 -266.831 68.58522)'>
<use x='721.35665' y='-67.68323' xlink:href='#g4-46'/>
<use x='721.35665' y='-63.698174' xlink:href='#g4-46'/>
<use x='721.35665' y='-59.713118' xlink:href='#g4-46'/>
</g>
<path d='M93.41398 31.179708C93.41398 30.242208 92.652263 29.48049 91.714763 29.48049C90.773357 29.48049 90.01164 30.242208 90.01164 31.179708C90.01164 32.121114 90.773357 32.88283 91.714763 32.88283C92.652263 32.88283 93.41398 32.121114 93.41398 31.179708Z'/>
<path d='M93.41408 31.179708C93.41408 30.242208 92.652363 29.48049 91.714863 29.48049C90.773457 29.48049 90.01174 30.242208 90.01174 31.179708C90.01174 32.121114 90.773457 32.88283 91.714863 32.88283C92.652363 32.88283 93.41408 32.121114 93.41408 31.179708Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<path d='M273.93745 31.179708C273.93745 30.242208 273.175728 29.48049 272.234322 29.48049C271.296822 29.48049 270.5351 30.242208 270.5351 31.179708C270.5351 32.121114 271.296822 32.88283 272.234322 32.88283C273.175728 32.88283 273.93745 32.121114 273.93745 31.179708Z'/>
<path d='M273.93745 31.179708C273.93745 30.242208 273.175728 29.48049 272.234322 29.48049C271.296822 29.48049 270.5351 30.242208 270.5351 31.179708C270.5351 32.121114 271.296822 32.88283 272.234322 32.88283C273.175728 32.88283 273.93745 32.121114 273.93745 31.179708Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -275.686 61.6113)'>
<use x='627.43002' y='-29.904125' xlink:href='#g2-58'/>
<use x='631.857828' y='-29.904125' xlink:href='#g2-58'/>
<use x='636.285636' y='-29.904125' xlink:href='#g2-58'/>
</g>
<path d='M475.12493 34.66799L482.10149 27.69533M475.12493 27.69533L482.10149 34.66799' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<path d='M133.64445 60.878927C133.64445 59.941427 132.882728 59.179707 131.941322 59.179707C131.003822 59.179707 130.2421 59.941427 130.2421 60.878927C130.2421 61.820333 131.003822 62.582047 131.941322 62.582047C132.882728 62.582047 133.64445 61.820333 133.64445 60.878927Z'/>
<path d='M133.64445 60.87886C133.64445 59.94136 132.882728 59.17964 131.941322 59.17964C131.003822 59.17964 130.2421 59.94136 130.2421 60.87886C130.2421 61.820266 131.003822 62.58198 131.941322 62.58198C132.882728 62.58198 133.64445 61.820266 133.64445 60.87886Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<path d='M319.26553 60.878927C319.26553 59.941427 318.503812 59.179707 317.566312 59.179707C316.624906 59.179707 315.86319 59.941427 315.86319 60.878927C315.86319 61.820333 316.624906 62.582047 317.566312 62.582047C318.503812 62.582047 319.26553 61.820333 319.26553 60.878927Z'/>
<path d='M319.26553 60.87886C319.26553 59.94136 318.503812 59.17964 317.566312 59.17964C316.624906 59.17964 315.86319 59.94136 315.86319 60.87886C315.86319 61.820266 316.624906 62.58198 317.566312 62.58198C318.503812 62.58198 319.26553 61.820266 319.26553 60.87886Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -275.686 61.611233)'>
<use x='627.43002' y='-.205832' xlink:href='#g2-58'/>
<use x='631.857828' y='-.205832' xlink:href='#g2-58'/>
<use x='636.285636' y='-.205832' xlink:href='#g2-58'/>
</g>
<path d='M424.90618 60.878927C424.90618 59.941427 424.14446 59.179707 423.203054 59.179707C422.265554 59.179707 421.50384 59.941427 421.50384 60.878927C421.50384 61.820333 422.265554 62.582047 423.203054 62.582047C424.14446 62.582047 424.90618 61.820333 424.90618 60.878927Z'/>
<path d='M424.90618 60.87886C424.90618 59.94136 424.14446 59.17964 423.203054 59.17964C422.265554 59.17964 421.50384 59.94136 421.50384 60.87886C421.50384 61.820266 422.265554 62.58198 423.203054 62.58198C424.14446 62.58198 424.90618 61.820266 424.90618 60.87886Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<path d='M475.12493 64.36714L482.10149 57.39448M475.12493 57.39448L482.10149 64.36714' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -284.8782 -57.432468)'>
<use x='227.346532' y='-.205832' xlink:href='#g0-106'/>
<use x='230.11394' y='-.205832' xlink:href='#g2-106'/>
<use x='234.216626' y='1.288549' xlink:href='#g5-49'/>
<use x='238.685996' y='-.205832' xlink:href='#g0-105'/>
</g>
<path d='M-23.926-52.738232H-6.867V-67.519532H-23.926Z' fill='#fff'/>
<path d='M-23.926-52.738232H-6.867V-67.519532H-23.926Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -247.2884 -56.519268)'>
<use x='227.346532' y='-.205832' xlink:href='#g2-72'/>
</g>
<path d='M7.309-51.992232H27.312V-68.265632H7.309Z' fill='#fff'/>
<path d='M7.309-51.992232H27.312V-68.265632H7.309Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -216.0538 -57.266468)'>
<use x='227.346532' y='-.205832' xlink:href='#g2-82'/>
<use x='234.911062' y='1.288549' xlink:href='#g5-50'/>
</g>
<path d='M76.137-51.578132H107.293V-68.679732H76.137Z' fill='#fff'/>
<path d='M76.137-51.578132H107.293V-68.679732H76.137Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -147.224 -57.681568)'>
<use x='227.346532' y='-.205832' xlink:href='#g2-82'/>
<use x='234.911062' y='1.288549' xlink:href='#g3-110'/>
<use x='239.835925' y='1.288549' xlink:href='#g1-0'/>
<use x='246.062604' y='1.288549' xlink:href='#g5-49'/>
</g>
<path d='M121.469-51.992232H142.4258V-68.265632H121.469Z' fill='#fff'/>
<path d='M121.469-51.992232H142.4258V-68.265632H121.469Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -101.895 -57.266468)'>
<use x='227.346532' y='-.205832' xlink:href='#g2-82'/>
<use x='234.911062' y='1.288549' xlink:href='#g3-110'/>
</g>
<g transform='matrix(1 0 0 1 269.664 -57.432468)'>
<use x='227.346532' y='-.205832' xlink:href='#g2-32'/>
<use x='233.836116' y='1.288549' xlink:href='#g5-49'/>
</g>
<g transform='matrix(1 0 0 1 -284.8782 -26.156368)'>
<use x='227.346532' y='-.205832' xlink:href='#g0-106'/>
<use x='230.11394' y='-.205832' xlink:href='#g2-106'/>
<use x='234.216626' y='1.288549' xlink:href='#g5-50'/>
<use x='238.685996' y='-.205832' xlink:href='#g0-105'/>
</g>
<path d='M156.5977-21.464832H173.6602V-36.242232H156.5977Z' fill='#fff'/>
<path d='M156.5977-21.464832H173.6602V-36.242232H156.5977Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -66.763 -25.243168)'>
<use x='227.346532' y='-.205832' xlink:href='#g2-72'/>
</g>
<path d='M187.832-20.714832H207.8359V-36.988232H187.832Z' fill='#fff'/>
<path d='M187.832-20.714832H207.8359V-36.988232H187.832Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 -35.529 -25.990268)'>
<use x='227.346532' y='-.205832' xlink:href='#g2-82'/>
<use x='234.911062' y='1.288549' xlink:href='#g5-50'/>
</g>
<path d='M256.6641-20.300732H287.8203V-37.402332H256.6641Z' fill='#fff'/>
<path d='M256.6641-20.300732H287.8203V-37.402332H256.6641Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 33.301 -26.405468)'>
<use x='227.346532' y='-.205832' xlink:href='#g2-82'/>
<use x='234.911062' y='1.288549' xlink:href='#g3-110'/>
<use x='239.835925' y='1.288549' xlink:href='#g1-0'/>
<use x='246.062604' y='1.288549' xlink:href='#g5-50'/>
</g>
<path d='M301.9922-20.300732H333.148V-37.402332H301.9922Z' fill='#fff'/>
<path d='M301.9922-20.300732H333.148V-37.402332H301.9922Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 78.63 -26.405468)'>
<use x='227.346532' y='-.205832' xlink:href='#g2-82'/>
<use x='234.911062' y='1.288549' xlink:href='#g3-110'/>
<use x='239.835925' y='1.288549' xlink:href='#g1-0'/>
<use x='246.062604' y='1.288549' xlink:href='#g5-49'/>
</g>
<g transform='matrix(1 0 0 1 269.664 -26.156368)'>
<use x='227.346532' y='-.205832' xlink:href='#g2-32'/>
<use x='233.836116' y='1.288549' xlink:href='#g5-50'/>
</g>
<g transform='matrix(1 0 0 1 -296.0298 33.877532)'>
<use x='227.346532' y='-.205832' xlink:href='#g0-106'/>
<use x='230.11394' y='-.205832' xlink:href='#g2-106'/>
<use x='234.216626' y='1.288549' xlink:href='#g3-110'/>
<use x='239.141488' y='1.288549' xlink:href='#g1-0'/>
<use x='245.368168' y='1.288549' xlink:href='#g5-49'/>
<use x='249.837521' y='-.205832' xlink:href='#g0-105'/>
</g>
<path d='M381.973 38.570268H399.035V23.792968H381.973Z' fill='#fff'/>
<path d='M381.973 38.570268H399.035V23.792968H381.973Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 158.612 34.790732)'>
<use x='227.346532' y='-.205832' xlink:href='#g2-72'/>
</g>
<path d='M413.207 39.316368H433.211V23.042968H413.207Z' fill='#fff'/>
<path d='M413.207 39.316368H433.211V23.042968H413.207Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 189.846 34.043532)'>
<use x='227.346532' y='-.205832' xlink:href='#g2-82'/>
<use x='234.911062' y='1.288549' xlink:href='#g5-50'/>
</g>
<g transform='matrix(1 0 0 1 269.664 33.683732)'>
<use x='227.346532' y='-.205832' xlink:href='#g2-32'/>
<use x='233.836116' y='1.288549' xlink:href='#g3-110'/>
<use x='238.760978' y='1.288549' xlink:href='#g1-0'/>
<use x='244.987658' y='1.288549' xlink:href='#g5-49'/>
</g>
<g transform='matrix(1 0 0 1 -285.8318 63.576132)'>
<use x='227.346532' y='-.205832' xlink:href='#g0-106'/>
<use x='230.11394' y='-.205832' xlink:href='#g2-106'/>
<use x='234.216626' y='1.288549' xlink:href='#g3-110'/>
<use x='239.639619' y='-.205832' xlink:href='#g0-105'/>
</g>
<path d='M447.387 68.269568H464.445V53.492168H447.387Z' fill='#fff'/>
<path d='M447.387 68.269568H464.445V53.492168H447.387Z' stroke='#000' fill='none' stroke-width='.79701' stroke-miterlimit='10'/>
<g transform='matrix(1 0 0 1 224.024 64.489432)'>
<use x='227.346532' y='-.205832' xlink:href='#g2-72'/>
</g>
<g transform='matrix(1 0 0 1 269.664 63.576132)'>
<use x='227.346532' y='-.205832' xlink:href='#g2-32'/>
<use x='233.836116' y='1.288549' xlink:href='#g3-110'/>
</g>
</g>
</svg>
\ No newline at end of file
_book/content/img/double_slit_comic.png

23.9 KiB

_book/content/img/double_slit_frames.png

360 KiB