2016-10-05 2 views
-4

Я уже реализовал поиск путей на языке C# по сетке. Но я пытаюсь создать систему, которая будет использовать лестницу, чтобы перейти на кратчайшее расстояние, если есть какая-то лестница, доступная в самом кратчайшем. Но я не знаю, как это сделать, я искал в Интернете и читал много сообщений, но я запутался, как это сделать, поэтому мне будет очень полезно, как добавить функцию лестницы в путь звезды, алгоритм поиска.A * Алгоритм поиска пути в C#, Реализация Лестничная система

Image

Спасибо.

+0

Пожалуйста, прочитайте [Какие типы вопросов я должен избегать?] (Http://stackoverflow.com/help/dont-ask), прежде чем пытаться задать больше вопросов. –

+0

Пожалуйста, прочитайте [Почему «Кто-нибудь может мне помочь?» Не вопрос?] (Https://meta.stackoverflow.com/questions/284236/why-is-can-someone-help-me-not-an- фактический вопрос), прежде чем пытаться задать больше вопросов. –

ответ

-1

Подумайте о своих лестницах как вершинах на вашем графике. Тогда вам просто нужно применить A *, что является лучшим поиском. Это хорошо документированный алгоритм. Для example:

А * информированный алгоритм поиска, или лучше всего первый поиск, а это означает , что решает проблемы путем поиска среди всех возможных путей к решения (цели) для того, что понесенного наименьшее (наименьшее пройденное расстояние, кратчайшее время и т. д.), и среди этих путей он сначала рассматривает те, которые наиболее быстро приводят к решению . Он формулируется в терминах взвешенных графиков: начиная с определенного узла графа, он строит дерево путей, начиная с с этого узла, расширяя пути один шаг за раз, пока один из его путей не заканчивается с заданной целью узел.

+0

Вы могли бы быть более конкретным. мой код для алгоритма A * отлично работает, но понятия не имеет, как это сделать для лестниц в 3D. (Отредактировано мое сообщение с изображением, которое я нашел из некоторых блогов). Спасибо за ваш ответ. – Perman

+0

@ user2069785, если лестничный блок имеет стандартную длину, вы можете думать о своем трехмерном пространстве, как график, где каждая точка (x, y, z) МОЖЕТ быть узлом. Такая точка является узлом, если и только если вы можете достичь ее через лестницу. Итак, лестницы - это вершины. Таким образом, если (x, y, z) точки являются узлами, а лестницы - вершинами, то вам просто нужно иметь представление, которое преобразует ваши необработанные данные в A * -absorbable вход. –

+0

как представить лестницу в вершины. можете ли вы помочь мне дать мне точное направление, как решить мою проблему. Спасибо за ваш ответ. – Perman