У меня есть сетка некоторой ширины и высоты, где каждая ячейка может иметь три возможных значения (представленные как белый, зеленый и красный на этой иллюстрации):
(источник: corexii.com)
Вы можете выбрать любое количество зеленых ячеек (обозначенных синим цветом на следующей иллюстрации), которое покроет все красные ячейки (отмеченные желтым цветом) в предварительно определенномквадратном радиусе. (здесь 2) вокруг выбранных ячеек:
(источник: corexii.com)
Цель:
У кого-нибудь есть идеи для алгоритма?
Я просматриваю множество теорий, но больше всего меня интересует приближение, позволяющее сделать это быстро, а не точно. Быстрый разумный результат предпочтительнее вычисления оптимального в течение всего дня.
(На рисунках выше может быть представлено наиболее нормальное распределение этих ячеек, но не следует предполагать, что они похожи на все возможные распределения.)