Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Поиск кротчайшего пути (https://javascript.ru/forum/server/3473-poisk-krotchajjshego-puti.html)

IVIbILLIb 24.04.2009 11:31

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

Kolyaj 24.04.2009 11:52

А теперь то же самое, но со знаками препинания. Их не просто так в школе проходят. Это читать невозможно.

Gvozd 24.04.2009 16:55

+1 к вопросу о знаках препинания.
но кажется я догадался что вам надо.
Это класическая алгоритмическая задача, рассмотренная неймоверное количество раз практически на всех живых языках, и рискну предположить на некоторых эзотерических.
Как вывод:
1)Ищите лучше.В сети уже есть решение, навреняка и на JS
2)Есть куча книг по алгоритмам, где есть описание решения этой задачи на словах, и как правило на одном-двух языках програмирования.
Как правило этого вполне достаточно, чтобы написать реализацию на своем языке.

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

Если вы не в состоянии оформить эту мысль в код JS, то идите и учите теорию JS.При необходимости и алгоритмизацию. Готового решения от скуки, за просто так вам тут не разместят.

Удачного кодинга!

Kolyaj 24.04.2009 16:58

Ключевые слова: волновой алгоритм.

IVIbILLIb 28.04.2009 08:10

Волновой алгоритм ищет только минимальное количество вершин от точки А до точки Б. Мне же необходимо кратчайшее растояние. Сеть уже обшарил и нашел решения на С++, Delphi и Паскале, но они находят не кратчайший путь а просто путь от точки к точке при этом путь является не только не кратчайшим, но и не минимальным по количеству ребер.
И если у вас нет кода то подскажите просто как это можно оформить без цикла, просто карта обьемная и через циклы скрипт прогружается очень долго!

Kolyaj 28.04.2009 09:08

Количество вершин -- частный случай расстояния, если вес каждого ребра равен 1. Что мешает на каждом шаге прибавлять не единицу, а вес ребра?

milk3dfx 02.05.2009 17:11

Цитата:

карта обьемная
Если не секрет, для каких целей вам нужен алгоритм? Для 3D игры?


Часовой пояс GMT +3, время: 16:50.