Створення цікавих проблем комбінаторної оптимізації


9

Я викладаю курс з метаевристики і мені потрібно створити цікаві екземпляри класичних комбінаторних проблем для терміна проект. Давайте зосередимось на TSP. Ми вирішуємо графіки розміром і більше. Я, звичайно, спробував створити графік із матрицею витрат зі значеннями, взятіми від випадкової , і з’ясував, що (як очікувалося) гістограма для вартості шляху (намальована вибіркою безлічі випадкових шляхів) має дуже вузький нормальний розподіл ( становить але - близько ). Це означає, на мою думку, що проблема дуже проста, оскільки більшість випадкових шляхів будуть нижче середнього, а шлях мінімальної вартості дуже близький до випадкового шляху.200U(0,1)μ 100σ4

Тому я спробував наступний підхід: Після генерації -матриці зробіть довгу випадкову прогулянку навколо графіка і випадковим чином (Бернуллі з ) подвоїти або вдвічі зменшити значення краю. Це має тенденцію до зниження всіх значень, зрештою досягаючи нуля, але якщо я вживаю лише потрібну кількість кроків, я можу отримати розподіл з навколо та навколо .U(0,1)p=0.5μ2σ1

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


3
Шукайте бібліотеки орієнтирів TSP, як це вивчається в АБО (наприклад, пошук робіт на TSP від ​​Applegate et al., Наприклад, тут )?
Ніл Янг

2
Є TSPLIB з багатьма екземплярами.
adrianN

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

пов’язана публікація: cstheory.stackexchange.com/questions/739/…
Ніл Янг

1
@Alejandro, Проблема прихованої кліки може бути прикладом того, що ви шукаєте. Крім того, ви можете шукати дослідження щодо того, які випадкові випадки задоволеності вважаються важкими.
Ніл Янг

Відповіді:


6

Один загальний підхід до створення більш важких випадків полягає в наступному:

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

Наприклад, для TSP ви можете зробити щось на кшталт наступного. Створіть випадковий проблемний екземпляр, вибравши випадкову матрицю витрат . Потім налаштуйте проблемний примірник, щоб приховати в ньому набагато краще рішення: випадковим чином виберіть тур, який відвідує кожну вершину рівно один раз, і зменшіть ваги ребер у цій екскурсії (наприклад, генеруйте її випадковим чином з де ; зменшити існуючу вагу; або змінити існуючий край з деякою фіксованою ймовірністю). Ця процедура коригування гарантує, що оптимальним рішенням буде з великою часткою ймовірності той спеціальний тур, який ви обрали. Якщо вам пощастить і ви вибрали розумне вбудовування, також буде не так просто розпізнати, де ви сховали спеціальне рішення.U(0,1)U(0,c)c<1

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

Отримані проблеми можуть бути важкими , але чи будуть вони цікавими з будь-якої практичної точки зору? Не знаю. Биє мене. Вони виглядають досить штучно для мене, але що я знаю?

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


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

3

підхід, який часто дає вам високий контроль над природою рішень, - це перетворення з однієї НП повної проблеми в іншу. тепер ви визначаєте "цікаве" у своєму питанні статистично, але інший акуратний підхід полягає у використанні класичних задач на місцях. мій фаворит - факторинг / САТ. тривіально знайти або "гладкі" числа з великою кількістю факторів, або прості числа, які мають лише два "коефіцієнта" (один і простий). створити екземпляр SAT для вирішення факторингу, а рішення - це фактори (фактично перестановки факторів, але також які важко порахувати достроково).

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

то, можливо, перетворіть на вашу проблему, в цьому випадку TSP. щоб заповнити цю відповідь, було б непогано мати пряме перетворення SAT в TSP, думаю, вони там, але я не знайомий з ними. однак, ось декілька посилань на факторинг до SAT у цьому запитанні: зведення задачі на ціле множення до повної задачі NP

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


1
Мені подобається підхід до перетворення, хоча ви не надаєте подальших посилань, специфічно пов’язаних з TSP, але все одно дякую за ідею, я вивчу її більш глибоко. Ви отримали мій +1.
Алехандро Піад

1
@alejandro thx ок ось ось посилання на це. див. наприклад, починаючи з слайду 28 тут [бакалаврський клас!], CMSC 451: SAT, розфарбовування, Гамільтонівський цикл, TSP Слайди Автор: Карл Кінгсфорд . перетворення SAT → гамільтонівський цикл (TSP). можуть бути ефективніші (менш накладні) підходи до перетворення або з іншими спеціалізованими аспектами в літературі, якщо саме цього потрібно. сподіваюся почути далі про вашу роботу, можливо, відповідь тут або в моєму блозі, якщо вам подобається
vzn

1
Я перевірив pdf, дуже високий рівень, але досить зрозумілий. Хоча на даний момент я отримав те, що мені потрібно з відповіддю @DW, ваш підхід мені здається дуже цікавим. Мені доведеться спробувати це самостійно. Раніше я бачив зменшення (на бакалаврському рівні складності), але не замислювався над реальною реалізацією його спеціально для створення важких примірників. Я довго цікавлюсь оптимізацією та метагевристикою, і одна з моїх зацікавлених областей - це створення цікавих проблем, що орієнтуються. BTW, щойно перевірив ваш блог, точно повернеться !!!
Алехандро Піад
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.