Какая альтернатива растровому изображению для проверки сетевого подключения? - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть набор узлов, каждый из которых идентифицируется уникальным целым числом (UID), которые расположены в одной или нескольких сетях.Каждая сеть имеет один или несколько корневых узлов.Мне нужно знать, какие узлы не подключены ни к каким корневым узлам.

В настоящее время, начиная с предыдущей итерации продукта, моя проверка соединения начинается на каждом корневом узле и следует за всеми соединениями.Для каждого найденного узла бит в битовой карте устанавливается так, чтобы вы могли быстро проверить, был ли узел уже найден / обработан.Как только все пути для всех корневых узлов пройдены, полный набор узлов сравнивается с битовой картой «найден», чтобы показать все неподключенные узлы.

Ранее UID были последовательными, и я мог объединить их, чтобы устранить пробелы,Таким образом, используя первый идентификатор в качестве смещения, я просто сделал свой найденный массив довольно большим и проиндексировал найденные узлы в битовой карте напрямую, используя UID (т. Е. Если бы я нашел узел 1000, я бы установил 1000-й бит в битовой карте).Однако в текущей версии продукта у меня меньше контроля над идентификаторами узлов.Я не могу их консолидировать, и взаимодействие с третьей стороной непредсказуемо создает очень большие пропуски (например, UID могут прыгать с тысяч на десятки миллионов).Я сталкивался с случаями, когда мой массив растровых изображений слишком мал, чтобы вместить пробелы, и проверка подключения не удалась.

Теперь я мог бы просто увеличить размер своего растрового массива, но это всегда рискуетвсе еще слишком маленький и не очень эффективный ресурс.Таким образом, я ищу заменить его на что-то другое.Очевидно, я бы хотел, чтобы он был максимально быстрым и максимально эффективным, - я думаю, что мне нужна какая-то хешированная карта.К сожалению, я должен заставить это работать в Фортране, поэтому у меня нет доступа к

и т. Д.

Каков наилучший способ хеширования моих UID в структуру поиска, чтобы я мог легко проверитьесли я уже нашел этот узел?

1 Ответ

0 голосов
/ 18 февраля 2019

Если вы можете изменить сами типы узлов, вы можете добавить поле found и использовать его?

Если это невозможно, то да, хеш-таблица звучит как очевидное решение.В зависимости от того, как распределяются UID, вам может понадобиться что-то простое, например mod(UID, bitmap_size).Но вам все равно нужно как-то обрабатывать столкновения.По этой теме имеется много литературы, поэтому я не буду вдаваться в подробности, за исключением того, что отмечу, что хэширование разбойничества довольно круто (за исключением, может быть, немного сложного для одноразового использования).

...