The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Быстрое разделение 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 на подсети, !*! Аноним, 22:22 , 19-Мрт-09 (1)
    >2) бинарное дерево (что я собственно уже реализовал), глубина 32 (бита), те
    >всегда максимум 32 проверки при любом количестве подсетей и легко реализуестя
    >обработка перекрывающихся подсетей.

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру