Нещодавно я пережив болісний цікавий досвід неформального пояснення поняття обчислювальної складності молодому талановитому програмісту-самоучку, який ніколи раніше не брав офіційного курсу алгоритмів чи складності. Не дивно, що багато понять спочатку здавалися дивними, але мали сенс деякі приклади (PTIME, нерозбірливість, непридатність) , а інші здаються більш природними (класифікація проблеми через скорочення, час та простір як ресурси, асимптотичний аналіз) . Все йшло чудово, поки я випадково не визнав, що САТ може бути вирішена. ефективно * на практиці ... І просто так, я їх втратив. Неважливо, наскільки переконливо я намагався сперечатися з теорією, хлопець був переконаний, що це все математика штучного лайна, яку він не повинен турбувати. Добре...
¯ \ _ (ツ) _ / ¯
Ні, мене не розбило серце, і я не дуже хвилювався тим, що він думав, це не сенс у цьому питанні. Під час нашої розмови я думав про інше питання,
Скільки я насправді знаю про проблеми, які теоретично не можуть бути вирішені (суперполіноміальна часова складність), але практично вирішима (через евристику, наближення, SAT-рішення та ін.)?
Я зрозумів, не багато. Я знаю, що є кілька дуже ефективних SAT-вирішувачів, які ефективно вирішують величезні екземпляри, що Simplex чудово працює на практиці і, можливо, ще кілька проблем або алгоритмів. Чи можете ви допомогти мені намалювати більш повну картину? Які відомі проблеми чи навіть класи проблем відносяться до цієї категорії?
TL; DR: Які проблеми на практиці можна вирішити контр-інтуїтивно? Чи є (оновлений) ресурс, щоб прочитати більше? Чи є у нас характеристика для них? І, нарешті, як загальне питання для обговорення, чи не варто?
РЕДАКТИКА №1: Намагаючись відповісти на моє останнє обговоренне питання щодо такої характеристики , мене познайомили з плавним аналізом алгоритмів, концепцією, яку запровадили Даніель Спілман та Шан-Хуа Тенг у [1], яка постійно інтерполює між найгіршими ситуаціями та аналіз середніх випадків алгоритмів. Це не точно описана вище характеристика, але вона фіксує ту саму концепцію, і мені це було цікаво.
[1] Спілман, Даніель А. та Шан-Хуа Тен. "Згладжений аналіз алгоритмів: чому алгоритм симплексу зазвичай займає поліном час." Журнал ОСББ (JACM) 51, вип . 3 (2004): 385-463.