Автор работы: Пользователь скрыл имя, 05 Апреля 2014 в 15:23, курсовая работа
Алгори́тм, от имени учёного аль-Хорезми (перс. خوارزمی [al-Khwārazmī]) — точный набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное время. В старой трактовке вместо слова «порядок» использовалось слово «последовательность», но по мере развития параллельности в работе компьютеров слово «последовательность» стали заменять более общим словом «порядок». Это связано с тем, что работа каких-то инструкций алгоритма может быть зависима от других инструкций или результатов их работы.
Техническое задание на разработку ПС………………………………………...3
1 Теоретическая часть…………………………………………………………….4
1.1 Сведения об алгоритмах……………………………………………….4
1.2 Сведения об игре «пятнашки»………………………………………..8
2 Функциональное описание……………………………………………………11
Заключение………………………………………………………………………12
Список использованных источников…………………………………………..13
Приложение А …………………………………………………………………..14
Приложение Б …………………………………………………………………...15
Приложение В ………………………………………………………………...…16
Бийский технологический институт (филиал) федерального
государственного бюджетного образовательного учреждения
высшего профессионального образования
"Алтайский государственный технический университет
им. И.И. Ползунова"
Кафедра Информационных технологий, автоматизации и управления
| ||||||||||||||||||||||||||||||||||
Программная реализация игры «Пятнашки»
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
К КУРСОВОМУ ПРОЕКТУ (РАБОТЕ)
по дисциплине Технология программирования
Проектвыполнил | |||
Студент гр. |
ПС-21 |
Иванищев Р.Е | |
Нормоконтролер доцент кафедры МСИА |
Заборовский А.Н. | |||
(подпись) |
Бийск 2013
СОДЕРЖАНИЕ
Техническое задание
на разработку ПС……………………………………
1 Теоретическая часть…………………………………………………………….4
1.1 Сведения об алгоритмах……………………
1.2 Сведения об игре «пятнашки»………………………………………..8
2 Функциональное описание……………………………………………………11
Заключение……………………………………………………
Список использованных источников…………………………………………..13
Приложение А …………………………………………………………………..14
Приложение Б …………………………………………………………………...15
Приложение В ………………………………………………………………...…16
Техническое задание на разработку ПС
Разработать программу, позволяющую реализовать на компьютере игру «пятнашки».
1 Теоретическая часть
Алгори́тм, от имени учёного аль-Хорезми (перс. خوارزمی [al-Khwārazmī]) — точный набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное время. В старой трактовке вместо слова «порядок» использовалось слово «последовательность», но по мере развития параллельности в работе компьютеров слово «последовательность» стали заменять более общим словом «порядок». Это связано с тем, что работа каких-то инструкций алгоритма может быть зависима от других инструкций или результатов их работы. Таким образом, некоторые инструкции должны выполняться строго после завершения работы инструкций, от которых они зависят. Независимые инструкции или инструкции, ставшие независимыми из-за завершения работы инструкций, от которых они зависят, могут выполняться в произвольном порядке, параллельно или одновременно, если это позволяют используемые процессор и операционная система.
Ранее часто писали «алгорифм», сейчас такое написание используется редко, но, тем не менее, имеет место (например, Нормальный алгорифм Маркова).
Часто в качестве исполнителя выступает некоторый механизм (компьютер, токарный станок, швейная машина), но понятие алгоритма необязательно относится к компьютерным программам, так, например, чётко описанный рецепт приготовления блюда также является алгоритмом, в таком случае исполнителем является человек.
Понятие алгоритма относится к первоначальным, основным, базисным понятиям математики. Вычислительные процессы алгоритмического характера (арифметические действия над целыми числами, нахождение наибольшего общего делителя двух чисел и т. д.) известны человечеству с глубокой древности. Однако, в явном виде понятие алгоритма сформировалось лишь в начале XX века.
Частичная формализация понятия алгоритма началась с попыток решения проблемы разрешения (нем. Entscheidungsproblem), которую сформулировал Давид Гильберт в 1928 году. Следующие этапы формализации были необходимы для определения эффективных вычислений или «эффективного метода»; среди таких формализаций — рекурсивные функции Геделя — Эрбрана — Клини 1930, 1934 и 1935 гг., λ-исчисление Алонзо Чёрча 1936 г., «Формулировка 1» Эмиля Поста 1936 года и машина Тьюринга. В методологии алгоритм является базисным понятием и получает качественно новое понятие как оптимальности по мере приближения к прогнозируемому абсолюту. В современном мире алгоритм в формализованном выражении составляет основу образования на примерах, по подобию. На основе сходства алгоритмов различных сфер деятельности была сформирована концепция (теория) экспертных систем.
Неформальное определение
Каждый алгоритм предполагает существование начальных (входящих) данных и в результате работы приводит к получению определенного результата. Работа каждого алгоритма происходит путем выполнения последовательности некоторых элементарных действий. Эти действия называют шагами, а процесс их выполнения называют алгоритмическим процессом. Таким образом проявляется свойство дискретности алгоритма. Важным свойством алгоритмов является массовость, или возможность применения к различным входным данным. То есть, каждый алгоритм призван решать класс однотипных задач. Необходимым условием, которому удовлетворяет алгоритм, является детерминированность, или определенность. Это означает, что выполнение команд алгоритма происходит по единому образцу и приводит к одинаковому результату для одинаковых входных данных. Входные данные алгоритма могут быть ограничены набором допустимых входных данных. Применение алгоритма к недопустимым входным данным может приводить к тому, что алгоритм никогда не остановится или попадет в тупиковое состояние (зависание), из которого не сможет выйти.
Формальное определение
Разнообразные теоретические проблемы математики и ускорение развития физики и техники поставили на повестку дня точное определение понятия алгоритма. Первые попытки уточнения понятия алгоритма и его исследования осуществляли в первой половине XX века Алан Тьюринг, Эмиль Пост, Жак Эрбран, Курт Гедель, Андрей Марков, Алонзо Чёрч. Было разработано несколько определений понятия алгоритма, но впоследствии было выяснено, что все они определяют одно и то же понятие (см. Тезис Чёрча — Тьюринга).
Формальные свойства алгоритмов
Различные определения алгоритма в явной или неявной форме содержат следующий ряд общих требований:
Дискретность — алгоритм должен представлять процесс решения задачи как последовательное выполнение некоторых простых шагов. При этом для выполнения каждого шага алгоритма требуется конечный отрезок времени, то есть преобразование исходных данных в результат осуществляется во времени дискретно.
Детерминированность (определённость) – в каждый момент времени следующий шаг работы однозначно определяется состоянием системы. Таким образом, алгоритм выдаёт один и тот же результат (ответ) для одних и тех же исходных данных. В современной трактовке у разных реализаций одного и того же алгоритма должен быть изоморфный граф. С другой стороны, существуют вероятностные алгоритмы, в которых следующий шаг работы зависит от текущего состояния системы и генерируемого случайного числа. Однако при включении метода генерации случайных чисел в список «исходных данных», вероятностный алгоритм становится подвидом обычного.
Понятность — алгоритм для исполнителя должен включать только те команды, которые ему (исполнителю) доступны, которые входят в его систему команд.
Завершаемость (конечность) — при корректно заданных исходных данных алгоритм должен завершать работу и выдавать результат за конечное число шагов. С другой стороны, вероятностный алгоритм может и никогда не выдать результат, но вероятность этого равна 0.
Массовость (универсальность) – алгоритм должен быть применим к разным наборам исходных данных.
Результативность — завершение алгоритма определёнными результатами.
Алгоритм содержит ошибки, если приводит к получению неправильных результатов либо не даёт результатов вовсе.
Алгоритм не содержит ошибок, если он даёт правильные результаты для любых допустимых исходных данных.
Наличие исходных данных и некоторого результата
Алгоритм — это точно определённая инструкция, последовательно применяя которую к исходным данным, можно получить решение задачи. Для каждого алгоритма есть некоторое множество объектов, допустимых в качестве исходных данных. Например, в алгоритме деления вещественных чисел делимое может быть любым, а делитель не может быть равен нулю. Алгоритм служит, как правило, для решения не одной конкретной задачи, а некоторого класса задач. Так, алгоритм сложения применим к любой паре натуральных чисел. В этом выражается его свойство массовости, то есть возможности применять многократно один и тот же алгоритм для любой задачи одного класса. Для разработки алгоритмов и программ используется алгоритмизация — процесс систематического составления алгоритмов для решения поставленных прикладных задач. Алгоритмизация считается обязательным этапом в процессе разработки программ и решении задач на ЭВМ. Именно для прикладных алгоритмов и программ принципиально важны детерминированность, результативность и массовость, а также правильность результатов решения поставленных задач. Алгоритм — это понятное и точное предписание, исполнительно совершить последовательность действий, направленных на достижение цели.
Пятна́шки — популярная головоломка, придуманная в 1878 году Ноем Чепмэном. Представляет собой набор одинаковых квадратных костяшек с нанесёнными числами, заключённых в квадратную коробку. Длина стороны коробки в четыре раза больше длины стороны костяшек для набора из 15 элементов, соответственно в коробке остаётся незаполненным одно квадратное поле. Цель игры — перемещая костяшки по коробке добиться упорядочивания их по номерам, желательно сделав как можно меньше перемещений.
Суть самой игры заключается в следующем:
В общем виде данное табло можно представить в виде таблицы 1:
2 |
8 |
6 |
1 |
3 |
4 |
9 |
5 |
12 |
11 |
14 |
15 |
7 |
10 |
13 |
Таблица 1 – Образец
Игрок должен перемещать по одной клетки с цифрой на пустое место.
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
Таблица 2 – Правильное заполнение табло
Математическое описание
Пятнашки представляют собой классическую задачу для моделирования эвристических алгоритмов. Обычно задачу решают через количество перемещений и поиск манхеттенского расстояния между каждой костяшкой и её позицией в собранной головоломке. Для решения используются алгоритмы наподобие алгоритма A*.
Нерешаемая комбинация, предложенная Ноем Чепменом – рисунок 1.
Рисунок – 1
Можно показать, что ровно половину из всех возможных 1 307 674 368 000 (=15!) начальных положений пятнашек невозможно привести к собранному виду: пусть квадратик с числом i расположен до (если считать слева направо и сверху вниз) k квадратиков с числами меньшими i. Будем считать ni = k, то есть если после костяшки с i-м числом нет чисел, меньших i, то k = 0. Также введем число e — номер ряда пустой клетки (считая с 1).