Можно ли создать матрицу смежности из двумерного массива узлов в C ++?

0

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

Есть ли у вас какие-либо предложения по решению этой проблемы? Благодарю!

Теги:
multidimensional-array
shortest-path
adjacency-matrix
dijkstra

1 ответ

1
Лучший ответ

Преобразование изображения в матрицу смежности совершенно не нужно; единственное, что вам нужно, это информация о "соседстве", которая уже неявно присутствует.

Соседи любого пикселя i,j представлены пикселями at (i-1,j), (i+1,j), (i,j-1), (i,j+1) подлежащими границам изображения. Вам не нужна матрица для кодирования; в любое время алгоритм говорит, чтобы посмотреть на соседей, просто поставьте соседние пиксели.

  • 0
    Цаман: ты абсолютно прав. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню