Учи Кванты! → Курс → Гейты, обмен, измерение
Измерение и статистика
Мы немного поговорили состояние кубита и гейты, которые его меняют. Но как достать из кубита ответ — обычный бит, 0 или 1? Этот процесс называется измерение. Измерение — это переход границы от квантового мира обратно к привычному классическому.
Самое важное. В квантовом мире мы никогда точно не знаем, что мы получим в результате измерения . Этот процесс вероятностный по сути и всегда. "Кубит в |0⟩" означает, что если измерять достаточно много раз, мы статистически получим 0. Одно измерение может дать что угодно.
Что измеряем. Шанс получить тот или иной исход задаёт длина амплитуды: вероятность равна квадрату длины. Если кубит в |0⟩, выпадет 0. Если в |+⟩, будет 0 или 1 поровну. Как мы помним из предыдущего обсуждения фазы и гейтов - состояния |+⟩ и |−⟩ дают совершенно одинаковую картину при измерении, 50 на 50, хотя сами по себе они разные. Измерение видит только баланс между |0⟩ и |1⟩.
Коллапс. Что происходит с состоянием после измерения? Оно перестаёт быть квантовым. Точка на сфере Блоха прыгает на тот полюс, который соответствует выпавшему ответу: получили 0 — кубит стал |0⟩, получили 1 — стал |1⟩. Всё остальное обнуляется. Это называют коллапсом, и это необратимо — в отличие от гейтов, которые всегда можно открутить назад. Если измерить тот же кубит ещё раз, ответ будет тот же самый: после коллапса это уже обычный классический бит, а не суперпозиция. Складывается цельная картина жизни кубита: приготовили |0⟩ → погоняли гейтами (точка ездит по сфере) → измерили (кубит не умер, но превратился в бит) → получили бит 0 или 1.
Один раз — это почти ничего. Еще раз повторим важнейший тезис. Чтобы что-то узнать о состоянии, измерение надо повторить много раз. И это не измерение повторно уже измеренного кубита - он уже после первого превратился в бит : повторять надо на свежих копиях, то есть прогонять всю схему с самого начала много раз и каждый раз снова мерить. И ещё: точность растёт не быстро. Чтобы уменьшить разброс в 10 раз, нужно в 100 раз больше прогонов. Это обычная статистика, такая же, как в опросах общественного мнения, ничего специфически квантового в ней нет.
В каком виде мерить. По умолчанию измерение раскладывает состояние на |0⟩ и |1⟩. Но можно мерить и иначе — например, раскладывать на |+⟩ и |−⟩. Тогда |+⟩ даст один ответ наверняка, а |−⟩ — другой. На настоящем железе обычно есть только обычное измерение, поэтому, чтобы померить «по-другому», перед измерением применяют гейт, например H. Он поворачивает состояние так, что обычное измерение после него даёт нужный ответ. Этот приём — повернуть состояние гейтом перед измерением — нам ещё не раз встретится дальше.
А зачем тогда вообще квантовая машина? Справедливый вопрос: если вероятность можно посчитать формулой, зачем тысяча измерений? Для одного кубита так и есть — посчитать на обычном компьютере быстрее и точнее. Перелом наступает, когда кубитов становится много. Число амплитуд растёт страшно быстро: один кубит — две амплитуды, десять кубитов — тысяча, а пятьдесят — уже больше квадриллиона. Хранить и пересчитывать столько чисел обычному компьютеру не под силу, а квантовый компьютер управляется со всеми сразу, как с одним состоянием.
Новая строка в нашем коде QASM. До сих пор в коде были только гейты. Теперь появляется измерение — строка measure q[0] -> c[0];. Она означает «измерить кубит q[0] и записать результат в классический бит c[0]». Стрелка -> показывает направление: из квантового в классическое. Как и всякую переменную, классический регистр нужно сначала объявить - creg c[1];.
Вот и первая полная программа целиком: приготовить кубит, сделать суперпозицию гейтом H, измерить. На тысяче прогонов она даст примерно 500 нулей и 500 единиц.
Как достать из кубита ответ
Мы уже поговорили про состояние кубита и гейты, которые его меняют. Но как достать из кубита ответ — обычный бит, 0 или 1? Этот процесс называется измерением, и это переход границы: из квантового мира обратно в привычный классический.
Значок прибора на схеме — это и есть измерение. Слева от него кубит ещё квантовый, справа — уже обычный бит. Дальше по узлам разберём, как этот переход устроен.
Один прогон — и это почти ничего
Самое важное про измерение: в квантовом мире мы никогда заранее не знаем, что получим. Процесс вероятностный по своей сути. «Кубит в |+⟩» означает лишь, что при многих измерениях нули и единицы выпадут поровну, — но один-единственный прогон может дать что угодно.
Вот, мы прогнали один раз и получили случайный ответ. Шанс каждого исхода задаёт длина амплитуды: вероятность равна квадрату длины. У |+⟩ длины равны — потому и 50 на 50.
Коллапс — и он необратим
Что стало с состоянием после измерения? Оно перестало быть квантовым. Точка на сфере прыгнула на полюс выпавшего ответа: получили 0 — кубит стал |0⟩, получили 1 — стал |1⟩. Всё остальное обнулилось. Это называют коллапсом, и он необратим — в отличие от гейтов, которые всегда можно открутить назад.
Нажмите «Измерить ещё раз тот же кубит» под сферой: ответ будет тот же самый. После коллапса это уже обычный бит, а не суперпозиция, — мерить его повторно бессмысленно.
Много прогонов складываются в статистику
Чтобы что-то узнать о состоянии, измерение надо повторить много раз — и не тот же кубит (он уже стал битом), а свежие копии: прогнать всю схему заново с самого начала, снова и снова.
Мы набили тысячу прогонов, и из случайных ответов сложилась ровная картина — примерно 500 на 500, как и обещала теория. Засечка на гистограмме показывает теоретическое значение: частоты жмутся к ней, но точно не совпадают. Это обычная статистика, ничего специфически квантового.
Смещённый кубит и медленная точность
А теперь приготовим смещённый кубит: у него теория 90 на 10. Тысяча прогонов — и частоты снова легли около засечек, теперь около 90% и 10%.
Обратите внимание на «отклонение от теории» под гистограммой. Точность растёт медленно: чтобы уменьшить разброс в 10 раз, нужно в 100 раз больше прогонов. Та же арифметика, что в опросах общественного мнения.
Можно мерить и по-другому
По умолчанию измерение раскладывает состояние на |0⟩ и |1⟩. Но можно иначе — например, на |+⟩ и |−⟩. Мы включили именно такой, X-базис: перед прибором встал гейт H.
И смотрите: тот самый |+⟩, что минуту назад давал 50 на 50, теперь во всех 300 прогонах выдал один и тот же ответ — плюс, 100%. На настоящем железе есть только обычное измерение, поэтому «померить по-другому» — это повернуть состояние гейтом перед прибором. Этот приём встретится нам ещё много раз.
Так зачем вообще квантовая машина
Справедливый вопрос: если вероятность можно посчитать формулой, зачем тысяча измерений? Для одного кубита так и есть — обычный компьютер справится быстрее и точнее.
Перелом наступает, когда кубитов много. Число амплитуд растёт страшно быстро: один кубит — две амплитуды, десять — тысяча, а пятьдесят — уже больше квадриллиона. Хранить и пересчитывать столько чисел обычной машине не под силу, а квантовая управляется со всеми сразу, как с одним состоянием.
Первая полная программа
И последнее — новая строка в коде. До сих пор там были только гейты. Теперь появляется измерение: measure q[0] -> c[0]; — «измерить кубит q[0] и записать результат в классический бит c[0]». Стрелка -> показывает направление: из квантового в классическое. А классический регистр, как всякую переменную, надо сначала объявить: creg c[1];.
Вот и складывается первая полная программа целиком: приготовить кубит, сделать суперпозицию гейтом H, измерить. На тысяче прогонов она даст примерно 500 нулей и 500 единиц — ровно то, что вы уже видели на этой площадке.
Дальше урок продолжается интерактивом — откройте его на сайте.