diff --git a/README.md b/README.md index bf4e4d401d..1b22db5e0f 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,7 @@ Also, all authors for some updates are participants special channel into communi - @sem ([GitHub](https://github.com/SemyonSinchenko)): multiple lectures - @zimka ([GitHub](https://github.com/zimka)): quantum chemistry - @Aleksandr Berezutskii ([GitHub](https://github.com/meandmytram)): D-Wave, Barren plateau +- @evgeniyzh ([GitHub](https://github.com/Randl)): Jordan-Wigner ### Editors diff --git a/qmlcourseRU/_bibliography/references.bib b/qmlcourseRU/_bibliography/references.bib index 4a79c624ee..4114bf945d 100644 --- a/qmlcourseRU/_bibliography/references.bib +++ b/qmlcourseRU/_bibliography/references.bib @@ -249,19 +249,6 @@ @article{diagonalQNewton publisher = {Springer} } -@article{henderson2020quanvolutional, - title = {Quanvolutional neural networks: powering image recognition - with quantum circuits}, - author = {Henderson, Maxwell and Shakya, Samriddhi and Pradhan, - Shashindra and Cook, Tristan}, - journal = {Quantum Machine Intelligence}, - volume = 2, - number = 1, - pages = {1--9}, - year = 2020, - publisher = {Springer} -} - @article{hogradients, title = {Estimating the gradient and higher-order derivatives on quantum hardware}, @@ -444,3 +431,15 @@ @article{vqcaskernels primaryClass = {quant-ph}, year = 2021 } + +@article{seeley2012bravyi, + title={The Bravyi-Kitaev transformation for quantum computation of electronic structure}, + author={Seeley, Jacob T. and Richard, Martin J. and Love, Peter J.}, + journal={The Journal of chemical physics}, + volume={137}, + number={22}, + pages={224109}, + year={2012}, + publisher={American Institute of Physics}, + url = https://arxiv.org/abs/1208.5986 +} diff --git a/qmlcourseRU/_static/problemsblock/jordanwigner/encoding.png b/qmlcourseRU/_static/problemsblock/jordanwigner/encoding.png new file mode 100644 index 0000000000..a37051cfa4 Binary files /dev/null and b/qmlcourseRU/_static/problemsblock/jordanwigner/encoding.png differ diff --git a/qmlcourseRU/book/authors.md b/qmlcourseRU/book/authors.md index c7800e2a12..6842400956 100644 --- a/qmlcourseRU/book/authors.md +++ b/qmlcourseRU/book/authors.md @@ -15,6 +15,7 @@ 3. [Сергей Ширкин](https://github.com/SergeiShirkin) 4. [Александр Березутский](https://github.com/meandmytram) 5. [Котенков Игорь](https://github.com/stalkermustang) +6. [Евгений Желтоножский](https://github.com/Randl) ## Основные ревьюеры @@ -22,7 +23,6 @@ 2. [Виктор Трохименко](https://github.com/vtrokhymenko) 3. [Борис Зимка](https://github.com/zimka) 4. [Николай Карелин](https://github.com/karelin) -5. [Евгений Желтоножский](https://github.com/Randl) ## Редакторы diff --git a/qmlcourseRU/book/problemsblock/jordanwigner.md b/qmlcourseRU/book/problemsblock/jordanwigner.md index 93cf94e453..ebf1d5a7cd 100644 --- a/qmlcourseRU/book/problemsblock/jordanwigner.md +++ b/qmlcourseRU/book/problemsblock/jordanwigner.md @@ -1,13 +1,8 @@ --- jupytext: - formats: md:myst - text_representation: - extension: .md - format_name: myst -kernelspec: - display_name: Python 3 - language: python - name: python3 +formats: md:myst text_representation: +extension: .md format_name: myst kernelspec: +display_name: Python 3 language: python name: python3 --- (quantchembasic)= @@ -16,23 +11,38 @@ kernelspec: ## Описание лекции +В этой лекции мы узнаем как из + ## Введение Для того чтобы просимулировать квантовую систему на квантовом же компьютере, нам необходимо закодировать состояние -системы и операторы которые могут на нее действовать (добавить fig. 1 из https://arxiv.org/pdf/1208.5986.pdf -или что-то похожее). +системы и действующие на нее операторы: найти соответствие между состояниями системы и состояниями нашего компьютера +(т.е., кубитов) + +```{figure} _static/problemsblock/jordanwigner/encoding.png +:name: A simulation scheme. + +Общая схема симуляции квантовой системы на квантовом компьютере (взято из {cite}`seeley2012bravyi`). +``` ## Спины, фермионы и бозоны +Как мы помним из [лекции по квантовой химии](quantchemadvancedscf), квантовые частицы (в 3+1 измерениях) могут быть либо +бозонами, либо фермионами. Разница между ними в том, что при обмене двух бозонов волновая функция не меняется, а при +обмене двух фермионов -- меняет знак. Эта классификация следует из того, что квантовые частицы неотличимы. + +Несмотря на то, что наши кубиты состоят из каких-то частиц (бозонов или фермионов), обычно они отличимы +(например, зафиксированы на своих позициях) и, следовательно, не являются ни бозонами, ни фермионами. Так как мы +используем два состояния кубита ($ | 0 \rangle $ и $| 1 \rangle$), каждый кубит может быть описан как система со спином +1/2. + ## Вторичное квантование В квантовой механике мы [можем описать](../qcblock/gates.html#id11) состояние нескольких частиц как тензорное произведение состояний каждой из частиц. Например, если у нас есть две частицы, и их квантовое состояние описывается положением частицы в пространстве, $r_i$, мы можем записать состояние частиц как -$$ -| \psi \rangle = | r_1 \rangle \otimes |r_2 \rangle. -$$ +$$ | \psi \rangle = | r_1 \rangle \otimes |r_2 \rangle. $$ У этого подхода есть два главных недостатка -- во первых, работать с системами в которых разное количество частиц, или где это количество может меняться, не очень удобно. Во-вторых, не учитывается неразличимость квантовых частиц. @@ -46,13 +56,9 @@ $$ Мы так же можем определить операторы, которые добавляют или убирают частицу в определенном состоянии из системы. На языке первой квантизации: -$$ -b^\dagger_\alpha | \Psi \rangle =\frac{1}{\sqrt{N+1}} | \psi_\alpha \rangle \otimes | \Psi \rangle -$$ +$$ b^\dagger_\alpha | \Psi \rangle =\frac{1}{\sqrt{N+1}} | \psi_\alpha \rangle \otimes | \Psi \rangle $$ -$$ -b_\alpha | \psi_\alpha \rangle \otimes | \Psi \rangle=\frac{1}{\sqrt{N}}| \Psi \rangle. -$$ +$$ b_\alpha | \psi_\alpha \rangle \otimes | \Psi \rangle=\frac{1}{\sqrt{N}}| \Psi \rangle. $$ Тут $b^\dagger_\alpha$ называется оператором создания (creation), а $b_\alpha$ -- уничтожения (annihilation). Заметим, что эти операторы не эрмитовы, т.е., $b^\dagger_\alpha \neq b_\alpha$. Нормализация операторов выбрана таким образом, @@ -66,8 +72,7 @@ $$ Если в системе нет ни одной частицы в состоянии $\alpha$, то оператор уничтожения уничтожает состояние: -$$ -b_\alpha | \Psi \rangle=0. +$$ b_\alpha | \Psi \rangle=0. $$ 0 тут это нулевой вектор, в отличии от $| 0 \rangle$, вакуума. Так как 0 это не физическое состояние (например, если бы @@ -89,26 +94,21 @@ $$ $$ $$ -[b^\dagger_i, b^\dagger_j ] = [b_i, b_j ] =0. +[b^\dagger_i, b^\dagger_j ] = [b_i, b_j ] = 0. $$ В случае фермионов, операторы антикоммутируют: -$$ -\{с^\dagger_i, с_j \} = \delta_{ij} -$$ +$$ \{с^\dagger_i, с_j \} = \delta_{ij} $$ -$$ -\{c^\dagger_i, c^\dagger_j \} = \{c_i, c_j \} =0. +$$ \{c^\dagger_i, c^\dagger_j \} = \{c_i, c_j \} =0. $$ В частности, -$$ -\{c^\dagger_j, c^\dagger_j \} = 2\left(c^\dagger_j\right)^2 = 0, -$$ +$$ \{c^\dagger_j, c^\dagger_j \} = 2\left(c^\dagger_j\right)^2 = 0, $$ -и, следовательно, в системе не может быть больше одного фермиона в одном состоянии (в соответсвии с принципом запрета +и, следовательно, в системе не может быть больше одного фермиона в одном состоянии (в соответствии с принципом запрета Паули). Из этого так же следует что $c_j^2=0$, так как независимо от состояния системы, после первого оператора в ней не останется фермиона который можно было бы уничтожить. @@ -116,7 +116,7 @@ $$ Мы можем попробовать сопоставить спину фермион сказав что спин вниз значит что фермион есть, а спин вверх -- что его нет. Другими словами, используя оператор количества частиц $\hat{n}_i = c^\dagger_i c_i$, где $c^\dagger_i$ и $c_i$ это -операторы создания и разрушения соответсвенно, мы хотели бы сопоставить +операторы создания и разрушения соответственно, мы хотели бы сопоставить $$ \hat{\sigma}_i^z = 1 - 2\hat{n}_i $$ @@ -131,65 +131,49 @@ $$ \hat{\sigma}_i^z = 1 - 2\hat{n}_i $$ Действительно, на одной вершине эти операторы выполняют фермионное антикоммутационное отношение -$$ -\{ \sigma^+_j, \sigma^-_j \} = 1. -$$ +$$ \{ \sigma^+_j, \sigma^-_j \} = 1. $$ К сожалению, на разных вершинах эти операторы коммутируют, а не антикоммутируют. Чтобы это исправить, мы "прикрепляем" к каждому фермиону "нить" (string): -$$ -\sigma^+_i = \left[ \prod_{j< i} (1-2c^\dagger_j c_j) \right] c_i -$$ +$$ \sigma^+_i = \left[ \prod_{j< i} (1-2c^\dagger_j c_j) \right] c_i $$ -$$ -\sigma^-_i = \left[ \prod_{j< i} (1-2c^\dagger_j c_j) \right] c^\dagger_i -$$ +$$ \sigma^-_i = \left[ \prod_{j< i} (1-2c^\dagger_j c_j) \right] c^\dagger_i $$ Oператор $\prod_{j_i} (1-2c^\dagger_j c_j)$ равен $\pm 1$ в зависимости от четности количества фермионов слева от вершины $i$. Заметим, что $c_k$ антикоммутирует с $(1-2c^\dagger_k c_k)$: -$$ -\{ c_j, (1-2c^\dagger_j c_j) \} = c_j (1-2c^\dagger_j c_j) + c_j (1-2c^\dagger_j c_j)c_j = -c_j -2\underbrace{c_jc^\dagger_j}_{1-c^\dagger_j c_j} c_j + c_j -2c^\dagger_j \underbrace{c_jc_j}_{0} = -c_j - 2c_j + 2 c^\dagger_j \underbrace{c_jc_j}_{0} + c_j = 0, -$$ +$$ \{ c_j, (1-2c^\dagger_j c_j) \} = c_j (1-2c^\dagger_j c_j) + c_j (1-2c^\dagger_j c_j)c_j = c_j +-2\underbrace{c_jc^\dagger_j}_{1-c^\dagger_j c_j} c_j + c_j -2c^\dagger_j \underbrace{c_jc_j}_{0} = c_j - 2c_j + 2 +c^\dagger_j \underbrace{c_jc_j}_{0} + c_j = 0, $$ -и, следовательно с нитью $\prod_{j_i} (1-2c^\dagger_j c_j) $ (интуивно, если сначала разрушить фермион, то четность +и, следовательно, с нитью $\prod_{j_i} (1-2c^\dagger_j c_j) $ (интуитивно, если сначала разрушить фермион, то четность изменится). Пусть, без ограничения общности, $\ell>k$: -$$ -\sigma^+_k \sigma^-_\ell = \left[ \prod_{j