Source file cleanup
Some checks failed
Build / build (push) Failing after 14s

This commit is contained in:
Marius Drechsler 2024-09-03 12:53:47 +02:00
parent 79fbb6da99
commit 80a1eca011
5 changed files with 0 additions and 160 deletions

View file

@ -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]
) <example_qc>
]
== 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.]
) <example_bdd_xor>
#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.]
) <example_bdd_and>
]

View file

@ -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")$]
)

View file

@ -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]
)

View file

@ -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.]
) <myers_algorithm>
== QCEC Benchmarking Tool
As @qcec doesnt have built-in benchmarks, a benchmarking tool was developed to test different configurations on various circuit pairs.

View file

@ -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