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

В 2000 году учёные Книлл, Лафламм и Милбурн разработали метод выполнения квантовых вычислений, который позднее был назван протоколом KLM. По сути, они обнаружили возможность выполнения любых теоретических квантовых вычислений с помощью просто грамотно выстроенной оптики, в частности, зеркал.

Используя квантовые свойства света и протокол KLM, мы можем быстро и недорого создавать кубиты с помощью готовых оптических компонентов и электроники. Лучевые делители доступны всего по ~$20, что делает протокол KLM самым дешёвым методом реализации устройства для квантовых вычислений. Такая доступность позволила мне заняться изучением этой технологии прямо у себя дома.

▍ Квантовая случайность


Для нас действия квантовых систем выглядят «естественно» случайными. Фактическое действие субатомной частицы определяется вероятностью возникновения этого действия при его наблюдении, что делает эту технологию отлично подходящей для генерации случайности и энтропии.

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

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

И именно здесь возникает странное явление. Если фотон при прохождении светоделителя не окажется идеально поляризован горизонтально или вертикально, то одновременно и отразится, и пройдёт через щель. И только когда фотон оказывается обнаружен, он «коллапсирует» из волнообразного состояния обратно в частицу, оказываясь случайно в одном из состояний.

Запутал? Рекомендую приведённое ниже видео физика Евгения Хуторянского, в котором всё это объясняется намного нагляднее и интереснее.

▍ Объяснение квантовой механики


▍ Измерение света


Если вооружиться описанными выше знаниями, то создать квантовое устройство окажется несложно. Мы будем пропускать луч света через светоделитель и измерять его. Но как измерить свет?

Ответ прост. Несмотря на существование высокотехнологического (и дорогого) оборудования для измерения фотонов, проще всего вести измерение света с помощью фоторезистора.

Суть фоторезистора в том, что он позволяет изменять сопротивление цепи на основе того, сколько фотонов с ним проконтактировало. Когда фотоны достигают его поверхности, сопротивление резистора снижается, и напряжение в цепи растёт.

Фоторезисторы стоят наравне с транзисторами и светодиодами, что делает их очень доступным компонентом для самодельных квантовых устройств.

▍ Немного о состояниях фотонов


В нашем квантовом компьютере в качестве кубитов будут использоваться линейно поляризованные фотоны. Это даёт два возможных состояния кубита: горизонтально поляризованный и вертикально поляризованный, а также суперпозицию, которая может быть любым углом между 0 и 90°. Вкратце эти состояния продемонстрированы ниже в текстовом виде:

  • вертикально поляризованный свет: |
  • горизонтально поляризованный свет: __
  • суперпозиция: /

▍ Разработка квантовой схемы


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

Для нашей же первой квантовой схемы алгоритм будет очень прост:

  1. Подать импульс на лазерный диод для генерации фотонов.
  2. Пропустить эти фотоны через лучевой делитель.
  3. Измерить состояния V и H выходящих из делителя фотонов с помощью фоторезисторов.
  4. Если в состоянии H напряжение выше (меньше сопротивление, больше фотонов), чем в состоянии V, вернуть 0.
  5. Если наоборот, вернуть 1.
  6. Если напряжение окажется равным, алгоритм повторить.

Теперь можно перейти к созданию нашего квантового генератора случайных чисел.

▍ Прошивка Arduino


/*      Annotated QRNGv1 Firmware V1.1
 * Author: Noah G. Wood
 *
 * Copyright (c) 2019 Spooky Manufacturing, LLC
 * License: GPLv3.0
 *
 */
int triggerPin = 2; // Этот пин будет создавать импульс в квантовой схеме
int hPin = A0; // Этот пин измеряет горизонтально поляризованные фотоны
int vPin = A1; // Этот пин измеряет вертикально поляризованные фотоны
float H = 0;
float V = 0;
 
void setup() {
  // Установка triggerPin и последовательного подключения
  pinMode(13, OUTPUT);
  pinMode(triggerPin, OUTPUT);
  Serial.begin(9600);
}
 
int Random() {
  // Подача импульса на лазер
  digitalWrite(triggerPin, HIGH);
  delay(3);
  digitalWrite(triggerPin, LOW);
  // Считывание фоторезисторов
  H = analogRead(hPin);
  V = analogRead(vPin);
  // Определение случайного бита
  if(H>V) { // Если фотонов больше в состоянии H, вернуть 0
    return 0;
  } if(H < V) { // Если фотонов больше в состоянии V, вернуть 1
    return 1;
  } else {
    /* Одинаковое число фотонов в обоих режимах.
        На самом деле нередкий случай. Для наших целей мы просто
        будем выполнять функцию рекурсивно, пока не сгенерируется случайный бит
     */
    return Random();
  }
}
 
void loop() {
  // Основная программа
  // Запуск программы и вывод случайного бита на последовательный порт
  Serial.print(Random());
}

▍ Оптическая схема


Оптическая схема: лазерный диод, направленный на лучевой делитель. Каждый выходной путь делителя направлен на отдельный фоторезистор, характеристики которых замеряются с помощью Arduino Uno

▍ Необходимые компоненты


Если вы захотите собрать всё это сами, то вот список того, что вам потребуется (я использовал именно эти компоненты):

  • Arduino Uno;
  • фоторезисторы;
  • лучевой делитель 50/50;
  • красный лазерный светодиод 650нм;
  • пластилин;
  • Arduino Breadboard Shield;
  • корпус (в этом случае я его заказал, но в первых прототипах использовал просто картонные коробки)

О доставке лучевых делителей:
Доставка светоделителей может затянуться, так как идут они из Китая. Я бы посоветовал заказывать эти компоненты в Edmund, но у нас нет необходимости использовать в домашних экспериментах столь дорогостоящее оборудование лабораторного уровня – пока.

Советы:

  • для крепления макетной платы и лазерного диода используйте небольшой пластилиновый шарик;
  • оденьте хлопковые перчатки, чтобы не заляпать оптику;
  • во время использования накрывайте устройство для исключения доступа внешнего света.

▍ Проблема одного фотона


Для этого проекта можно использовать импульс лазера, состоящий из триллионов фотонов. Просто измеряя оба «состояния» и сравнивая сдвиг напряжения, можно легко определить, какое значение должен дать коллапсировавший кубит. Однако для более продвинутых проектов, включающих квантовую запутанность (в которой и заключается вся мощь квантового вычисления), необходимо использовать — так называемые источники одного фотона.

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

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

▍ Создание запутанных состояний


Запутанность представляет собой ещё одну большую проблему при создании собственных оптических квантовых схем. В конце концов, фотоны же не взаимодействуют друг с другом – как они могут запутаться? Но те же гении (серьёзно, гении), которые разработали протокол KLM, также нашли способ использовать простые оптические компоненты для запутывания фотонов с помощью нелинейных гейтов, вводящих сдвиг фаз, и, знаю, прозвучит как научная фантастика: телепортации.

Честно скажу, ни тот ни другой принцип я до конца не понимаю. Если вам интересно побольше узнать об этом, то лучше обратиться к странице Википедии (англ.), посвящённой протоколу KLM. Я сам лично работаю над этим в своей домашней мастерской, но пока ничего особого не добился.

▍ Открытые проекты квантовых вычислений


Моё восхищение квантовыми вычислениями, которое привело меня к сборке собственного квантового компьютера, также подтолкнуло меня к запуску Spooky Manufacturing, опенсорсного стартапа квантовых вычислений.

На данный момент мы ведём репозиторий на GitHub, где приведены полноценные инструкции, схемы и ПО для экспериментирующих с этой технологией (всё под открытой лицензией GPLv3).

Приглашаю желающих также ознакомиться и с другими проектами. Сейчас в разработке у нас находятся два инструмента:

  • QEDA: программное обеспечение для автоматизации разработки оптических схем;
  • QController: программа для тестирования квантовых схем.

Мы надеемся, что эти инструменты сделают проектирование, сборку и программирование самодельных квантовых компьютеров таким же простым и увлекательным занятием, как работа с Arduino или Raspberry Pi.

Эта статья написана в меру компетентности знаний автора. Все её содержание предназначено исключительно в качестве информационных или развлекательных целей и не является личным советом или профессиональной рекомендацией для применения в финансовых, юридических, технических вопросах или бизнесе.

Комментарии (31)


  1. iliasam
    03.07.2022 13:45
    +12

    Что-то очень станное тут написано.

    digitalWrite(triggerPin, HIGH);
    delay(3);
    digitalWrite(triggerPin, LOW);
    // Считывание фоторезисторов
    H = analogRead(hPin);
    V = analogRead(vPin);
    

    Автор выключает лазер, и после этого измеряет напряжение на фоторезисторах?
    Еще замечу, что фоторезисторы неадекватно подключены к входам АЦП, нагрузкой для резистора в такой схеме является вход самого АЦП, параметры которого толком не нормируются и не линейны.
    Если автор что-то и наблюдает, так это — тепловой шум.


    1. miksoft
      03.07.2022 14:00

      фоторезисторы неадекватно подключены к входам АЦП
      Нужна подтяжка к питанию?


      1. iliasam
        03.07.2022 14:09
        +2

        Точно, не заметил, что фоторезисторы вообще в к питанию не подключены)
        Классическое включение такое: i.pinimg.com/originals/e1/6a/92/e16a92d22a82034c945766276feca5de.jpg
        На встроенные подтяжки при измерениях надеяться нельзя.


      1. Serge78rus
        03.07.2022 14:19
        +10

        Можно было бы фоторезисторы соединить последовательно, подключить эту цепочку к земле и +5В и измерять напряжение в точке соединения резисторов. Таким образом напряжение на входе АЦП определялось бы разницей сопротивлений фоторезисторов и, самое главное, разница сопротивлений оценивалась бы в одно и то же время для обоих резисторов, а ни как у автора — последовательно во времени.

        Но… я пишу «можно было бы...» потому, что все это не имеет вообще никакого отношения к квантовым вычислениям, пока не будут использованы источник и детекторы одиночных фотонов. Единственное, что в данном эксперименте может иметь отношение к квантовым эффектам, как правильно подметил iliasam — это шум фоторезисторов.


        1. AntonSor
          03.07.2022 14:49
          +4

          и шум АЦП, и наводки на ножки


          1. Serge78rus
            03.07.2022 16:10
            +31

            Любая схема, собранная на в меру раздолбанной беспаечной макетке, демонстрирует квантовые эффекты — при включении или работает, или нет, а до включения находится в состоянии суперпозиции.


    1. VT100
      03.07.2022 21:20
      +7

      Брайт переведёт любую наукообразную чушь, лишь-бы заплатили. Именно шумы фоторезисторов и выдаются за "квантовостьч.


      1. TheRaven
        04.07.2022 00:24
        +1

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


        1. AndreySitaev
          04.07.2022 10:22

          Минусите смелей. Не поощряйте забивание ресурса белым шумом.


  1. miksoft
    03.07.2022 13:58
    +4

    Кто-нибудь, объясните, пожалуйста — как при снижении сопротивления R1 или R2 может вырасти на нем напряжение?
    У них же второй конец на земле.


  1. odiemius
    03.07.2022 14:24
    +5

    Видео "физика Евгения Хуторянского", которое при этом, почему-то на английском языке, почему-то ужасно напоминает кислотные мульты или demo 2000-х годов, а если выключить звук и смотреть на телевизоре ночью, то вообще, возникает ощущение просмотра на RenTV какой-то передачи о потустороннем мире или экстрасенсах, осoбенно жутковато на 10:01.


    1. MetromDouble
      03.07.2022 22:42
      +1

      Это тот случай, когда топорная анимация из-за недостатка навыков со временем стала фишкой канала


  1. dyadyaSerezha
    03.07.2022 14:33
    +9

    Если так просто делать квантовые схемы, зачем тратятся миллиарды на их создание при почти полном абсолютном нуле м прочее?


    1. AntonSor
      03.07.2022 14:50
      +7

      потому что методом, описанным в статье, вы не поймаете одиночный фотон


  1. Airrr
    03.07.2022 15:13
    +2

    Наверное имелось ввиду поставить фотодиоды. Но в таком исполнении это не принципиально. Можно хоть кондёр туда поставить.


    1. engine9
      03.07.2022 16:01
      +2

      Если не ошибаюсь у резисторов инертность высокая, по этому в ВОЛС применяют схему с обратносмещенным быстрым фотодиодом.


      1. nixtonixto
        04.07.2022 07:23

        Конкретно у этих серии GL55 — порядка 30 МИЛЛИсекунд. Такими фотон не поймать.


  1. engine9
    03.07.2022 16:07
    +1

    Внутри DVD в оптической части попадается похожий "кубик" это и есть лучевой делитель?


    1. iliasam
      03.07.2022 18:53

      Да, иногда в DVD используют светоделительные кубики. Но там может попасться еще и дихроичное покрытие, которое работает только на определенной длине волны.


    1. nixtonixto
      04.07.2022 07:18

      Это призма с полупрозрачным зеркалом — оно поворачивает свет лазера на 90° вверх на диск, но отражённый свет не поворачивает, и он проходит на фотоматрицу.


  1. AVX
    03.07.2022 17:55
    +13

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

    Это не суперпозиция. Это называется корпускулярно-волновой дуализм.


  1. ivanstor
    03.07.2022 18:05
    +6

    По железной части уже высказались. Однако рекурсивный вызов функции в Ардуино доставил отдельно. Притом, что никакой надобности в рекурсии тут нет. А так, ерунда тут описана, как уже прокомментировал народ.


    1. Rinsewind
      03.07.2022 18:31
      +1

      Но, что самое смешное, как ГИСЧ работать будет


      1. ivanstor
        03.07.2022 19:28
        +2

        Тоже сомнительно, что случайная последовательность будет. Периодическая наводка по питанию и привет случайности. Вообще аппаратные генераторы случайных тоже не такая простая штука, чтобы в полпинка сделать.


  1. Okmor
    04.07.2022 04:26
    +1

    Так интерестно читалось. Все ожидал чего то нового, но когда уфидел фоторезисторы для подчета фотонов, то сразу понял, что автор оченб далек от физики.

    Надо было сразу на схему смотреть.


  1. Alex-111
    04.07.2022 07:17
    +1

    Это ужас.

    1. Схема - чушь. Уже выше указали, что фоторезисторы подключены неправильно.

    2. Код - чушь. В микроконтроллере 2кб памяти, а используется рекурсия без гарантии максимальной глубины.

    3. Такой эксперимент не может продемонстрировать квантовые эффекты связанные с поляризацией фотонов (даже при правильном подключении фоторезисторов). АЦП считывает шум: тепловой и электромагнитные помехи.

    так называемые источники одного фотона

    Переводчик не стал даже читать, что выдал гугл-трансит? В русскоязычной литературе устоявшийся термин - "источник одиночных фотонов".


  1. Zhuravlev-A-E
    04.07.2022 07:50
    +1

    В дополнение может кому-то будет интересно: тут демонстрируется другой квантовый DIY-компьютер на фотонах, который хоть и не такой универсальный, но несмотря на достаточную простоту конструкции действительно производит квантовые вычисления (успешно решает задачу Дойча). Так же легко гуглится книжка, где это все описано: «Введение в квантовые вычисления. Квантовые алгоритмы», автор С. С. Сысоев.


    1. Shkaff
      04.07.2022 09:54

      Но это не квантовый компьютер...Это просто демонстрация интерференции. Я понимаю, что "квантовый компьютер" звучит более пафосно, чем "интерференция", но в таком эксперименте как на видео не возникает никаких квантовых эффектов. Пока не запускают реально одиночные фотоны, это все чисто классический эксперимент.

      Его можно использовать, чтобы провести некоторую аналогию с тем, что происходит в квантовом случае, но не более.


  1. shovdmi
    04.07.2022 07:54

    На самом деле идея может оказаться вполне работоспособна, несмотря на то, что у автора электрическая схема и код считают тепловой шум и, возможно, фотоэдс.

    Для регистрации единичного фотона можно заменить фоторезисторы на SPAD (single photon avalanche diode), которые срабатывают, как следует из названия, по захвату первого пришедшего фотона. Тогда не будет необходимости в каком-то особенном источнике света. Достаточно добавить триггер-защелку, защёлкивающийся по срабатыванию одного из диодов.


  1. VT100
    04.07.2022 08:53

    Не смотря на всё вышеизложенное — эта говностатья набрала с вечера ещё 10 плюсов.


  1. Shkaff
    04.07.2022 09:47

    Жесть какая...Честно говоря, с такой свободой трактовки физики и простой резистор тоже выдаст "квантовые случайные числа". Вообще от описания физики плакал кровавыми слезами. Конечно, это не имеет отношения к квантовому компьютеру (да и вообще квантовости тут не много).

    Нет, сам эксперимент по сути может выдать "квантовые" случайные числа в идеальном случае. На практике, как писали выше, это все забито разными классическими шумами. Мы делаем в лабе подобный генератор случайных чисел. Доказать их случайность - нетривиальная задача. Автор хотя бы показал результат работы, все сразу стало бы очевидно...