Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Баян:Поиск пути. Но не обычный. 
V
    Опции темы
ano360
Дата 14.1.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 22.5.2006
Где: Москва

Репутация: нет
Всего: нет



Здравствуйте.
Извиняюсь за Баян, но проблема такова:
Есть поле неизвесных размеров. Есть точка. Необходимо найти путь от точки до неёже самой ОБЯЗАТЕЛЬНО в обход препятствий.
Вся загвоздка в том, что все олгаритмы предодоставляют поиск пути из точки в другую точку, а мне требуется из точки в неёже.


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


Это сообщение отредактировал(а) ano360 - 14.1.2007, 13:05


--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
VladBD
Дата 14.1.2007, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 19.11.2006

Репутация: нет
Всего: 5



Если надо через все поле - пробуй генерить где-нить точку(С) в другом конце поля и вызывай два раза поиск пути. сначала поиск(А, С) ты попадешь в точку(С), а потом поиск(С,А) - вернешься обратно.
PM MAIL   Вверх
ano360
Дата 14.1.2007, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 22.5.2006
Где: Москва

Репутация: нет
Всего: нет



Не, чаще всего надо будет делать так:

*****************
*****************
*****************
******2**********
*******20********
*****************
*****************
*****************
2-препятствие, которое набо обойти обязательно, хотябы одно.
0-точка начала.
РЕзультат:
*****************
*****************
*****************
******29*********
******920********
*******9*********
*****************
*****************
9-это путь обхода

Или ситуация чуть сложнее:

*****************
*****************
******92**2******
*****929**2******
*****9220**2*****
******99*********
*****************
*****************

Это сообщение отредактировал(а) ano360 - 14.1.2007, 12:46


--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
esperant0
Дата 14.1.2007, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



Путь из точки в точку это путь длины ноль.

И искать его не надо. Это пустой путь


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
ano360
Дата 14.1.2007, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 22.5.2006
Где: Москва

Репутация: нет
Всего: нет



Цитата

Путь из точки в точку это путь длины ноль.

И искать его не надо. Это пустой путь 

Из точку в точку в обход других.
Те. хотябы одно препятствие должно быть обведено.

Добавлено @ 13:02 
Если есть хоть какиенибудь мысли, даже самые размытые или слишком навороченные,пожалуйста,излагайте, я доработаю сам

Это сообщение отредактировал(а) ano360 - 14.1.2007, 12:49


--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
ano360
Дата 14.1.2007, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 22.5.2006
Где: Москва

Репутация: нет
Всего: нет



  |  |  |  |  |  |  |  |  |  |  |  |  | 
-  -  -  -  -  -  -  -  -  -  -  -  -  -
  |  |  |  |  |  |  |  |  |  |  |  |  | 
-  -  -  -  -  -  -  -*-  -  -  -  -  -
  |  |  |  |  |  |  |  |  |  |  |  |  | 
-  -  -  -  -  -2-*-2-0-  -  -  -  -
  |  |  |  |  |  |  |  |  |  |  |  |  | 
-  -  -  -  -  -  -  -*-2-  -  -  -  -
  |  |  |  |  |  |  |  |  |  |  |  |  | 
-  -  -  -  -  -  -  -  -  -  -  -  -  -
  |  |  |  |  |  |  |  |  |  |  |  |  | 
-  -  -  -  -  -  -  -  -  -  -  -  -  -
  |  |  |  |  |  |  |  |  |  |  |  |  | 
-  -  -  -  -  -  -  -  -  -  -  -  -  -
  |  |  |  |  |  |  |  |  |  |  |  |  | 
Простейший варриант
2-препятствие, которое  надо обойти
0 -точка начала
*-путь обхода




Это сообщение отредактировал(а) ano360 - 14.1.2007, 13:10


--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
maxim1000
Дата 14.1.2007, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(ano360 @  14.1.2007,  11:48 Найти цитируемый пост)
Если есть хоть какиенибудь мысли, даже самые размытые

размытая мысль такая:
нужно что-то вроде ещё одного измерения
т.е. путь должен приходить не совсем в исходную точку, а в точку, у которой будут такие же координаты, но дополнительный показатель будет другим


--------------------
qqq
PM WWW   Вверх
Sartorius
Дата 14.1.2007, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



 Можно искать путь от исходной точки до одной из точек препятствия, а потом обратный, отличный от первого. 
PM MAIL ICQ   Вверх
ano360
Дата 14.1.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 22.5.2006
Где: Москва

Репутация: нет
Всего: нет



Цитата

размытая мысль такая:
нужно что-то вроде ещё одного измерения
т.е. путь должен приходить не совсем в исходную точку, а в точку, у которой будут такие же координаты, но дополнительный показатель будет другим 

Интересно, но можно чуть чётче, если кординаты теже, то как хоть примерно искать путь?

Добавлено @ 13:51 
Цитата

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

Всё дело в том , яято припятствий очень много, а не одно


--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
ano360
Дата 14.1.2007, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 22.5.2006
Где: Москва

Репутация: нет
Всего: нет



Такая идея появилась.

1. искать путь методом волны от начальной точки.
2. где две волны, обогнув препятствие встретиться,
3. найти коратчайший путь, занося всё его кординаты пути в массив, 
4. Проверить, окружают ли кординаты в массиве враж. точку(данный алгоритм давно мной написан и гениально прост)
5. Если, да, сохранить эти кординаты в другом массиве minWay. и сохранить длинну длинну пути в новой переменной
    если нет,ничего не сохранять.
6. выбрать другую точку, где волны встречаются, перейти к пункту 3, после проверить длинну нового пути и кратчайшего и так, пока не израсходуем все точки пересечения двух волн.

minWay-здесь кординаты минимального пути.

работоспособно?
Замечания?



Это сообщение отредактировал(а) ano360 - 14.1.2007, 14:07


--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
maxim1000
Дата 14.1.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(ano360 @  14.1.2007,  13:06 Найти цитируемый пост)
2. где две волны, обогнув препятствие встретиться

вот тут не до конца понятно, что значит "две волны"
волна на самом деле одна
т.е. надо придумать признак деления её на части в зависимости от того, с какой стороны она обходила препятствия
Цитата(ano360 @  14.1.2007,  13:06 Найти цитируемый пост)
работоспособно?

очень может быть...
кроме непонятности с двумя волнами, вроде, ничего страшного не видно...


--------------------
qqq
PM WWW   Вверх
VladBD
Дата 14.1.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 19.11.2006

Репутация: нет
Всего: 5



Что-то на игру в точки это не похоже. Тогда могу предположить что надо просто обойти точку и найти путь обхода.
- берешь сканишь все препятствия в массив
- сортируешь их по удаленности от точки
- пытаешься окружить ее и проверяешь оказалась ли точка в окружении
- если нет перебираешь до конца
- если не получилось - нет решения - нельзя никого окружить
PM MAIL   Вверх
ano360
Дата 14.1.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 22.5.2006
Где: Москва

Репутация: нет
Всего: нет



Цитата

Что-то на игру в точки это не похоже. Тогда могу предположить что надо просто обойти точку и найти путь обхода.
- берешь сканишь все препятствия в массив
- сортируешь их по удаленности от точки
- пытаешься окружить ее и проверяешь оказалась ли точка в окружении
- если нет перебираешь до конца
- если не получилось - нет решения - нельзя никого окружить 


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


--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
SoWa
Дата 14.1.2007, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



А волновой алгоритм не устроит?
Берем случайную точку на расстоянии от нашей в разность хода(ну придумай че-нить). Затем другую. Посредством нескольких переходов вернемся обратно... Только другим путем
Цитата(ano360 @  14.1.2007,  14:06 Найти цитируемый пост)
2. где две волны, обогнув препятствие встретиться,

Вот это мысль! Только волна действительно одна smile Но придумать же можно описание события: "точку проверяют с двух сторон".


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
ano360
Дата 15.1.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 22.5.2006
Где: Москва

Репутация: нет
Всего: нет



Цитата

 "точку проверяют с двух сторон".

довольно размыто и неопределённо, можете немного чётче 



Есть хорошая идея!!!!!!!!!!
Перед тем как до неё дойти очень много алгаритмов пришлось отбросить

знаю как проследить разбивку волны на две.
В основе-простой волновой олгаритм

n -порядковый номер волны. Первый раз 0, потом 1, потом 2 и т.д.
Код

for(int i=0;i<n;i++)
for(int j=0;j<m;j++){
//просто проверяем все окружающие точки 
       //Если  точка c номером n 
       for (int i1=i-1;i1<i+1;i1++)
       for (int j1=j-1;j1<j+1;j1++){
             //Если у хотябы одной точки с порядк. номером n+1, есть особый параметр run_n, то run_n нашей точки равен ему.
       }
             //Если нет, run_n = random
      

        //второй цикл       
        for (int i1=i-1;i1<i+1;i1++)
       for (int j1=j-1;j1<j+1;j1++){
       //Выставляем  порядк. номер точки[i1,j1] = n+1, и run_n=нашему.  
       }

}


При работе с первой точкой волны, run_n=rundom, последующие точки заимствуют его у соседней, при разбивки волны заимствовония не происходит и run_n у обоих волн разный. Дальше просто: точка обведена, если две точки с разными run_n встретились

Добавлено @ 18:19 
нет.......
если волна разбивается в одном месте!,run_n обойдёт с другой стороны


    3333333
    3222223
    3211123
    3210123
    3211123
    3222223
    333*333
          4 

Это сообщение отредактировал(а) ano360 - 15.1.2007, 18:26


--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0881 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.