Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск пути / 10 сообщений из 10, страница 1 из 1
17.09.2006, 18:56
    #33992722
Sam Stone
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск пути
Имеем карту с лабиринтом произвольным и, соответственно, сетку AxB. Надо провести объект размером NxN (N>1) по лабиринту, учитывая, что ширина прохода может быть меньше N. Вопрос: как избежать захода в "узкие места"?
...
Рейтинг: 0 / 0
17.09.2006, 20:56
    #33992792
Den_di
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск пути
все узкие места закрашиваем, что туда нет прохода(как стенка), а далее по правому краю до упора, или что вам надо.
...
Рейтинг: 0 / 0
17.09.2006, 21:21
    #33992804
Sam Stone
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск пути
Den_diвсе узкие места закрашиваем, что туда нет прохода(как стенка), а далее по правому краю до упора, или что вам надо.
Каким образом закрасить? Перебором по всей матрице проверять "свободность" группы клеток? Или есть способ "подешевле"?
...
Рейтинг: 0 / 0
18.09.2006, 02:07
    #33992904
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск пути
Sam StoneНадо провести объект размером NxN (N>1) по лабиринту

Что значит провести ? Вручную что-ли?
...
Рейтинг: 0 / 0
18.09.2006, 09:10
    #33993042
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск пути
ищи "волновой" алгоритм.
самый эффективный для лабиринтов, но не самый быстрый(другие более быстрые, но качество сразу летит).
...
Рейтинг: 0 / 0
18.09.2006, 09:15
    #33993052
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск пути
извиняюсь за качество, но нечто наглядное, может быть:
...
Рейтинг: 0 / 0
18.09.2006, 12:55
    #33993661
Sam Stone
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск пути
Что значит провести? Вручную что-ли?
Провести с учетом "ширины". А ведет А*.

2 Aklin
он щупает соседние клетки и ничего не знает о "ширине" прохода, т.е. объект, идущий по лабиринту может быть по размерам больше одной клетки. Простейший пример: имеем сетку 5х5 см на полу, входную дверь шириной 100см или 20 клеток в квартиру и большой шкаф шириной, скажем, 30 клеток (проекция на пол). Ясен пень, что не пронести. Значит надо искать другой проход.
Пока докумекал до "нормализации" карты путем накладывания на каждую ячейку матрицы 2х2 (частный случай) для проверки пересечения со стенами. Таким образом вроде бы все проходы шириной в 1 клетку блокируются, остаются только более широкие. В принципе алгоритм одноразовый, можно, наверно, забить на производительность.
...
Рейтинг: 0 / 0
18.09.2006, 13:25
    #33993807
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск пути
Sam StoneКаким образом закрасить? Перебором по всей матрице проверять "свободность" группы клеток? Или есть способ "подешевле"?
Это дешевый способ относительно общего времени поиска пути в лабиринте.
...
Рейтинг: 0 / 0
18.09.2006, 14:19
    #33994060
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск пути
щупайте не 1 клетку, а правое и левое значение (вершнее и нижнее)...

или если все М клеток путы, двигайтесь.

или еще и разварачиваться нужно?
...
Рейтинг: 0 / 0
18.09.2006, 15:13
    #33994280
Sam Stone
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск пути
Aklinщупайте не 1 клетку, а правое и левое значение (вершнее и нижнее)...

или если все М клеток путы, двигайтесь.

или еще и разварачиваться нужно?

Нет, разворачиваться не надо. Модифицировать уже написанный поиск лень, поэтому просто нормализую карту как написал выше и подсовываю ее А* :)
Пожалуй на этом варианте остановлюсь.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск пути / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]