This commit is contained in:
parent
79fbb6da99
commit
80a1eca011
5 changed files with 0 additions and 160 deletions
|
|
@ -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>
|
||||
]
|
||||
|
||||
|
||||
|
|
@ -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")$]
|
||||
)
|
||||
|
|
@ -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]
|
||||
)
|
||||
|
|
@ -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 doesn’t have built-in benchmarks, a benchmarking tool was developed to test different configurations on various circuit pairs.
|
||||
|
||||
|
|
@ -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
|
||||
Loading…
Add table
Add a link
Reference in a new issue