Initial commit
This commit is contained in:
commit
9aca6c3042
40 changed files with 2557 additions and 0 deletions
19
.direnv/bin/nix-direnv-reload
Executable file
19
.direnv/bin/nix-direnv-reload
Executable file
|
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
if [[ ! -d "/home/mya/thesis" ]]; then
|
||||||
|
echo "Cannot find source directory; Did you move it?"
|
||||||
|
echo "(Looking for "/home/mya/thesis")"
|
||||||
|
echo 'Cannot force reload with this script - use "direnv reload" manually and then try again'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# rebuild the cache forcefully
|
||||||
|
_nix_direnv_force_reload=1 direnv exec "/home/mya/thesis" true
|
||||||
|
|
||||||
|
# Update the mtime for .envrc.
|
||||||
|
# This will cause direnv to reload again - but without re-building.
|
||||||
|
touch "/home/mya/thesis/.envrc"
|
||||||
|
|
||||||
|
# Also update the timestamp of whatever profile_rc we have.
|
||||||
|
# This makes sure that we know we are up to date.
|
||||||
|
touch -r "/home/mya/thesis/.envrc" "/home/mya/thesis/.direnv"/*.rc
|
||||||
1
.direnv/flake-inputs/72x8cqlqwfpj59mhy3mk2rh12zacddmr-source
Symbolic link
1
.direnv/flake-inputs/72x8cqlqwfpj59mhy3mk2rh12zacddmr-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/72x8cqlqwfpj59mhy3mk2rh12zacddmr-source
|
||||||
1
.direnv/flake-inputs/8mf17vg4416wkyd7kc1b4yp4pgvsi0qy-source
Symbolic link
1
.direnv/flake-inputs/8mf17vg4416wkyd7kc1b4yp4pgvsi0qy-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/8mf17vg4416wkyd7kc1b4yp4pgvsi0qy-source
|
||||||
1
.direnv/flake-inputs/i9syjxw0famqkabw2d01n723m3sc7vdn-source
Symbolic link
1
.direnv/flake-inputs/i9syjxw0famqkabw2d01n723m3sc7vdn-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/i9syjxw0famqkabw2d01n723m3sc7vdn-source
|
||||||
1
.direnv/flake-inputs/na7sykizsgkzh9i3wc8m8pz5xfqib2rv-source
Symbolic link
1
.direnv/flake-inputs/na7sykizsgkzh9i3wc8m8pz5xfqib2rv-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/na7sykizsgkzh9i3wc8m8pz5xfqib2rv-source
|
||||||
1
.direnv/flake-inputs/rylyv28gslxqq5pxzr4llgrp2asq898n-source
Symbolic link
1
.direnv/flake-inputs/rylyv28gslxqq5pxzr4llgrp2asq898n-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/rylyv28gslxqq5pxzr4llgrp2asq898n-source
|
||||||
1
.direnv/flake-inputs/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source
Symbolic link
1
.direnv/flake-inputs/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source
|
||||||
1
.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa
Symbolic link
1
.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/zmfxzr0ln2qgqg72g8a66v5jr1lqmwd1-nix-shell-env
|
||||||
1881
.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc
Normal file
1881
.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc
Normal file
File diff suppressed because it is too large
Load diff
1
.envrc
Normal file
1
.envrc
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
use flake
|
||||||
1
README.md
Normal file
1
README.md
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
# MQT QCEC Diff Thesis
|
||||||
23
bibliography.bib
Normal file
23
bibliography.bib
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
@article{quetschlich2023mqtbench,
|
||||||
|
title={{{MQT Bench}}: Benchmarking Software and Design Automation Tools for Quantum Computing},
|
||||||
|
shorttitle={{MQT Bench}},
|
||||||
|
journal={{Quantum}},
|
||||||
|
author={Quetschlich, Nils and Burgholzer, Lukas and Wille, Robert},
|
||||||
|
year={2023},
|
||||||
|
note={{{MQT Bench}} is available at \url{https://www.cda.cit.tum.de/mqtbench/}},
|
||||||
|
}
|
||||||
|
|
||||||
|
@article{burgholzer2021ec,
|
||||||
|
title={Advanced Equivalence Checking for Quantum Circuits},
|
||||||
|
volume={40},
|
||||||
|
ISSN={1937-4151},
|
||||||
|
url={http://dx.doi.org/10.1109/TCAD.2020.3032630},
|
||||||
|
DOI={10.1109/tcad.2020.3032630},
|
||||||
|
number={9},
|
||||||
|
journal={IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems},
|
||||||
|
publisher={Institute of Electrical and Electronics Engineers (IEEE)},
|
||||||
|
author={Burgholzer, Lukas and Wille, Robert},
|
||||||
|
year={2021},
|
||||||
|
month=sep,
|
||||||
|
pages={1810–1824}
|
||||||
|
}
|
||||||
3
content/SMHD.typ
Normal file
3
content/SMHD.typ
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
= S-Metric Helper Data Method
|
||||||
|
|
||||||
|
#figure(include("../graphics/quantizers/two-metric-enroll.typ"))
|
||||||
70
content/background.typ
Normal file
70
content/background.typ
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
#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>
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
16
content/benchmarks.typ
Normal file
16
content/benchmarks.typ
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
#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")$]
|
||||||
|
)
|
||||||
2
content/conclusion.typ
Normal file
2
content/conclusion.typ
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
= Conclusion
|
||||||
|
#lorem(200)
|
||||||
36
content/implementation.typ
Normal file
36
content/implementation.typ
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
#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.
|
||||||
|
|
||||||
35
content/introduction.typ
Normal file
35
content/introduction.typ
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
= Introduction
|
||||||
|
|
||||||
|
These are the introducing words
|
||||||
|
|
||||||
|
== Notation
|
||||||
|
|
||||||
|
To ensure a consistent notation of functions and ideas, we will now introduce some required conventions
|
||||||
|
|
||||||
|
Random distributed variables will be notated with a capital letter, i.e. $X$, its realization will be the corresponding lower case letter, $x$.
|
||||||
|
|
||||||
|
Vectors will be written in bold test: $bold(k)$ represents a vector of quantized symbols.
|
||||||
|
|
||||||
|
We will call a quantized symbol $k$. $k$ consists of all possible binary symbols, i.e. $0, 01, 110$.
|
||||||
|
|
||||||
|
A quantizer will be defined as a function $cal(Q)(x, bold(a))$ that returns a quantized symbol $k$.
|
||||||
|
|
||||||
|
@example-quantizer shows the curve of a 2-bit quantizer that receives $tilde(x)$ as input. In the case, that the value of $tilde(x)$ equals one of the four bounds, the quantized value is chosen randomly from the relevant bins.
|
||||||
|
|
||||||
|
#figure(
|
||||||
|
include("../graphics/quantizers/two-metric-enroll.typ"),
|
||||||
|
caption: [Example quantizer function]) <example-quantizer>
|
||||||
|
|
||||||
|
For the S-Metric Helper Data Method, we introduce a function
|
||||||
|
|
||||||
|
$ cal(Q)(s,m) $<eq-1>
|
||||||
|
|
||||||
|
where s determines the amount of metrics and m the bit width of the symbols.
|
||||||
|
|
||||||
|
=== Tilde-Domain<tilde-domain>
|
||||||
|
|
||||||
|
AS also described in REFSMHD, we will use a CDF to transform the real PUF values into the Tilde-Domain
|
||||||
|
This transformation can be performed using the function $sym(xi) = tilde(x)$. The key property of this transformation is the resulting uniform distribution of $x$.
|
||||||
|
|
||||||
|
Considering a normal distribution, the CDF is defined as
|
||||||
|
$ sym(xi)(frac(x - sym(mu))(sym(sigma))) = frac(1)(2)[1 + erf(frac(x - sym(mu))(sym(sigma) sqrt(2)))] $
|
||||||
2
content/outlook.typ
Normal file
2
content/outlook.typ
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
= Outlook
|
||||||
|
#lorem(200)
|
||||||
3
content/state.typ
Normal file
3
content/state.typ
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
= 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
|
||||||
99
flake.lock
generated
Normal file
99
flake.lock
generated
Normal file
|
|
@ -0,0 +1,99 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710146030,
|
||||||
|
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1720553833,
|
||||||
|
"narHash": "sha256-IXMiHQMtdShDXcBW95ctA+m5Oq2kLxnBt7WlMxvDQXA=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "249fbde2a178a2ea2638b65b9ecebd531b338cf9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-24.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"typix": "typix",
|
||||||
|
"typst-packages": "typst-packages"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"typix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1720341806,
|
||||||
|
"narHash": "sha256-Z9h+Q2ijuUzoK6E8eOIs5nyMkwA3wD1ILzx29qTo+x4=",
|
||||||
|
"owner": "loqusion",
|
||||||
|
"repo": "typix",
|
||||||
|
"rev": "058a5dc2fb7abd6bfbfa355898914bcc01798213",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "loqusion",
|
||||||
|
"repo": "typix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"typst-packages": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1720615207,
|
||||||
|
"narHash": "sha256-Hh2fgicC68hq5oTig+tKzbqh8XbxQ+3PSKThIqOU5eo=",
|
||||||
|
"owner": "typst",
|
||||||
|
"repo": "packages",
|
||||||
|
"rev": "cd9b4250966792262b007fe200d9aa3bcb8d5aa4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "typst",
|
||||||
|
"repo": "packages",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
56
flake.nix
Normal file
56
flake.nix
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = github:nixos/nixpkgs/nixos-24.05;
|
||||||
|
flake-utils.url = github:numtide/flake-utils;
|
||||||
|
typix = {
|
||||||
|
url = github:loqusion/typix;
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
typst-packages = {
|
||||||
|
url = github:typst/packages;
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, flake-utils, typix, typst-packages, ... }: flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
inherit (pkgs) lib;
|
||||||
|
|
||||||
|
tx = typix.lib.${system};
|
||||||
|
typstPackagesSrc = "${typst-packages}/packages";
|
||||||
|
typstPackagesCache = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "typst-packages-cache";
|
||||||
|
src = typstPackagesSrc;
|
||||||
|
dontBuild = true;
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p "$out/typst/packages"
|
||||||
|
cp -LR --reflink=auto --no-preserve=mode -t "$out/typst/packages" "$src"/*
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
typstProject = {
|
||||||
|
typstSource = "main.typ";
|
||||||
|
fontPaths = [
|
||||||
|
"./template/resources/"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
typstProjectSrc = {
|
||||||
|
src = ./.;
|
||||||
|
XDG_CACHE_HOME = typstPackagesCache;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
devShell = pkgs.mkShell {
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
typst
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
packages.mqt-qcec-diff-thesis = tx.buildTypstProject (typstProject // typstProjectSrc);
|
||||||
|
packages.default = self.packages.${system}.mqt-qcec-diff-thesis;
|
||||||
|
|
||||||
|
apps.watch = flake-utils.lib.mkApp { drv = tx.watchTypstProject typstProject; };
|
||||||
|
apps.default = self.apps.${system}.watch;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
11
glossary.typ
Normal file
11
glossary.typ
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
#import "@preview/glossarium:0.4.1": print-glossary
|
||||||
|
|
||||||
|
#counter(heading).update(0)
|
||||||
|
#heading(numbering: none)[Glossary]
|
||||||
|
|
||||||
|
#print-glossary((
|
||||||
|
(key: "bdd", short: "BDD", plural: "BDDs", long: "binary decision diagram", longplural: "binary decision diagrams"),
|
||||||
|
(key: "dd", short: "DD", plural: "DDs", long: "decision diagram", longplural: "decision diagrams"),
|
||||||
|
(key: "mqt", short: "MQT", long: "Munich Quantum Toolkit"),
|
||||||
|
(key: "qcec", short: "QCEC", long: "Quantum Circuit Equivalence Checker"),
|
||||||
|
))
|
||||||
21
graphics/quantizers/two-metric-enroll.typ
Normal file
21
graphics/quantizers/two-metric-enroll.typ
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
#import "@preview/cetz:0.2.2": canvas, plot
|
||||||
|
|
||||||
|
#let line_style = (stroke: (paint: black, thickness: 2pt))
|
||||||
|
#let dashed = (stroke: (dash: "dashed"))
|
||||||
|
#canvas({
|
||||||
|
plot.plot(size: (8,6),
|
||||||
|
x-tick-step: 0.25,
|
||||||
|
y-label: $cal(Q)(2, 1, tilde(x))$,
|
||||||
|
x-label: $tilde(x)$,
|
||||||
|
y-tick-step: none,
|
||||||
|
y-ticks: ((0.25, [00]), (0.5, [01]), (0.75, [10]), (1, [11])),
|
||||||
|
axis-style: "left",
|
||||||
|
x-min: 0,
|
||||||
|
x-max: 1,
|
||||||
|
y-min: 0,
|
||||||
|
y-max: 1,{
|
||||||
|
plot.add(((0,0), (0.25,0.25), (0.5,0.5), (0.75,0.75), (1, 1)), line: "vh", style: line_style)
|
||||||
|
plot.add-hline(0.25, 0.5, 0.75, 1, style: dashed)
|
||||||
|
plot.add-vline(0.25, 0.5, 0.75, 1, style: dashed)
|
||||||
|
})
|
||||||
|
})
|
||||||
BIN
main.pdf
Normal file
BIN
main.pdf
Normal file
Binary file not shown.
40
main.typ
Normal file
40
main.typ
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
#import "@preview/cetz:0.2.2"
|
||||||
|
#import "@preview/fletcher:0.5.1"
|
||||||
|
#import "@preview/gentle-clues:0.9.0"
|
||||||
|
#import "@preview/glossarium:0.4.1": make-glossary
|
||||||
|
#import "@preview/lovelace:0.3.0"
|
||||||
|
#import "@preview/tablex:0.0.8"
|
||||||
|
#import "@preview/unify:0.6.0"
|
||||||
|
#import "@preview/quill:0.3.0"
|
||||||
|
|
||||||
|
#import "template/conf.typ": conf
|
||||||
|
|
||||||
|
#show: make-glossary
|
||||||
|
|
||||||
|
#set document(title: "Towards Efficient Helper Data Algorithms for Multi-Bit PUF Quantization", author: "Marius Drechsler")
|
||||||
|
|
||||||
|
#show: doc => conf(
|
||||||
|
title: "Towards Efficient Helper Data Algorithms for Multi-Bit PUF Quantization",
|
||||||
|
author: "Marius Drechsler",
|
||||||
|
chair: "Chair for Security in Information Technology",
|
||||||
|
school: "School of Computation, Information and Technology",
|
||||||
|
degree: "Bachelor of Science (B.Sc.)",
|
||||||
|
examiner: "Prof. Dr. Georg Sigl",
|
||||||
|
supervisor: "M.Sc. Jonas Ruchti",
|
||||||
|
submitted: "22.07.2024",
|
||||||
|
doc
|
||||||
|
)
|
||||||
|
|
||||||
|
#include "content/introduction.typ"
|
||||||
|
#include "content/SMHD.typ"
|
||||||
|
#include "content/state.typ"
|
||||||
|
#include "content/implementation.typ"
|
||||||
|
#include "content/benchmarks.typ"
|
||||||
|
#include "content/conclusion.typ"
|
||||||
|
#include "content/outlook.typ"
|
||||||
|
|
||||||
|
#include "glossary.typ"
|
||||||
|
|
||||||
|
#counter(heading).update(0)
|
||||||
|
#bibliography("bibliography.bib", style: "mla")
|
||||||
|
|
||||||
3
template/colour.typ
Normal file
3
template/colour.typ
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
#let tum_blue = rgb(0, 101, 189)
|
||||||
|
#let tum_white = rgb(255, 255, 255)
|
||||||
|
#let tum_black = rgb(0, 0, 0)
|
||||||
98
template/conf.typ
Normal file
98
template/conf.typ
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
#import "cover.typ": cover_page
|
||||||
|
#import "title.typ": title_page
|
||||||
|
#import "contents.typ": contents_page
|
||||||
|
|
||||||
|
#let conf(
|
||||||
|
title: "",
|
||||||
|
author: "",
|
||||||
|
chair: "",
|
||||||
|
school: "",
|
||||||
|
degree: "",
|
||||||
|
examiner: "",
|
||||||
|
supervisor: "",
|
||||||
|
submitted: "",
|
||||||
|
doc
|
||||||
|
) = {
|
||||||
|
cover_page(
|
||||||
|
title: title,
|
||||||
|
author: author,
|
||||||
|
chair: chair,
|
||||||
|
school: school
|
||||||
|
)
|
||||||
|
|
||||||
|
pagebreak()
|
||||||
|
pagebreak()
|
||||||
|
|
||||||
|
title_page(
|
||||||
|
title: title,
|
||||||
|
author: author,
|
||||||
|
chair: chair,
|
||||||
|
school: school,
|
||||||
|
degree: degree,
|
||||||
|
examiner: examiner,
|
||||||
|
supervisor: supervisor,
|
||||||
|
submitted: submitted
|
||||||
|
)
|
||||||
|
|
||||||
|
pagebreak()
|
||||||
|
|
||||||
|
set math.equation(numbering: "(1)")
|
||||||
|
|
||||||
|
set page(
|
||||||
|
paper: "a4",
|
||||||
|
margin: (
|
||||||
|
top: 3cm,
|
||||||
|
bottom: 3cm,
|
||||||
|
x: 2cm,
|
||||||
|
),
|
||||||
|
header: [],
|
||||||
|
footer: []
|
||||||
|
)
|
||||||
|
|
||||||
|
set par(justify: true)
|
||||||
|
set align(left)
|
||||||
|
set text(
|
||||||
|
font: "Times New Roman",
|
||||||
|
size: 12pt,
|
||||||
|
)
|
||||||
|
|
||||||
|
set heading(numbering: "1.")
|
||||||
|
show heading: it => locate(loc => {
|
||||||
|
let levels = counter(heading).at(loc)
|
||||||
|
|
||||||
|
set text(font: "TUM Neue Helvetica")
|
||||||
|
if it.level == 1 [
|
||||||
|
#set text(size: 24pt)
|
||||||
|
#pagebreak()
|
||||||
|
#if levels.at(0) != 0 {
|
||||||
|
numbering("1", levels.at(0))
|
||||||
|
}
|
||||||
|
#it.body
|
||||||
|
#v(1em, weak: true)
|
||||||
|
] else if it.level == 2 [
|
||||||
|
#set text(size: 16pt)
|
||||||
|
#v(1em)
|
||||||
|
#numbering("1.1", levels.at(0), levels.at(1))
|
||||||
|
#it.body
|
||||||
|
#v(1em, weak: true)
|
||||||
|
] else if it.level == 3 [
|
||||||
|
#set text(size: 16pt)
|
||||||
|
#v(1em, weak: true)
|
||||||
|
#numbering("1.1.1", levels.at(0), levels.at(1), levels.at(2))
|
||||||
|
#it.body
|
||||||
|
#v(1em, weak: true)
|
||||||
|
] else [
|
||||||
|
#set text(size: 12pt)
|
||||||
|
#v(1em, weak: true)
|
||||||
|
#it.body
|
||||||
|
#v(1em, weak: true)
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
contents_page()
|
||||||
|
|
||||||
|
pagebreak()
|
||||||
|
|
||||||
|
doc
|
||||||
|
}
|
||||||
|
|
||||||
14
template/contents.typ
Normal file
14
template/contents.typ
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
#import "colour.typ": *
|
||||||
|
|
||||||
|
#let contents_page() = {
|
||||||
|
set text(font: "TUM Neue Helvetica")
|
||||||
|
|
||||||
|
show outline.entry.where(
|
||||||
|
level: 1
|
||||||
|
): it => {
|
||||||
|
v(1em)
|
||||||
|
strong(it)
|
||||||
|
}
|
||||||
|
|
||||||
|
outline(indent: auto)
|
||||||
|
}
|
||||||
46
template/cover.typ
Normal file
46
template/cover.typ
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
#import "colour.typ": *
|
||||||
|
|
||||||
|
#let cover_page(
|
||||||
|
title: "",
|
||||||
|
author: "",
|
||||||
|
chair: "",
|
||||||
|
school: ""
|
||||||
|
) = {
|
||||||
|
set text(
|
||||||
|
font: "TUM Neue Helvetica"
|
||||||
|
)
|
||||||
|
|
||||||
|
set page(
|
||||||
|
paper: "a4",
|
||||||
|
margin: (
|
||||||
|
top: 3cm,
|
||||||
|
bottom: 1cm,
|
||||||
|
x: 1cm,
|
||||||
|
),
|
||||||
|
header: [
|
||||||
|
#grid(
|
||||||
|
columns: (1fr, 1fr),
|
||||||
|
rows: (auto),
|
||||||
|
text(
|
||||||
|
fill: tum_blue,
|
||||||
|
size: 8pt,
|
||||||
|
[#chair \ #school \ Technical University of Munich]
|
||||||
|
),
|
||||||
|
align(bottom + right, image("resources/TUM_Logo_blau.svg", height: 50%))
|
||||||
|
)
|
||||||
|
],
|
||||||
|
footer: []
|
||||||
|
)
|
||||||
|
|
||||||
|
v(1cm)
|
||||||
|
|
||||||
|
set align(top + left)
|
||||||
|
text(size: 24pt, [*#title*])
|
||||||
|
|
||||||
|
v(3cm)
|
||||||
|
|
||||||
|
text(fill: tum_blue, size: 17pt, [*#author*])
|
||||||
|
|
||||||
|
set align(bottom + right)
|
||||||
|
image("resources/TUM_Tower.png", width: 60%)
|
||||||
|
}
|
||||||
BIN
template/resources/TUMNeueHelvetica-Bold.ttf
Executable file
BIN
template/resources/TUMNeueHelvetica-Bold.ttf
Executable file
Binary file not shown.
BIN
template/resources/TUMNeueHelvetica-BoldItalic.ttf
Executable file
BIN
template/resources/TUMNeueHelvetica-BoldItalic.ttf
Executable file
Binary file not shown.
BIN
template/resources/TUMNeueHelvetica-Italic.ttf
Executable file
BIN
template/resources/TUMNeueHelvetica-Italic.ttf
Executable file
Binary file not shown.
BIN
template/resources/TUMNeueHelvetica-Regular.ttf
Executable file
BIN
template/resources/TUMNeueHelvetica-Regular.ttf
Executable file
Binary file not shown.
BIN
template/resources/TUM_Flags_169.png
Normal file
BIN
template/resources/TUM_Flags_169.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 430 KiB |
BIN
template/resources/TUM_Flags_43.png
Normal file
BIN
template/resources/TUM_Flags_43.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 399 KiB |
6
template/resources/TUM_Logo_blau.svg
Normal file
6
template/resources/TUM_Logo_blau.svg
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" id="Ebene_1" x="0px" y="0px" width="408.16" height="212.46684" viewBox="-16.014 -31 408.16 212.46684" enable-background="new -16.014 -31 149 114" xml:space="preserve" sodipodi:docname="TUM_Web_Logo_blau.svg" inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"><metadata id="metadata13"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title>TUM_Web_Logo_blau</dc:title></cc:Work></rdf:RDF></metadata><defs id="defs11"/><sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="1920" inkscape:window-height="986" id="namedview9" showgrid="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:zoom="1.754386" inkscape:cx="124.61021" inkscape:cy="115.2546" inkscape:window-x="-11" inkscape:window-y="-11" inkscape:window-maximized="1" inkscape:current-layer="Ebene_1"/>
|
||||||
|
<title id="title2">TUM_Web_Logo_blau</title>
|
||||||
|
<desc id="desc4">TUM</desc>
|
||||||
|
<path fill="#3070b3" d="m 140.54052,-31 v 173.32822 h 44.72985 V -31 H 392.146 V 181.46685 H 353.00738 V 8.138629 H 308.2775 V 181.46685 H 269.13887 V 8.138629 H 224.40902 V 181.46685 H 101.4019 V 8.138629 H 62.26327 V 181.46685 H 23.12462 V 8.138629 H -16.014 V -31 Z" id="path6" style="stroke-width:5.59123"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.8 KiB |
BIN
template/resources/TUM_Tower.png
Normal file
BIN
template/resources/TUM_Tower.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 240 KiB |
BIN
template/resources/TUM_Tower_white.png
Normal file
BIN
template/resources/TUM_Tower_white.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 92 KiB |
64
template/title.typ
Normal file
64
template/title.typ
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
#import "colour.typ": *
|
||||||
|
|
||||||
|
#let title_page(
|
||||||
|
title: "",
|
||||||
|
author: "",
|
||||||
|
chair: "",
|
||||||
|
school: "",
|
||||||
|
degree: "",
|
||||||
|
examiner: "",
|
||||||
|
supervisor: "",
|
||||||
|
submitted: ""
|
||||||
|
) = {
|
||||||
|
set text(
|
||||||
|
font: "TUM Neue Helvetica",
|
||||||
|
size: 10pt
|
||||||
|
)
|
||||||
|
|
||||||
|
set page(
|
||||||
|
paper: "a4",
|
||||||
|
margin: (
|
||||||
|
top: 5cm,
|
||||||
|
bottom: 3cm,
|
||||||
|
x: 2cm,
|
||||||
|
),
|
||||||
|
header: [
|
||||||
|
#grid(
|
||||||
|
columns: (1fr, 1fr),
|
||||||
|
rows: (auto),
|
||||||
|
text(
|
||||||
|
fill: tum_blue,
|
||||||
|
size: 8pt,
|
||||||
|
[#chair \ #school \ Technical University of Munich]
|
||||||
|
),
|
||||||
|
align(bottom + right, image("resources/TUM_Logo_blau.svg", height: 30%))
|
||||||
|
)
|
||||||
|
],
|
||||||
|
footer: []
|
||||||
|
)
|
||||||
|
|
||||||
|
v(1cm)
|
||||||
|
|
||||||
|
set align(top + left)
|
||||||
|
text(size: 24pt, [*#title*])
|
||||||
|
|
||||||
|
v(3cm)
|
||||||
|
|
||||||
|
text(fill: tum_blue, size: 17pt, [*#author*])
|
||||||
|
|
||||||
|
v(3cm)
|
||||||
|
|
||||||
|
[Thesis for the attainment of the academic degree]
|
||||||
|
v(1em)
|
||||||
|
[*#degree*]
|
||||||
|
v(1em)
|
||||||
|
[at the #school of the Technical University of Munich.]
|
||||||
|
|
||||||
|
v(3cm)
|
||||||
|
|
||||||
|
[*Examiner:*\ #examiner]
|
||||||
|
v(0em)
|
||||||
|
[*Supervisor:*\ #supervisor]
|
||||||
|
v(0em)
|
||||||
|
[*Submitted:*\ Munich, #submitted]
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue