«Мелкий» тест SWAP

Потому что глубина цепи имеет значение

Недавно представленный препринт под названием Устранение ошибок для методов машинного обучения на основе квантового ядра на квантовых компьютерах IonQ и IBM представляет собой хорошую возможность написать о моей любимой квантовой подпрограмме — тесте SWAP. Тест SWAP, также известный как мера расстояния, метод ядра и внутренний продукт, сравнивает два квантовых состояния. Эти квантовые состояния могут быть либо одним, либо несколькими кубитами, важно то, что количество кубитов в обеих системах одинаково.

Разложенный тест SWAP

Вентиль Фредкина, также известный как управляемый SWAP в середине теста SWAP, можно разложить на два CNOT и один вентиль Тоффоли, как показано выше. Тоффоли можно дополнительно разложить на несколько однокубитных и многокубитных операций, но в этой статье это не обязательно. Для этого объяснения вам просто нужно знать, что Toffolis и Fredkins, в более широком смысле, скрывают довольно много глубины схемы. Эти вентили ускоряют и упрощают построение квантовых схем, но за одним исключением они транспилируются в значительное количество базовых операций, называемых базовыми вентилями, перед выполнением на квантовых процессорах.

«Мелкий» тест SWAP

Несмотря на то, что я только что написал о том, какую глубину схемы добавляют Toffolis, иногда мы можем удалить завершающий CNOT из нашего Fredkin. Результат измерения остается прежним, что, вероятно, будет наиболее важным соображением. Одно различие между включением и исключением CNOT заключается в том, что он изменяет результирующие состояния сравниваемых кубитов, но канонический тест SWAP в любом случае не использует эти состояния дальше. Есть и другие способы использования теста SWAP, но они выходят за рамки этой статьи.

Важно отметить, что то, что вы видите выше, как на один CNOT меньше и без изменения глубины схемы, не всегда будет иметь место. Даже учитывая только два квантовых состояния одного кубита, связаны ли эти два кубита? Если нет, необходимо добавить устойчивые к ошибкам SWAP для выполнения этого CNOT. И если мы говорим о квантовых состояниях с несколькими кубитами и плохой связности кубитов, мы могли бы говорить о большом количестве свопов для множества CNOT.

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

С другой стороны, что, если мы снова захотим использовать исходные квантовые состояния? Тест SWAP является обратимым, и в этом случае нам, возможно, придется выполнять эти SWAP снова, внося множество ошибок. У нас достаточно ошибок в эпоху NISQ, поэтому нам действительно не нужно добавлять ненужные дополнительные ошибки.

Заключение

Поскольку мы говорим об уменьшении ошибок для квантовых методов машинного обучения на основе ядра — ну, во всяком случае, авторы статьи — мы могли бы также удалить все подверженные ошибкам вентили CNOT, которые мы можем. Оптимизация транспилятора может помочь свести к минимуму дополнительную глубину, но мы можем вручную гарантировать отсутствие ненужных операций. Лично я выбираю последнее.

Хотите узнать больше о моей любимой квантовой подпрограмме? Эти ранние статьи со временем достаточно устарели:

Хотите протестировать канонический SWAP-тест против этого поверхностного SWAP-теста? Попробуйте эту схему с Quirk. Просто убедитесь, что вы сравниваете одни и те же квантовые состояния с одним и с другим, и вы увидите, что результаты измерения вспомогательных кубитов идентичны.