NP повний або NP важкі проблеми в реальному житті


17

Чи є у кого приклади реального життя, коли вони регулярно вирішують складні проблеми НП або важкі завдання (за евристикою, чи переслідують субоптимальне рішення чи інше) у своїй роботі? Я знаю, що вони трапляються при плануванні, плануванні, проектуванні VLSI тощо, але я намагаюся скласти уявлення про основні галузі, де сьогодні працюють регулярно програмісти або інженери. Якби розробити досвід чи бібліотеку, скажімо, комбінаторну оптимізацію, де можна було б використовувати це як частину програми програмування?

Будь-які особисті рахунки?


Що ви маєте на увазі під «регулярно»
Конрад Фрікс,

@Conrad, ну, я здогадуюсь, його суб'єктивна ідея. Я б сказав, що більше 5-10% зусиль зосереджено на вирішенні завдань, повних або np-hard.
highBandWidth

Я вважаю, що програмування AI в іграх може бути повноцінним.
Майкл К

Існує багато проблем, пов'язаних з NP, там (планування та планування з обмеженими ресурсами, як правило, важко для NP). Однак комбінаторна оптимізація - це неправильний шлях. Вміючи генерувати 100! якнайшвидші комбінації набагато менш корисні, ніж можливість застосовувати доменну евристику.
Девід Торнлі

@David, я не мав на увазі створення комбінацій комбінаторною оптимізацією. Я мав на увазі клас проблем, як-от k-SAT або Проблема продавця подорожей тощо.
highBandWidth

Відповіді:


8

Деякі речі, які я можу придумати (більшість із яких я брав участь у більшій чи меншій мірі):

  • Середовища розробки для мов та компіляторів. Питання, такі як: чи створює ця граматика неоднозначну мову? (Ця проблема насправді не вирішена!)
  • Відновлення даних. Повторна збірка частково втрачених пакетів даних або відновлення фрагментованих файлів. (Факторна складність)
  • Безпека програмного забезпечення. Оцінка всіх можливих шляхів виконання за допомогою програмного забезпечення, щоб визначити, чи можна до нього віднести деяку спостережувану поведінку. (Зупинка проблеми?)
  • Логістика. Оптимізація використання транспорту на основі пакетів для транспортування, їх розміру та місця, куди їм потрібно їхати. (Принаймні, експоненціальна)

Є багато стандартних прикладів, таких як пошук найкоротшого маршруту, розклад медичних сестер тощо, але якщо ви займаєтеся комбінаторною оптимізацією, ви знаєте все про них :)


Так є програмісти, зайняті логістичними компаніями, які фактично присвячені вирішенню цих проблем оптимізації, або більшість цих операцій загалом вирішуються один раз і просто повторюються для більшості компаній? +1 для ряду прикладів. Ви / ви брали участь у будь-якому з цих питань?
highBandWidth

Перші два, для яких я написав інструменти, треті - над тим, над чим працюють колеги. Я б очікував, що великі логістичні компанії активно займаються дослідженнями в цій галузі, оскільки це може заощадити мільйони доларів, якщо за допомогою нового алгоритму вони досягнуть на кілька відсотків додаткових показників :)
Deckard

Я брав інтерв’ю на роль мандрівного продавця. У великій материнській компанії було приміщення, повне докторів наук, що загинули, сподіваючись отримати кілька десятих відсотків покращення їх маршрутизації. Що коштувало б їм декількох мільйонів доларів ... щодня. Отже, ці місця існують. Матеріали для планування та планування - це два великих напрямки - уявіть, у вас 1000 людей і фабрика, яка працює на дві або три зміни. Тепер заплануйте, щоб усі працювали на наступний місяць, маючи на увазі ці 200 правил та уподобань кожного ...

9

Я використовував імітаційний відпал з обмеженим часом, щоб вирішити мандрівний продавець, як проблема у виробництві сенсорних панелей. Кожна мілісекунда, яку ми могли б поголити за час циклу лазерного травлення кожної панелі, збільшила б пропускну здатність, використання та, таким чином, прибутковість машини, тому я доклав чимало зусиль для мінімізації мертвого часу (не трасування маршрутів) між шляхами писання (що очевидно, оптимізувати не вдалося).

Я використовував обмежений часом алгоритм, щоб подолати твердість NP, оскільки ми не могли дозволити собі ризик, що обчислення оптимізації може зайняти більше часу, ніж заощаджений більш оптимальним шляхом. Поки машина переміщувала панель з положення завантаження в положення, де лазерна головка знаходилася над найближчим кутом, у мене був час виконати деякі імітації. Алгоритм майже ніколи не закінчувався протягом декількох сотень мілісекунд після переміщення, але майже завжди повертав кращий шлях переписувача, ніж будь-яка з простих, не адаптованих моделей, які ми завжди використовували раніше (наприклад, спіральні або зміїні шляхи).


2
Круто. Але я думав, що кожна панель матиме один і той же візерунок, і ви просто вирішите проблему один раз, а не знову і знову для кожного віджета. Чому вам довелося це вирішувати кожен раз?
highBandWidth

2
Ідеальний візерунок був однаковим для кожної панелі, але механічне вирівнювання панелі, положення попередніх шарів у процесі та плитковий характер головки лазерного писання означали, що для кожної панелі необхідно було розраховувати динамічний набір підшарків. індивідуально, а потім оптимізується. Над цим було цікаво працювати, особливо зважаючи на часові обмеження.
Марк Бут

7

Я працюю (зараз, власне) над проблемою біоінформатики множинних локальних послідовностей ДНК. Сенс цього полягає в тому, що якщо багато послідовностей з генів з якоюсь загальною властивістю (подібний профіль експресії або той самий фактор транскрипції, що зв'язується в експерименті ChIP-чіпа) сильно узгоджуються в якийсь момент, то ви, мабуть, знайшли причину їх загальної майно. Потім знову мене цікавлять статистичні аспекти проблеми. Незважаючи на те, що це NP-важко, ви багато не втрачаєте, використовуючи евристику на практиці. Цікавою частиною проблеми, IMHO, є проблема співвідношення сигнал / шум.


1
чи використовуєте ви класичний комбінаторний / аі підхід чи статистичний. Певним чином, усі сучасні програми nlp, кластеризації, машинного навчання вирішують проблеми, що завершуються np, але зазвичай атакуються із статистичної точки зору. Це все ж цікаво та актуально. Це в наукових колах чи галузі?
highBandWidth

@highBandWidth: Мій підхід статистичний. Я в академії. Весь сенс дослідження, який я роблю, полягає в тому, що якщо ви ігноруєте статистичні проблеми і просто зосереджуєтесь на комбінаторній проблемі, погані речі трапляються.
dimimcha

3

Я не знаю, що означає NP / hard / hard, але я вважаю, що таке планування є автоплануванням .

У вас є план попиту на 90 днів вперед на 100 товарних артикулів: пиво! Артикул 100 товарів походить від:

  • є 10-15 видів сировини на основі 1-го рівня, їх заварюють у великих літрових банках тисячі, і це займає день;
  • після заварювання потрібно додати деякі матеріали (закваску?), і вона повинна відпочити протягом 10-15 днів, тоді у вас вийшло 15-20 видів матеріалів рівня 2;
  • нарешті, коли воно буде готове, слід додати деякі матеріали, це речі 3-го рівня, які називаються питним пивом, є куб. 30 видів пива;
  • пиво можна розлити по 3 dl, 5 dl, іноді воно отримує спеціальні necklacigng (рівень 4), тоді воно може бути упаковано у вигляді коробки 5x4, 6-pack (рівень 5).

Існують машинні "лінії" для кожної операції: від заварювання до упаковки. Машини можуть виконувати більше операцій, скажімо, деякі пакувальні машини можуть робити 6-пакетні та 3-пакувальні, а інші - лише 6-упаковані. Існують обмеження, наприклад, швидкість, або великий заварювальний чайник призначений для заварювання хв. 6000, макс, 8000 л пива, (але якщо тип пива легкий, то мінімальна - 5000 л, а макс. - 7000 л). І так далі, на кожному рівні.

Завдання: як я вже згадував, існує план попиту на 100 видів рівня 5 (розлиті в упаковку речі). Складіть оптимальний план виготовлення для всіх 5 рівнів, усіх машин. Мінімізуйте вимикачі машин (наприклад, розлив .5, .5, .5, .3, .3, .3 краще, ніж .3, .5, .3, .5, .3, .5, там менше swithc, менше мертвого часу для розливних машин). Приорізація замовника: деякі замовники вимагають поставляти пиво лише з більш ніж 50% терміну придатності. І т.д.

Виявіть вузькі місця (е-е), складіть альтернативні плани з додаванням до цих моментів неіснуючих машин, тоді найкращий віртуальний сценарій можна використовувати для пропонування придбання нових машин.

Це досить важко, чи я повинен вам сказати, як працює текстильна фабрика ?

(Особисте зауваження: Інтернет, банк та логістика є складними напрямками, але це дитячі іграшки порівняно з проблемами виготовлення.)

Відмова: цифри перекручені з міркувань безпеки, порядок дійсний.


Ви працюєте над чимось подібним чи інструментом для вирішення подібних питань для свого роботодавця?
highBandWidth

1
Що ж, виробництво - це логістика. Напевно важче, ніж фінанси в цьому відношенні. Але принаймні це стосується визначених задач, а не випадкових рівнянь і нечітко визначених порядків роботи!
Майкл К

1
Будь-який вид алгоритму планування з найкращим підходом ресурсів, ймовірно, еквівалентний проблемі з рюкзаком , яка є NP-завершеною.
Скотт Вітлок

Мій друг створив систему DP / SP в Excel + VB років тому. Він не містить автоматичного планування, програма занадто жирна для Excel. Отже, ми щойно створили спільну розширювану програму спільної роботи на базі MySQL / PHP / AJAX (див.: Потік даних - ака. Програмування на основі потоку - підхід), а також прийняли логіку biz із XLS-версії (друг) . Ми також реалізували автоматичне планування (друг). Була шалена ідея написати електронну таблицю, але це працює. Найкраща частина: XLS-> SQL-комутатор дещо чудовий! Ми можемо зробити що-небудь із даними (наприклад, autoplan), використовуючи будь-який інструмент / платформу (PHP, Java, що ми хочемо).
ern0

@ ern0, NP-завершений / NP-жорсткий, в основному, стосується того, як небагато коротких скорочень ви навіть можете припустити, що зможете скористатися замість того, щоб пробувати всі можливості по черзі. Теоретики витрачають багато зусиль, розбираючи скорочення, які, наприклад, говорять про те, що якщо ми знаємо, що шлях ABC завжди буде довше, ніж AC, ми можемо зробити це швидше і виявиться в межах 50% від оптимального значення. І т.д.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.