Простыми словами
Что же такое NP-полные задачи?
О задачах из класса NP мы уже поговорили, но оказывается, среди них есть особенные. И таких особенных тоже не так уж мало.
NP-полные задачи — это класс задач, лежащих в классе NP, к которым сводятся все задачи класса NP за полиномиальное время. То есть, если найдется быстрый алгоритм (полиномиальный) для решения любой из NP-полных задач, то и любая задача из класса NP тоже может быть решена быстро!
Вот сейчас я прочитала в одном месте удивительную мысль. Не могу не процитировать:
Зачем программисту знать о NP-полных задачах? Если для некоторой задачи удается доказать ее NP-полноту, есть основания считать ее практически неразрешимой. В этом случае лучше потратить время на построение приближенного алгоритма, чем продолжать искать быстрый алгоритм, решающий ее точно.
(с)
"В принципе", всё так и есть. Но проблема P=(?)NP так и висит в воздухе. И доказать неравенство тоже ведь никто не может, не только равенство.
О проблеме равенства классов P и NP, надеюсь, я напишу в следующей записи (и тем самым завершу этот цикл), а сейчас перечислю NP-полные задачи (не все, конечно) — для иллюстрации того, что их ведь достаточно много! А стоит решить "быстро" одну, и к ее решению можно будет свести все остальные! Вот где простор для деятельности!
Первое, и основное, что надо знать: к NP-полным задачам принадлежит задача о выполнимости булевых формул.
Я и в прошлый раз, перечисляя задачи класса NP, начинала список именно ею, и в этот раз опять. Сейчас расскажу, почему.
В прошлый раз я описывала эту задачу очень и очень коротко. Потому что всё-таки не представляю, как объяснить, что такое булевы формулы и их выполнимость, на пальцах.
Но делать нечего: похоже, без этого не обойтись.
Небольшой экскурс в теорию и историю
История
Что же такое булева формула?
Булева формула — это формула логики высказываний. Логика высказываний — самая простая из всех логик. Говорят еще, что это классическая логика нулевого порядка.
Про нее я даже могу рассказать, не прибегая ни к каким ухищрениям.
Остановимся на основном определении. "Высказывание". Что это такое?
Под высказыванием понимают любое повествовательное предложение, о котором можно сказать, истинно оно или ложно.
Например (с этого я каждый раз начинаю первое занятие по матлогике) какие из перечисленных предложений являются высказываниями?
0. Который час?
1. 2*2=4
2. 2*2=5
3. Лондон — столица Парижа.
4. Включите свет.
5. 2*х=8
6. a*b = b*a для любых a и b
Ответ:
Продолжение теории
О задачах из класса NP мы уже поговорили, но оказывается, среди них есть особенные. И таких особенных тоже не так уж мало.
NP-полные задачи — это класс задач, лежащих в классе NP, к которым сводятся все задачи класса NP за полиномиальное время. То есть, если найдется быстрый алгоритм (полиномиальный) для решения любой из NP-полных задач, то и любая задача из класса NP тоже может быть решена быстро!
Вот сейчас я прочитала в одном месте удивительную мысль. Не могу не процитировать:
Зачем программисту знать о NP-полных задачах? Если для некоторой задачи удается доказать ее NP-полноту, есть основания считать ее практически неразрешимой. В этом случае лучше потратить время на построение приближенного алгоритма, чем продолжать искать быстрый алгоритм, решающий ее точно.
(с)
"В принципе", всё так и есть. Но проблема P=(?)NP так и висит в воздухе. И доказать неравенство тоже ведь никто не может, не только равенство.
О проблеме равенства классов P и NP, надеюсь, я напишу в следующей записи (и тем самым завершу этот цикл), а сейчас перечислю NP-полные задачи (не все, конечно) — для иллюстрации того, что их ведь достаточно много! А стоит решить "быстро" одну, и к ее решению можно будет свести все остальные! Вот где простор для деятельности!
Первое, и основное, что надо знать: к NP-полным задачам принадлежит задача о выполнимости булевых формул.
Я и в прошлый раз, перечисляя задачи класса NP, начинала список именно ею, и в этот раз опять. Сейчас расскажу, почему.
В прошлый раз я описывала эту задачу очень и очень коротко. Потому что всё-таки не представляю, как объяснить, что такое булевы формулы и их выполнимость, на пальцах.
Но делать нечего: похоже, без этого не обойтись.
Небольшой экскурс в теорию и историю
История
Что же такое булева формула?
Булева формула — это формула логики высказываний. Логика высказываний — самая простая из всех логик. Говорят еще, что это классическая логика нулевого порядка.
Про нее я даже могу рассказать, не прибегая ни к каким ухищрениям.
Остановимся на основном определении. "Высказывание". Что это такое?
Под высказыванием понимают любое повествовательное предложение, о котором можно сказать, истинно оно или ложно.
Например (с этого я каждый раз начинаю первое занятие по матлогике) какие из перечисленных предложений являются высказываниями?
0. Который час?
1. 2*2=4
2. 2*2=5
3. Лондон — столица Парижа.
4. Включите свет.
5. 2*х=8
6. a*b = b*a для любых a и b
Ответ:
Продолжение теории
А одной нельзя? (что-то мне такое припоминается то ли про стрелку Пирса, то ли штрих Шеффера.. или я ошибаюсь?)
ммммм... Не помню...
А с отрицанием как быть? Они ж бинарные операции.
UPD. Ха!
Кстати да!
И штрих Шеффера и стрелка Пирса могут заменить отрицание!
Здорово!
clique-problem.narod.ru
милости прошу: сообщество открыто всем. Объясните полнее и понятнее
Можно обойтись двумя операциями. Варианты пар -
1 дизъюнкция и отрицание,
2 конъюнкция и отрицание,
3 конъюнкция и сумма по модулю 2,
4 дизъюнкция и сумма по модулю 2.
В случаях 3 и 4 отрицание заменяется сложением по модулю 2 с единицей. Без отрицания никуда.
Может быть понятие булевых формул проще показать на техническом устройстве?
Есть некий семисегментный индикатор. Каждый сегмент может находиться в 2-х состояниях (светиться или не светиться). Нужно, чтобы десятичное число от 0 до 9, представленное комбинацией нулей и елиниц (4-х булевых аргументов), могло быть представлено с помощью семисегментного индикатора в привычном нам виде.
Для каждого сегмента нужно построить булеву формулу от 4-х аргументов. Каждая булева формула - конструкция, которую согласно несложным правилам можно собрать из элементарных деталей (нарпимер конъюнкторов и инверторов, реализующих конъюнкцию и отрицание), реализующих булевы операции . Чем не детский конструктор? Вполне посильная задача для пытливых умов детского сада и младших классов.
Без отрицания никуда.
Однако же, без отрицания всё же "куда":
ru.wikipedia.org/wiki/Стрелка_Пирса
Насчет "технического устройства" — для технарей это, конечно, более понятно)) Но для гуманитариев, боюсь, нет...
Но вообще, это дело вкуса, как объяснять. Проблема в том, что при "дистанционном объяснении" обратная связь практически отсутствует, а без нее трудно...