Вы можете упростить задачи «создать состояние», разбив их на три части:
- Подготовьте набор величин, которые вам понадобятся, не беспокоясь о фазе или о том, какое состояние имеет какую величину.
- Исправьте фазы.
- Исправьте порядок.
Теперь рассмотрим состояние Харди. Какие величины нам нужно сделать? Нам нужен один экземпляр3/12−−√ и три экземпляра экземпляра 1/12−−√, Мы можем сделать их по одному, имея состояние «оставшейся амплитуды», от которого мы продолжаем разделяться.
Мы начинаем со всей амплитуды в одном состоянии с возбуждением слева, ℓ0|1000...00⟩ где ℓ0=1, То, что мы хотим сделать, это переместить возбуждение вправо, оставляя позади желаемые величины. Итак, для начала мы хотим оставить позади величину3/12−−√, Мы можем сделать это с контролируемымRy(θ0)операция, где элемент управления является крайним левым кубитом, а цель - кубитом справа от него. Выбрав только правильное значение дляθ, это приведет к состоянию 3/12−−√|1000...00⟩+ℓ1|1100...00⟩, Затем мы CNOT второй кубит обратно на первый кубит, чтобы добраться доℓ1|1000...00⟩+3/12−−√|0100...00⟩, Далее мы хотим осуществить1/12−−√, Мы выполняем другоеRyконтролируется крайним левым кубитом, за которым следует обратный CNOT, но на этот раз с целью - третий кубит слева. Выбирая идеальныйθ1 мы будем производить государство ℓ2|1000...00⟩+3/12−−√|0100...00⟩+1/12−−√ℓ2|0010...00⟩, И вы просто продолжаете делать это до тех пор, пока не получите все необходимые амплитуды, удобные для адресации при возбуждении отдельных кубитов.
Теперь вы хотите исправить любые неправильные фазы, вызванные вращениями Y. Для состояния Харди это легко, потому что все фазы положительны. В целом вы нацеливаетесь на каждую позицию кубитаk с Rz(ϕk) работа с соответствующим образом выбранным ϕk значения, и это позволит получить правильные фазы.
Теперь мы хотим правильно оформить заказ. Самый простой способ сделать это - иметь несколько дополнительных кубитов, которые являются вашими выходными кубитами, и для каждого из подготовленных нами кубитов и каждого из выходных кубитов либо добавить CNOT между ними, либо нет. Например, если состояние с амплитудой3/12−−√ должен быть |11⟩, тогда нам нужно сделать CNOT с самого левого кубита на оба выходных кубита. Затем нам нужно вычислить самый левый кубит, используя многоконтролируемую операцию NOT. Должен быть один элемент управления для каждого выходного кубита, и тип элемента управления (qubit-must-be-on vs qubit-must-be-off) определяется тем, переключил ли вы кубит или нет.
Применение этих шагов создает неэффективную, но правильную схему для создания состояния Харди. Вы можете открыть цепь в Quirk :
Если вы хотите создать состояние без использования такого большого рабочего пространства, задача усложняется. Но вы все равно можете следить за величинами, затем фазами, а затем порядком следования. Кроме того, есть более умные способы подготовить наборы величин, которые имеют хорошие образцы. Например, когда только одна амплитуда отличается от других, одного раунда частичного усиления амплитуды может быть достаточно для подготовки состояния.