2015-08-06 2 views
0

Я надеялся, что смогу получить некоторый совет относительно соответствующего алгоритма, чтобы найти самый мелкий (наименее крутой) путь между двумя точками в моей матрице/графе.Нахождение неглубокого пути через матрицу

Я приложил график матрицы ниже. Мне нужен алгоритм, который идет от «B'eginning to» End. По глазу, довольно очевидно, что путь (юго-восток от B, а затем от северо-востока до E) всегда остается на красноватой окраске.

Длина пути не имеет значения.

Цвета представляют собой ось z и составляет от 0 до> 1. Желтый (самый яркий) - 1, а синий (самый темный) равен 0. Я хочу перейти от B-> E с изменением значения z по пути; таким образом, я хочу по существу оставаться на одном и том же цвете (вернее, я не хочу, чтобы цвет сильно менялся), поскольку я иду из B-> E.

matrix

+1

Можете ли вы изменить, чтобы добавить примечание о том, как цвета пикселей ограничивают то, что считается допустимым путем? – paisanco

+0

Хм это похоже на проблему нахождения геодезической на поверхности z = f (x, y) между двумя точками. Похож на нетривиальную задачу вычислительной геометрии. Мне нужно посмотреть некоторые ссылки ... – paisanco

ответ

1

Я полагаю, используя эвристический алгоритм поиска пути, как и A* с использованием разности между клетками, как вес. Подумайте об этом как о взвешенном графике, где вес ребер определяется разностью значений ячейки (поэтому менее крутой, чем дешевле).

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

Смежные вопросы