<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=452498&amp;view=findpost&amp;p=3912312</guid>
        <pubDate>Mon, 28 Oct 2024 20:55:29 +0000</pubDate>
        <title>Эмуляция квантовых вычислений</title>
        <link>https://forum.sources.ru/index.php?showtopic=452498&amp;view=findpost&amp;p=3912312</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=452498&view=findpost&p=3912310'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-10-28T21:03:35+03:00">28.10.24, 18:03</time></span><div class='quote '>Счас вот нарыл вот такую вот хреновину, и вот смотрят вот в код, вообще нифика не то. Вот.</div></div><br>
+1 ... Сцка, проекты нагрянули &gt;:( Освобожусь - пойду читать, ибо чую там что-то из теории&#33;]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=452498&amp;view=findpost&amp;p=3912310</guid>
        <pubDate>Mon, 28 Oct 2024 18:03:35 +0000</pubDate>
        <title>Эмуляция квантовых вычислений</title>
        <link>https://forum.sources.ru/index.php?showtopic=452498&amp;view=findpost&amp;p=3912310</link>
        <description><![CDATA[Qraizer: Я сильно сомневаюсь, что сложение вообще правильно запрограммировано. ИМХО нужно не складывать, а эмулировать через битовые операции, а их в свою очередь выполнять кубитной логикой, а не двоичной. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-10-28T18:15:10+00:00">28.10.24, 18:15</time></span></span><br>
Счас вот нарыл <a class='tag-url' href='https://lenlasers.ru/novosti-i-stati/fizicheskaya-realizatsiya-kubitov-v-kvantovykh-vychisleniyakh/' target='_blank'>вот такую вот хреновину</a>, и вот смотря вот в код, вообще нифика не то. Вот.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=452498&amp;view=findpost&amp;p=3912308</guid>
        <pubDate>Mon, 28 Oct 2024 15:39:08 +0000</pubDate>
        <title>Эмуляция квантовых вычислений</title>
        <link>https://forum.sources.ru/index.php?showtopic=452498&amp;view=findpost&amp;p=3912308</link>
        <description><![CDATA[Majestio: <strong class='tag-b'>Qraizer</strong>, прикольно - но ответ совпал с желаемым&#33;<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=452498&view=findpost&p=3912302'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-10-28T13:47:59+00:00">28.10.24, 13:47</time></span><div class='quote '>понимать квантовые алгоритмы</div></div><br>
<strong class='tag-b'>Qraizer</strong> и прочие уважаемые амигос - где, чего почитать, чтобы понять всю глубину этих глубин???  :-?<br>
<br>
Чисто для того, чтобы было и потом вспомнилось ... может быть<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><pre>
&gt;&gt;&gt; Инструкции для арифметических операций:
FADD: Сложение двух чисел с плавающей запятой.
FSUB: Вычитание двух чисел с плавающей запятой.
FMUL: Умножение двух чисел с плавающей запятой.
FDIV: Деление двух чисел с плавающей запятой.
FABS: Получение абсолютного значения числа с плавающей запятой.
FMAX: Нахождение максимума между двумя числами с плавающей запятой.
FMIN: Нахождение минимума между двумя числами с плавающей запятой.
&gt;&gt;&gt; Инструкции для работы с векторными данными:
ADDPS: Сложение упакованных чисел с плавающей запятой одинарной точности.
SUBPS: Вычитание упакованных чисел с плавающей запятой одинарной точности.
MULPS: Умножение упакованных чисел с плавающей запятой одинарной точности.
DIVPS: Деление упакованных чисел с плавающей запятой одинарной точности.
RCPPS: Обратное значение для упакованных чисел с плавающей запятой одинарной точности.
SQRTPS: Извлечение квадратного корня из упакованных чисел с плавающей запятой одинарной точности 
&gt;&gt;&gt; Инструкции для работы с двойной точностью:
ADDPD: Сложение упакованных чисел с плавающей запятой двойной точности.
SUBPD: Вычитание упакованных чисел с плавающей запятой двойной точности.
MULPD: Умножение упакованных чисел с плавающей запятой двойной точности.
DIVPD: Деление упакованных чисел с плавающей запятой двойной точности.
</pre></div></div> <br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-10-28T15:59:45+00:00">28.10.24, 15:59</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=452498&view=findpost&p=3912302'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-10-28T13:47:59+00:00">28.10.24, 13:47</time></span><div class='quote '>правильный метод сложения</div></div>Стоп ... увы. Не, не катит. 2+8, 11+7, 14+2 ... все это даёт неверные вычисления&#33;<br>
<br>
 :&#39;(]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=452498&amp;view=findpost&amp;p=3912302</guid>
        <pubDate>Mon, 28 Oct 2024 13:47:59 +0000</pubDate>
        <title>Эмуляция квантовых вычислений</title>
        <link>https://forum.sources.ru/index.php?showtopic=452498&amp;view=findpost&amp;p=3912302</link>
        <description><![CDATA[Qraizer: Значения ненормированы. Любая операция над кубитами должна завершаться нормированием состояния, чтобы сумма вероятностей вариантов суперпозиции была строго 1. Где-то потеряно деление на √<span class='tag-o'>2</span> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-10-28T13:52:29+00:00">28.10.24, 13:52</time></span></span><br>
P.S. Не настолько спец в квантмехе, чтоб понимать квантовые алгоритмы, но походу, чтобы получилось 5, т.е. вдвое меньше 10, на √<span class='tag-o'>2</span> должны быть поделены каждый из компонент состояния – действительная и мнимая. Подозреваю, что правильный метод сложения<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;Qubit add(const Qubit&amp; other) const {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Сложение амплитуд</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::complex&#60;double&#62; newAlpha = (alpha + other.alpha) / std::sqrt(2.0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::complex&#60;double&#62; newBeta = (beta + other.beta) / std::sqrt(2.0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return Qubit(newAlpha, newBeta);</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>но это неточно]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=452498&amp;view=findpost&amp;p=3912261</guid>
        <pubDate>Mon, 28 Oct 2024 07:59:42 +0000</pubDate>
        <title>Эмуляция квантовых вычислений</title>
        <link>https://forum.sources.ru/index.php?showtopic=452498&amp;view=findpost&amp;p=3912261</link>
        <description><![CDATA[Majestio: Всем привет&#33;<br>
<br>
Немного почитал про квантовые компьютеры, про квантовые вычисления ... ну так, чисто совсем по верхам. И решил напрячь ChatGPT4 :rolleyes: Дал задание написать эмулятор, который реализует эмуляцию &quot;квантового сложения&quot; двух кубитов, инициализируемых целыми числами 2 и 3. Но точного результата так и не добился. В первой итерации ИИ сделал прогу, которая печатала результат 2+3=3, вторая реализация даёт 2+3=10. Дальнейшие попытки уточнения ИИ просто меняет первый алгоритм на второй, потом второй на первый, и так в цикле. <br>
<br>
Привожу код второй реализации, которая вычисляет 2+3=10. Кто в теме, гляньте pls, где тут неверные места в коде.  Инициализация генератора псевдослучайных чисел проблему не решает - где-то не там не то :lol: <br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;complex&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">class Qubit {</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::complex&#60;double&#62; alpha; // Коэффициент для состояния |0&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::complex&#60;double&#62; beta; &nbsp;// Коэффициент для состояния |1&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Конструктор для инициализации кубита</div><div class="code_line">&nbsp;&nbsp; &nbsp;Qubit(int value) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Преобразование классического значения в квантовое состояние</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (value == 0) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;alpha = std::complex&#60;double&#62;(1, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;beta = std::complex&#60;double&#62;(0, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;} else if (value == 1) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;alpha = std::complex&#60;double&#62;(0, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;beta = std::complex&#60;double&#62;(1, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;} else {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Для значений 2 и 3 создаем суперпозицию</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;alpha = std::complex&#60;double&#62;(std::sqrt(2.0 / 5.0), 0); // Примерная амплитуда для |2&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;beta = std::complex&#60;double&#62;(std::sqrt(3.0 / 5.0), 0); &nbsp;// Примерная амплитуда для |3&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Приватный конструктор для создания кубита из амплитуд</div><div class="code_line">&nbsp;&nbsp; &nbsp;Qubit(std::complex&#60;double&#62; a, std::complex&#60;double&#62; b) : alpha(a), beta(b) {}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Метод для выполнения операции сложения</div><div class="code_line">&nbsp;&nbsp; &nbsp;Qubit add(const Qubit&amp; other) const {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Сложение амплитуд</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::complex&#60;double&#62; newAlpha = alpha + other.alpha;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::complex&#60;double&#62; newBeta = beta + other.beta;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return Qubit(newAlpha, newBeta);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Метод для получения классического значения</div><div class="code_line">&nbsp;&nbsp; &nbsp;int toClassical() const {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Преобразуем амплитуды в классическое значение</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return static_cast&#60;int&#62;(std::round(std::norm(alpha) * 2 + std::norm(beta) * 3));</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Метод для печати состояния кубита</div><div class="code_line">&nbsp;&nbsp; &nbsp;void print() const {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;std::cout &#60;&#60; &quot;Состояние кубита: |0&#62;: &quot; &#60;&#60; alpha &#60;&#60; &quot;, |1&#62;: &quot; &#60;&#60; beta &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">int main() {</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Инициализация кубитов с числами 2 и 3</div><div class="code_line">&nbsp;&nbsp; &nbsp;Qubit qubit1(2); // Квантовое представление 2</div><div class="code_line">&nbsp;&nbsp; &nbsp;Qubit qubit2(3); // Квантовое представление 3</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Печать состояний кубитов</div><div class="code_line">&nbsp;&nbsp; &nbsp;qubit1.print();</div><div class="code_line">&nbsp;&nbsp; &nbsp;qubit2.print();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Выполнение операции сложения</div><div class="code_line">&nbsp;&nbsp; &nbsp;Qubit result = qubit1.add(qubit2);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Преобразование результата в классическое представление</div><div class="code_line">&nbsp;&nbsp; &nbsp;int classicalResult = result.toClassical();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Печать результата</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; &quot;Результат сложения (классическое представление): &quot; &#60;&#60; classicalResult &#60;&#60; std::endl;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	