Наскільки поширені алгоритми експоненціального часового загального випадку у виробничому програмному забезпеченні?


11

Я знаю, що загалом слід уникати експоненціальних алгоритмів часу, але іноді вони необхідні. Випадок, що є торговим продавцем. Наскільки поширені такі алгоритми у виробничому програмному забезпеченні? Ці випадки зазвичай необхідні або є результатом поспішних робіт? Я розумію, що багато хто може бути вирішений з хорошою евристикою. Що зазвичай робиться з тими, хто не може?


1
Моє враження полягає в тому, що для таких речей, як проблема продавця подорожей, один викидає алгоритм експоненціального часу, а натомість йде з набагато кращою евристичністю (у випадку мандрівного продавця вони непогані)
soandos

Багато проблем вирішуються за допомогою "експоненціальних" алгоритмів. (TSP, CDS, ILP тощо) Просто експоненціальні алгоритми мають хорошу евристику, тому вони розумно працюють з великою кількістю реальних даних. Можливо, краще питання: "Наскільки поширені алгоритми експоненціального часу загального випадку у виробничому програмному забезпеченні?"
користувач541686

Коригував питання
Світовий інженер

Продавець подорожей є n !, не експоненціальним.
користувач281377

1
@ user281377: Це також в O (n ^ 2 2 ^ n), так що так, це експоненціальна проблема. Це також зрозуміло, оскільки його можна відобразити в SAT в полі час, який можна вирішити за 2 ^ n часу - що працює для всіх проблем NP.
Рафаель

Відповіді:


7

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

Ті проблеми з верфіфікацією, які насправді піддаються обчисленню (бар'єр №1), часто є EXPTIME - жорсткі, у більш щасливих випадках ви отримуєте неповні проблеми PSPACE (бар'єр №2). Обидва класи (підозрювані) є складнішими, ніж проблеми, що завершуються NP, які порівняно прості. Двозначні експоненціальні проблеми також легко отримуються.

У цих випадках евристика (у сенсі кінцевого результату) не скорочує її, оскільки потрібні певні результати; тому вам потрібні великі машини та час. Є евристика (у сенсі альтернативного вибору), яка часто призводить до скорочення часу виконання (тобто розумне дослідження простору пошуку під час пошуку станів помилок), але, в гіршому випадку, все, що ви можете зробити. Або ви можете зробити перевірку ручкою та папером і перевірити її машинами , що обчислювально простіше.



5

Перекладачі мови програмування гірші за експоненціальний час (за тривалістю їх введення, тобто за тривалістю програми, яку вони інтерпретують), і вони досить поширені. Інший приклад - автоматичне доведення теореми / розв’язання обмежень / рішення сіт / лінійне програмування цілих чисел. І ще один приклад - символічна диференціація, як це реалізовано, наприклад, Maple / Mathematica (хоча можливо символічну диференціацію робити в лінійний час, якщо вам дозволяється ділити підвираження між вузлами).


1

Дозвольте взяти приклад проблеми продавця подорожей. Я працював над цим кілька разів.

Є кілька разів, коли я був у команді, яка писала рішення для проблеми продавця подорожі, але з деякими іншими параметрами. Наприклад, це може бути магазин з парком техніків та інженерів, кожен з яких має унікальний набір навичок. Цільові пункти виходять щодня у вигляді запитів на обслуговування. Всі програми знаходяться у виробництві, хоча вони зазнали модифікацій та обслуговування з моменту їх написання.

Ось як вони працювали. Кожен інженер щодня отримуватиме список речей, які можна обслуговувати на портативних пристроях. Після завершення кожного сервісного завдання вони повинні закрити справу. Випущені справи приєднуються до справ, які мають бути заплановані на наступний день із дещо більшим пріоритетом, оскільки до цього часу замовник висловив би деяке невдоволення. Існував великий набір причин, через які інженер не брав участь у справі. Проблеми з дорожнім рухом були найбільш поширеними.

Наскільки вони поширені? Принаймні настільки ж поширені, як кількість запитів на обслуговування після продажу, що надходять від клієнтів. Наприклад, без обслуговування після продажу, утримати клієнтів буде важко, а завоювати нових буде складніше.

З багатьма веб-магазинами, такими як Amazon та інші книжкові магазини та інші подібні магазини, які працюють у бізнесі, я думаю, що продавець подорожей є більш поширеним, ніж раніше. Крім того, може бути багато варіантів проблеми мандрівного продавця, які викладаються в підручниках.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.