это вопрос к гуру алгоритмов: -)
Пусть S
будет набором интервалов натуральных чисел, которые могут перекрываться, и b
размером блока. Предположим, что для каждого интервала диапазон строго меньше, чем b
.
Я хочу найти минимальный набор интервалов размером b
(назовем его M
), чтобы все интервалы в S
содержались в интервалах M
.
Тривиальный пример:
S = {[1..4], [2..7], [3..5], [8..15], [9..13]}
b = 10
M = {[1..10], [8..18]}
// so ([1..4], [2..7], [3..5]) are inside [1..10] and ([8..15], [9..13]) are inside [8..18]
Я думаю, что жадный алгоритм может работать не всегда, поэтому, если кто-нибудь знает решение этой проблемы (или аналогичное решение, которое можно преобразовать в), это было бы здорово.
Спасибо!
Обновление Я немного больше думал об этом, и, возможно, моя первая интуиция была неправильной, и жадный алгоритм - только способ решить эту проблему, поскольку в конце концов все интервалы должны быть покрытым, и это не имело бы никакого значения, как выбираются супер-интервалы ... Должен ли я удалить вопрос или, может быть, кто-то может это утверждать?