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