Это связано с поиском перекрывающихся интервалов. Я знаю, как это сделать, учитывая список интервалов (деревья интервалов). У меня есть список интервалов. Например,
[2,6], [7,11] [1,3], [5,10], [11,13] [2,5], [6,8]
Результат для этого должен быть
[2,3], [7,8]
Что мне нужно сделать, так это найти список интервалов, общих для всех списков.
Я считаю эту проблему похожей на объединение n
списков. Проблема в том, что я не могу применить попарное объединение списков. Применение этого метода может привести к потере перекрывающихся интервалов. Поэтому мне нужно объединить все списки вместе, рассматривая их все одновременно (а не попарно).
Я могу использовать деревья интервалов. Вставка первых интервалов из каждого списка в дерево интервалов и поиск перекрытия. Удаление самого слабого интервала из дерева и вставка следующего интервала из одного из списков. Я еще не совсем понял, как я могу использовать этот метод, но, похоже, это будет слишком дорого.
Есть ли эффективный алгоритм для поиска перекрывающихся интервалов из списка списка интервалов.?
Дополнительная информация: интервалы в списке отсортированы. Они не перекрываются и образуют последовательность.