Поэтому у меня есть необработанный файл размером 250x200 пикселей, который я прочитал в 2D-массиве, rawFile[250][200]
как rawFile[250][200]
с каждым пикселем (каждый индекс массива), действующим как узел, и каждое значение пикселя, представляющее высоту (думаю: топографическая карта). Я хочу найти кратчайший путь с использованием алгоритма Дейкстры от rawFile[0][0]
до rawFile[250][200]
а стоимость расстояния - это абсолютная величина разности перехода от node1
к node2
плюс кратчайшее расстояние пути до находящийся в настоящее время узел. Каждый узел может перемещаться в четырех направлениях (N, E, S, W), предполагая наличие соседнего узла в соответствующем направлении. Я прочитал псевдокод и различные реализации, для которых требуется матрица смежности или список смежности, которая в этом случае будет adjMatrix[50000][50000]
. Тем не менее, я изо всех сил пытаюсь понять, как я могу заполнить матрицу смежности только из необработанного файла.
Есть ли у вас какие-либо предложения по решению этой проблемы? Благодарю!
Преобразование изображения в матрицу смежности совершенно не нужно; единственное, что вам нужно, это информация о "соседстве", которая уже неявно присутствует.
Соседи любого пикселя i,j
представлены пикселями at (i-1,j), (i+1,j), (i,j-1), (i,j+1)
подлежащими границам изображения. Вам не нужна матрица для кодирования; в любое время алгоритм говорит, чтобы посмотреть на соседей, просто поставьте соседние пиксели.