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