Однокубитное преобразование вектора-состояния: различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Строка 7: Строка 7:
 
Алгоритм производит моделирование действия однокубитного квантового вентиля на вектор-состояние.  
 
Алгоритм производит моделирование действия однокубитного квантового вентиля на вектор-состояние.  
  
==== Математическая формулировка ====
+
 
Состояние <math>n</math> кубитов задается комплексным вектором <math>v</math> размерности <math>2^n.</math> Однокубитная операция задается комплексной унитарной матрицей <math>U</math> размера <math>2 \times 2.</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> тензорное произведение (произведение Кронекера).
 
  
 
=== Математическое описание ===
 
=== Математическое описание ===
Строка 14: Строка 13:
 
Исходные данные:  
 
Исходные данные:  
 
Целочисленные параметры <math>n - </math> число кубитов (необязательно) и <math>k -</math> номер кубита, над которым производится преобразование.
 
Целочисленные параметры <math>n - </math> число кубитов (необязательно) и <math>k -</math> номер кубита, над которым производится преобразование.
Комплексная матрица преобразования <math>U=\begin{pmatrix}
+
Комплексная матрица <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>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 Математическое описание

Исходные данные: Целочисленные параметры [math]n - [/math] число кубитов (необязательно) и [math]k -[/math] номер кубита, над которым производится преобразование. Комплексная матрица [math]U = \begin{pmatrix} u_{00} & u_{01}\\ u_{10} & u_{11} \end{pmatrix}[/math] однокубитного преобразования размера [math]2 \times 2.[/math] Комплексный вектор [math]v[/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] 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} [/math]

Индекс-кортеж [math]i_1i_2\ldots i_n[/math] представляет собой двоичную запись индекса элемента в массиве.


1.3 Вычислительное ядро алгоритма

Вычислительное ядро алгоритма представляет собой независимое вычисление всех [math]2^n[/math] элементов вектора [math]w.[/math] Вычисление каждого элемента требует две операции умножения и одну операцию сложения. Кроме того необходимо вычислять индексы типа [math]i_1i_2\ldots 0_k \ldots i_n,[/math] а также значение бита [math]i_k,[/math] что требует побитовых операций.

1.4 Макроструктура алгоритма

1.5 Описание схемы реализации последовательного алгоритма

1.6 Информационный граф

1.7 Описание ресурса параллелизма алгоритма

1.8 Описание входных и выходных данных

1.9 Свойства алгоритма

2 Программная реализация

2.1 Особенности реализации последовательного алгоритма

2.2 Описание локальности данных и вычислений

2.2.1 Описание локальности алгоритма

2.2.2 Описание локальности реализации алгоритма

2.2.2.1 Описание структуры обращений в память и качественная оценка локальности

3 Литература