Moluch 251 c indd



Download 3,61 Mb.
Pdf ko'rish
bet78/112
Sana18.07.2022
Hajmi3,61 Mb.
#820328
1   ...   74   75   76   77   78   79   80   81   ...   112
Bog'liq
moluch 251 ch1


#13 (251)

March 2019
57
Computer Science
Так как функция 
hadamard()
возвращает матрицу состоящую только из 1 и -1, то для получения матрицы много-
кубитового гейта Адамара необходимо полученную из этой функции матрицу умножить на коэффициент 
1
√𝑁𝑁
, где N — 
количество базисных состояний регистра. Блок этого кода выглядит как на листинге ниже. 
Результат расчета матрицы многокубитного гейта Адамара присвоен переменной 
hadamardGate
, а рассчитанное 
количество состояний регистра — переменной 
statesCount. 
Вычисление матрицы оракула. 
Результатом расчета является переменная 
oracle
, содержащая квадратную матрицу N x N с единицами по всем 
столбцам главной диагонали за исключением столбца, представляющего собой искомое состояние; в нем установлена 
-1. Расчет такой матрицы в соответствии с формулами расчета выглядит следующим образом: 
В результате работы этого блока кода значение переменной oracle будет иметь вид, как на примере для 2-х кубитов 
и искомого 3-его состояния (
|10

): 
|00

|01

|10

|11

𝑈𝑈
=

1 0
0 1
0 0
0 0
0 0
0 0

1 0
0
1


Расчет матрицы условного фазового сдвига. 
Каждое базисное состояние, за исключением 
|0… 0
𝑁𝑁

в регистре приобретает фазовый сдвиг -1 в соответствии 
с выражением ниже: 
𝑃𝑃
𝑠𝑠
:
�𝑥𝑥⟩ →
(

1)
𝑓𝑓
(
𝑥𝑥
)
�𝑥𝑥⟩
=
�−
|
𝑥𝑥⟩
,
|
𝑥𝑥⟩
,
𝑥𝑥
=
𝑥𝑥
𝑠𝑠
𝑥𝑥 ≠ 𝑥𝑥
𝑠𝑠
В переменной 
faseShift
сохранен результат расчета матрицы условного фазового сдвига в соответствии с формулой 
расчета. 
Вычисление количества итераций. 
Количество итераций Гровера вычисляется по формуле: 
𝐼𝐼
=
𝜋𝜋
4
√𝑁𝑁
где N — количество базисных состояний регистра. 
Листинг кода, в котором реализован этот подсчет: 
Использование встроенной функции 
fix()
объясняется необходимостью взять от результата вычисления только 
целую часть. 
Применение преобразования Адамара. 
Приготовление равновероятной (с равными амплитудами) суперпозиции состояний кубитов с помощью рассчитан-
ной в шаге 2 многокубитовой матрицы Адамара: 
|
ѱ
1

= |
𝑥𝑥⟩
=
1
√𝑁𝑁
|00. .00

+
1
√𝑁𝑁
|00. .01

+
1
√𝑁𝑁
|00. .10


1
√𝑁𝑁
|11. .11


В коде пользовательской функции 
Grover
это преобразование применяется к переменной с инициализированным 
регистром 
registerState

Итерации Гровера.
 
Итерация Гровера (оператор Гровера) состоит из последовательно применяемых оракула, преобразования Адама-
ра, условного сдвига фазы и ещё одного преобразования Адамара. Его состав наглядно показан на схеме 1. 
Блок кода, реализующий логику работы этого оператора представлен листинге 7. 
Используемый цикл 
for…end
предназначен для выполнения оператора Гровера количество раз, равное значению 
переменной 
iterationsCount
. Значение этой переменной было вычислено на шаге 5. 
Здесь можно видеть как последовательно применяются преобразования к квантовому регистру, состояния которо-
го представлены переменными с префиксом ‘
state
..’ в наименовании. 
Вывод результата. 
Результатом работы функции является вектор-столбец, состоящий из амплитуд вероятности и график распределе-
ния вероятности по базисным состояниям. Возврат значения функцией 
Grover
осуществляется строкой кода, пред-
ставленной ниже. 
𝐼𝐼
=
𝜋𝜋
4
√𝑁𝑁
где N — количество базисных состояний регистра. 
Листинг кода, в котором реализован этот подсчет: 
Использование встроенной функции 
fix()
объясняется необходимостью взять от результата вычисления только 
целую часть. 
Применение преобразования Адамара. 
Приготовление равновероятной (с равными амплитудами) суперпозиции состояний кубитов с помощью рассчитан-
ной в шаге 2 многокубитовой матрицы Адамара: 
|
ѱ
1

= |
𝑥𝑥⟩
=
1
√𝑁𝑁
|00. .00

+
1
√𝑁𝑁
|00. .01

+
1
√𝑁𝑁
|00. .10


1
√𝑁𝑁
|11. .11


В коде пользовательской функции 
Grover
это преобразование применяется к переменной с инициализированным 
регистром 
registerState

Итерации Гровера.
 
Итерация Гровера (оператор Гровера) состоит из последовательно применяемых оракула, преобразования Адама-
ра, условного сдвига фазы и ещё одного преобразования Адамара. Его состав наглядно показан на схеме 1. 
Блок кода, реализующий логику работы этого оператора представлен листинге 7. 
Используемый цикл 
for…end
предназначен для выполнения оператора Гровера количество раз, равное значению 
переменной 
iterationsCount
. Значение этой переменной было вычислено на шаге 5. 
Здесь можно видеть как последовательно применяются преобразования к квантовому регистру, состояния которо-
го представлены переменными с префиксом ‘
state
..’ в наименовании. 
Вывод результата. 
Результатом работы функции является вектор-столбец, состоящий из амплитуд вероятности и график распределе-
ния вероятности по базисным состояниям. Возврат значения функцией 

Download 3,61 Mb.

Do'stlaringiz bilan baham:
1   ...   74   75   76   77   78   79   80   81   ...   112




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish