<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Статьи]]></title>
    <link>https://habr.com/ru/users/java_prog/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя java_prog]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sun, 26 Apr 2026 11:59:47 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 7 — Заключительная]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/769954/</guid>
      <link>https://habr.com/ru/articles/769954/?utm_campaign=769954&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/293/fba/a95/293fbaa954e3371d6edd84a9bff86044.png" /><p>Алгоритм Шора</p><p>В заключительной части попробуем разобраться в этом замечательном алгоритме, который в скором будущем погубит нашу цивилизацию, лишь только появятся мощности с достаточным количеством кубит для практической реализации алгоритма. Я попытаюсь упростить изложение и опустить некоторые выкладки, но сама суть алгоритма должна сохраниться через эти упрощения. Разобьем изложение на несколько этапов. Ну, начнем.</p> <a href="https://habr.com/ru/articles/769954/?utm_campaign=769954&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 03 Nov 2023 08:57:06 GMT</pubDate>
      <dc:creator><![CDATA[java_prog]]></dc:creator>
      <category><![CDATA[Алгоритмы]]></category><category><![CDATA[Математика]]></category><category><![CDATA[Квантовые технологии]]></category>
      <category><![CDATA[квантовый компьютер]]></category><category><![CDATA[квантовые вычисления]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 6]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/760962/</guid>
      <link>https://habr.com/ru/articles/760962/?utm_campaign=760962&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e2e/8fe/fcf/e2e8fefcfa10f4415682c56ddba49877.png" /><p>В <a href="https://habr.com/ru/articles/758540/" rel="noopener noreferrer nofollow">прошлой части</a> мы рассмотрели, как выглядят квантовые цепи с традиционными логическими операциями над данными. Сегодня мы рассмотрим два классических квантовых алгоритма, которые дают существенный выигрыш в производительности по сравнению с классическими алгоритмами решения этих задач.</p> <a href="https://habr.com/ru/articles/760962/?utm_campaign=760962&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 17 Oct 2023 08:39:06 GMT</pubDate>
      <dc:creator><![CDATA[java_prog]]></dc:creator>
      <category><![CDATA[Алгоритмы]]></category><category><![CDATA[Математика]]></category><category><![CDATA[Квантовые технологии]]></category>
      <category><![CDATA[квантовый компьютер]]></category><category><![CDATA[квантовые вычисления]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 5]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/758540/</guid>
      <link>https://habr.com/ru/articles/758540/?utm_campaign=758540&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/7bd/ace/58f/7bdace58ffb9ff42adf8440eb2d99a44.jpg" /><p>В <a href="https://habr.com/ru/articles/750978/" rel="noopener noreferrer nofollow">прошлых частях</a> мы рассмотрели семейство квантовых гейтов: Инвертор, C-NOT, Адамара, инверсия фазы. Но, согласитесь, как-то не похожи они на привычные нам гейты классических компьютеров: AND, OR, XOR, NOT. Ну, ладно, с NOT это я хватил лишку, NOT это вполне тоже самое, что квантовый инвертор, который мы рассмотрели самым первым гейтом в прошлых частях.</p><p>А как быть с остальными? Можем ли мы как-то сделать, к примеру, квантовый AND?<br> И да, и нет. Как вы помните из второй части, квантовая операция обязана обладать двумя важными свойствами:</p><p>• свойство обратимости, которое мы рассматривали, что если применить операцию к квантовому регистру повторно, то регистр вернется в исходное состояние.</p><p>• свойство сохранения нормы, которое заключается в том, что сумма вероятностей всех возможных состояний должна быть 1. А значит сумма квадратов всех амплитуд должна быть 1.</p><p>Как вы, может, помните с первым свойством я в прошлых частях приврал. На самом деле, свойство обратимости заключается в том, что для каждой квантовой операции существует обратная квантовая операция, которую можно вычислить из исходной определенными математическими действиями. Нам просто до сих пор везло, что обратные операции для гейтов Адамара, инвертора, C-NOT и инверсии фазы являлись теми же самыми операциями. Поэтому я и приврал тогда, что обратимость операции, примененная дважды возвращает в исходное состояние. Нет, забудьте, это неправда. Теперь обратимость сформулируем следующим образом.</p> <a href="https://habr.com/ru/articles/758540/?utm_campaign=758540&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 08 Sep 2023 10:16:28 GMT</pubDate>
      <dc:creator><![CDATA[java_prog]]></dc:creator>
      <category><![CDATA[Алгоритмы]]></category><category><![CDATA[Математика]]></category><category><![CDATA[Квантовые технологии]]></category>
      <category><![CDATA[квантовый компьютер]]></category><category><![CDATA[квантовые вычисления]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 4]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/750978/</guid>
      <link>https://habr.com/ru/articles/750978/?utm_campaign=750978&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/eeb/15d/356/eeb15d3568f220c4868fdff72702d274.jpg" /><p>В <a href="https://habr.com/ru/article/edit/748688/" rel="noopener noreferrer nofollow">прошлой части</a> мы рассмотрели двухкубитные гейты и построили какие то элементарные программы на двухкубитных гейтах.<br> Разберем некоторые полезные программы, которые состоят из двух или более разъединенных удаленных друг от друга частей, связанных между собой только предварительно запутанными кубитами и классическими средствами связи: телефоном, телеграфом, бумажным письмом и т.п. Например, один запутанный кубит отправляется на Луну, другой остается на Земле. Основной результат действия таких программ заключается в том, что предварительно запутанные кубиты, разделенные расстоянием, участвуют во взаимодействии с другими независимыми кубитами (взятыми уже на месте - на Луне и Земле), запутывая их в свою очередь, что в итоге такого взаимодействия получается общая связанная запутанная система, несмотря на разделенность расстоянием.</p> <a href="https://habr.com/ru/articles/750978/?utm_campaign=750978&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 18 Aug 2023 07:27:46 GMT</pubDate>
      <dc:creator><![CDATA[java_prog]]></dc:creator>
      <category><![CDATA[Алгоритмы]]></category><category><![CDATA[Математика]]></category><category><![CDATA[Квантовые технологии]]></category>
      <category><![CDATA[квантовый компьютер]]></category><category><![CDATA[квантовые вычисления]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 3]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/748688/</guid>
      <link>https://habr.com/ru/articles/748688/?utm_campaign=748688&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/98c/48b/590/98c48b59037180d5818cf55fec8b1583.png" /><p>В <a href="https://habr.com/ru/articles/747208/" rel="noopener noreferrer nofollow">прошлой части</a> мы рассмотрели однокубитные гейты и построили какие то элементарные программы на однокубитных гейтах. Пришло время перейти к многокубитным преобразованиям.</p><p>Квантовые гейты в случае многокубитных операций</p><p>Можно также рассмотреть каждый гейт с точки зрения матрицы преобразования. Но такое описание слишком громоздко. Например состояние из двух кубит:</p> <a href="https://habr.com/ru/articles/748688/?utm_campaign=748688&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 11 Aug 2023 07:18:58 GMT</pubDate>
      <dc:creator><![CDATA[java_prog]]></dc:creator>
      <category><![CDATA[Алгоритмы]]></category><category><![CDATA[Математика]]></category><category><![CDATA[Квантовые технологии]]></category>
      <category><![CDATA[квантовый компьютер]]></category><category><![CDATA[квантовые вычисления]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 2]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/747208/</guid>
      <link>https://habr.com/ru/articles/747208/?utm_campaign=747208&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/5ad/fbb/b4f/5adfbbb4ffdeb25f5486282f96dbaa61.png" /><p>В <a href="https://habr.com/ru/articles/746786/" rel="noopener noreferrer nofollow">прошлой части</a> мы рассмотрели базовые понятия в квантовых вычислениях: кубиты, вероятности состояний, измерения.</p><p>Квантовые гейты</p><p>Итак мы подошли к той части, где программа должна не только хранить состояние в регистрах, но и как-то преобразовывать эти данные. В классическом компьютере все операции с регистрами памяти состоят из элементарных логических преобразований с битами. Например бит AND, принимает на вход два бита и выдает в качестве результата один бит, согласно таблице логической операции AND.</p> <a href="https://habr.com/ru/articles/747208/?utm_campaign=747208&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 04 Aug 2023 08:03:39 GMT</pubDate>
      <dc:creator><![CDATA[java_prog]]></dc:creator>
      <category><![CDATA[Алгоритмы]]></category><category><![CDATA[Математика]]></category><category><![CDATA[Квантовые технологии]]></category>
      <category><![CDATA[квантовый компьютер]]></category><category><![CDATA[квантовые вычисления]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 1]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/746786/</guid>
      <link>https://habr.com/ru/articles/746786/?utm_campaign=746786&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/294/d08/a06/294d08a061aac5356b264823ba76bcd6.png" /><p>Квантовые компьютеры. С точки зрения традиционного программиста-математика.<br> Часть 1. Основы. Квантовый регистр.</p><p><strong>О чем эта публикация</strong></p><p>Имея более чем немалый опыт в традиционном программировании, я долгое время не касался темы квантовых компьютеров. Для меня это была какая то неизвестная магия. Безусловно, я знал теоретические основы, знал, какого рода задачи можно решать на квантовых цепях. Но не мог самостоятельно составить не только ни одной квантовой программы, даже разобраться в существующих квантовых алгоритмах не мог.</p><p>И вот, наконец, я закрыл этот пробел. И теперь, вспоминая, с каким непониманием я сталкивался, когда осваивал эту тему, захотел изложить ее так, чтобы тема была понятней с точки зрения опытного программиста. Конечно без математики тут никуда, нужно понимание линейной и комплексной алгебры. Поэтому, с точки зрения не просто программиста, а программиста-математика.</p><p>Многие теоретические курсы очень долго подводят к сути, накачивая нужной, но очень сложной теорией. Я попытался сократить этот период и как можно скорее перейти к сути, раскрывая нужную теорию по мере необходимости.</p> <a href="https://habr.com/ru/articles/746786/?utm_campaign=746786&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 28 Jul 2023 08:37:23 GMT</pubDate>
      <dc:creator><![CDATA[java_prog]]></dc:creator>
      <category><![CDATA[Алгоритмы]]></category><category><![CDATA[Математика]]></category><category><![CDATA[Квантовые технологии]]></category>
      <category><![CDATA[квантовый компьютер]]></category><category><![CDATA[квантовые вычисления]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Разделяй и властвуй. Повышение эффективности алгоритмов. Часть 3]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/745360/</guid>
      <link>https://habr.com/ru/articles/745360/?utm_campaign=745360&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/04f/e7c/4c2/04fe7c4c20476d30b83ff5b910bea624.png" /><p>В <a href="https://habr.com/ru/articles/742404/" rel="noopener noreferrer nofollow">прошлой части</a> мы рассмотрели общий подход к расчету эффективности алгоритмов с принципом "разделяй и властвуй", а также применение принципа к различным базовым алгоритмам.<br> Сегодня поговорим о следующем приеме. Как известно, составная часть принципа, это поделить задачу на подзадачи. Мы ни разу не касались, как именно делить. Просто делили на равные части. Но тут вот и есть нюанс, если поделить не абы как, а используя какую-то стратегию, то можно добиться применения принципа там, где это даже не очевидно. И именно эта тема станет предметом данной статьи на примере задачи умножения полиномов.<br> Как и в предыдущих частях, я упрощаю математическую часть, опуская различные нюансы и частные случаи, с целью сохранить научно-популярный характер публикации. При этом я пытаюсь сохранить основные элементы алгоритмов и математических основ. Я хочу подать информацию в кратком доступном виде, в виде математического пересказа, и если у кого-либо возникнет интерес, тот может легко найти полные и строгие математические выкладки по данной теме.</p> <a href="https://habr.com/ru/articles/745360/?utm_campaign=745360&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 08 Jul 2023 11:15:34 GMT</pubDate>
      <dc:creator><![CDATA[java_prog]]></dc:creator>
      <category><![CDATA[Алгоритмы]]></category><category><![CDATA[Математика]]></category><category><![CDATA[Научно-популярное]]></category>
      <category><![CDATA[разделяй и властвуй]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Разделяй и властвуй. Повышение эффективности алгоритмов. Часть 2]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/742404/</guid>
      <link>https://habr.com/ru/articles/742404/?utm_campaign=742404&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/efc/444/bb6/efc444bb6cc66d49942d9d7680d94158.png" /><p>Ссылка на <a href="https://habr.com/ru/articles/742308/" rel="noopener noreferrer nofollow"><u>первую часть</u></a>.</p><p><strong>Мастер‑теорема</strong></p><p>На&nbsp;примере из&nbsp;прошлой части, попробуем сформулировать и обобщить принцип «Разделяй и властвуй». Мы беремся за&nbsp;проблему, размера <em>n</em>, делим эту проблему на&nbsp;подзадачи размером <em>n/b</em>. Количество таких подзадач обозначим числом <em>a</em>. И еще имеется задача скомпоновать результаты выполнения этих <em>a</em> задач размером <em>n/b</em> в&nbsp;итоговый результат для&nbsp;задачи размера <em>n, </em>который будем считать задачей полиномиальной сложности степени <em>c, O(n<sup>c</sup>)</em>  <em>. </em>Если задача компоновки будет не&nbsp;полиномиальной, то все изложение резко усложнится. Поэтому, давайте позволим задаче компоновки&nbsp;быть полиномиальной, тем более в&nbsp;это попадает очень большое количество алгоритмов.</p><p></p> <a href="https://habr.com/ru/articles/742404/?utm_campaign=742404&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 19 Jun 2023 11:18:37 GMT</pubDate>
      <dc:creator><![CDATA[java_prog]]></dc:creator>
      <category><![CDATA[Алгоритмы]]></category><category><![CDATA[Математика]]></category><category><![CDATA[Научно-популярное]]></category>
      <category><![CDATA[разделяй и властвуй]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Разделяй и властвуй. Повышение эффективности алгоритмов. Часть 1]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/742308/</guid>
      <link>https://habr.com/ru/articles/742308/?utm_campaign=742308&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/439/d40/95c/439d4095cf69be86d3d0e5e5b150f303.png" /><p>Да, мы привыкли, что перемножение двух байт, или двух LONG это операция, которая происходит за константное время и не требует какого то особого алгоритма. Даже в школе мы учили наизусть таблицу умножения, что позволяло нам за константное время получить любой результат умножения двух чисел размером от 1 до 10.<br><br>Но, что если нам надо перемножить два числа любой длины? Не LONG, не байт, не число от 1 до 10, а любые два числа, которое, имеют в общем случае длину <em>n</em> бит, а результат умножения может иметь длину <em>2n</em> бит.</p><p>В школе все мы проходили алгоритм умножения "столбиком". отличный алгоритм, который нас выручал в докалькуляторную эру, позволяя умножать числа произвольной длины.</p><p>Давайте применим его к нашей задаче.</p><p>В двоичной системе все выглядит проще, чем то, чему нас учили в школе для десятичных чисел. Берем два числа <em>x</em> и <em>y</em> в двоичном представлении. Чтобы получить произведение, нам надо сложить несколько раз числа <em>x</em> сдвинутые влево на позиции всех ненулевых битов <em>y</em>.</p><p></p> <a href="https://habr.com/ru/articles/742308/?utm_campaign=742308&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 17 Jun 2023 11:34:26 GMT</pubDate>
      <dc:creator><![CDATA[java_prog]]></dc:creator>
      <category><![CDATA[Алгоритмы]]></category><category><![CDATA[Математика]]></category><category><![CDATA[Научно-популярное]]></category>
      <category><![CDATA[разделяй и властвуй]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
