Моя математика-fu терпит неудачу! Мне нужен эффективный способ сокращения диапазонов сети до надмножеств, например. если входной список, который я из IP диапазонов:нужен алгоритм для свертывания диапазонов netblock в списки диапазонов надмножеств
- 1.1.1.1 в 2.2.2.5
- 1.1.1.2 в 2.2.2.4
- 10.5.5.5 155.5.5.5 к
- 10.5.5.6 до 10,5. 5,7
Я хочу, чтобы возвращать следующие диапазоны:
- 1.1.1.1 до 2.2.2.5
- 10.5.5.5 155.5.5.5 на
Примечание: входные списки не упорядочены (хотя они могут быть?). Наивный способ сделать это - проверить каждый диапазон в списке, чтобы увидеть, является ли диапазон ввода x подмножеством, и если да, НЕ вставляйте диапазон x. Однако всякий раз, когда вы вставляете новый диапазон, это может быть надмножество существующих диапазонов, поэтому вам нужно проверить существующие диапазоны, чтобы увидеть, могут ли они быть свернуты (например, удалены из моего списка).
Являются ли диапазоны непересекающимися? Если нет, как вы хотите, чтобы ваш алгоритм обрабатывал перекрывающиеся диапазоны, многие из которых могут быть частью поддиапазона? – HenryR 2008-09-29 16:52:50
В чем проблема с использованием алгоритма «наивный», который вы описываете? Мне кажется, это прекрасно ... – 2008-09-29 16:56:07
Отличный вопрос! Пользователи могут вводить любые диапазоны, которые они хотят, поэтому не гарантируется, что они будут несовместимы. Было бы неплохо, если бы все смежные диапазоны могли быть рухнуты в один. – 2008-09-29 16:57:57