2010-03-29 3 views
0

У меня есть плоская область с узлами, случайно размещенными на этой плоской поверхности. Мне нужны методы, которые могут принимать начальную точку, двигаться определенным образом (алгоритм), находить узлы и продолжать поиск. У меня нет общего представления о поверхности (т. Е. Я не вижу все), только ограниченный вид (т. Е. 4 ячейки в любом направлении). В идеале эти методы будут эффективными в том, как они работают.Методы поиска/Алгоритмы для ресурсов в заданной области

Любые пункты в правильном направлении были бы очень признательны.

+0

С некоторыми небольшими предположениями эта проблема уменьшает проблему «покраски» поверхности. Как вы можете двигаться? Прыгать девять ячеек в направлении X или Y было бы идеальным. Если вы можете двигаться только как шахматный король, идите по диагонали (чтобы рисовать 17 ячеек вместо 9). Как это? – Beta

+0

Мне разрешено перемещать одну ячейку за раз в 8 разных направлениях. Я мог бы переместить девять ячеек (с девятью шагами), однако это самый эффективный способ исследовать область? Я слышал о методе, в котором вы двигаетесь по нарастающей спирали, но я ищу больше альтернатив;) – Raydon

+0

Raydon, вы понимаете, что я имел в виду примерно 17 вместо 9? Вы думали о спирали? Вы думали о том, что означает «эффективный»? Вы сами пытались атаковать проблему? – Beta

ответ

0

Является ли размер карты бесконечным, или вы знаете размеры, даже если вы игнорируете свою начальную позицию? Лучше ли исследовать исходную позицию или цель исследовать максимальное количество ячеек за минимальное время?

Если вы хотите исследовать окрестности с бесконечной 8-связной картой и 4-элементной видимостью во всех направлениях, просто делайте диагональные спирали. Если сетка конечна и вы знаете размеры, лучше идти в одном направлении до тех пор, пока вы не нажмете стену (которая покажет вашу позицию), чтобы вы могли лучше планировать свои движения.

0

Используйте вариант flood fill - просто добавьте проверку узла после заполнения каждого пикселя.