URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8165
[ Назад ]

Исходное сообщение
"Быстрое разделение ip v4 на подсети"

Отправлено Pahanivo , 19-Мрт-09 16:58 
Задачко.
Есть список ip сетей (большой список), сети внутри могут пересекатся (overlaping).
Каждая сеть в списке имеет id (номер или псевдоним), те некий атрибут типа трафика из этой сети (чтобы в дальнейше скажем при выводе ip обозначить его принадлежность).
Напр: 192.168/16 (id internal), 195.58.1.1/24 (id external) и тд
Нужно быстро устанавливать принадлежность конкретного ip к сетям из списка.
В силу того что шибко не опытный програмер вижу два пути:
1) тупо каждый раз с помошью маски производить поиск по всему списку - но это тупо, ибо с ростом списка подсетей скорость поиска падает очень сильно.
2) бинарное дерево (что я собственно уже реализовал), глубина 32 (бита), те всегда максимум 32 проверки при любом количестве подсетей и легко реализуестя обработка перекрывающихся подсетей.

мож кто подскажет еще какие варианты?


Содержание

Сообщения в этом обсуждении
"Быстрое разделение ip v4 на подсети"
Отправлено Аноним , 19-Мрт-09 22:22 
>2) бинарное дерево (что я собственно уже реализовал), глубина 32 (бита), те
>всегда максимум 32 проверки при любом количестве подсетей и легко реализуестя
>обработка перекрывающихся подсетей.

Это _уже_ O(1), асимптотически быстрее сделать нельзя. Не заморачивайся.