Однокубитное преобразование вектора-состояния: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Строка 7: | Строка 7: | ||
Алгоритм производит моделирование действия однокубитного квантового вентиля на вектор-состояние. | Алгоритм производит моделирование действия однокубитного квантового вентиля на вектор-состояние. | ||
− | + | ||
− | |||
=== Математическое описание === | === Математическое описание === | ||
Строка 14: | Строка 13: | ||
Исходные данные: | Исходные данные: | ||
Целочисленные параметры <math>n - </math> число кубитов (необязательно) и <math>k -</math> номер кубита, над которым производится преобразование. | Целочисленные параметры <math>n - </math> число кубитов (необязательно) и <math>k -</math> номер кубита, над которым производится преобразование. | ||
− | Комплексная матрица | + | Комплексная матрица <math>U = \begin{pmatrix} |
u_{00} & u_{01}\\ | u_{00} & u_{01}\\ | ||
u_{10} & u_{11} | u_{10} & u_{11} | ||
− | \end{pmatrix}</math> размера <math>2 \times 2.</math> | + | \end{pmatrix}</math> однокубитного преобразования размера <math>2 \times 2.</math> |
− | + | Комплексный вектор <math>v</math> размерности <math>2^n,</math> задающей начальное состояние многокубитной системы. | |
Вычисляемые данные: комплексный вектор <math>w</math> размерности <math>2^n,</math> соответствующий состоянию после преобразования. | Вычисляемые данные: комплексный вектор <math>w</math> размерности <math>2^n,</math> соответствующий состоянию после преобразования. | ||
Формулы метода: | Формулы метода: | ||
+ | |||
+ | Состояние после действия преобразования <math>U</math> на <math>k-</math>й кубит имеет вид <math>v_{out} = I_{2^{k-1}}\otimes U \otimes I_{2^{n-k}},</math> где <math>I_{j} - </math> единичная матрица размерности <math>j,</math> а <math>\otimes - </math> тензорное произведение (произведение Кронекера). | ||
+ | |||
+ | Однако, элементы итогового вектора можно записать и в прямом виде, что более удобно для вычислений: | ||
+ | |||
:<math> | :<math> | ||
w_{i_1i_2\ldots \i_k \ldots i_n} = \sum\limits_{j_k=0}^1 u_{i_k j} v_{i_1i_2\ldots j_k \ldots i_n} = u_{i_k 0} v_{i_1i_2\ldots 0_k \ldots i_n} + u_{i_k 1} v_{i_1i_2\ldots 1_k \ldots i_n} | w_{i_1i_2\ldots \i_k \ldots i_n} = \sum\limits_{j_k=0}^1 u_{i_k j} v_{i_1i_2\ldots j_k \ldots i_n} = u_{i_k 0} v_{i_1i_2\ldots 0_k \ldots i_n} + u_{i_k 1} v_{i_1i_2\ldots 1_k \ldots i_n} |
Версия 03:26, 19 ноября 2014
Содержание
- 1 Описание свойств и структуры алгоритма
- 1.1 Общее описание алгоритма
- 1.2 Математическое описание
- 1.3 Вычислительное ядро алгоритма
- 1.4 Макроструктура алгоритма
- 1.5 Описание схемы реализации последовательного алгоритма
- 1.6 Информационный граф
- 1.7 Описание ресурса параллелизма алгоритма
- 1.8 Описание входных и выходных данных
- 1.9 Свойства алгоритма
- 2 Программная реализация
- 3 Литература
1 Описание свойств и структуры алгоритма
1.1 Общее описание алгоритма
Алгоритм производит моделирование действия однокубитного квантового вентиля на вектор-состояние.
1.2 Математическое описание
Исходные данные: Целочисленные параметры n - число кубитов (необязательно) и k - номер кубита, над которым производится преобразование. Комплексная матрица U = \begin{pmatrix} u_{00} & u_{01}\\ u_{10} & u_{11} \end{pmatrix} однокубитного преобразования размера 2 \times 2. Комплексный вектор v размерности 2^n, задающей начальное состояние многокубитной системы.
Вычисляемые данные: комплексный вектор w размерности 2^n, соответствующий состоянию после преобразования.
Формулы метода:
Состояние после действия преобразования U на k-й кубит имеет вид v_{out} = I_{2^{k-1}}\otimes U \otimes I_{2^{n-k}}, где I_{j} - единичная матрица размерности j, а \otimes - тензорное произведение (произведение Кронекера).
Однако, элементы итогового вектора можно записать и в прямом виде, что более удобно для вычислений:
- w_{i_1i_2\ldots \i_k \ldots i_n} = \sum\limits_{j_k=0}^1 u_{i_k j} v_{i_1i_2\ldots j_k \ldots i_n} = u_{i_k 0} v_{i_1i_2\ldots 0_k \ldots i_n} + u_{i_k 1} v_{i_1i_2\ldots 1_k \ldots i_n}
Индекс-кортеж i_1i_2\ldots i_n представляет собой двоичную запись индекса элемента в массиве.
1.3 Вычислительное ядро алгоритма
Вычислительное ядро алгоритма представляет собой независимое вычисление всех 2^n элементов вектора w. Вычисление каждого элемента требует две операции умножения и одну операцию сложения. Кроме того необходимо вычислять индексы типа i_1i_2\ldots 0_k \ldots i_n, а также значение бита i_k, что требует побитовых операций.