|
0 / 0 / 0
Регистрация: 18.09.2020
Сообщений: 10
|
|
Задача тысячелетия - Равенство классов P и NP19.09.2020, 09:32. Показов 5533. Ответов 47
Метки нет (Все метки)
Равенство классов P и NP.
Равны ли классы сложности P и NP? Классом P называют множество задач, которые компьютер может решить «быстро» (то есть за полиномиальное время). К ним относят базовые арифметические действия, сортировку списков, поиск по таблице с данными. Класс NP — это задачи, правильность ответа на которые можно быстро проверить. Например, задача о сумме. Предположим, что у вас есть монеты номиналом 2, 3, 5, 6 и 7 рублей, по одной каждого номинала, и вы хотите без сдачи оплатить покупку стоимостью 21 рубль. Можно ли набрать из данных монет сумму, равную 21? В этой задаче для получения ответа нужно перебрать разные варианты, а чтобы доказать, что решения нет, - вообще перебрать все возможные варианты. Если количество монет увеличить на несколько порядков, решение выглядит совсем непрактичным. При этом результат проверить легко — просто сложить номиналы всех монет. Суть «задачи тысячелетия» формулируется так: равны ли классы P и NP? Если легко проверить правильность решения задачи, может ли быть так же легко решить эту задачу? Большинство специалистов уверены, что ответ отрицательный. Однако доказать этого пока никто не смог. Если же вдруг окажется, что P = NP, то человечество ждет переворот в криптографии. Это был отрывок из статьи для понимания задачи. Я хочу уточнить: если я найду алгоритм, при помощи которого смогу найти все варианты получения суммы 21, то это значит, что я решил задачу? Можно ли использовать алгоритм, написанный на каком-нибудь языке программирования, ну например на языке Pascal, или я должен использовать для решения этой задачи только формулы и т.д. из математики?
0
|
|
| 19.09.2020, 09:32 | |
|
Ответы с готовыми решениями:
47
Стройка тысячелетия Алгоритмы тысячелетия I5-4670K vs i5-6600K Выбор тысячелетия) |
|
|
|||
| 19.09.2020, 10:41 | |||
Сообщение было отмечено aleksey_konstr как решение
Решениенахождения суммы будет O(n) -- а вот поиск набора в худшем случае O(n!)
1
|
|||
|
698 / 574 / 75
Регистрация: 20.09.2014
Сообщений: 3,726
|
|
| 20.09.2020, 10:12 | |
Сообщение было отмечено aleksey_konstr как решение
Решение
Ваше заблуждение заключается в том, что нужно работать не с конкретными числами 2, 3, 5, 6, 7 и 21, а с числами m1, m2, ..., mk и N, т.е. решить задачу в общем виде.
Для частных случаев возможны простые решения, например, взять 30 монет с номиналом 1 рубль и из них сложить 21 рубль. Вот вам и P-алгоритм)))
0
|
|
|
|
|
| 20.09.2020, 10:41 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 18.09.2020
Сообщений: 10
|
|
| 20.09.2020, 17:37 [ТС] | |
|
Да, теперь я понял - если моя программа найдёт набор монет, которые в сумме будут давать нужное число и это будет сделано быстрее, чем человек успеет посчитать сумму этих монет, значит я смог решить эту задачу. Большое спасибо.
0
|
|
|
698 / 574 / 75
Регистрация: 20.09.2014
Сообщений: 3,726
|
|
| 21.09.2020, 18:14 | |
|
Не решайте задачу тысячелетия, пожалуйста!)))
0
|
|
|
Заблокирован
|
||
| 22.09.2020, 10:57 | ||
|
21 - (2 + 3 + 5+ 6 + 7) = - 2 надо исключить двойку, чтобы набрать без сдачи 21 - (1 + 3 + 5 + 6) = -1 исключить единицу. 21 − (1 + 4 + 5 + 6 + 7) = -2 Такого числа в списке слагаемых нет, что что исключать нечего и решения не имеет. 7 - (1+2+4+5) = -5 7 - (2+2+4+5) = -6 - решения не имеет.
0
|
||
|
Заблокирован
|
||
| 22.09.2020, 11:55 | ||
|
если измять 10 и 11 из этого списка, то выйдет 115. Но это зависит от числа - четное или нечетное и есть ли единицы среди слагаемых. нужно искать и вычленять закономерности
0
|
||
|
Заблокирован
|
||
| 22.09.2020, 12:04 | ||
|
а это вычленение закономерностей, которое от перебора как раз спасает.
0
|
||
|
Заблокирован
|
|||
| 22.09.2020, 12:14 | |||
|
но если мы сделаем 25 - (2+2+5+19) = -3 Очевидно, что мы тройку никак убрать не можем. однако если 24 - (2+2+5+19) = -4 то уже можем. видим зависимость от четности числа и возвращаемого значения. Добавлено через 53 секунды а дальше уже дальше думать)
0
|
|||
|
Заблокирован
|
|
| 22.09.2020, 12:18 | |
|
0
|
|
|
Модератор
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,886
|
||
| 22.09.2020, 12:23 | ||
|
Можно ли набрать из монет {2, 3, 5, 6, 7} сумму, равную 21? Можно ли набрать из монет {2, 3, 5, 6, 7} сумму, равную (2 + 3 + 5 + 6 + 7 - 21)? Обе решаются перебором, но для одной из них перебор может быть существенно меньше из-за быстрого отсечения. Можно ли набрать 2 из {2, 3, 5, 6, 7}? Как только сумма больше 2, вариант отсекается. То есть, отсекается почти всё. Повезло в данном конкретном случае.
0
|
||
|
Заблокирован
|
|||
| 22.09.2020, 12:29 | |||
|
Добавлено через 3 минуты 21 + (2 + 3 + 5 + 6 + 7 − 21) = 23
0
|
|||
|
Модератор
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,886
|
||
| 22.09.2020, 12:30 | ||
|
Когда сумма, которую надо набрать близка к 0 или к сумме всех имеющихся монет, то количество вариантов, которые нужно перебрать и проверить, сильно уменьшается. Когда мы говорим о "задаче тысячелетия", нас интересует решение в общем виде - для любых входных данных.
0
|
||
|
Заблокирован
|
|||
| 22.09.2020, 12:33 | |||
|
Добавлено через 1 минуту оно не всегда работает в одном ключе, если среди слагаемых есть цифры больше десятки, но действие одно.
0
|
|||
| 22.09.2020, 12:33 | |
|
Помогаю со студенческими работами здесь
20
Докажите равенство треугольников APD и AKB, и равенство углов BOP и BAD Очень нужно подсчитать определитель на равенство/не равенство нулю
Задача с применением классов Задача на использование классов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|