Постановка задачиПоиск "максимальный" перекрытия интервала пары в O (NLog (п))
вход набор п интервалов; {[s_1, t_1], [s_2, t_2], ..., [s_n, t_n]}.
Выход пара интервалов; {[s_i, t_i], [s_j, t_j]}, с максимумом перекрываются между всеми парами интервалов.
Пример
входные интервалы: {[1, 10], [2, 6], [3,15], [5, 9]}
-> Есть возможно 6 интервал пар. Среди этих пар, [1,10] & [3,15] имеет наибольшее возможное перекрытие 7.
выход: {[1,10], [3,15]}
Наивный алгоритм будет быть методом грубой силы, где все n интервалов сравниваются друг с другом, а отслеживается текущее максимальное значение перекрытия. Сложность времени для этого случая была бы O (n^2).
Я был в состоянии найти много процедур, касающихся интервальных дерев, максимального количества перекрывающихся интервалов и максимального набора непересекающихся интервалов, но ничего по этой проблеме. Возможно, я смогу использовать идеи, приведенные в приведенных выше алгоритмах, но я не смог придумать их.
Я потратил много часов, пытаясь найти хорошее решение, но я думаю, что мне нужна помощь на этом этапе.
Любые предложения помогут!
Эта проблема может быть решена с помощью алгоритма линии развертки в 'O (nlogn)'. – Tempux