Методы поиска бота в поле - PullRequest
1 голос
/ 19 апреля 2011

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

Я пробовал следующее, все было довольно плохо:

  1. ведение списка посещенных мест (принимая начальную позицию за 0,0 и сохраняя относительные положения посещенных мест).То есть я предпочитаю посещать те места, которые не посещались.

  2. Сначала перейдите к самой нижней и самой левой точке, затем начните исчерпывающий поиск по 5 нижним строкам, а затем по следующим 5 нижним строкам.и так далее ...

Ответы [ 3 ]

0 голосов
/ 20 апреля 2011

Вы не описываете, почему вы считаете свои решения «довольно плохими», но я предполагаю, что вы наблюдаете неэффективное поведение при поиске.Попытка, которую вы, возможно, захотите попробовать, состоит в том, чтобы пометить каждое пространство «ценностью информации», то есть, сколько ранее неизвестных соседних пространств вы обнаружите, когда будете посещать это пространство.Это ваша "награда".Ваша «стоимость» - это расстояние до данного места.Тогда вам нужно будет найти стратегию поиска, которая максимально (вознаграждение - стоимость).

0 голосов
/ 21 апреля 2011

Похоже на частично наблюдаемый марковский процесс принятия решения . Может быть, взгляните на обучение подкреплению . Есть электронная версия * * * * книги Саттона и Барто

.

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

0 голосов
/ 19 апреля 2011

Я не совсем уверен, что понимаю вашу цель, но наиболее распространенным (неоптимизированным) алгоритмом для общего поиска пути к сетке, заполнения заливки и т. Д. Является A * (произносится как «A - Star»).Его наиболее распространенное применение - поиск путей на основе сетки с «открытыми» и «закрытыми» узлами;так же, как ваши "открытые" и "заполненные" ячейки сетки.

Проверьте http://en.wikipedia.org/wiki/A*_search_algorithm

Надеюсь, это поможет!

...