![](https://habrastorage.org/getpro/habr/upload_files/48c/bfe/e2c/48cbfee2cda464ebf288657269067cd6.jpg)
«Если эксперимент не удался один раз, виноват эксперимент, два раза — экспериментатор, три — теория» (Лев Клейн)
У меня хорошая новость для тех, кому надоело читать мои нудные лонгриды по квантовой теории и философии физики. В этой статье будет одна практика – квантовые эксперименты в домашних условиях, с минимальным бюджетом и без специального оборудования. Я решил снять и наглядно продемонстрировать, как построить квантовый компьютер своими руками и выполнить на нём квантовое вычисление - алгоритм Дойча. Всё, что я буду делать, вы сможете при желании воспроизвести у себя дома и убедиться, что это работает. Если у вас есть знакомые, которые сомневаются в квантовой механике и отрицают факт квантового превосходства, поделитесь с ними ссылкой на эту статью или видео, пусть посмотрят.
С чем будем работать
Кто-то сейчас наверняка в недоумении: какой к чёрту квантовый компьютер? Ты же сам в своей статье о квантовом компьютере писал, что это очень сложная и тонко настроенная машина, которая требует специального оборудования для полной её изоляции от окружающей среды и поддержания кубитов в когерентном состоянии. Да, это правда. В большинстве случаев, когда речь заходит о квантовых компьютерах, первыми на ум приходят огромные холодильники с помещёнными в них «люстрами», на конце которых расположены квантовые процессоры на сверхпроводниках – контактах Джозефсона. На сегодняшний день это самая распространённая архитектура квантового компьютера, но есть и другие. Среди них – фотонные квантовые компьютеры, которые могут работать в естественной среде при комнатной температуре. Вот такой компьютер мы и будем строить, но сначала я должен перечислить, что нам для этого понадобится.
Вот список необходимых ингредиентов:
Лазерная указка
Два линейных поляризатора
Полу- и полноволновая пластины или два круговых поляризатора
Всё!
Лазер будет выступать источником когерентного света. Я купил в магазине указку красного цвета с длиной волны 630-650 Нм.
Линейные поляризаторы достать не сложно: они есть в любом LCD-экране или в очках-полароидах. Чтобы получить их побольше хороших и разных, я разобрал целую кучу старой электроники: два телефона, два калькулятора, часы-будильник и электронную книгу. Если у вас нигде не завалялось такого добра, поляризационную плёнку для телефона можно купить в магазине электроники. Плёнки эти клеятся к тонкому и хрупкому стеклу, так что будьте осторожны, когда надумаете их снимать. Поляризаторы распознать легко: наложите их друг на друга крест-накрест, и они перекроют весь свет.
![Не выбрасывайте старые гаджеты - из них можно добыть много интересных полимеров Не выбрасывайте старые гаджеты - из них можно добыть много интересных полимеров](https://habrastorage.org/getpro/habr/upload_files/043/651/b46/043651b463638ecb5ee14896e0dd2f6e.jpg)
С волновыми пластинами немного сложнее. Их нужно заказывать в интернет-магазинах, и они достаточно дорогие. В идеале они должны быть кварцевыми, но пройдут и полимеры. Я решил сэкономить и заказать два круговых поляризатора (CPL) для камеры. Круговой фильтр состоит из линейного поляризатора и четвертьволновой пластины. Два таких фильтра работают как полуволновая пластина, что и требуется для нашей цели.
![Фильтры круговой поляризации Фильтры круговой поляризации](https://habrastorage.org/getpro/habr/upload_files/cb5/5b2/80a/cb55b280a1b3963ee35700ae95c34770.jpg)
Разбирая ЖК-матрицы старых телефонов, я нашёл там две интересных плёнки. Сначала я подумал, что это и есть волновые пластины, но вскоре убедился, что нет. При наложении на экран они затемняют изображение. Но одна пропускает свет, если посмотреть под углом сбоку, другая – если посмотреть сверху или снизу. При наведении лазера первая расщепляет луч на два связанных пятна, а вторая создаёт отчётливую интерференционную картину. Если знаете, как они называются – пишите в комментариях. Мои предположения: первая – это светоделитель или Light Guide Panel, а вторая – полупрозрачное зеркало с двойным лучепреломлением или интерференционный фильтр. Также у меня есть полностью зеркальная плёнка, дифракционная решётка и несколько стёкол с жидкими кристаллами.
Эксперименты с интерференцией
Чтобы увидеть интерференцию, особых усилий прилагать не надо: достаточно посмотреть на компакт-диск, мыльный пузырь или пятно бензина в луже. Все эти радужные блики и есть проявления интерференции света. Но нам нужна именно квантовая интерференция, получить которую можно только в контролируемых условиях. Как оказалось, полиэтиленовая пластинка из-под экрана телефона – это лучшая вещь для создания интерференции из тех, что мне удалось достать. Я просто посветил на неё лазером и получил длинную интерференционную картину в виде цепочки из мелких точек, расположенных на одинаковом расстоянии друг от друга. Более короткую, но отчётливо видимую интерференционную картину даёт стекло с жидкокристаллической плёнкой, на которой видно мелкую дифракционную решётку.
![Интерференционные картины от перегороженного волосом лазера (1), полимерных плёнок из матрицы телефона (2, 3, 4) и дифракционных решёток (5, 6) Интерференционные картины от перегороженного волосом лазера (1), полимерных плёнок из матрицы телефона (2, 3, 4) и дифракционных решёток (5, 6)](https://habrastorage.org/getpro/habr/upload_files/5b8/924/d6c/5b8924d6ceccad35870847f42f48a880.jpg)
Теперь давайте получим интерференцию более традиционными способами. Первый – это конечно же двухщелевой эксперимент Юнга. Самый простой способ его воспроизвести – разделить отверстие, из которого выходит лазерный луч, ровно пополам какой-нибудь проволокой или лучше волосом, как у меня, закрепить его концы на лазере скотчем и посветить на экран. По обе стороны от центральной точки или пятна света вы увидите цепочки меньших точек. То же самое можно сделать, поместив на пути лазерного луча перегородку с двумя вертикальными щелями, только расстояние между щелями должно быть как можно меньше. Можно попробовать вырезать щели в фольге, но лучше взять что-нибудь с готовыми щелями, например, лезвие от бритвы.
![Принцип работы интерферометра Майкельсона Принцип работы интерферометра Майкельсона](https://habrastorage.org/getpro/habr/upload_files/6a4/ff4/e92/6a4ff4e92984d3e362da7a08e72f8991.gif)
Следующий уровень сложности – строим интерферометр. Для этого я взял старую материнку и убрал из неё всё лишнее, включая процессор и карты оперативной памяти. Нам понадобятся только направляющие, в которые удобно вставлять тонкие пластинки. Также нужны лазер, экран, одно полупрозрачное и два обычных зеркала. Полупрозрачное зеркало я достал по частям из электронной книги, но не уверен, что соотношение пропущенного и отражённого света у него 50 на 50. Кроме того, в зеркале есть дифракционная решётка, из-за которой свет интерферирует независимо от того, работает интерферометр или нет. Но я всё же покажу, как построить его правильно. Здесь необходима точность при установке зеркал: полупрозрачное зеркало должно стоять под углом 45° к траектории луча, обычные зеркала – строго перпендикулярно и на одинаковых расстояниях от полупрозрачного. Экран устанавливается под углом 90° к лазеру, при включении которого на нём появится два пятна. Далее нужно отрегулировать зеркала так, чтобы эти пятна совместились в одно. В итоге должна получится интерференционная картина как от двух щелей. У меня лазер слабоват, но какую-то интерференцию на экране всё же видно.
![Полупрозрачное зеркало с дифракционной решёткой (1) и самодельный интерферометр (2). Если присмотреться, на экране справа можно разглядеть два пятна света, которые нужно совместить в одно Полупрозрачное зеркало с дифракционной решёткой (1) и самодельный интерферометр (2). Если присмотреться, на экране справа можно разглядеть два пятна света, которые нужно совместить в одно](https://habrastorage.org/getpro/habr/upload_files/77c/9ca/7a2/77c9ca7a268432bb5fc064f820d2c4ee.jpg)
На интерферометре можно поставить любую вариацию двухщелевого эксперимента, включая эффект наблюдателя и квантовый ластик. Конечно, проследить за единичными фотонами не получится, но в принципе это и не нужно. Просто возьмите два линейных поляризатора и поставьте их на пути к зеркалам, один горизонтально, другой вертикально. Это будут измерительные приборы, определяющие, через какую щель (по какому плечу интерферометра) прошёл свет. На выходе вертикально и горизонтально поляризованный свет перекроют друг друга и на экране интерференционной картины уже не будет. Вот вам и эффект наблюдателя. А теперь поставьте между полупрозрачным зеркалом и экраном ещё один поляризатор, диагонально. Он сотрёт информацию о том, по какому плечу прошёл свет, и на экране снова появится интерференционная картина. Квантовый ластик готов.
На моём интерферометре это плохо видно, но я для наглядности проведу аналогичный эксперимент с «разделённым» лазером. Я склеил два линейных поляризатора так, чтобы один был ориентирован горизонтально, другой – вертикально, и посветил диагонально поляризованным лучом лазера на стык между ними. Если стык разделяет луч ровно пополам, на выходе интерференции не будет, поскольку половина луча вертикально поляризована, а другая половина – горизонтально. Но если перед экраном установить ещё один поляризатор, ориентированный диагонально, он сотрёт информацию о том, через какую половину прошёл каждый фотон, и на выходе снова будет интерференция.
![Квантовый ластик на интерферометре (1) и более наглядно с использованием перегороженного лазера (2), перпендикулярно склеенных поляризаторов (3) и диагонального поляризатора-ластика (4) Квантовый ластик на интерферометре (1) и более наглядно с использованием перегороженного лазера (2), перпендикулярно склеенных поляризаторов (3) и диагонального поляризатора-ластика (4)](https://habrastorage.org/getpro/habr/upload_files/15b/a7f/723/15ba7f7238fec915f1df2d09f61ccecb.jpg)
Эксперименты с квантово запутанными частицами мы провести не сможем, поскольку для этого необходимо специальное оборудование. Как минимум понадобится источник единичных фотонов или пар запутанных фотонов, квантовый генератор ключей или квантовый ГСЧ. Такие штуки продаются в интернете, но стоят немалых денег. Пока я уложился в 8$ и не собираюсь тратить больше ни цента. Посмотрим, какой при таком бюджете можно сделать квантовый компьютер.
Как работают поляризаторы
Идею квантового компьютера на дому я позаимствовал у Митхуны Йоганатхан, индийской красавицы и доктора философии по квантовым вычислениям в Кембридже. О самодельном квантовом компьютере у неё на канале Looking Glass Universe есть два ролика. Я решил собственноручно проверить предложенную схему, немного усовершенствовать её и заодно показать вам, что она действительно работает. План у меня такой: объяснить теоретическую сторону вопроса, сформулировать задачу, попробовать решить её классическим способом на экране обычного компьютера, смоделировать алгоритм на экране Maqbook'а и наконец решить задачу на квантовом компьютере.
Как вы уже догадались, я буду обрабатывать квантовую информацию, физическим носителем которой являются фотоны. Поэтому начну с краткого объяснения, что такое поляризация. Свет представляет собой поперечные волны, или колебания электромагнитного поля. Магнитная составляющая нас не интересует, а ортогональная ей электрическая всегда ориентирована по какой-то оси, т.е. имеет вектор напряжённости. Поляризация – это направленное колебание векторов напряжённости электрического поля. В случае линейной поляризации колебания происходят в одной плоскости, в случае круговой поляризации конец вектора амплитуды описывает окружность в плоскости колебаний. Волну можно разложить на две поляризованные составляющие по любому базису (оси): вертикальная и горизонтальная поляризация (относительно плоскости земли), диагональная под углом 45° и – 45°, круговая с правым и левым вращением и т.д. Свет от большинства природных источников не поляризован, т.е. имеет хаотичную поляризацию, поскольку каждый атом испускает фотоны в случайном направлении.
![](https://habrastorage.org/getpro/habr/upload_files/dcb/3ae/025/dcb3ae0257dc4e1d5d6cc88c99c62607.jpg)
Поляризатор – это такая пластинка с длинными параллельными нитями молекул полимеров. Поляризационные фильтры обычно ставят на объектив камеры, чтобы убрать блики от поверхности воды или стекла. С той же целью поляризационные плёнки наклеивают на LCD-экраны и очки с поляризованными стёклами. В большинстве случаев эти плёнки имеют линейную поляризацию, то есть пропускают свет, поляризованный в одной плоскости. Соответственно на выходе такого фильтра всегда будет линейно поляризованный свет. Определить ориентацию линейного поляризатора можно несколькими способами: например, посмотреть через него на поляризатор с известной ориентацией или, если не жалко, проверить, в каком направлении он легче всего рвётся. Фильтры круговой поляризации более редкие, они преобразуют свет любой поляризации в поляризованный по кругу или эллиптически, в зависимости от длины волны. Вследствие циркулярной фазовой анизотропии волны с правой и левой круговой поляризацией распространяются с разной скоростью. Линейно поляризованную волну можно рассматривать как суперпозицию двух циркулярно поляризованных волн с одинаковыми амплитудами и противоположными направлениями вращения электрического вектора.
![Психоделические цветопревращения скотча (1), пластиковой коробки (2), жидких кристаллов (3) и круговых поляризаторов (4) между двумя линейными поляризаторами Психоделические цветопревращения скотча (1), пластиковой коробки (2), жидких кристаллов (3) и круговых поляризаторов (4) между двумя линейными поляризаторами](https://habrastorage.org/getpro/habr/upload_files/74c/528/9e5/74c5289e59ceed08ed2ad3e7a0137313.jpg)
Думаю, вы не раз видели в интернете ролики с разными поляризационными эффектами. Как правило, их авторы открывают для себя психоделические свойства скотча, полиэтиленовых пакетов и прозрачных пластиковых коробок, помещая всё это между двумя линейными поляризаторами и разглядывая видимые сквозь них превращения цветов. Более проницательные блогеры помещают между двумя перпендикулярными поляризаторами третий под углом 45°, и – о, чудо! – отсутствовавший свет снова появляется. Некоторые даже связывают это с квантовыми эффектами, ведь как иначе объяснить, почему при добавлении ещё одной преграды света становится не меньше, а больше. Напоминает четырёхщелевой эксперимент из моей статьи «Теория физики Мультивёрса», где при закрытии двух дополнительных щелей площадь освещённости экрана увеличивается.
![Если поместить между двумя перпендикулярно ориентированными поляризаторами третий под углом 45°, свет проходит Если поместить между двумя перпендикулярно ориентированными поляризаторами третий под углом 45°, свет проходит](https://habrastorage.org/getpro/habr/upload_files/bc0/e1a/fb6/bc0e1afb6867fc88da0a791ad280889a.jpg)
На самом деле ничего квантового здесь нет, всё объясняется в рамках классической оптики. Любая волна может быть представлена как сумма (суперпозиция) двух других волн. Например, диагонально поляризованный свет представляет собой суперпозицию горизонтально и вертикально поляризованного, и наоборот, горизонтально поляризованный свет – это суперпозиция поляризованных под 45° и – 45°. Когда диагонально поляризованная волна проходит через горизонтально установленный фильтр, она становится горизонтально поляризованной и теряет 29% яркости. Это происходит согласно закону Малюса: независимо от исходной поляризации волна проходит через фильтр и приобретает ту поляризацию, в которой он выставлен, теряя в интенсивности. Поляризатор пропускает горизонтальную волну и поглощает вертикальную, энергия которой уходит на колебание электронов в молекулах фильтра. Если два фильтра повёрнуты на 90°, каждый из них поглощает свою половину света, не пропуская ничего. Если же между ними поместить фильтр под углом 45°, он оставит 71% света в диагональной поляризации, а следующий фильтр окажется относительно него тоже под углом 45° и отсечёт 71% оставшегося света. В итоге после третьего фильтра мы получим 50% исходного света.
![](https://habrastorage.org/getpro/habr/upload_files/a25/ddd/312/a25ddd312f297086ac32d94ac5adbb24.jpg)
Задача Дойча
Единственный квантовый алгоритм, который можно выполнить на таком незамысловатом компьютере, как у меня – это алгоритм Дойча. Он был предложен Дэвидом Дойчем в 1985 г. как наиболее очевидный способ применения квантового компьютера, а сейчас с него начинают обучение квантовым вычислениям. Алгоритм решает т.н. задачу Дойча. У нас есть чёрный ящик (оракул), выполняющий одну из четырёх возможных булевых функций от одной переменной. Функции принимают один бит на входе и возвращают один бит на выходе. Задача состоит в том, чтобы определить, какая функция в ящике – постоянная или сбалансированная, обращаясь к ней только один раз. С непривычки это звучит сложно, но на деле речь идёт об элементарных вещах. Вот наши четыре функции, соответствующие четырём унарным логическим операциям:
1) f(x)=not(x) – преобразует 0 в 1 и 1 в 0 – это инвертор, выполняющий операцию «НЕ»
2) f(x)=x – оставляет всё как есть – это буфер, выполняющий операцию «повторение»
3) f(x)=0 – выдаёт 0 независимо от входного бита
4) f(x)=1 – выдаёт 1 независимо от входного бита
Первые две функции сбалансированные, другие две – постоянные.
На классическом компьютере задача Дойча невыполнима: подавая на входе 0, мы получим на выходе 0 (если в ящике f2 или f3) или 1 (если в ящике f1 или f4), а подавая 1, получим 0 (если в ящике f1 или f3) или 1 (если в ящике f2 или f4). Это ничего не сообщает нам о типе функции, пока мы не обратимся к ней повторно и не получим на выходе ещё один бит, который уже точно определит функцию. Но, по условию задачи, мы можем обратиться к оракулу только один раз. К счастью, квантовый компьютер способен решить её с первой попытки. Для этого достаточно подать на выходе не классический бит, а кубит, который может содержать любую комбинацию значений 0 и 1, т.е. находится в квантовой суперпозиции.
![Линейная и круговая поляризации Линейная и круговая поляризации](https://habrastorage.org/getpro/habr/upload_files/521/c6b/59f/521c6b59ffdaaa17a7853f5bcc5f8fd2.jpg)
Здесь необходимо объяснение, что такое волновая пластина и как она работает. Это кристалл вроде кварца или слюды или же полимерная плёнка с двойным лучепреломлением, изменяющим поляризацию электромагнитной волны, сдвигая фазу одного из компонентов суперпозиции. Обычно используются полуволновая и четвертьволновая пластины, реже встречается полноволновая пластина для света определённой частоты. Полноволновая пластина (λ) сдвигает фазу ровно на одну длину волны (2π или 360°), оставляя поляризацию без изменений. Полуволновая пластина (λ/2) сдвигает фазу на половину длины волны (π или 180°), превращая горизонтальную поляризацию в вертикальную и наоборот. Четвертьволновая пластина (λ/4) сдвигает фазу на четверть длины волны (π/2 или 90°), превращая линейную поляризацию в круговую и наоборот. Как нетрудно догадаться, две четвертьволновые пластины работают как одна полуволновая, а две полуволновые – как одна полноволновая.
![Как работают волновые пластины Как работают волновые пластины](https://habrastorage.org/getpro/habr/upload_files/ec9/14a/76b/ec914a76b211c59ac7db454384aa8a9a.jpg)
Сдвиг по фазе может вызывать любой анизотропный прозрачный диэлектрический материал – отсюда и все эти цветовые превращения скотча между двумя поляризаторами. Изменение цвета свидетельствует об интерференции между отражённым и прошедшим светом. Я много экспериментировал, помещая между поляризаторами полимерные плёнки, стёкла с ЖК-дисплеев и пластиковые коробки, но получить необходимое смещение фазы методом тыка – не лучшая затея. Поэтому я всё же решил потратиться и заказать то, что гарантированно сработает. Мне удалось достать два фильтра круговой поляризации, состоящих из линейного поляризатора и четвертьволновой пластины. Поскольку волновые пластины не отделены от линейных поляризаторов, моя схема квантового вычисления будет не такой наглядной, как у Митхуны, использовавшей в своём видео полноволновую и полуволновую пластины. Но мой вариант удобнее, поскольку двух круговых поляризаторов, повёрнутых под разными углами, достаточно для реализации всех четырёх функций.
![](https://habrastorage.org/getpro/habr/upload_files/e43/f4a/b07/e43f4ab07fc5d84721f630ff7ebb4932.jpg)
Перед тем, как приступать к работе над компьютером, нам осталось разобраться, в чём разница между когерентным и некогерентным светом. Волны когерентны, если разность их фаз постоянна во времени, и при сложении колебаний получается колебание той же частоты. Другими словами, у волн должны быть одинаковые частоты, постоянные амплитуды и постоянная разность фаз. Если разность фаз между двумя пространственными точками не постоянна, а меняется со временем, волны не когерентны. Волновые пластины изменяют фазу поляризованных волн независимо от того, когерентны они или нет. Но в случае некогерентных волн их фазовые отношения случайны, а значит и поляризация на выходе будет случайной. Хотя каждая отдельная волна будет испытывать фазовый сдвиг на 45° или 90°, общий эффект окажется неочевидным и неустойчивым, однако в среднем поляризация будет стремиться к круговой. Значит, теоретически наш алгоритм должен работать как с когерентным светом лазера, так и с некогерентным светом экрана. Осталось проверить это на практике.
Решаем задачу Дойча на классическом компьютере
Для начала посмотрим через два круговых поляризатора на обычную светодиодную лампу. При вращении поляризаторов свет меняется в яркости, пока полностью не затухнет, когда направления линейных поляризаторов становятся перпендикулярными. Теперь посмотрим через них же на ЖК-экран компьютера. Мы видим то же самое, но в промежутках от белого к чёрному свет стал меняться на жёлтый или синий. Свет экрана линейно поляризован, но не когерентен, поэтому разные длины волн (цвета) проходят через поляризаторы по-разному в зависимости от их ориентации. Это называется дисперсией. Она же наблюдается, если поместить между поляризаторами анизотропный прозрачный материал. Нам всё это цветное безобразие совершенно не нужно, поскольку на выходе должен быть классический бит: наличие света или его отсутствие. Но мы можем рассматривать изменение цвета как индикатор фазового смещения: если на выходе появляются другие цвета, кроме чёрного и белого, это эквивалентно зашумлению или декогеренции кубита в настоящем квантовом компьютере. В случае с лампой цвет остаётся неизменным, так как все направления поляризации присутствуют в равной степени. А в случае с экраном поляризаторы просто нужно ставить под прямым углом друг к другу, чтобы вертикально-горизонтальная поляризация не переходила в диагональную и наоборот.
С помощью линейного поляризатора я определяю, что свет экрана поляризован горизонтально. Обозначим горизонтальную поляризацию как 0, вертикальную – как 1. Поляризатор мы будем использовать как анализатор, измеряя поляризацию света на выходе под разными углами. А между поляризатором и экраном поставим условный чёрный ящик с фильтрами круговой поляризации. Далее нам нужно определить, какой стороной и под каким углом ставить фильтры. Смотрим через круговой фильтр на экран компьютера и вращаем его. Если свет только затемняется – фильтр повёрнут к экрану линейным поляризатором (на эту сторону обычно наносится маркировка), а к вам – волновой пластиной (на этой стороне резьба для вкручивания в объектив). Если меняется цвет излучения, но затемнения не происходит – фильтр повёрнут к вам линейным поляризатором, а к экрану – волновой пластиной. Нам нужно, чтобы на пути от экрана к вашим глазам первым стоял линейный поляризатор, затем волновые пластины, а в конце второй линейный поляризатор (анализатор). Значит, ставим фильтры так, чтобы они не меняли цвет: волновой пластиной к вам, линейным поляризатором к экрану. Так, со сторонами разобрались. С углами проще: мы уже знаем направление поляризации экрана (горизонтальное), поэтому смотрим на него через фильтры и поворачиваем их так, чтобы свет был полностью перекрыт. В таком положении вертикальная ось фильтра будет совпадать с ориентацией линейного поляризатора. Эту ось нужно как-то обозначить, она нам понадобится. У волновой пластины есть «быстрая» и «медленная» оси, они должны стоять под 45° к осям линейного поляризатора.
![Чтобы узнать, какой стороной ставить фильтр, нужно посмотреть через него на другой фильтр (1) или на поляризованный экран. Если цвет меняется с синего на жёлтый, фильтр повёрнут к вам линейным поляризатором (2, 3, 6), на эту сторону обычно наносится маркировка (4). Если свет только затемняется (5), фильтр повёрнут к вам волновой пластиной, на этой стороне также есть резьба для вкручивания в объектив. Чтобы узнать, какой стороной ставить фильтр, нужно посмотреть через него на другой фильтр (1) или на поляризованный экран. Если цвет меняется с синего на жёлтый, фильтр повёрнут к вам линейным поляризатором (2, 3, 6), на эту сторону обычно наносится маркировка (4). Если свет только затемняется (5), фильтр повёрнут к вам волновой пластиной, на этой стороне также есть резьба для вкручивания в объектив.](https://habrastorage.org/getpro/habr/upload_files/5d9/d35/f92/5d9d35f925c0f5c9dafb761863f271f6.jpg)
Итак, давайте реализуем с помощью наших круговых поляризаторов реализуем четыре булевых функции от одной переменной.
![](https://habrastorage.org/getpro/habr/upload_files/fdf/ece/73d/fdfece73df4c2f44554187c05e8547be.png)
f1 – меняет 0 на 1 и 1 на 0. Ставим оба фильтра светлой стороной, переворачиваем второй фильтр и накладываем на первый. У меня на выходе свет экрана слегка позеленел. Измеряем линейным поляризатором: в вертикальном базисе свет проходит, в горизонтальном – свет полностью перекрыт, поляризация инвертировалась.
f2 – меняет 0 на 0 и 1 на 1. Ставим первый фильтр светлой стороной, второй – тёмной стороной, перпендикулярно поляризации экрана. Переворачиваем второй фильтр и накладываем на первый: оба пропускают белый свет. Измеряем линейным поляризатором сначала в горизонтальном, потом в вертикальном базисе. В первом случае свет пройдёт, во втором – нет. Как если бы мы использовали один линейный поляризатор.
f3 – меняет 0 на 0 и 1 на 0. То есть на выходе света не должно быть ни при каких условиях. Просто ставим первый фильтр тёмной стороной, перпендикулярно поляризации экрана. Как ни крути линейный поляризатор, свет не пройдёт.
f4 – меняет 0 на 1 и 1 на 1. Можно поставить первый фильтр светлой стороной параллельно направлению поляризации экрана, тогда при вращении линейного поляризатора свет будет всегда, только цветной. Или просто убрать оба фильтра, чтобы свет экрана шёл напрямую.
![Классическое решение задачи Дойча. f1 инвертирует поляризацию входящего бита (1, 4), f2 оставляет её без изменений (2, 5), f3 всегда даёт 0 (3), f4 всегда даёт 1 (6). Классическое решение задачи Дойча. f1 инвертирует поляризацию входящего бита (1, 4), f2 оставляет её без изменений (2, 5), f3 всегда даёт 0 (3), f4 всегда даёт 1 (6).](https://habrastorage.org/getpro/habr/upload_files/26a/98c/aad/26a98caad19eb51e72f6b4db36fb601a.jpg)
Очевидно, в классическом решении задачи Дойча мы не сможем с первой попытки узнать, постоянная функция в ящике или сбалансированная. Мы превращали горизонтальную поляризацию в вертикальную и наоборот, поворачивая луч света на 90°. Но такое преобразование математически неунитарно, поскольку стирает информацию о предыдущем значении бита и является необратимым. Классическому компьютеру всё равно, а вот квантовому это не понравится, так что мы должны позаботимся о том, чтобы вычисление было обратимым. Для этого воспользуемся квантовым алгоритмом Дойча-Йожи.
Алгоритм Дойча-Йожи
Алгоритм Дойча-Йожи, предложенный Ричардом Йожей в 1992 г., является обобщением алгоритма Дойча для функций от двух и более переменных. У нас переменная одна, так что достаточно и первоначального алгоритма Дойча. Для его выполнения нужны два кубита. Первый кубит инициализируется в состоянии |0⟩, второй - в состоянии |1⟩. Затем к ним применяется преобразование Адамара, которое переводит первый кубит в суперпозицию состояний (|0⟩ + |1⟩)/√2, второй – в суперпозицию состояний (|0⟩ - |1⟩)/√2. Это означает, что при измерении вероятности обнаружить кубиты в состоянии |0⟩ или |1⟩ равны по 50%. Общее состояние системы записывается как (|0⟩ + |1⟩)/√2 ⊗ (|0⟩ - |1⟩)/√2. Далее срабатывает чёрный ящик или квантовый оракул. Если скрытая функция постоянная, состояние системы не меняется. Если функция сбалансированная, она инвертирует амплитуду одного из состояний, поворачивая вектор системы на определённый угол. Поскольку функция может изменить только знак, при измерении мы снова получили бы 0 или 1 с 50%-процентной вероятностью. Но алгоритм требует применить ещё одно преобразование Адамара. Эта операция создаёт квантовую интерференцию между разными компонентами суперпозиции, усиливающую вероятность одного результата измерения и подавляющую другие, что позволяет алгоритму выдать правильный ответ. Вентиль Адамара сообщает, что фаза не менялась и состояние осталось 1/√2(|0>+|1>), или фаза изменилась на π и состояние стало 1/√2(|0>-|1>). Поэтому при измерении результат будет |0⟩, если функция является постоянной, или |1⟩, если функция сбалансирована.
![Алгоритм Дойча: |0> и |1> - кубиты, H - преобразование Адамара, U(f) - унитарное преобразование квантового оракула, M - измерение. Алгоритм Дойча: |0> и |1> - кубиты, H - преобразование Адамара, U(f) - унитарное преобразование квантового оракула, M - измерение.](https://habrastorage.org/getpro/habr/upload_files/991/94f/cce/99194fccec4789bf164790e07bdae43c.png)
Как всё это реализовать физически? Два кубита можно закодировать с помощью одного фотона. Первый кубит (x) – это поляризация фотона, а второй кубит (y) – это его фаза. Линейный поляризатор, установленный под углом 45°, будет аналогом вентиля Адамара, преобразующего горизонтально (0) или вертикально (1) поляризованный фотон в диагонально поляризованный – суперпозицию 0 и 1. Волновые пластины будут работать в качестве квантового оракула, которые реализует одну из четырёх функций. Сбалансированные функции будут изменять или не изменять фазу фотона (y) на π в зависимости от его первоначальной поляризации (x). То есть они выполнят операцию CNOT (контролируемое отрицание) – инвертируют второй кубит (y) в зависимости от состояния первого (x). Постоянные функции будут менять или не менять фазу, то есть инвертировать кубит (y), независимо от поляризации (x). Ещё один линейный поляризатор (анализатор), установленный под углом 45°, выполнит второе преобразование Адамара. Классическим измерительным прибором послужит экран, до которого при повороте анализатора на 90° свет либо дойдёт (1), либо нет (0). Это покажет, была ли функция оракула сбалансированной или постоянной.
![Схемы для четырёх функций квантового оракула Схемы для четырёх функций квантового оракула](https://habrastorage.org/getpro/habr/upload_files/85f/2c0/5c7/85f2c05c7e5de4fd93ac0921ccf69118.png)
Представим лазерный луч в разрезе как систему координат или циферблат. Стрелка на 6 или 12 будет обозначать вертикальную поляризацию (1), стрелка на 3 или 9 – горизонтальную (0), стрелки между ними – диагональную (45°). Теперь обратим внимание на фазу – смещение амплитуды одной составляющей волны относительно другой. Здесь уже необходимо учитывать, какое время указывает стрелка. От 0 до 6 часов – это плюс, от 6 до 12 часов – это минус. Как известно, классический бит инвертируется единственным способом: 0 переходит в 1, а 1 – в 0. А для кубита есть и другие варианты. Его можно инвертировать по трём осям, соответствующие операции называются вентилями Паули и обозначаются буквами X, Y и Z. Так, инверсия по горизонтальной или вертикальной оси будет означать переход 0 в –0 и 1 в –1, т.е. поворот стрелки на 180°. При использовании линейного анализатора мы этого не увидим: горизонтальная поляризация останется горизонтальной, вертикальная – вертикальной. А вот при установке анализатора диагонально сработает уже квантовая физика: при инверсии с +45° на -45° анализатор перекроет свет, если его ориентация параллельна ориентации первого поляризатора (+45°), и пропустит свет, если его ориентация перпендикулярна (-45°).
![](https://habrastorage.org/getpro/habr/upload_files/93d/697/073/93d6970738e68dc28b7f9459b2f821af.png)
Решаем задачу Дойча на квантовом компьютере
Если мы просто возьмём и применим классическую схему, т.е. будем измерять результат в горизонтальном и вертикальном базисе, все четыре функции дадут на выходе полутень – ни то, ни сё. Мы просто узнаем, что свет у нас диагонально поляризован, и ничего не узнаем о его фазе. Это будет аналогично случайному результату измерения изолированного кубита. Но давайте вместо моего классического ПК с горизонтально поляризованным экраном возьмём чудо техники – старый Maqbook с диагонально поляризованным экраном. Если мы подадим на входе диагонально поляризованный свет Maqbook’а и начнём измерять в диагональном базисе, начнётся настоящая квантовая магия. Вот как это работает:
f1 – меняет 0 на -0 и 1 на 1. Ставим первый фильтр серой стороной под углом 45° к поляризации экрана, второй – тёмной стороной перпендикулярно поляризации экрана. Переворачиваем второй фильтр цветной стороной – он становится синим. Накладываем его на первый фильтр – цвет серо-зелёный. При измерении в диагональном базисе линейным поляризатором свет не проходит под углом +45° и проходит под углом -45°. Фаза инвертировалась.
![f1: при измерении в диагональном базисе (2, 5) инвертирует поляризацию экрана, при измерении в вертикальном (3) и горизонтальном (6) базисах даёт полутень. f1: при измерении в диагональном базисе (2, 5) инвертирует поляризацию экрана, при измерении в вертикальном (3) и горизонтальном (6) базисах даёт полутень.](https://habrastorage.org/getpro/habr/upload_files/9f3/cfe/0f7/9f3cfe0f7437489f0633d97136a37b29.jpg)
f2 – меняет 0 на 0 и 1 на -1. Поворачиваем первый фильтр на 180° другой серой стороной, второй оставляем без изменений, цвет серо-зелёный. При измерении в положительном базисе свет перекрыт, в отрицательном базисе - проходит. Разница с предыдущей функцией видна, если смотреть через линейный поляризатор на первый фильтр: тогда цвета менялись с жёлтого на синий, теперь – с синего на жёлтый.
![f2: при измерении в диагональном базисе (1, 3) инвертирует поляризацию экрана, при измерении в горизонтальном (2) и вертикальном (4) базисах даёт полутень, но цвета второго фильтра инвертировались. f2: при измерении в диагональном базисе (1, 3) инвертирует поляризацию экрана, при измерении в горизонтальном (2) и вертикальном (4) базисах даёт полутень, но цвета второго фильтра инвертировались.](https://habrastorage.org/getpro/habr/upload_files/d08/8e8/8de/d088e88de8aaacec50d656c94c422c33.jpg)
f3 – меняет 0 на 0 и 1 на 1. То есть ничего не делает. Просто убираем оба фильтра и смотрим на экран напрямую. Поляризация на выходе будет такой же, как и на входе.
f4 – меняет 0 на -0 и 1 на -1. Эту функцию могла бы выполнить полноволновая пластина или четыре четвертьволновых, но у нас нет ни того, ни другого. Поэтому пойдём на хитрость и поставим оба фильтра светлой стороной, параллельной поляризации экрана. Переворачиваем второй фильтр цветной стороной, он становится жёлтым. Накладываем его на первый фильтр – цвет снова белый. Измеряем линейным поляризатором в диагональном базисе: под углом +45° свет проходит, под углом -45° – нет. Думаю, так мы просто вернули свету исходную поляризацию, но при сдвиге фазы на целую длину волны результат был бы таким же.
![f3: ничего не делает, пустой экран (1). f4: при измерении в диагональном базисе (2, 4) повторяет поляризацию экрана, как полноволновая пластина. f3: ничего не делает, пустой экран (1). f4: при измерении в диагональном базисе (2, 4) повторяет поляризацию экрана, как полноволновая пластина.](https://habrastorage.org/getpro/habr/upload_files/d72/296/c88/d72296c888565b96031b2d245fe34ab1.jpg)
Как видите, на Maqbook'е с его некогерентным излучением добиться чистоты белого или чёрного света трудно, всё равно заметны синие и жёлтые примеси. Поэтому напоследок проведём вычисление как следует, по схеме Митхуны, используя когерентный луч лазера. Здесь происходит всё то же самое, просто на входе вместо экрана будет лазерная указка. Луч лазера линейно поляризован, так что мы можем изменять его ориентацию на входе, вращая лазер. Я ориентирую его под углом +45°. f1 замедлит горизонтальную составляющую волны, изменив фазу на 180°, с + на -. f2 замедлит вертикальную составляющую волны, также изменив фазу с + на -. f3 пропустит свет без изменений. f4 перевернёт фазу на 360°, дав на выходе те же +45°. Мы подаём луч, поляризованный под углом +45°, а на выходе измеряем линейным поляризатором, поворачивая его с +45° на -45°. Если свет появился – функция сбалансированная, если исчез – функция постоянная. Задача Дойча решена с первой попытки.
![Квантовое решение задачи Дойча с помощью лазера: при измерении в диагональном базисе свет проходит (1), если в ящике сбалансированные f1 или f2, и свет не проходит (3), если в ящике постоянные f3 или f4. Угол наклона круговых поляризаторов можно проверить на экране (4). Квантовое решение задачи Дойча с помощью лазера: при измерении в диагональном базисе свет проходит (1), если в ящике сбалансированные f1 или f2, и свет не проходит (3), если в ящике постоянные f3 или f4. Угол наклона круговых поляризаторов можно проверить на экране (4).](https://habrastorage.org/getpro/habr/upload_files/69d/684/b5b/69d684b5b400ecce0ac054ffd6ddb34e.jpg)
Вывод
Что мы только что сделали? Мы выполнили элементарное вычисление, на которое классический компьютер не способен. Если вы знаете, как решить задачу Дойча на обычном компьютере – предлагайте свой алгоритм, это будет сенсация. В противном случае вам следует признать факт квантового превосходства. Конечно, исходный алгоритм Дойча совершенно бесполезен, как и построенный мною двухкубитный квантовый компьютер. Но и те квантовые компьютеры, которые на сегодняшний день есть у IBM и Google, полезными тоже не назовёшь.
Физик Дэвид ДиВинченцо предложил пять критериев, которым должно соответствовать устройство, чтобы называться квантовым компьютером: 1) возможность конструировать кубиты и управлять ими, 2) возможность увеличивать их количество, 3) возможность сохранять квантовую когерентность достаточно долго, чтобы выполнять вычисления, 4) возможность выполнять универсальный набор квантовых операций (вентилей) и 5) возможность измерить каждый кубит.
В принципе такой компьютер можно построить своими руками в домашних условиях, добавив к моему списку необходимого оборудования светоделители. Если вам это интересно, и вы хотите продолжить мои эксперименты, загуглите протокол KLM, предложенный Найлом, Лафламме и Милберном в 2000 г. Это самый дешёвый способ реализации универсального набора квантовых вентилей и выполнения любого квантового алгоритма. Ну а я на сегодня завершаю свои эксперименты и желаю удачи тем, кто решиться их воспроизвести.
Комментарии (25)
tuxi
17.08.2024 15:22+5Если вы знаете, как решить задачу Дойча на обычном компьютере – предлагайте свой алгоритм, это будет сенсация.
Замерить скорость выполнения кода?
dionisdimetor Автор
17.08.2024 15:22Кодируйте, только по-честному: бит на входе - бит на выходе. Классическое моделирование алгоритма Дойча не пройдёт, нужен именно классический двоичный алгоритм.
kovserg
17.08.2024 15:22+10К счастью, классический компьютер элементарно решает задачу Дойча.
Для этого достаточно на входе подать не класический bit аqbitStereoBit который может содержать не только 0 и 1 но и 1/3 и 2/3. Сокращенно sb. Закодируем его двумя обычными битами. Этого будет достаточно. Вот код на lua который определяет какую функцию ему передали за одно обращение к оракулу.-- mlc stereo bits operators function sb_zero() return 0 end function sb_one() return 3 end function sb_copy(x) return x end function sb_not(x) return 3-x end function guess(oracul) local x=1 x=oracul(x) if x==0 then print "constant f3" elseif x==1 then print "balanced f2" elseif x==2 then print "balanced f1" else print "constant f4" end end function f1(x) return sb_not(x) end -- balanced function f2(x) return sb_copy(x) end -- balanced function f3(x) return sb_zero() end -- constant function f4(x) return sb_one() end -- constant guess(f1) guess(f2) guess(f3) guess(f4)
balanced f1 balanced f2 constant f3 constant f4
ps: 1pi это 180градусов :)
dionisdimetor Автор
17.08.2024 15:22Нет, так дело не пойдёт. Какая разница, сколько там битов на ячейку - это всё равно классические биты и вы их подаёте сразу два. Я тоже подаю два кубита, но измеряю только один из них. Кубит может содержать не только 1/3 или 2/3, но и любое вещественное число между 0 и 1. Это важно для более сложных квантовых алгоритмов. Но даже элементарную задачу Дойча решить на классическом компьютере за один такт невозможно чисто технически, не придумали ещё таких транзисторов.
Zhuravlev-A-E
17.08.2024 15:22+5Сорри, что вмешиваюсь, но в задаче Дойча "Необходимо определить тип функции, обратившись к вычисляющему функцию оракулу наименьшее возможное число раз". Да, в квантовом алгоритме Дойча эту задачу можно решить измерением одного кубита, но это особенность именно алгоритма Дойча. А про число измерений или сколько бит или кубит при этом измерять в постановке задачи Дойча речи нет.
N-Cube
17.08.2024 15:22+6Весьма сомнительное «квантовое превосходство». Два кубита в суперпозиции соответствуют классической шине данных аналогичной ширины, так мы и за одно обращение к черному ящику по двубитной шине получим результат. То есть, вы просто-напросто утверждаете, что классический компьютер работает хуже, если его на однобитную шину посадить - что да, то да, но и на квантовом компьютере с одним кубитом не разбежаться.
Shkaff
17.08.2024 15:22+20Тут нет ничего квантового ровным счетом. Ровно то же самое получается в классической электродинамике, если вы честно все посчитаете. Пока вы не дошли до одиночных фотонов, вы работаете с классическим светом.
N-Cube
17.08.2024 15:22+4Да, было бы интересно посмотреть на использование одиночных фотонов в домашних условиях:) На самом деле, все уже было - оптические преобразования до и на заре компьютерной эры были мейнстримом, например, для обработки данных радара с синтезированной апертурой. Но вот проблемы оказались неразрешимыми. Смена транспарантов практически невозможна, приходится для каждого транспаранта отдельный каскад делать. Помехи (шум) накапливаются, а чтобы уменьшить уровень шума, надо увеличивать интенсивность и время экспонирования, но это приводит к быстрой деградации транспарантов и еще большему уровню помех. В итоге, как только стало доступным быстрое преобразование Фурье, в котором нет указанных проблем, а скорость вычислений определяется динамически задаваемой точностью, оптические вычисления тут же и закончились. Хорошо говорить про мгновенные квантовые вычисления на множестве кубитов, но как только начинают учитывать время на подготовку и получение суперпозиции и количество возникающих ошибок из-за потери суперпозиции отдельными кубитами, так сразу квантовые вычисления оказываются практически не реализуемыми в практически полезных масштабах. Толку мало даже от сотни кубитов, когда хоть все из них могут потерять суперпозицию к моменту или в результате измерения и нужно обработку выполнять многократно для получения достоверных результатов, и это занимает уйму времени из-за сложностей получения суперпозиции.
dionisdimetor Автор
17.08.2024 15:22Ну не насобирал ещё на источник одиночных фотонов, увы:) К моим опытом с некогерентным светом возникает много вопросов, согласен. Но лазер по природе своей квантовый, когерентные фотоны неотличимы. Их, конечно, не запутаешь, чтобы нормальный LOQC построить. Поэтому я пошёл на хитрость и закодировал одним фотоном два кубита: поляризацию и фазу. А они запутаны по определению. Так что формально задачу я решил.
Shkaff
17.08.2024 15:22+11А они запутаны по определению.
С чего это они запутаны? Вы путаете запутанность и корреляцию.
Ваше наблюдение — чисто классическое, тут нет нужно никаких квантовых прибамбасов.
Вы пишете в статье:
Мы выполнили элементарное вычисление, на которое классический компьютер не способен.
Но это просто неверно. Вы выполнили чисто классическое вычисление на классическом приборе.
dionisdimetor Автор
17.08.2024 15:22Вы рассуждаете как закоренелый копенгагенец, разделяя мир на кванты и классические приборы. Это же весьма условная граница, тем более для фотонов: сколько их должно собраться в одном месте, чтобы квантовый луч стал классическим? Главное, что они когерентны и находятся в одном состоянии, поляризация и фаза у них совпадают, а сколько там фотонов - без разницы. Один кубит у меня поляризационный, второй - временной, это нормально для оптических квантовых вычислений.
Идеальных однофотонных источников не существует, один у нас фотон или несколько - вопрос вероятности. Проблемы обычно возникают, когда нужно разделить луч ровно пополам или на определённое количество лучей, либо интерферировать фотоны из разных источников или выпущенные в разные моменты времени. Но и с этим справляются. Есть много публикаций на тему контролируемой многофотонной интерференции и запутанности, вот, например.
Shkaff
17.08.2024 15:22+2Я рассуждаю как ученый, который получил PhD в экспериментальной квантовой оптике и уже больше 10 лет создает и измеряет квантовую запутанность в лаборатории.
сколько их должно собраться в одном месте, чтобы квантовый луч стал классическим?
Дело не в количестве, а в их статистике. Вы не можете приписывать тепловому состоянию свойства одиночных фотонов.
Главное, что они когерентны и находятся в одном состоянии, поляризация и
фаза у них совпадают, а сколько там фотонов - без разницы.Нет, разница огромная. Вы не можете наблюдать квантовые свойства на большом N в смешанном состоянии и пуассоновском распределении. Если бы вы приготовили фоковское состояние с N фотонами, это было бы другое дело.
plus79501445397
17.08.2024 15:22+4Поэтому я пошёл на хитрость и закодировал одним фотоном два кубита: поляризацию и фазу.
Так что формально задачу я решил.
Кмк хитрость у вас здесь в том, что вы конечно прямо не говорите, что якобы сами все это придумали, но и нигде не ссылаетесь на то, что "кодирование одним фотоном двух кубитов: поляризации и фазы" давным давно используется, например в
"DIY-прототипе КК"
См. например: Сысоев С. С. Введение в квантовы е вычисления. Квантовые алгоритмы: учеб. пособие. — СПб.: Изд-во С.-Петерб. ун-та, 2019. — 144 с. ISBN 978-5-288-05933-9 , демонстрирующим "решение" той же задачи Дойча
dionisdimetor Автор
17.08.2024 15:22+1Не знаю, кто первый это придумал, но я узнал об этой схеме на канале Looking Glass Universe, на него и ссылаюсь.
materiatura
17.08.2024 15:22+9Мы подаём луч, поляризованный под углом +45°, а на выходе измеряем линейным поляризатором, поворачивая его с +45° на -45°.
Вы делаете два измерения, а не одно. В Вашем примере нет квантового превосходства.
dionisdimetor Автор
17.08.2024 15:22А то, что я в один фотон два кубита запихнул, вас не смущает? С измерением как раз проще, можно ничего и не поворачивать. Достаточно поставить поляризатор под углом +45° или -45°, чтобы узнать фазу.
Shkaff
17.08.2024 15:22+8Где у вас там один фотон? :) Вот если бы вы измеряли фотоны, было бы другое дело. Вы же измеряете простую электромагнитную волну в квадрильон фотонов в секунду.
CitizenOfDreams
17.08.2024 15:22+11Что-то мне кажется, что в этих экспериментах такие же "кванты", как в школьном кабинете химии "молекулы" из шариков и палочек...
dionisdimetor Автор
17.08.2024 15:22Так и в раскрученных квантовых компьютерах никаких "квантов" тоже нет, в лучшем случае используются какие-нибудь ионы, квазичастицы или квантовые точки.
V_Scalar
17.08.2024 15:22Что такое поле и его электрический компонент? Это слабый заряд вакуума состоящий из заряженного дублета и нейтрального дублета, нейтральный как вы поняли отождествляется как магнитный компонент (заряды для него являются стоком или истоком, слабый заряд как бы заряжает обычные заряд). Слабый заряд обращается на маленькой (ланковской) петле так же у него есть собственный спин, между ними определённое спин-орбитальное отношение.
Допустим поля нет, то есть состояние вакуума — все петельки ориентированы хаотически, далее, вносим обычный заряд - петельки выстраиваются определённым образом. Теперь из этих петелек мы можем конструировать поля или волны с любой поляризацией линейной, циркулярной эллиптической и тд. Например сложные поля
oleg_rico
17.08.2024 15:22Слушаю лекции Парфёнова "квантовая физика без формул"
Вроде бы что-то стал понимать про квантовый компьютер и кубиты, но после прочтения данной статьи осознал, что по-прежнему ничего не понимаю.
Тем не менее автору плюсик в карму поставил за труд и огромную проделанную работу.
Quqas
17.08.2024 15:22+6нет. неубедительно.
вычислений не вижу.
забавные и порой неочевидные эффекты - да. вычисления нет.
словесно-логическая эквилибристика с подгонной задачи под результат не счёт.
HyperWin
Колоссальный труд. Очень интересно было читать