1 / 18

Решение задачи обхода лабиринта с помощью перебора с возвратом

Муниципальное образовательное учреждение Лицей № 36. Учитель информатики и ИТ Е.А. Перова. Решение задачи обхода лабиринта с помощью перебора с возвратом. Н.Новгород 2011. Цель урока: изучить метод перебора с возвратом на примере задачи обхода лабиринта. Задачи урока

gilead
Télécharger la présentation

Решение задачи обхода лабиринта с помощью перебора с возвратом

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Муниципальное образовательное учреждение Лицей № 36 Учитель информатики и ИТ Е.А. Перова Решение задачи обхода лабиринта с помощью перебора с возвратом Н.Новгород 2011

  2. Цель урока: изучить метод перебора с возвратом на примере задачи обхода лабиринта • Задачи урока • формировать умение составлять рекурсивный алгоритм для решения задачи методом перебора с возвратом • развивать у учащихся познавательный интерес и критическое мышление • развивать творческие способности • прививать учащимся навыки самостоятельной и исследовательской работы

  3. Цель – попасть из некоторой заданной клетки в другую заданную клетку. За один шаг можно переместиться в одну из соседних клеток по горизонтали или вертикали, если нет перегородки. Y 5 4 3 2 1 X 1 2 3 4 5 Задача обхода лабиринта • Два правила: • 1) В каждой клетке выбирать еще не исследованный путь. • 2) Если из исследуемой клетки не ведут неисследованные пути, вернуться на одну клетку назад по последнему пройденному пути. Пример лабиринта

  4. Перебор с возвратом(backtrack) - это общий метод упорядоченного перебора.

  5. Перебор с возвратом применяется для решения комбинаторных задач, в которых приходится организовывать полный перебор возможных вариантов. • Перебор с возвратом особенно удобен для решения задач, требующих проверки потенциально большого, но конечного числа решений. • Идея метода - при поиске решения многократно делается попытка продолжить текущее частичное решение. Если расширение невозможно, происходит возврат к предыдущему более короткому частичному решению, и делается попытка его продолжить другим возможным способом.

  6. и т.д. Решение: A=(ENNWNEEEENW) Поиск решения для примера Y 5 4 3 2 1 X 1 2 3 4 5 M={N,S,W,E}- множество направлений: N- север, S- юг, W - запад, E - восток. Нач. вектор: B=(), клетка (1,1) Шаг 1:S1={E}, B=(E), клетка (2,1) Шаг 2:S2={N,E}, B=(EN), кл. (2,2) Шаг 3:S3={N}, B=(ENN), кл. (2,3) Шаг 4:S4={W,E}, B=(ENNW), кл. (1,3) Шаг 5:S5={N}, B=(ENNWN), кл. (1,4) Шаг 6:S6={N,E}, B=(ENNWNN) кл. (1,5) Шаг 7:S7=Ø, возврат в клетку (1,4) Шаг8: S6={E}, B=(ENNWNE), кл. (2,4),

  7. Общая схема рекурсивного перебора Решение задачи – вектор , удовлетворяющий заданным условиям и ограничениям, (или множество таких векторов). - множество возможных значений для - частичное решение, - кандидаты для расширения до Если , мы возвращаемся и выбираем новый элемент Если новый элемент выбрать нельзя, мы возвращаемся еще дальше и выбираем новый элемент , и т.д.

  8. Y 5 4 3 2 1 X 1 2 3 4 5 Задача обхода лабиринта Исходные данные n, m размеры лабиринта координаты старта SX, SY координаты финиша fX, fY матрица лабиринта a[i,j] dx, dy смещение Результат a[i,j] матрица лабиринта с маршрутом

  9. Y 5 4 3 2 1 X 1 2 3 4 5 Матрица лабиринта Стены кодируем -1, проходы – 0.

  10. Пример входных данных 9 9 размеры лабиринта 1 1 координаты старта и 7 1 координаты финиша – задаем с клавиатуры матрица лабиринта – читаем из файла. Пример выходных данных 7 8 9 0 0 матрица лабиринта с маршрутом – выводим на экран 6 -1 -1 0 -1 5 4 -1 0 0 -1 3 -1 -1 -1 1 2 0 0 0

  11. program obhodlab; uses crt,fileutil,sysutils; const maxn=20; dx: array [1..4] of integer = (-1, 0, 1, 0); dy: array [1..4] of integer = ( 0, -1, 0, 1); var a: array [0..maxn+1, 0..maxn+1] of integer; n, m, { размеры лабиринта} sx, sy, { начальное положение} fx, fy: integer;{ конечное положение}

  12. procedure init; var i, j: integer; var labirint : text; begin for i := 0 to maxn+1 do { барьеры } for j := 0 to maxn+1 do a[i, j] := -1; read(n, m, sx, sy, fx, fy); { исходные данные } аssignfile(labirint,'lab.txt'); reset(labirint); for i:=1 to n do for j := 1 to m do begin read(labirint,a[i, j]); end; closefile(labirint); end;

  13. procedure print_labirint; var i, j: integer; begin writeln; for i := 1 to n do begin for j := 1 to m do write(a[i, j]:4); writeln; end; end;

  14. proceduresearch(x, y, k: integer); var i: integer; begin a[y, x] := k; { записьварианта } if (x = fx) and (y = fy) then { решениенайдено } begin print_labirint; { выводрешения } halt; end else for i := 1 to 4 do { переборвсехвариантов } if a[y+dy[i], x+dx[i]] = 0 then { вариантподходит } search(x+dx[i], y+dy[i], k+1); { рекурсивныйвызов } a[y, x] := 0; { стирание варианта } end;

  15. { основная программа} begin init; search(sx, sy, 1); end.

  16. Давайте обсудим • Назовите достоинства и недостатки метода перебора с возвратом • Назовите недостатки рассмотренного решения • Как можно их исправить? • Как можно переформулировать задачу?

  17. Задания для самостоятельной работы • Выполните предложенный алгоритм и проверьте на различных тестах. • Попытайтесь доработать алгоритм, устранив недостатки. • Решите с помощью метода перебора с возвратом следующую задачу: Сгенерировать обход конем шахматной доски, так чтобы покрыть всю область.

  18. Источники: • Материалы Проекта «Подготовка и переподготовка профильных специалистов на базе центров образования и разработок в сфере информационных технологий в Приволжском федеральном округе» по направлению «Дополнительная подготовка школьников по дисциплине «Информатика и информационные технологии»». Раздел «Перебор с возвратом». Л.П. Жильцова. (Федеральное государственное бюджетное образовательное учреждение высшего профессионального образованияНижегородский государственный университет им. Н.И. Лобачевского) • Мозговой М.В. Занимательное программирование: Самоучитель. – СПб.: Питер, 2004. • http://borisvolfson.h11.ru/book/backtracking.php

More Related