Версии базовых ворот более высокого порядка Q # - PullRequest
0 голосов
/ 01 июля 2018

Есть ли H-gate более высокого порядка в языке Q #? Например, если я хочу применить ворота Адамара к массиву (комбинированное состояние) из 3 кубитов. Есть ли способ создать тензорную версию продукта H-gate или других вентилей?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Один из способов думать об этом - думать об унитарном операторе H = | + ⟩⟨0 | + | −⟩⟨1 | и квантовая операция H отдельно. С этой точки зрения унитарный H - это то, как мы моделируем эффект применения операции H на идеальном квантовом процессоре. Квантовая операция ApplyToEach(H, _) затем представляется унитарным оператором H H ⊗ ⋯ ⊗ H точно так же, как H представляется H .

Одним из следствий этой ментальной модели является то, что тензорное произведение определяется между унитарными операторами, а не между квантовыми операциями. Скорее, идеальное действие квантовых операций, действующих на различные кубиты, представляется тензорным произведением унитарных представлений каждой отдельной операции.

0 голосов
/ 01 июля 2018

Q # не позволяет вам передавать больше кубитов, чем позволяет базовый вентиль. Таким образом, вы должны вручную запустить каждый из кубитов через вентиль H (), как это

let n = Length(qs);
for(index in 0 .. (n-1)) {
H(qs[index]);
}

Или используйте удобную стандартную библиотечную функцию

ForEach(H,qs);

Основная причина, по которой вы не можете применить H-вентиль более высокого порядка, заключается в том, что он увеличит сигнатуру функции для большего числа кубитов, что создает усложнение. Также вы можете захотеть передать только некоторые кубиты одного и того же массива в гейт, в этом случае вы также не можете передать весь массив и сделать это вручную.

...