diff --git a/content/background.typ b/content/background.typ deleted file mode 100644 index 9b1896a..0000000 --- a/content/background.typ +++ /dev/null @@ -1,70 +0,0 @@ -#import "@preview/fletcher:0.5.1": diagram, node, edge -#import "@preview/gentle-clues:0.9.0": example -#import "@preview/quill:0.3.0": quantum-circuit, lstick, rstick, ctrl, targ, mqgate, meter - - -= Background -== Quantum Computation and Quantum Circuits -A quantum computer is a device that performs calculations by using certain phenomena of quantum mechanics. -The algorithms that run on this device are specified in quantum circuits. - -#example[ - @example_qc shows a simple quantum circuit that implements a specific quantum algorithm. - - #figure( - quantum-circuit( - lstick($|0〉$), $H$, mqgate($U$, n: 2, width: 5em, inputs: ((qubit: 0, label: $x$), (qubit: 1, label: $y$)), outputs: ((qubit: 0, label: $x$), (qubit: 1, label: $y plus.circle f(x)$))), $H$, meter(), [\ ], - lstick($|1〉$), $H$, 1, 1, 1 - ), - caption: [A quantum circuit implementing the Deutsch-Jozsa algorithm] - ) -] - - -== Decision Diagrams -Decision diagrams in general are directed acyclical graphs, that may be used to express control flow through a series of conditions. -It consists of a set of decision nodes and terminal nodes. -The decision nodes represent an arbitrary decision based on an input value and may thus have any number of outgoing edges. -The terminal nodes represent output values and may not have outgoing edges. - -A @bdd is a specific kind of decision diagram, where there are two terminal nodes (0 and 1) and each decision node has two outgoing edges, depending solely on a single bit of an input value. -@bdd[s] may be used to represent any boolean function. - -#example[ - Example @bdd[s] implementing boolean functions with an arity of $2$ are show in @example_bdd_xor and @example_bdd_and. - - #figure( - diagram( - node-stroke: .1em, - node((0, 0), [$x_0$], radius: 1em), - edge((0, 0), (-1, 1), [0], "->"), - edge((0, 0), (1, 1), [1], "->"), - node((-1, 1), [$x_1$], radius: 1em), - node((1, 1), [$x_1$], radius: 1em), - edge((-1, 1), (-1, 2), [0], "->"), - edge((-1, 1), (1, 2), [1], "->"), - edge((1, 1), (1, 2), [0], "->"), - edge((1, 1), (-1, 2), [1], "->"), - node((-1, 2), [$0$]), - node((1, 2), [$1$]), - ), - caption: [A @bdd for an XOR gate.] - ) - - #figure( - diagram( - node-stroke: .1em, - node((1, 0), [$x_0$], radius: 1em), - edge((1, 0), (0, 2), [0], "->"), - edge((1, 0), (1, 1), [1], "->"), - node((1, 1), [$x_1$], radius: 1em), - edge((1, 1), (0, 2), [0], "->"), - edge((1, 1), (1, 2), [1], "->"), - node((0, 2), [$0$]), - node((1, 2), [$1$]), - ), - caption: [A @bdd for an AND gate.] - ) -] - - diff --git a/content/benchmarks.typ b/content/benchmarks.typ deleted file mode 100644 index 0b81579..0000000 --- a/content/benchmarks.typ +++ /dev/null @@ -1,16 +0,0 @@ -#import "@preview/tablex:0.0.8": tablex -#import "@preview/unify:0.6.0": qty - -= Benchmarks -== Google Benchmark - -== MQT QCEC Bench -To generate test cases for the application schemes, @mqt Bench was used. @quetschlich2023mqtbench - -#tablex( - columns: (1fr, 1fr, 1fr), - rows: (auto, auto, auto), - [*Benchmark Name*], [*Diff Run Time*], [*Proportional Run Time*], - [DJ], [$qty("1.2e-6", "s")$], [$qty("1.5e-6", "s")$], - [Grover], [$qty("1.3e-3", "s")$], [$qty("1.7e-3", "s")$] -) diff --git a/content/conclusion.typ b/content/conclusion.typ deleted file mode 100644 index 0eec7a6..0000000 --- a/content/conclusion.typ +++ /dev/null @@ -1,35 +0,0 @@ -#import "@preview/glossarium:0.4.1": * - -= Comparison of @smhdt and @bach - -During the course of this work, we took a look at two distinct helper-data algorithms: the S-Metric Helper Data method and the newly presented method of optimization through Boundary Adaptive Clustering with helper-data. - -The S-Metric method will always outperform BACH considering the amount of helper data needed for operation. -This comes from the nature of S-Metric quickly approaching an optimal @ber for a certain bit width and not improving any further for higher amounts of metrics. - -Comparing both formulas for the extracted-bits to helper-data-bits ratio for both methods we can quickly see that S-Metric will always yield more extracted bits per helper-data bit than BACH. - -Considering #glspl("ber"), S-Metric does outperform BACH for smaller symbol widths. -But while the error rate for higher order quantization rises exponentially for higher-order bit quantizations, the #glspl("ber") of BACH do seem to rise rather linear than exponentially for higher-order bit quantizations. -This behaviour might be attributed to the general procedure of shaping the input values for the quantizer in such a way that they are clustered around the center of a quantizer step, which is a property that carries on for higher order bit quantizations. - - -We can now compare both the S-Metric Helper Data method and the newly presented method of optimization through Boundary Adaptive Clustering with Helper data based on the @ber and the amount of helper data bits, more specifically the extracted bit to helper data bit ratio $cal(r)$. -The ratios $cal(r)$ for both methods are defined as: -$ -cal(r)_"SMHD" = frac(M, log_2(S))\ -cal(r)_"BACH" = frac(M, N-1) -$ - -A good outline to compare both performances of @bach and @smhdt is if $cal(r) = 1$ for varying values of $M$. - -#figure( - table( - columns: 7, - - [*M*], [$1$], [$2$], [$3$], [$4$], [$5$], [$6$], - [*@ber @smhdt*], [$8 dot 10^(-6)$], [$4 dot 10^(-5)$], [$1 dot 10^(-3)$], [$0.02$], [$0.08$], [$0.15$], - [*@ber @bach*], [$0.09$], [$0.05$], [$0.05$], [$0.22$], [$0.23$], [$0.23$] - ), - caption: [#glspl("ber") for @bach and @smhdt configurations that equal the bit width of the quantized symbol and the amount of helper data bits] -) diff --git a/content/implementation.typ b/content/implementation.typ deleted file mode 100644 index 4446e58..0000000 --- a/content/implementation.typ +++ /dev/null @@ -1,36 +0,0 @@ -#import "@preview/lovelace:0.3.0": pseudocode-list - -= Implementation -== Visualisation -Initially, a visualisation of the diff algorithms applied to quantum circuits was created to assess their usefulness in equivalence checking. -Additionally, this served as exercise to better understand the algorithms to be used for the implementation in @qcec. - - -== QCEC Application Scheme -The Myers' Algorithm was implemented as an application scheme in @qcec. - -#figure( - block( - pseudocode-list[ - + do something - + do something else - + *while* still something to do - + do even more - + *if* not done yet *then* - + wait a bit - + resume working - + *else* - + go home - + *end* - + *end* - ], - width: 100% - ), - caption: [Myers' algorithm.] -) - - - -== QCEC Benchmarking Tool -As @qcec doesn’t have built-in benchmarks, a benchmarking tool was developed to test different configurations on various circuit pairs. - diff --git a/content/state.typ b/content/state.typ deleted file mode 100644 index fe6eedc..0000000 --- a/content/state.typ +++ /dev/null @@ -1,3 +0,0 @@ -= State of the Art -There are a variety of existing approaches to providing a suitable oracle for quantum circuit equivalence checking based on @dd[s]. -@qcec currently implements gate-cost, lookahead, one-to-one, proportional and sequential application schemes. @burgholzer2021ec