У меня есть набор узлов, каждый из которых идентифицируется уникальным целым числом (UID), которые расположены в одной или нескольких сетях.Каждая сеть имеет один или несколько корневых узлов.Мне нужно знать, какие узлы не подключены ни к каким корневым узлам.
В настоящее время, начиная с предыдущей итерации продукта, моя проверка соединения начинается на каждом корневом узле и следует за всеми соединениями.Для каждого найденного узла бит в битовой карте устанавливается так, чтобы вы могли быстро проверить, был ли узел уже найден / обработан.Как только все пути для всех корневых узлов пройдены, полный набор узлов сравнивается с битовой картой «найден», чтобы показать все неподключенные узлы.
Ранее UID были последовательными, и я мог объединить их, чтобы устранить пробелы,Таким образом, используя первый идентификатор в качестве смещения, я просто сделал свой найденный массив довольно большим и проиндексировал найденные узлы в битовой карте напрямую, используя UID (т. Е. Если бы я нашел узел 1000, я бы установил 1000-й бит в битовой карте).Однако в текущей версии продукта у меня меньше контроля над идентификаторами узлов.Я не могу их консолидировать, и взаимодействие с третьей стороной непредсказуемо создает очень большие пропуски (например, UID могут прыгать с тысяч на десятки миллионов).Я сталкивался с случаями, когда мой массив растровых изображений слишком мал, чтобы вместить пробелы, и проверка подключения не удалась.
Теперь я мог бы просто увеличить размер своего растрового массива, но это всегда рискуетвсе еще слишком маленький и не очень эффективный ресурс.Таким образом, я ищу заменить его на что-то другое.Очевидно, я бы хотел, чтобы он был максимально быстрым и максимально эффективным, - я думаю, что мне нужна какая-то хешированная карта.К сожалению, я должен заставить это работать в Фортране, поэтому у меня нет доступа к
Каков наилучший способ хеширования моих UID в структуру поиска, чтобы я мог легко проверитьесли я уже нашел этот узел?