Я хочу создать ворота Toffoli, управляемые n кубитами, и реализовать их в QISKit. Можно ли это сделать? Если так, то как?
quantum-gate
programming
qiskit
Али Джавади
источник
источник
Ответы:
Простой способ сделать это показан на рисунке 4.10 Nielsen & Chuang.
Где U может быть любым поворотом одного кубита (в этом случае X-вентиль).
Эта схема работает следующим образом: мы хотим применить U к целевому кубиту, только если AND всех контрольных кубитов равно 1. Нормальный Toffoli дает нам AND 2 кубитов. Таким образом, связав несколько Toffolis, мы можем получить c1.c2.c3.c4.c5, с тем уловом, что некоторые «рабочие» (или вспомогательные) кубиты были введены для хранения промежуточных результатов. После применения окончательного CU, мы получаем конечный результат в целевой. Теперь мы можем очистить промежуточные рабочие кубиты, отменив их вычисления и вернув их в состояние | 0>. Эта модель обратимых вычислений известна как метод "compute-copy-uncompute" и была первой предложена Чарли Беннеттом в 1973 году .
Вот код QISKit для построения схемы и ее визуализации:
Урожайность:
источник
Я хочу добавить метод, который не использует вспомогательные кубиты, но требует, чтобы ворота были более сложными, чем просто управляемые - нет. Я считаю, что этот метод был впервые представлен Barenco et. и др. в этой статье лемма 7.5:
Это рекурсивное определение, поэтому управляющий логический элемент n-кубита определяется в терминах управляющего логического элемента n-1-кубита. Это будет продолжаться до тех пор, пока вы не достигнете двух кубитных ворот CNOT.
Эта реализация немного сложна, однако существует более простая, если не возражать против сбора относительной фазы (см. Лемму 7.9 той же статьи).
источник
В QuantumCircuit компании Qiskit есть метод mct для построения нескольких элементов управления Toffoli с несколькими режимами: базовый, basic-dirty-ancilla, продвинутый, noancilla. Например, ворота Тоффоли с 3 контрольными кубитами:
Выход:
источник