Похожие презентации:
Задача о ханойских башнях
1.
Министерство науки и образования РФФедеральное государственное бюджетное учреждение
высшего образования
«Тверской государственный технический университет»
(ТвГТУ)
Кафедра программного обеспечения
Курсовая работа
по дисциплине: «Теория алгоритмов»
ЗАДАЧА О ХАНОЙСКИХ
БАШНЯХ
Выполнил:
студент группы
Б.ПИН.РИС-20.06
Филатов Ю.А.
2.
ЦЕЛЬ РАБОТЫИзучение алгоритмов решения задачи о Ханойских башнях
2
3.
ЗАДАЧИизучить методы решения задачи о ханойских башнях;
разработать алгоритм решения задачи;
осуществить программную реализацию на языке python;
протестировать разработанное приложение.
3
4.
ХАНОЙСКИЕ БАШНИХанойские башни — это игра, в которой используются три штыря и
набор дисков. Все диски различаются диаметром и нанизываются на
штыри через отверстие в центре каждого диска. Первоначально все
диски находятся на левом штыре.
Цель игры состоит в том, чтобы переместить все диски на
центральный штырь. Правый штырь можно использовать как
«запасной» для временного размещения дисков. При каждом
перемещении диска с одного штыря на другой должны соблюдаться два
ограничения: перемещать можно только самый верхний диск на штыре,
и, кроме того, нельзя ставить диск на другой диск меньшего размера.
4
5.
ХАНОЙСКИЕ БАШНИРис. 1 Ханойские башни
5
6.
МАТЕМАТИЧЕСКАЯ МОДЕЛЬМатематической моделью данной задачи является рекуррентное
соотношение. Рекуррентное соотношение — это соотношение, которое
выражает значение функции с помощью других значений, вычисленных
для меньших аргументов. Исходя из данного определения, следует, что
для каждой рекуррентной функции нужно задавать хотя бы одно
значение.
T(n) = 2 * T(n - 1) + 1
6
7.
РЕКУРСИВНОЕ РЕШЕНИЕРис. 2 рекурсивный алгоритм
7
8.
ИТЕРАТИВНОЕ РЕШЕНИЕРис. 3 Итеративный алгоритм
Рис. 4 Подпрограмма move_disk
8
9.
ПРОГРАММНАЯ РЕАЛИЗАЦИЯДля осуществления поставленных задач было создано два класса:
Класс, описывающий диски, Disk, включающий в себя числовое поле
size, размер диска, и методы сравнения объектов данного класса между
собой.
И класс Tower, описывающий стержни, на которых будут лежать диски, с
методами для добавления и удаления дисков и методом для заполнения
колышка дисками.
9
10.
ДИАГРАММА КЛАССОВРис. 5 Диаграмма классов
10
11.
ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙСДля программы был реализован пользовательский интерфейс с
помощью библиотеки pygame. Интерфейс позволяет пользователю
выбрать количество дисков и алгоритм решения задачи, если
пользователь пожелает, он может выбрать опцию решать головоломку
самостоятельно.
11
12.
ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙСРис. 6 Выбор сложности
Рис. 7 Самостоятельное решение 12
13.
ТЕСТИРОВАНИЕРис. 8 Решение задачи алгоритмом
13
14.
ТЕСТИРОВАНИЕРис. 9 Тестирование времени выполнения
Рис. 10 Сравнение алгоритмов
14
15.
ЗАКЛЮЧЕНИЕВ результате выполнения курсовой работы была создана программа, позволяющая
решить задачу о ханойских башнях с помощью двух алгоритмов: рекурсивного и
итеративного. Так же пользователю дана возможность решить задачу самостоятельно.
Программа выполнена в двух вариантах: консольном и вариантом с интерфейсом,
созданным с помощью pygame. Первый вариант позволяет вводить число дисков,
ограниченное ресурсами компьютера, и тестировать время выполнения алгоритмов, а
второй позволяет наблюдать поэтапную работу алгоритмов на красивом интерфейсе.
В результате тестирования программы выяснилось, что рекурсивный алгоритм
работает быстрее, чем итеративный.
15