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

Именно в этом ключике лежит суть проблемы P =? NP — величайшей нерешённой задачи теоретической информатики. За её решение Институт Клэя назначил премию в $1 000 000. Но дело не в деньгах. Дело в фундаменте нашего цифрового мира. Если эта задача будет решена, последствия будут сопоставимы с научной революцией или даже сильнее.

Давайте разберемся, что скрывается за этими двумя буквами, почему это так важно и почему человечество уже 50 лет бьется над этой загадкой.

Класс P (Polynomial time (полиномиальное время)): это множество всех задач, решение которых можно быстро найти. Быстро здесь означает, что время работы алгоритма растет нестрашно относительно размера входных данных (например, как n, n², n³). Примеры:

  • Сортировка массива из n чисел;

  • Алгоритм Дейкстры;

  • Умножение матриц.

Это задачи, которые наши компьютеры решают эффективно каждый день.

Класс NP (Nondeterministic Polynomial time (недетерминированное полиномиальное время)): это множество задач, решение которых можно быстро проверить, если его вам дали. Но вот найти это решение может быть невероятно сложно. Пример: задача коммивояжёра. Дан список городов и расстояний. Нужно найти самый короткий маршрут, проходящий через каждый город ровно один раз и возвращающийся в исходную точку.

Проверка (NP): если вам дали готовый маршрут, вы легко (за полиномиальное время) сложите все расстояния и проверите его длину.

Решение (NP-полная): чтобы найти самый короткий маршрут среди всех возможных, при большом числе городов (n) придётся перебрать n! вариантов. Для 100 городов это больше, чем атомов во Вселенной. Важнейший нюанс: NP — это НЕ «Non-Polynomial». Это распространённая ошибка. NP означает, что решение можно проверить за полиномиальное время на недетерминированной машине Тьюринга (мысленный эксперимент, который может «угадать» верный путь). На практике — это «проверяемые за разумное время» задачи.

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

Но перед этим нужно ввести понятие о полиномиальной сводимости. Скоро станет понятно для чего.

Формально говоря, задача A полиномиально сводится к задаче B (запись: A ≤ₚ B), если существует алгоритм, работающий за полиномиальное время, который преобразует любой вход задачи A в эквивалентный вход задачи B так, что: вход задачи A имеет ответ «ДА» тогда и только тогда, когда полученный вход задачи B имеет ответ «ДА».

Можно представить что вы умеете решать одну сложную задачу (например, собирать пазлы). Вам дали другую задачу (например, составить расписание). Вы думаете: «А нельзя ли эту новую задачу превратить в задачу о пазле, решить её как пазл, а потом результат обратно превратить в расписание?». Если такое «превращение» происходит быстро (за полиномиальное время), и решение пазла гарантированно даёт правильное решение для расписания, то полиномиальная сводимость формализует эту идею «превращения» одной задачи в другую.

Теперь переходим к NP-трудной и NP-полной задачам.

NP-трудная задача — это задача, которая по меньшей мере так же трудна, как и самые трудные задачи в классе NP.  Задача H является NP-трудной, если для любой задачи L из класса NP выполняется полиномиальное сведение: L ≤ₚ H.

Один важный момент: NP-трудная задача может быть даже сложнее, чем NP. Она может не лежать в классе NP, то есть её решение может быть даже невозможно проверить за полиномиальное время.

NP-полные задачи — точка пересечения двух предыдущих понятий.  Задача C является NP-полной, если она удовлетворяет двум условиям:

  • C ∈ NP (то есть её решение можно быстро проверить, если дано свидетельство);

  • C является NP-трудной (то есть для любой задачи L из NP верно L ≤ₚ C).

Так в чём же всё-таки сердце проблемы?

Вот главный вопрос, сформулированный в 1971 году Стивеном Куком:

Равны ли классы P и NP?

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

Если P = NP: это означает, что для каждой сложной задачи (из NP) существует (пока не найденный) эффективный алгоритм её решения. Это станет интеллектуальным Big Bang. Мы сможем оптимально проектировать лекарства, мгновенно строить идеальные логистические схемы, создавать искусственный интеллект с невероятными возможностями. Но также рухнет вся современная криптография (RSA, ECC), основанная на том, что разложить число на множители (NP-задача) легко проверить, но сложно сделать.

Если P ≠ NP: это более «скучный» и вероятный, по мнению большинства учёных, сценарий. Он подтвердит нашу интуицию: поиск решения — принципиально сложнее проверки. Некоторые задачи от природы трудны, и мы должны смириться с приближёнными решениями и эвристиками. Цифровой мир останется безопасным (в основе), но мы никогда не получим волшебного ключа от всех замков.

Но почему же это так сложно доказать? Почему имея все современные технологии никто до сих пор не смог этого сделать? Потому что нужно доказать утверждение для всех возможных алгоритмов, которые ещё не придуманы. Мы не можем перебрать их все. Нужна глубокая, фундаментальная теория, которая пока ускользает от нас.

Интересный факт. Внутри класса NP есть уже известная нам элитная группа — NP-полные задачи. Так вот, они обладают удивительным свойством, доказанным Куком и Левиным:

Если для хотя бы одной NP-полной задачи будет найден быстрый (полиномиальный) алгоритм, то ВСЕ задачи из NP станут легкими (перейдут в P). И наоборот, если для одной из них будет доказано, что быстрого алгоритма не существует, то P ≠ NP.

Это даёт учёным мощный инструмент. Чтобы доказать «сложность» новой задачи, достаточно свести к ней одну из известных NP-полных задач (например, задачу выполнимости булевых формул (SAT) или задачу коммивояжёра).

Ещё мне бы хотелось рассказать о некоторых мифах, связанных с теорией, что P = NP.

  1. Миф: «P=NP значит, компьютеры смогут решать всё». Нет, это не так. Есть задачи и сложнее NP (например, EXPSPACE), для которых время решения растёт экспоненциально от размера памяти.

  2. Миф: «Квантовые компьютеры решат проблему». Алгоритм Шора действительно решает задачу факторизации за полиномиальное время на квантовом компьютере, но это не доказывает P=NP. Пока квантовые компьютеры дают ускорение лишь для специфического класса задач (BQP), и большинство экспертов считает, что BQP ≠ NP.

  3. Миф: «Искусственный интеллект уже решил это». Современный ИИ (нейросети) — это мощные эвристики. Они находят удивительно хорошие приближённые решения для NP-трудных задач, но не дают ни точного решения, ни доказательства его оптимальности за полиномиальное время.

Теперь предлагаю немного пофантазировать над тем, каким был бы наш мир, если бы удалось доказать P = NP (и удалось найти конструктивный алгоритм).

Представьте, что в пятницу вечером на GitHub появляется репозиторий universal_np_solver. К утру понедельника мир уже другой.

Конец асимметричного шифрования. Вся криптография, основанная на сложности разложения на множители (RSA) или дискретного логарифма (ECC, DSA), становится историей. Алгоритм берет ваш открытый ключ (произведение двух простых чисел) и за несколько часов выдает приватный. SSL/TLS, PGP, подписи документов всё это превращается лишь в иллюзию безопасности.

Блокчейн и криптовалюты — не устоят. Майнинг (поиск хэша) станет предсказуемым, атака 51% будет тривиальна для любого, у кого есть доступ к алгоритму. Но главное — рухнет сама идея цифровой подписи. Если можно вычислить приватный ключ из публичного, то любой сможет подписаться как вы и потратить ваши биткоины.

Что выживет? Только криптография с информационной стойкостью — одноразовые блокноты, квантовая криптография (и то, только на уровне распределения ключей). Миру придется срочно переходить на абсолютно новые принципы, возможно, основанные на физических законах, а не на вычислительной сложности. Наступит хаотичный переходный период, где все цифровые активы и секреты окажутся под угрозой.

Глобальные цепочки поставок перестанут страдать от кризисов. Алгоритм будет в реальном времени переоптимизировать маршруты тысяч судов, самолетов и грузовиков, учитывая погоду, поломки, спрос и геополитику, минимизируя затраты и выбросы CO2.

Транспорт без пробок станет реальностью не за счет беспилотных машин, а за счет единого оптимального потока. Задача «распределить миллион автомобилей по дорогам мегаполиса за час так, чтобы минимизировать среднее время в пути» будет решена для всего города целиком. Светофоры, полосы, ограничения — всё будет динамически адаптироваться.

Энергетика. Идеальное распределение нагрузки в сетях, оптимальное размещение солнечных панелей и ветряков, прогноз и балансировка потребления — всё это задачи комбинаторной оптимизации. Мы сможем проектировать и управлять энергосистемами с почти 100% КПД.

И это далеко не всё...

P=NP стирает границу между «можно придумать» и «можно найти». Мир станет невообразимо эффективным, болезни отступят, искусство расцветет новыми формами. Но одновременно он станет хрупким (построенным на одном алгоритме), прозрачным (без тайн) и потенциально тоталитарным (потому что кто-то будет задавать вопросы алгоритму).

Вопрос в том, готово ли будет человечество к такому могуществу и сможет ли оно задать алгоритму самый главный, не формализуемый в NP-задачу вопрос: «Что есть благо?».

Это был бы мир, где вычислительная сложность перестает быть ограничением, и на первое место выходит сложность человеческих ценностей и этики. А с ними алгоритм P=NP помочь уже не может.

Возможно это и к лучшему, что вопрос P=? NP так и остаётся открытым.

Надеюсь эта статья была интересной для вас. Спасибо за внимание!


Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале 

Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.
Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.

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


  1. Psoy
    17.02.2026 15:18

    Как за полиномиальное время проверить, что мы нашли самый короткий маршрут в задаче коммивояжёра?


    1. Kamil_GR
      17.02.2026 15:18

      Автор похоже некорректно изложил мысль.

      Пример: задача коммивояжёра. Дан список городов и расстояний. Нужно найти самый короткий маршрут, проходящий через каждый город ровно один раз и возвращающийся в исходную точку.

      Проверка (NP): если вам дали готовый маршрут, вы легко (за полиномиальное время) сложите все расстояния и проверите его длину

      )) проверка np не относится к заявленной задаче, а к другой, когда проверяется заявленная длина по известному маршруту. Сам немного завис.


    1. mayorovp
      17.02.2026 15:18

      Быстрое гугление показало, что NP-полной является несколько изменённый вариант задачи коммивояжёра, в котором предполагается искать не самый короткий маршрут, а маршрут не длиннее заданной длины. Проверка тут тривиальна.

      Исходную задачу коммивояжёра при этом можно свести к измененной через бинарный поиск.


      1. vanxant
        17.02.2026 15:18

        Без этого комментария статья выглядит в духе Ландавшица ("легко показать, что...")


  1. AndreyDmitriev
    17.02.2026 15:18

    Для 100 городов это больше, чем атомов во Вселенной.

    Если быть дотошным, то число атомов во Вселенной оценивается где-то в 10^80, это значение достигается уже при 60 городах примерно. 100! - это не просто больше, а сильно больше, порядков этак на семьдесят больше.

    Глобальные цепочки поставок... Транспорт без пробок

    А вот тут не всё так уж плохо, кстати. В прошлом году я сделал небольшое упражнение — оптимизацию перемещения манипулятора (скажем, сверление отверстий в печатной плате или неразрушающий контроль сложной детали). Я заполнил матрицу весов случайными значениями от одной до двух секунд, то есть в среднем получалось полторы секунды на перемещение. Так вот, если перемещать манипулятор просто последовательно, то для 60 позиций и выйдет 90 секунд, а для 120 — примерно 180. Всё сходится. Но если найти оптимальный маршрут, то получилось 61,7 секунды для 60 позиций и 121,6 — для 120, что очень хорошо, это очень близко к абсолютному минимуму. Я на Питоне набросал десяток методов с помощью копилота (без него я бы, честно говоря, офигел все эти муравьиные колонии да симуляции отжига руками программировать), и оказалось, что алгоритм смешанного целочисленного линейного программирования (который MILP) работает лучше всего. Он решает задачу на сотню позиций буквально за несколько секунд — хотя это, конечно, не гарантированный минимум, но я был впечатлён. Этот алгоритм я потом переложил на Rust. Вот тут упражнения на GitHub со всеми исходниками, если кому интересно: https://github.com/AndrDm/atsp-ndt.


    1. artptr86
      17.02.2026 15:18

      Да, при этом может оказаться, что "идеальный" алгоритм коммивояжёра (в гипотетическом случае P = NP) будет значительно сложнее "приблизительного" MILP.


    1. ARad
      17.02.2026 15:18

      Если быть ещё более дотошным, то число атомов Вселенной никто не знает даже примерно, он может быть даже бесконечным. А вы пишите про число атомов наблюдаемой Вселенной.


    1. Ents
      17.02.2026 15:18

      если быть еще более дотошным, то сложность определяется не только количеством городов, а и количеством дорог между ними. N! - это только если каждый город связан с каждым прямой дорогой, что сложно представить для 100 реальных городов


      1. mayorovp
        17.02.2026 15:18

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


        1. Dr_Faksov
          17.02.2026 15:18

          А мне интересно - почему всегда рассматривают\сравнивают метод тупого перебора? Он самый оптимальный?

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


          1. vanxant
            17.02.2026 15:18

            за века шахматная теория отделять зёрна от плевел научилась

            эвристиками:)


          1. Aironsx
            17.02.2026 15:18

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


            1. haqreu
              17.02.2026 15:18

              А это уже доказали?


              1. axion-1
                17.02.2026 15:18

                Формально нет, но гипотеза о том что для белых существует выигрышная стратегия из начальной позиции, выглядит совсем уж маловероятной.

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


                1. haqreu
                  17.02.2026 15:18

                  Я в шахматы играть не умею (только правила знаю), но преимущество хода - штука такая, может и сыграть роль...


            1. axion-1
              17.02.2026 15:18

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


  1. axion-1
    17.02.2026 15:18

    Глобальные цепочки поставок перестанут страдать от кризисов.

    Транспорт без пробок станет реальностью не за счет беспилотных машин, а за счет единого оптимального потока.

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


    1. Calculater
      17.02.2026 15:18

      Особенно умиляет, когда на голубом глазу утверждают, мол, алгоритмы нам помогут, вот заживем! Хотя в этом же примере зачастую из пункта A в B без пробок все равно не проедешь, ибо суммарная пропускная способность дорог не увеличилась.


      1. axion-1
        17.02.2026 15:18

        Задача коммивояжёра вообще имеет очень сильно косвенное отношение к оптимизации городского транспорта. Тут скорее алгоритмы вроде A* более актуальны, для нахождения кратчайшего пути в условиях пробок.


        1. mayorovp
          17.02.2026 15:18

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

          Для задачи именно оптимизации всего городского транспорта в моменте требуется что-то вроде нахождения оптимального потока. А при планировании можно ещё и остановки двигать, и задача становится ещё сложнее.


          1. axion-1
            17.02.2026 15:18

            А* тут нафиг не нужен, в условиях города гораздо лучше работает банальнейший алгоритм Дейкстры.

            Они же одно и то же решение найдут при одинаковых исходных данных, только A* быстрее отработает - или я что-то не догоняю?


            1. mayorovp
              17.02.2026 15:18

              Он быстрее отработает только при наличии хорошей эвристики направления, согласованной с весами переходов. При этом в худшем случае он становится экспоненциальным.

              Алгоритм Дейкстры же работает за гарантированное время.


          1. interrno
            17.02.2026 15:18

            Скорее определение точек притяжения трафика и время смены потоков от/к таким точкам/узлам, выделение основных, самых плотных потоков, и регулировка именно этих, основных потоков. Причём, не расширением дорог внутри замкнутого контура, а созданием новых путей к конечным точкам и самих точек, либо переносом точек. Например вынос рабочих мест чиновников из Москвы в Подмосковье существенно изменит утренне-вечерний трафик в городе.


  1. panzerfaust
    17.02.2026 15:18

    Это станет интеллектуальным Big Bang. Мы сможем...

    Я сколько читаю телеги по P/NP, одного не могу понять. Как в вашей цепочке рассуждений доказательство какого-то утверждения переходит в конкретные последствия? Допустим, завтра вы просыпаетесь и у вас на столе лежит железобетонное доказательство - дальше что?


    1. mayorovp
      17.02.2026 15:18

      Если доказательство неконструктивное - то ничего. А вот если оно конструктивное...


      1. haqreu
        17.02.2026 15:18

        Да даже если конструктивное, то не факт, что оно полезно. Вон, например, метод эллипсоидов нашли полиномиальный для решения задач линейного программирования. Однако экспоненциальный симплекс-метод на пенсию, мягко скажем, не ушёл.


        1. Vytian
          17.02.2026 15:18

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


          1. Calculater
            17.02.2026 15:18

            Даже если просто показатель степени будет вроде 10^10^10^400 без видимых возможностей снижения, повседневность это не изменит.


            1. vanxant
              17.02.2026 15:18

              Просто n^10 достаточно.

              Да что там говорить, суперкомпьютеры строят в основном для решения задач со сложностью O(n^4). Т.е. разница в точности между программой на десктопе учёного и на суперкомпьютере - всего в ~10 раз по каждой координате.


    1. Refridgerator
      17.02.2026 15:18

      Для чистых математиков это вообще характерно - доказательство наличия решения важнее самого решения. Постоянно с этим с этим сталкиваюсь во всяких научных работах, причём посвященным чисто прикладным вопросам - вычислению функций или любимому мною FFT. Например, кто-то "улучшил" FFT снижением умножений заменой синуса на тангенс (грубо говоря), а то, что сам алгоритм из-за этого получается сложнее и численно неустойчивее - скромно замалчивается. И естественно никаких готовых алгоритмов, которые можно взять и запрограммировать.


      1. CitizenOfDreams
        17.02.2026 15:18

        Для чистых математиков это вообще характерно - доказательство наличия решения важнее самого решения.

        Как в том анекдоте - математик просыпается в горящей комнате, видит огнетушитель, говорит: "Решение существует!" и ложится спать дальше.


    1. KukarekusUltra
      17.02.2026 15:18

      Если окажется, что P=NP, то мы сможем доказывать любые теоремы за полиномиальное время, тк это тоже np полная задача (решение как сертификат). Ну а если мы можем доказать или опровергнуть любой факт из математики, то это в корни изменит математику и весь мир.

      Конечно, это всё если нам крупно повезёт: константа будет не очень большой и степень у полинома)

      Как нам говорил препод, если доказать np = p, можно получить миллион долларов, а потом доказать оставшиеся задачи 1000летия с помощью того алгоритма и залутать оставшиеся 5 миллионов)


      1. haqreu
        17.02.2026 15:18

        Если окажется, что P=NP, то мы сможем доказывать любые теоремы за полиномиальное время

        Нет. Давайте вспомним хотя бы теорему Гёделя. Есть истинные утверждения, доказательств которых в принципе не существует (в рамках теории и т.п.)


  1. gybson_63
    17.02.2026 15:18

    Я может пропустил это в тексте, его много и он непростой. Но сама задача сравнения P и NP к какому классу относится?


    1. haqreu
      17.02.2026 15:18

      Вопрос "P = NP?" не является вычислительной задачей.


      1. KukarekusUltra
        17.02.2026 15:18

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

        Так что любая математическая задача, чисто формально, np полная задача)


        1. haqreu
          17.02.2026 15:18

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

          P/NP и тому подобное - это классы вычислительных задач.


  1. Tzimie
    17.02.2026 15:18

    И глубокий анализ РКН будут идеально блочить любой трафик!)


  1. ImagineTables
    17.02.2026 15:18

    А ещё есть вариант, что ни доказать, ни опровергнуть нельзя. И мы навсегда остаёмся в неведении.


  1. cmyser
    17.02.2026 15:18

    Транспорт без пробок уже придумали, для этого не нужно решать np


  1. Dr_Faksov
    17.02.2026 15:18

    Задача «распределить миллион автомобилей по дорогам мегаполиса за час так, чтобы минимизировать среднее время в пути» будет решена

    "Ох уж эти сказочники" (С). Если "среднее время в пути" 30 минут, то это значит что кто-то едет час, а кто-то минуту :). А почему час должен ехать именно я? Я поеду туда, где за минуту! И все поедут:)


  1. vanxant
    17.02.2026 15:18

    Окей, ломаем биткоин. Он построен на двойном SHA-256, который принимает на вход блоки по 512 бит (ну так устроен SHA-256). "Ломаем" значит находим для нужного нам хэша любой блок входных данных, который даст этот хэш (быстро ищем хэш-коллизию).

    Полиномиальный алгоритм имеет сложность минимум O(n^5). Просто потому что для O(n^4) есть формула, которую разумеется сразу же проверили.

    2*512^5 ~= 70 трлн. Предположим, скорость такая же, как у SHA-256, т.е. десятки миллионов хэшей на CPU и - в перспективе - гигахэши на ASIC (которые ещё надо разработать и сделать). Т.е. порядка года на компе, сутки на асиках, но через год. Не очень похоже на "взлом к понедельнику", да? И это в самых тепличных условиях.

    За это время ничего не мешает перейти скажем на 4-килобАйтные хэши (32768-битные), скорость хэширования на CPU замедлится линейно (в 64 раза), а вот скорость подбора упадёт в миллиард раз...


  1. StjarnornasFred
    17.02.2026 15:18

    Максимально непонятным языком написано.

    Что понимается под много раз упомянутым термином "полиномиальный", особенно "полиномиальное время"? На примерах, плз. Что, на сколько, восколько раз будет увеличиваться и при увеличении чего? В обычном многочлене n-ной степени имеет место полиномиальный рост значения при увеличении переменной?

    Что такое NP, понятным языком, плз? Я-то понял (не по этой статье, конечно), но через такие описания продраться невозможно.

    И наконец главное: каким же образом доказательство некоей гипотезы, т.е. констатация истинности утверждения, позволит обеспечить всю описанную матемагию? Если ни одного опровержения этого нет, то что мешает предположить, что P=NP, и по принципу "act as if" начать решать всё это? Вот если не получится решить - это, надо полагать, и будет опровержением... Или нет? Всё-таки что-то тут не то.


    1. mayorovp
      17.02.2026 15:18

      "Полиномиальный" означает зависимость вида y = p(x), где p - полином. Или многочлен, это полные синонимы.

      В обычном многочлене n-ной степени имеет место полиномиальный рост значения при увеличении переменной?

      Разумеется. А почему вы могли предположить обратное?


      1. StjarnornasFred
        17.02.2026 15:18

        Вот, спасибо, с примером стало понятно.


  1. Yami-no-Ryuu
    17.02.2026 15:18

    С какого перепуга автор утверждает, что проверка задачи коммивояжера P? И решение и проверка NP.

    Бот говорит, что классические NP задачи - это SAT, задача о рюкзаке, ну и факторизация.