Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Разбор классических алгоритмов и олимпиадных задач. Алгоритмы с возвратом.


Информационный Канал Subscribe.Ru

 Здраствуйте. На задачи из прошлого выпуска, почти никто не прореагировал. Поэтому, я думаю разбирать их нет смысла.
 Этот выпуск получился коротким и лёгким для понимания. Я решил в этот раз на время оставить сортировки и рассмотреть одну довольно известную задачу.

Алгоритмы с возвратом.
 Обычно, но не всегда, алгоритмы действует по чётко заданным правилам. Бывают такие задачи, в которых мы должны действовать методом проб и ошибок. Для примера рассмотрим классическую задачу на эту тему: необходимо конём обойти шахматную доску размером NxN, не побывав на одном поле дважды.
 Пусть конь стоит в позиции (X0, Y0). Из этого поля мы можем сделать 0..8 ходов. Если количество возможных ходов равно 0, то либо мы получили ответ, либо ветвь, по которой мы пошли, привела нас в тупик. Если нам есть куда ходить, то выбрав какой-нибудь из возможных вариантов и оказавшись на другом поле наша задача повторяется.
 Видно, что задача легко сводится к рекурсии. Полезнее всего будет посмотреть код.
 Дерево решений в этой задачи растёт очень быстро. Появлению решения предшествует большое количество ошибочных проходов. Можно сделать появление решения более вероятным при помощи простой эвристики: на очередном ходе надо идти на то поле, из которого можно сделать наименьшее количество ходов. Вот её реализация:

Это всё. Трассируйте. :)

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.fprogram
Отписаться
Вспомнить пароль

В избранное