Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 32

Алгоритм А* на графах

13.10.2016, 12:48. Показов 1766. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Стоит задача разработать функцию поиска пути в неориентированном графе методом А*. Проблема: как на графе считается эвристическая функция h(n)? Всё, что мы имеем: названия узлов и веса дуг между ними. И я не могу понять, как применить какую бы то ни было эвристику к вершинам(например, Манхэттенское расстояние). Подскажите.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.10.2016, 12:48
Ответы с готовыми решениями:

Алгоритм на графах
Доброго времени суток, у кого нибудь может быть завалялся алгоритм поиска в глубину на графах, а то в интернете много этого но все на С++,...

Алгоритм Прима не работает на неполных графах
Доброго времени суток! Помогите, пожалуйста, с реализацией алгоритма Прима (алгоритм построения остова минимального веса). В данном...

Алгоритм на графах. Можно ли опосредованно перезнакомить всех между собой
На олимпиаду прибыли N человек. Некоторые из них знакомы между собой. Круг знакомств задан матрицей A размера N × N....

17
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
13.10.2016, 15:59
Цитата Сообщение от greg177 Посмотреть сообщение
Стоит задача разработать функцию поиска пути в неориентированном графе методом А*.
Чтобы использовать стратегию информированного поиска, нужно обладать хоть какой-нибудь информацией. Иначе остаётся только неинформированный поиск - полный перебор.

Цитата Сообщение от greg177 Посмотреть сообщение
Проблема: как на графе считается эвристическая функция h(n)?
h(n) => 0
0
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 32
13.10.2016, 16:25  [ТС]
Цитата Сообщение от Shamil1 Посмотреть сообщение
Чтобы использовать стратегию информированного поиска, нужно обладать хоть какой-нибудь информацией. Иначе остаётся только неинформированный поиск - полный перебор
Это вся информация. За исключением того, что на вход функци мы подаем граф, стартовую вершину и вершину, в которую хотим попасть.
Цитата Сообщение от Shamil1 Посмотреть сообщение
h(n) => 0
Вот у нас есть этап, когда мы берем все соседние вершины к текущей и находим среди них вершину с наименьшим f(n). Но почему-то не понимаю, как найти для каждой вершины h(n).
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
13.10.2016, 17:42
Цитата Сообщение от greg177 Посмотреть сообщение
Но почему-то не понимаю, как найти для каждой вершины h(n).
Я же написал: для всех вершин h(n) равно нулю.

В результате получается обычный обход в ширину, но без информации лучше быть не может... если не считать того, что можно ещё в глубину обходить. Неинформированный поиск - это всегда перебор.
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
14.10.2016, 00:07
Цитата Сообщение от Shamil1 Посмотреть сообщение
Чтобы использовать стратегию информированного поиска, нужно обладать хоть какой-нибудь информацией. Иначе остаётся только неинформированный поиск - полный перебор.
В данном случае имеются веса дуг, этих данных достаточно для информированного поиска. Для А* этих данных недостаточно, А* f(n)=g(n) + h(n) = g(n) + 0 = g(n), получаем информированный uniform cost search
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
14.10.2016, 09:19
Цитата Сообщение от oldnewyear Посмотреть сообщение
В данном случае имеются веса дуг, этих данных достаточно для информированного поиска.
Эти данные относятся к условию задачи и нужны только для вычисления стоимости пути. Для информированного поиска нужна какая-то дополнительная информация о состояниях.

Цитата Сообщение от oldnewyear Посмотреть сообщение
получаем информированный uniform cost search
Поиск по критерию стоимости (метод равных цен, uniform-cost search, UCS) - один из вариантов неинформированного поиска.


Например,
Вам нужно найти носки в шкафу. Всего в шкафу 10 ящиков, и в худшем случае Вам придётся заглянуть в каждый из них. Информация о том, что к одному ящику придётся тянуться, а к другому наклоняться, никак не поможет Вам уменьшить количество открытых ящиков. Вот если бы у Вас была какая-нибудь информация о состояних типа "носки и полотенца не могут быть в соседних ящиках", тогда можно было бы подумать, как оптимизировать поиск.

Подробнее читайте тут:
Неинформированный метод поиска
1
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
14.10.2016, 09:36
Цитата Сообщение от Shamil1 Посмотреть сообщение
Эти данные относятся к условию задачи и нужны только для вычисления стоимости пути. Для информированного поиска нужна какая-то дополнительная информация о состояниях.


Поиск по критерию стоимости (метод равных цен, uniform-cost search, UCS) - один из вариантов неинформированного поиска.


Например,
Вам нужно найти носки в шкафу. Всего в шкафу 10 ящиков, и в худшем случае Вам придётся заглянуть в каждый из них. Информация о том, что к одному ящику придётся тянуться, а к другому наклоняться, никак не поможет Вам уменьшить количество открытых ящиков. Вот если бы у Вас была какая-нибудь информация о состояних типа "носки и полотенца не могут быть в соседних ящиках", тогда можно было бы подумать, как оптимизировать поиск.

Подробнее читайте тут:
Неинформированный метод поиска
Да, вы правы

Добавлено через 1 минуту
Тем не менее полный перебор не нужен в данном случае
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
14.10.2016, 13:49
Обход в ширину.
При выполнении некоторого условия (достигли пункта назначения) поиск можно остановить. (Нашли носки уже во втором ящике - остальные можно не проверять). Но в худшем случае (конечная вершина дальше всех от начальной) мы переберём все вершины.
1
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
14.10.2016, 14:10
Цитата Сообщение от Shamil1 Посмотреть сообщение
Обход в ширину.
При выполнении некоторого условия (достигли пункта назначения) поиск можно остановить. (Нашли носки уже во втором ящике - остальные можно не проверять). Но в худшем случае (конечная вершина дальше всех от начальной) мы переберём все вершины.
Худший случай - все дуги имеют одинаковый вес. Тогда да. А так нет
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
14.10.2016, 15:38
От весов дуг ничего не зависит (ну, кроме результата).
Возьмите (представьте) какую-нибудь карту. Пусть города будут вершинами, а расстояния между ними будут весами дуг. Если мы возьмём один город в центре, а другой на самом дальнем краю, и будем искать путь от одного до другого методом UCS, то мы посетим все города на карте. Если же мы будем использовать информированный поиск (с эвристикой по расстоянию), то мы посетим только те города, которые лежат примерно на прямой между ними. С учётом того, что между всеми соседними городами обычно есть дороги, если это не какая-нибудь горная или островная местность, то велика вероятность, что при поиске мы посетим только те города, которые лежат на кратчайшем пути.
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
14.10.2016, 16:36
Цитата Сообщение от Shamil1 Посмотреть сообщение
От весов дуг ничего не зависит (ну, кроме результата).
Возьмите (представьте) какую-нибудь карту. Пусть города будут вершинами, а расстояния между ними будут весами дуг. Если мы возьмём один город в центре, а другой на самом дальнем краю, и будем искать путь от одного до другого методом UCS, то мы посетим все города на карте.
Только в том случае, если расстояния между соседними городами одинаковые
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
14.10.2016, 18:39
Цитата Сообщение от oldnewyear Посмотреть сообщение
Только в том случае, если расстояния между соседними городами одинаковые
Проверьте. Откройте карту и в уме посчитайте, в каком порядке алгоритм будет посещать города.
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
16.10.2016, 09:25
oldnewyear, а алгоритм Дейкстры? Поиск пути между двумя заданными вершинами на взвешенном графе - классика!
Без всякой эвристики вполне себе ищет кратчайший путь на графе со взвешенными ребрами.
И прекращает работу при достижении заданной вершины.
В худшем случае тоже может перебрать все вершины... ))
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
16.10.2016, 09:42
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
oldnewyear, а алгоритм Дейкстры?
Это, насколько я понимаю, то же самое, что и uniform cost search.
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
16.10.2016, 09:44
oldnewyear, я такого названия не знаю. А вот алгоритм Дейкстры описан во всех учебниках по графам. И называется везде именно алгоритмом Дейкстры.
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
16.10.2016, 09:50
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
oldnewyear, я такого названия не знаю. А вот алгоритм Дейкстры описан во всех учебниках по графам. И называется везде именно алгоритмом Дейкстры.
Я к изучению графов только приступил. В учебниках по ИИ рассматривается частный случай алгоритма Дейкстры для поиска пути, я оттуда это название взял
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
16.10.2016, 09:55
Понятно. Тогда еще порекомендую изучить динамическое программирование - часто на графах применяется для поиска оптимального в некотором смысле пути. Еще - метод ветвей и границ - для сокращения полного перебора.
В ИИ эти хорошо известные методы могут иметь свои названия. Особенно, если переводчик неграмотный...
1
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
16.10.2016, 16:33
Цитата Сообщение от oldnewyear Посмотреть сообщение
Это, насколько я понимаю, то же самое, что и uniform cost search.
Поиск по критерию стоимости логически эквивалентен алгоритму Дейкстры. Только в алгоритме Дейкстры все узлы добавляются в очередь при инициализации, а в алгоритме поиска по критерию стоимости узлы добавляются «на лету» во время поиска. Поэтому алгоритм Дейкстры применим только к явно заданным графам, в то время как алгоритм UCS может быть применён как к явным, так и к неявным графам.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.10.2016, 16:33
Помогаю со студенческими работами здесь

ГА на графах
Здравствуйте. Не могу разобраться как решать эту задачу. Используйте генетический алгоритм (для одного поколения, при размере...

Алгоритмы на графах
Привет всем, мне нужна помощь з алгоритмами на графах нашел алгоритм Дейсктры // oo.cpp : Defines the entry point for the console...

Алгоритмы на графах
3вар, help pls

Предки в графах
Задача на определение, является ли вершина предком другой Условие: Определить для двух вершин дерева , является ли одна из них предком...

Игры на графах
Помогите пожалуйста 😊 Имя входного файла: стандартный ввод Имя выходного файла: Стандартный вывод Ограничение по времени:1 секунда ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru