diff --git a/.gitignore b/.gitignore index 2efb7a86116622046e0ce99c62a7e52fbbea5cce..b3591ce7b727e00c2fa3addf06774e5035f76e45 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -/.quarto/ \ No newline at end of file +/.quarto/ +/.vscode/ \ No newline at end of file diff --git a/README.md b/README.md index b4e1dfea15f3a24814fd16f3fe2b7c1f18e5f594..37c078f7e34e7e50a7a57b8cf2a46c4b91227f53 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# Introduction to Quantum Computing +# Introduction to Quantum Computing - Lecture notes -Lecuture note for the lecture "Introduction to Quantum Computing" by Dominique Unruh at RWTH Aachen. \ No newline at end of file +Lecture note for the lecture "Introduction to Quantum Computing" by Dominique Unruh at RWTH Aachen. diff --git a/_book/Introduction-to-Quantum-Computing.epub b/_book/Introduction-to-Quantum-Computing.epub index fa85db19bffeaed41db2b8744998ee607ecb540c..e1feede545c2dab063c59952dd0b96ec4d4fb403 100644 Binary files a/_book/Introduction-to-Quantum-Computing.epub and b/_book/Introduction-to-Quantum-Computing.epub differ diff --git a/_book/Introduction-to-Quantum-Computing.pdf b/_book/Introduction-to-Quantum-Computing.pdf index 31feee0c7e1de330fb2d5e11eb12f9e71ae3645f..8c1536b2627a08dc5815b349161e968cf22368d6 100644 Binary files a/_book/Introduction-to-Quantum-Computing.pdf and b/_book/Introduction-to-Quantum-Computing.pdf differ diff --git a/_book/index.html b/_book/index.html index 0e2da6ae7b0111d9d4fb5de7416e7e46ddd20312..62e0300c092e60ea2ce0d10e0c3a2eb1cdc29772 100644 --- a/_book/index.html +++ b/_book/index.html @@ -81,7 +81,7 @@ ul.task-list li input[type="checkbox"] { <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(); }"> <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="./index.html">Preface</a></li></ol></nav> + <nav class="quarto-page-breadcrumbs" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="./index.html">Welcome</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(); }"> </a> <button type="button" class="btn quarto-search-button" aria-label="" onclick="window.quartoOpenSearch();"> @@ -98,6 +98,7 @@ ul.task-list li input[type="checkbox"] { <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/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"> @@ -128,25 +129,13 @@ ul.task-list li input[type="checkbox"] { <li class="sidebar-item"> <div class="sidebar-item-container"> <a href="./index.html" class="sidebar-item-text sidebar-link active"> - <span class="menu-text">Preface</span></a> + <span class="menu-text">Welcome</span></a> </div> </li> <li class="sidebar-item"> <div class="sidebar-item-container"> <a href="./quantumBasics.html" class="sidebar-item-text sidebar-link"> - <span class="menu-text"><span class="chapter-number">1</span> <span class="chapter-title">(Quantum) Basics</span></span></a> - </div> -</li> - <li class="sidebar-item"> - <div class="sidebar-item-container"> - <a href="./intro.html" class="sidebar-item-text sidebar-link"> - <span class="menu-text"><span class="chapter-number">2</span> <span class="chapter-title">Introduction</span></span></a> - </div> -</li> - <li class="sidebar-item"> - <div class="sidebar-item-container"> - <a href="./summary.html" class="sidebar-item-text sidebar-link"> - <span class="menu-text"><span class="chapter-number">3</span> <span class="chapter-title">Summary</span></span></a> + <span class="menu-text"><span class="chapter-number">1</span> <span class="chapter-title">Quantum Basics</span></span></a> </div> </li> </ul> @@ -159,7 +148,7 @@ ul.task-list li input[type="checkbox"] { <h2 id="toc-title">Table of contents</h2> <ul> - <li><a href="#preface" id="toc-preface" class="nav-link active" data-scroll-target="#preface">Preface</a></li> + <li><a href="#welcome" id="toc-welcome" class="nav-link active" data-scroll-target="#welcome">Welcome</a></li> </ul> </nav> </div> @@ -169,6 +158,7 @@ ul.task-list li input[type="checkbox"] { <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title"> <h1 class="title">Introduction to Quantum Computing</h1> +<p class="subtitle lead">Summerterm 2024</p> </div> @@ -191,9 +181,10 @@ ul.task-list li input[type="checkbox"] { </header> -<section id="preface" class="level1 unnumbered"> -<h1 class="unnumbered">Preface</h1> -<p>These are the lecuture notes for the “Introduction to Quantum Computing” lecture held by Dominique Unruh in the summer term 2024. The lecture notes are not meant to be fully self-containt, but are an addition to the written notes and the lecture recordings.</p> +<section id="welcome" class="level1 unnumbered"> +<h1 class="unnumbered">Welcome</h1> +<p>These are the lecture notes for the “Introduction to Quantum Computing” lecture held by Dominique Unruh in the summer term 2024. The lecture notes are updated throughout the semester and should be viewed as an addition to the written notes and the lecture recordings.</p> +<p>If you prefer a <code>.pdf</code> or <code>.epub</code> file, there is a download available at the top left corner. Please note, that these files are autogenerated.</p> <p>If you spot an error or have any suggestions, please send them to Jannik Hellenkamp.</p> @@ -281,7 +272,7 @@ window.document.addEventListener("DOMContentLoaded", function (event) { }); var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//); var mailtoRegex = new RegExp(/^mailto:/); - var filterRegex = new RegExp('/' + window.location.host + '/'); + var filterRegex = new RegExp("http:\/\/qis\.rwth-aachen\.de\/"); var isInternal = (href) => { return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href); } @@ -613,8 +604,8 @@ window.document.addEventListener("DOMContentLoaded", function (event) { <div class="nav-page nav-page-previous"> </div> <div class="nav-page nav-page-next"> - <a href="./quantumBasics.html" class="pagination-link" aria-label="(Quantum) Basics"> - <span class="nav-page-text"><span class="chapter-number">1</span> <span class="chapter-title">(Quantum) Basics</span></span> <i class="bi bi-arrow-right-short"></i> + <a href="./quantumBasics.html" class="pagination-link" aria-label="Quantum Basics"> + <span class="nav-page-text"><span class="chapter-number">1</span> <span class="chapter-title">Quantum Basics</span></span> <i class="bi bi-arrow-right-short"></i> </a> </div> </nav> diff --git a/_book/intro.html b/_book/intro.html deleted file mode 100644 index 9b3ce3d2bf346d11d34a9b699b197616beaf395f..0000000000000000000000000000000000000000 --- a/_book/intro.html +++ /dev/null @@ -1,645 +0,0 @@ -<!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.4.553"> - -<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> - - -<title>Introduction to Quantum Computing - 2 Introduction</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="./summary.html" rel="next"> -<link href="./quantumBasics.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 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://polyfill.io/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"> - -<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(); }"> - <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="./intro.html"><span class="chapter-number">2</span> <span class="chapter-title">Introduction</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(); }"> - </a> - <button type="button" class="btn quarto-search-button" aria-label="" 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"> - <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> -</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">Preface</span></a> - </div> -</li> - <li class="sidebar-item"> - <div class="sidebar-item-container"> - <a href="./quantumBasics.html" class="sidebar-item-text sidebar-link"> - <span class="menu-text"><span class="chapter-number">1</span> <span class="chapter-title">(Quantum) Basics</span></span></a> - </div> -</li> - <li class="sidebar-item"> - <div class="sidebar-item-container"> - <a href="./intro.html" class="sidebar-item-text sidebar-link active"> - <span class="menu-text"><span class="chapter-number">2</span> <span class="chapter-title">Introduction</span></span></a> - </div> -</li> - <li class="sidebar-item"> - <div class="sidebar-item-container"> - <a href="./summary.html" class="sidebar-item-text sidebar-link"> - <span class="menu-text"><span class="chapter-number">3</span> <span class="chapter-title">Summary</span></span></a> - </div> -</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"> - - </div> -<!-- main --> -<main class="content" id="quarto-document-content"> - -<header id="title-block-header" class="quarto-title-block default"> -<div class="quarto-title"> -<h1 class="title"><span class="chapter-number">2</span> <span class="chapter-title">Introduction</span></h1> -</div> - - - -<div class="quarto-title-meta"> - - - - - </div> - - - -</header> - - -<p>This is a test:</p> -<div id="def-example" class="definition theorem"> -<p><span class="theorem-title"><strong>Definition 2.1 (Quantum State)</strong></span> A quantum state is a vector <span class="math inline">\(\psi \in \mathbb{C}^n\)</span> with <span class="math inline">\(\sqrt{\sum |\psi|^2} = 1\)</span></p> -</div> - - - -</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 = { - 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 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) { - // 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(); - }); - var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//); - var mailtoRegex = new RegExp(/^mailto:/); - var filterRegex = new RegExp('/' + window.location.host + '/'); - 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)'); - 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); - } - // TODO in 1.5, we should make sure this works without a callout special case - 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="./quantumBasics.html" class="pagination-link" aria-label="(Quantum) Basics"> - <i class="bi bi-arrow-left-short"></i> <span class="nav-page-text"><span class="chapter-number">1</span> <span class="chapter-title">(Quantum) Basics</span></span> - </a> - </div> - <div class="nav-page nav-page-next"> - <a href="./summary.html" class="pagination-link" aria-label="Summary"> - <span class="nav-page-text"><span class="chapter-number">3</span> <span class="chapter-title">Summary</span></span> <i class="bi bi-arrow-right-short"></i> - </a> - </div> -</nav> -</div> <!-- /content --> - - - - -</body></html> \ No newline at end of file diff --git a/_book/quantumBasics.html b/_book/quantumBasics.html index 6c0af22a9cd64f1eba736fa9a4caebec952cfce7..bde6d87407e37de6281a161832c0256ba4d5e550 100644 --- a/_book/quantumBasics.html +++ b/_book/quantumBasics.html @@ -7,7 +7,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> -<title>Introduction to Quantum Computing - 1 (Quantum) Basics</title> +<title>Introduction to Quantum Computing - 1 Quantum Basics</title> <style> code{white-space: pre-wrap;} span.smallcaps{font-variant: small-caps;} @@ -30,7 +30,6 @@ ul.task-list li input[type="checkbox"] { <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="./intro.html" rel="next"> <link href="./index.html" rel="prev"> <script src="site_libs/quarto-html/quarto.js"></script> <script src="site_libs/quarto-html/popper.min.js"></script> @@ -110,7 +109,7 @@ window.Quarto = { <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(); }"> <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"><span class="chapter-number">1</span> <span class="chapter-title">(Quantum) Basics</span></a></li></ol></nav> + <nav class="quarto-page-breadcrumbs" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="./quantumBasics.html"><span class="chapter-number">1</span> <span class="chapter-title">Quantum Basics</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(); }"> </a> <button type="button" class="btn quarto-search-button" aria-label="" onclick="window.quartoOpenSearch();"> @@ -127,6 +126,7 @@ window.Quarto = { <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/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"> @@ -157,25 +157,13 @@ window.Quarto = { <li class="sidebar-item"> <div class="sidebar-item-container"> <a href="./index.html" class="sidebar-item-text sidebar-link"> - <span class="menu-text">Preface</span></a> + <span class="menu-text">Welcome</span></a> </div> </li> <li class="sidebar-item"> <div class="sidebar-item-container"> <a href="./quantumBasics.html" class="sidebar-item-text sidebar-link active"> - <span class="menu-text"><span class="chapter-number">1</span> <span class="chapter-title">(Quantum) Basics</span></span></a> - </div> -</li> - <li class="sidebar-item"> - <div class="sidebar-item-container"> - <a href="./intro.html" class="sidebar-item-text sidebar-link"> - <span class="menu-text"><span class="chapter-number">2</span> <span class="chapter-title">Introduction</span></span></a> - </div> -</li> - <li class="sidebar-item"> - <div class="sidebar-item-container"> - <a href="./summary.html" class="sidebar-item-text sidebar-link"> - <span class="menu-text"><span class="chapter-number">3</span> <span class="chapter-title">Summary</span></span></a> + <span class="menu-text"><span class="chapter-number">1</span> <span class="chapter-title">Quantum Basics</span></span></a> </div> </li> </ul> @@ -188,7 +176,9 @@ window.Quarto = { <h2 id="toc-title">Table of contents</h2> <ul> - <li><a href="#what-is-a-quantum-computer" id="toc-what-is-a-quantum-computer" class="nav-link active" data-scroll-target="#what-is-a-quantum-computer"><span class="header-section-number">1.1</span> What is a quantum computer?</a></li> + <li><a href="#double-slit-experiment" id="toc-double-slit-experiment" class="nav-link active" data-scroll-target="#double-slit-experiment"><span class="header-section-number">1.1</span> Double slit experiment</a></li> + <li><a href="#what-is-a-quantum-computer" id="toc-what-is-a-quantum-computer" class="nav-link" data-scroll-target="#what-is-a-quantum-computer"><span class="header-section-number">1.2</span> What is a quantum computer?</a></li> + <li><a href="#quantum-states" id="toc-quantum-states" class="nav-link" data-scroll-target="#quantum-states"><span class="header-section-number">1.3</span> Quantum States</a></li> </ul> </nav> </div> @@ -197,7 +187,7 @@ window.Quarto = { <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title"> -<h1 class="title"><span class="chapter-number">1</span> <span class="chapter-title">(Quantum) Basics</span></h1> +<h1 class="title"><span class="chapter-number">1</span> <span class="chapter-title">Quantum Basics</span></h1> </div> @@ -214,11 +204,21 @@ window.Quarto = { </header> -<section id="what-is-a-quantum-computer" class="level2" data-number="1.1"> -<h2 data-number="1.1" class="anchored" data-anchor-id="what-is-a-quantum-computer"><span class="header-section-number">1.1</span> What is a quantum computer?</h2> +<section id="double-slit-experiment" class="level2" data-number="1.1"> +<h2 data-number="1.1" class="anchored" data-anchor-id="double-slit-experiment"><span class="header-section-number">1.1</span> Double slit experiment</h2> +<p>This section will be updated later on, since there is quite a lot of graphical stuff.</p> +</section> +<section id="what-is-a-quantum-computer" class="level2" data-number="1.2"> +<h2 data-number="1.2" class="anchored" data-anchor-id="what-is-a-quantum-computer"><span class="header-section-number">1.2</span> What is a quantum computer?</h2> <p>To start into the topic of quantum computing and to understand the differences from classical computers, we first need to look at some of the basics of such classical computers.</p> -<p>In a classical computer the information is stored in <em>bits</em> which can either have the state <span class="math inline">\(0\)</span> <strong>or</strong> the state <span class="math inline">\(1\)</span>. We can look at these bits and read them, without interfering with the system or changing any states.</p> -<p>In a quantum comuputer the information is stored in a <em>qubit</em> which is in a superposition <strong>between</strong> the state <span class="math inline">\(0\)</span> and <span class="math inline">\(1\)</span>. Just as with classical computers, we can consturct varibales from these qubits to store bigger numbers. For example a 64-<em>qu</em>bit integer would be described by 64 qubits is in a superposition between <span class="math inline">\(0\)</span> and <span class="math inline">\(2^{64}-1\)</span>.</p> +<p>In a classical computer the information is stored in <em>bits</em> which can either have the state <span class="math inline">\(0\)</span> <strong>or</strong> the state <span class="math inline">\(1\)</span>. These bits can be manipulated through different operations and we can look at these bits and read them, without interfering with the system or changing any states.</p> +<p>In a quantum computer the information is stored in a <em>qubit</em> which is in a superposition <strong>between</strong> the state <span class="math inline">\(0\)</span> and <span class="math inline">\(1\)</span>. Just as with classical computers, we can construct variables from these qubits to store bigger numbers. For example a 64-<em>qu</em>bit integer would be described by 64 qubits is in a superposition between <span class="math inline">\(0\)</span> and <span class="math inline">\(2^{64}-1\)</span>.</p> +</section> +<section id="quantum-states" class="level2" data-number="1.3"> +<h2 data-number="1.3" class="anchored" data-anchor-id="quantum-states"><span class="header-section-number">1.3</span> Quantum States</h2> +<div id="def-example" class="definition theorem"> +<p><span class="theorem-title"><strong>Definition 1.1 (Quantum State)</strong></span> A quantum state is a vector <span class="math inline">\(\ket{\psi} \in \mathbb{C}^n\)</span> with <span class="math inline">\(\sqrt{\sum |\psi|^2} = 1\)</span></p> +</div> </section> @@ -305,7 +305,7 @@ window.document.addEventListener("DOMContentLoaded", function (event) { }); var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//); var mailtoRegex = new RegExp(/^mailto:/); - var filterRegex = new RegExp('/' + window.location.host + '/'); + var filterRegex = new RegExp("http:\/\/qis\.rwth-aachen\.de\/"); var isInternal = (href) => { return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href); } @@ -635,14 +635,11 @@ window.document.addEventListener("DOMContentLoaded", function (event) { </script> <nav class="page-navigation"> <div class="nav-page nav-page-previous"> - <a href="./index.html" class="pagination-link" aria-label="Preface"> - <i class="bi bi-arrow-left-short"></i> <span class="nav-page-text">Preface</span> + <a href="./index.html" class="pagination-link" aria-label="Welcome"> + <i class="bi bi-arrow-left-short"></i> <span class="nav-page-text">Welcome</span> </a> </div> <div class="nav-page nav-page-next"> - <a href="./intro.html" class="pagination-link" aria-label="Introduction"> - <span class="nav-page-text"><span class="chapter-number">2</span> <span class="chapter-title">Introduction</span></span> <i class="bi bi-arrow-right-short"></i> - </a> </div> </nav> </div> <!-- /content --> diff --git a/_book/robots.txt b/_book/robots.txt new file mode 100644 index 0000000000000000000000000000000000000000..bcbd197cb1a09be6137116d4c113c3386610c98c --- /dev/null +++ b/_book/robots.txt @@ -0,0 +1 @@ +Sitemap: http://qis.rwth-aachen.de/sitemap.xml diff --git a/_book/search.json b/_book/search.json index c25ca6c69787d2ac3f049720428d1aa8694c82c8..d92044e32a4ad81613ab395f511d8a6e052a3f08 100644 --- a/_book/search.json +++ b/_book/search.json @@ -4,39 +4,39 @@ "href": "index.html", "title": "Introduction to Quantum Computing", "section": "", - "text": "Preface\nThese are the lecuture notes for the “Introduction to Quantum Computing” lecture held by Dominique Unruh in the summer term 2024. The lecture notes are not meant to be fully self-containt, but are an addition to the written notes and the lecture recordings.\nIf you spot an error or have any suggestions, please send them to Jannik Hellenkamp.", + "text": "Welcome\nThese are the lecture notes for the “Introduction to Quantum Computing” lecture held by Dominique Unruh in the summer term 2024. The lecture notes are updated throughout the semester and should be viewed as an addition to the written notes and the lecture recordings.\nIf you prefer a .pdf or .epub file, there is a download available at the top left corner. Please note, that these files are autogenerated.\nIf you spot an error or have any suggestions, please send them to Jannik Hellenkamp.", "crumbs": [ - "Preface" + "Welcome" ] }, { "objectID": "quantumBasics.html", "href": "quantumBasics.html", - "title": "1 (Quantum) Basics", + "title": "1 Quantum Basics", "section": "", - "text": "1.1 What is a quantum computer?\nTo start into the topic of quantum computing and to understand the differences from classical computers, we first need to look at some of the basics of such classical computers.\nIn a classical computer the information is stored in bits which can either have the state \\(0\\) or the state \\(1\\). We can look at these bits and read them, without interfering with the system or changing any states.\nIn a quantum comuputer the information is stored in a qubit which is in a superposition between the state \\(0\\) and \\(1\\). Just as with classical computers, we can consturct varibales from these qubits to store bigger numbers. For example a 64-qubit integer would be described by 64 qubits is in a superposition between \\(0\\) and \\(2^{64}-1\\).", + "text": "1.1 Double slit experiment\nThis section will be updated later on, since there is quite a lot of graphical stuff.", "crumbs": [ - "<span class='chapter-number'>1</span> <span class='chapter-title'>(Quantum) Basics</span>" + "<span class='chapter-number'>1</span> <span class='chapter-title'>Quantum Basics</span>" ] }, { - "objectID": "intro.html", - "href": "intro.html", - "title": "2 Introduction", - "section": "", - "text": "This is a test:\n\nDefinition 2.1 (Quantum State) A quantum state is a vector \\(\\psi \\in \\mathbb{C}^n\\) with \\(\\sqrt{\\sum |\\psi|^2} = 1\\)", + "objectID": "quantumBasics.html#what-is-a-quantum-computer", + "href": "quantumBasics.html#what-is-a-quantum-computer", + "title": "1 Quantum Basics", + "section": "1.2 What is a quantum computer?", + "text": "1.2 What is a quantum computer?\nTo start into the topic of quantum computing and to understand the differences from classical computers, we first need to look at some of the basics of such classical computers.\nIn a classical computer the information is stored in bits which can either have the state \\(0\\) or the state \\(1\\). These bits can be manipulated through different operations and we can look at these bits and read them, without interfering with the system or changing any states.\nIn a quantum computer the information is stored in a qubit which is in a superposition between the state \\(0\\) and \\(1\\). Just as with classical computers, we can construct variables from these qubits to store bigger numbers. For example a 64-qubit integer would be described by 64 qubits is in a superposition between \\(0\\) and \\(2^{64}-1\\).", "crumbs": [ - "<span class='chapter-number'>2</span> <span class='chapter-title'>Introduction</span>" + "<span class='chapter-number'>1</span> <span class='chapter-title'>Quantum Basics</span>" ] }, { - "objectID": "summary.html", - "href": "summary.html", - "title": "3 Summary", - "section": "", - "text": "In summary, this book has no content whatsoever.", + "objectID": "quantumBasics.html#quantum-states", + "href": "quantumBasics.html#quantum-states", + "title": "1 Quantum Basics", + "section": "1.3 Quantum States", + "text": "1.3 Quantum States\n\nDefinition 1.1 (Quantum State) A quantum state is a vector \\(\\ket{\\psi} \\in \\mathbb{C}^n\\) with \\(\\sqrt{\\sum |\\psi|^2} = 1\\)", "crumbs": [ - "<span class='chapter-number'>3</span> <span class='chapter-title'>Summary</span>" + "<span class='chapter-number'>1</span> <span class='chapter-title'>Quantum Basics</span>" ] } ] \ No newline at end of file diff --git a/_book/sitemap.xml b/_book/sitemap.xml new file mode 100644 index 0000000000000000000000000000000000000000..260219799aae8cfc918751b5e162427374fbf39e --- /dev/null +++ b/_book/sitemap.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> + <url> + <loc>http://qis.rwth-aachen.de/index.html</loc> + <lastmod>2024-04-29T17:32:27.679Z</lastmod> + </url> + <url> + <loc>http://qis.rwth-aachen.de/quantumBasics.html</loc> + <lastmod>2024-04-29T17:26:34.262Z</lastmod> + </url> + <url> + <loc>http://qis.rwth-aachen.de/Introduction-to-Quantum-Computing.pdf</loc> + <lastmod>2024-04-29T20:16:18.558Z</lastmod> + </url> + <url> + <loc>http://qis.rwth-aachen.de/Introduction-to-Quantum-Computing.epub</loc> + <lastmod>2024-04-29T20:16:19.092Z</lastmod> + </url> +</urlset> diff --git a/_book/summary.html b/_book/summary.html deleted file mode 100644 index 56c68635e6ed5e2fa8a6a15c584e797ece1d0a34..0000000000000000000000000000000000000000 --- a/_book/summary.html +++ /dev/null @@ -1,609 +0,0 @@ -<!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.4.553"> - -<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> - - -<title>Introduction to Quantum Computing - 3 Summary</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="./intro.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 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> - - -</head> - -<body class="nav-sidebar floating"> - -<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(); }"> - <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="./summary.html"><span class="chapter-number">3</span> <span class="chapter-title">Summary</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(); }"> - </a> - <button type="button" class="btn quarto-search-button" aria-label="" 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"> - <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> -</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">Preface</span></a> - </div> -</li> - <li class="sidebar-item"> - <div class="sidebar-item-container"> - <a href="./quantumBasics.html" class="sidebar-item-text sidebar-link"> - <span class="menu-text"><span class="chapter-number">1</span> <span class="chapter-title">(Quantum) Basics</span></span></a> - </div> -</li> - <li class="sidebar-item"> - <div class="sidebar-item-container"> - <a href="./intro.html" class="sidebar-item-text sidebar-link"> - <span class="menu-text"><span class="chapter-number">2</span> <span class="chapter-title">Introduction</span></span></a> - </div> -</li> - <li class="sidebar-item"> - <div class="sidebar-item-container"> - <a href="./summary.html" class="sidebar-item-text sidebar-link active"> - <span class="menu-text"><span class="chapter-number">3</span> <span class="chapter-title">Summary</span></span></a> - </div> -</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"> - - </div> -<!-- main --> -<main class="content" id="quarto-document-content"> - -<header id="title-block-header" class="quarto-title-block default"> -<div class="quarto-title"> -<h1 class="title"><span class="chapter-number">3</span> <span class="chapter-title">Summary</span></h1> -</div> - - - -<div class="quarto-title-meta"> - - - - - </div> - - - -</header> - - -<p>In summary, this book has no content whatsoever.</p> - - - -</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 = { - 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 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) { - // 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(); - }); - var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//); - var mailtoRegex = new RegExp(/^mailto:/); - var filterRegex = new RegExp('/' + window.location.host + '/'); - 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)'); - 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); - } - // TODO in 1.5, we should make sure this works without a callout special case - 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="./intro.html" class="pagination-link" aria-label="Introduction"> - <i class="bi bi-arrow-left-short"></i> <span class="nav-page-text"><span class="chapter-number">2</span> <span class="chapter-title">Introduction</span></span> - </a> - </div> - <div class="nav-page nav-page-next"> - </div> -</nav> -</div> <!-- /content --> - - - - -</body></html> \ No newline at end of file diff --git a/_quarto.yml b/_quarto.yml index 8f81d7ecd9c5a8597998f440d349cf2a236b4f6f..6f5bec428f90787803e06e65e113a974289e670a 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -3,13 +3,17 @@ project: book: title: "Introduction to Quantum Computing" + subtitle: "Summerterm 2024" author: "Jannik Hellenkamp" downloads: [pdf, epub] + search: true + page-navigation: true + site-url: http://qis.rwth-aachen.de/ + repo-url: https://git.rwth-aachen.de/j1/intro-qc/ + image: tmp-cover.png chapters: - index.qmd - quantumBasics.qmd - - intro.qmd - - summary.qmd bibliography: references.bib @@ -18,10 +22,9 @@ format: theme: cosmo pdf: documentclass: report + include-in-header: + text: | + \usepackage{physics} epub: - cover-image: tmp-cover.jpg - - - - - + toc: true + html-math-method: gladtex \ No newline at end of file diff --git a/index.qmd b/index.qmd index e0f4d53a6340dcc0a3695fd7da5a8f288fb95caf..74353b1a7a4a3aa990a10963933a7951c087299f 100644 --- a/index.qmd +++ b/index.qmd @@ -1,5 +1,9 @@ -# Preface {.unnumbered} +# Welcome {.unnumbered} -These are the lecuture notes for the "Introduction to Quantum Computing" lecture held by Dominique Unruh in the summer term 2024. The lecture notes are not meant to be fully self-containt, but are an addition to the written notes and the lecture recordings. +These are the lecture notes for the "Introduction to Quantum Computing" lecture held by Dominique Unruh in the summer term 2024. The lecture notes are updated throughout the semester and should be viewed as an addition to the written notes and the lecture recordings. + +::: {.content-visible when-format="html:js"} +If you prefer a `.pdf` or `.epub` file, there is a download available at the top left corner. Please note, that these files are autogenerated. +::: If you spot an error or have any suggestions, please send them to Jannik Hellenkamp. diff --git a/intro.qmd b/intro.qmd deleted file mode 100644 index 50532034f5e7041d2d226ea75a30c7a35b211ebf..0000000000000000000000000000000000000000 --- a/intro.qmd +++ /dev/null @@ -1,13 +0,0 @@ - -# Introduction - -This is a test: - -::: {.definition #def-example} - -## Quantum State - -A quantum state is a vector $\psi \in \mathbb{C}^n$ with $\sqrt{\sum |\psi|^2} = 1$ -::: - - diff --git a/quantumBasics.qmd b/quantumBasics.qmd index 6bda4ede440d76ef2c80d0ab25f6414f42b876bd..a4b4398b1f30e1b9e371c3293c07b9056bc6691b 100644 --- a/quantumBasics.qmd +++ b/quantumBasics.qmd @@ -1,10 +1,21 @@ -# (Quantum) Basics +# Quantum Basics + +## Double slit experiment + +This section will be updated later on, since there is quite a lot of graphical stuff. ## What is a quantum computer? To start into the topic of quantum computing and to understand the differences from classical computers, we first need to look at some of the basics of such classical computers. -In a classical computer the information is stored in *bits* which can either have the state $0$ **or** the state $1$. We can look at these bits and read them, without interfering with the system or changing any states. +In a classical computer the information is stored in *bits* which can either have the state $0$ **or** the state $1$. These bits can be manipulated through different operations and we can look at these bits and read them, without interfering with the system or changing any states. + +In a quantum computer the information is stored in a *qubit* which is in a superposition **between** the state $0$ and $1$. Just as with classical computers, we can construct variables from these qubits to store bigger numbers. For example a 64-*qu*bit integer would be described by 64 qubits is in a superposition between $0$ and $2^{64}-1$. + +## Quantum States +::: {.definition #def-example} -In a quantum comuputer the information is stored in a *qubit* which is in a superposition **between** the state $0$ and $1$. Just as with classical computers, we can consturct varibales from these qubits to store bigger numbers. For example a 64-*qu*bit integer would be described by 64 qubits is in a superposition between $0$ and $2^{64}-1$. +## Quantum State +A quantum state is a vector $\ket{\psi} \in \mathbb{C}^n$ with $\sqrt{\sum |\psi|^2} = 1$ +::: diff --git a/references.qmd b/references.qmd deleted file mode 100644 index 10d14caa1e13993d704a9a79d0f366474ca4bdb1..0000000000000000000000000000000000000000 --- a/references.qmd +++ /dev/null @@ -1,5 +0,0 @@ -# References {.unnumbered} - -::: {#refs} - -::: diff --git a/summary.qmd b/summary.qmd deleted file mode 100644 index b450ab7d0e39389fba4c34f043b5a4145dd9d674..0000000000000000000000000000000000000000 --- a/summary.qmd +++ /dev/null @@ -1,3 +0,0 @@ -# Summary - -In summary, this book has no content whatsoever.