Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Что такое эвристика

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

zam

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что есть эвристика?

Всего записей: 185 | Зарегистр. 19-01-2003 | Отправлено: 04:40 25-01-2003
BoBaH



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Search до Киева доведет

Всего записей: 130 | Зарегистр. 28-06-2001 | Отправлено: 07:55 25-01-2003
zam

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Поиск ничего не дает толкового. Вопрос остается в силе. Как применяется эвристика в задачи о ходе коня? когда конь обходит все клетки доски? Очень важный вопрос. Ответьте плиз.

Всего записей: 185 | Зарегистр. 19-01-2003 | Отправлено: 17:49 31-01-2003
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Эвристика в программировании это обычно решение задачи при помощи разбора частных случаев. Например хочешь ты посчитать площадь треугольника для этого можно написать просто общую формулу которая будет работать для любого треугольника. А можно попытаться определить вид треугольника (равносторонний, прямоугольный итд) и использовать различные правила в зависимости от типа треугольника.  Зачем это надо? В приведенном мной примере этого нет, но обычно каждая ветвь эвристического алгоритма эффективнее чем общее решение.
Замечание: эвристический алгоритм зачастую не решает задачу в общем виде а работает только для определенных случаев; некоторые задачи не имеют (не найдены) общие решения и они решаются при помощи эвристики.
 
А про обход доски ходом коня...
 
Правило Варнсдорфа  
 
Оригинальное правило, дающее линейный по времени алгоритм обхода доски, было предложена Варнсдорфом(Warnsdorff) в 1983 году.
 
Правило формулируется очень просто: следующий ход коня нужно делать на клетку, откуда существует наименьшее количество возможных ходов. Если клеток с одинаковым количеством ходом несколько, то можно выбрать любую.
 
На практике это реализуется, например, следующим образом. Перед каждым ходом коня вычисляется рейтинг ближайших доступных полей - полей, на которых конь еще не был, и на которые он может перейти за один ход. Рейтинг поля определяется числом ближайших доступных с него полей. Чем меньше рейтинг, тем он лучше. Потом делается ход на поле с наименьшим рейтингом (на любое из таковых, если их несколько), и так далее, пока есть куда ходить.
 
Эвристика всегда работает на досках от 5x5 до 76x76 клеток, при больших размерах доски конь может зайти в тупик. Кроме того, базирующийся на правиле алгоритм не дает всех возможных решений (т.е путей коня): можно пойти против правила и все равно получить удовлетворяющий условию задачи обход.
 
Существует линейный алгоритм для досок любого размера, который делит доску на меньшие части, но, из-за обилия особых случаев, он довольно сложный и не такой интересный, как эта элегантная эвристика
 

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 17:08 01-02-2003
zam

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Только вроде ходить на клетку, из которой возможно Наибольшее число возможных решений, у тебя же наименьшее.

Всего записей: 185 | Зарегистр. 19-01-2003 | Отправлено: 10:08 02-02-2003
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сначала надо ходить на клетки с НАИМЕНЬШИМ рейтингом, таким образом ты пытаешься сохранить максимальную связь между оставшимися.  На следующем ходу тебе нужно иметь 1 возможность, не более а заведомо обрубать клетки сохраняющие связность есть неэффективно.

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 18:30 02-02-2003
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Что такое эвристика


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru