У меня есть программа, которая создает графики, как показано ниже
Алгоритм начинается с узла зеленого цвета и проходит по графу. Предположим, что узел (узел типа связанного списка с 4 ссылками слева, справа, вверх и вниз) был добавлен к графу, показанному красной точкой на изображении. Чтобы интегрировать только что созданный узел с его соседями, мне нужно найти четыре объекта и связать их, чтобы сохранить связность графа.
Вот что мне нужно уточнить
- Предположим, что все узлы желтого цвета являются нулевыми, и я не сохраняю другую структуру данных для сопоставления узлов, что является наиболее эффективным способом обнаружения существования соседей вновь созданного узла. Я знаю базовые алгоритмы поиска графа, такие как DFS, BFS и т. д., и алгоритмы кратчайшего пути, но я не думаю, что какой-либо из них достаточно эффективен, потому что граф может иметь около 10000 узлов и выполнять алгоритмы поиска графа (начиная с зеленого узла), чтобы найти соседи при добавлении нового узла кажутся мне вычислительно затратными.
- Если поиска по графу нельзя избежать, какова наилучшая альтернативная структура. Я думал о большом многомерном массиве. Однако это приводит к потере памяти, а также к отсутствию отрицательных индексов. Так как граф на изображении может расти в любых направлениях. Мое решение состоит в том, чтобы написать отдельный класс, состоящий из структуры данных на основе массива для отображения отрицательных индексов. Однако, прежде чем выбрать этот вариант, я хотел бы знать, смогу ли я решить проблему без разрешения на новую структуру и сэкономить много переделок.
Спасибо за любой отзыв и чтение этого вопроса.