У програмі Bundeswettberweb Infomatik 2010/2011 виникла цікава проблема:
Для фіксованого знайдіть мінімальний та карту , щоб не було потрійної з .k φ : { ( i , j ) | i ≤ j ≤ n } → { 1 , … , k } ( i , j ) , ( i + l , j ) , ( i + l , j + l ) φ ( i , j ) = φ ( i + l ,
А саме ми шукаємо мінімальну кількість кольорів для трикутника, щоб не було рівномірного кольорового рівностороннього підрязка (на наступному малюнку показано невірне забарвлення, оскільки виділені вершини утворюють такий рівнобічний рівносторонній підрядок):
Насправді вони попросили досить малу для і у рішенні (написаному німецькою мовою) вони відзначили, що жадібний підхід дає забарвлення з кольорів для , яку можна зменшити до шляхом рандомізації кольорів до а знайдено дійсне рішення.n = 1000 27 n = 1000 15
Мене цікавлять точні рішення (для менших ). У рішенні йдеться про те, що для зворотного відстеження виходить, що кольорів достатньо для а достатньо для , де зворотне відстеження вже насправді повільне для .2 n ∈ { 2 , 3 , 4 } 3 5 ≤ n ≤ 17 n = 17
Спочатку я спробував використати рецептуру ILP та Gurobi, щоб отримати певні результати для , але це було занадто повільно (вже для ). Тоді я використовував розв'язувач SAT , тому що я помітив, що існує прямого формулювання в якості екземпляра SAT.n = 17
З таким підходом я зміг створити рішення з кольорами для протягом хвилин:n = 18 10
Але вирішити, чи вистачить кольорів для це вже занадто повільно. Чи існує якийсь інший підхід, який дає точні рішення для ? Звичайно, не можна очікувати поліноміального алгоритму.n = 19 n ≥ 19