Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
inf.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
491.92 Кб
Скачать

30. Понятие «алгоритм». Сложность алгоритмов

Современные ЭВМ являются программно-управляемыми системами. В свою очередь программы составляются на основании соответствующих алгоритмов.

Термин алгоритм применяется в настоящее время достаточно широко и далеко не всегда в области вычислительной техники. В связи с этим в обществе сложилось некоторое интуитивное понимание этого термина.

Научное же понятие алгоритма является основным в так называемой теории алгоритмов – направления в математике, открытого в 30-е годы трудами выдающихся математиков Д. Гильберта, А Черча, С. Клини, Э. Поста, А. Тьюринга.

Историки математики считают, что термин «алгоритм» произошел от арабского «algorism» и берет свое начало от имени автора знаменитого персидского учебника по математике (Абу Абд Аллах Мухаммед ибн Мусса аль Хорезми, 825 н.э буквально означавшего отец Абдуллы, Мухаммед, сын Муссы уроженец Хорезма).

Аральское мере в Центральной Азии тогда называлось Хорезм и район Хорезма располагался в бассейне Аму-Дарьи, южнее этого моря.

Аль Хорезм написал знаменитую книгу «Книга о восстановлении и противопоставлении». От названия этой книги, которая была посвящена решению линейных и квадратных уравнений, произошел еще один термин – «алгебра».

Постепенно форма и значение слова algorism изменилось. Приняв форму «algorithm» . уже в старинном немецком словаре 1747 г. можно прочитать термин - «algoritmus» - и его расшифровку – «понятие о четырех типах арифметических операций, а именно: о сложении, умножении, вычитании и делении».

Современное понятие «алгоритм» сформировалось в математике в 30-е годы 20 века. Начало систематической разработки теории алгоритмов положено работой А.А. Черча «Теория алгоритмов» (1936г).

Энциклопедия кибернетики так трактует понятие алгоритм – «точно определенное правило действий (программа) для которого задано указание, как и в какой последовательности это правило необходимо применять к исходным данным задачи, чтобы получить ее решение».

Это определение можно проиллюстрировать с помощью простой схемы (рис.10.1)

Задача

Алгоритмм

Программа

Вычислительное устройство

Входные данные

Выходные данные

Рисунок 10.1- Иллюстрация места алгоритма в процессе решения задачи с использованием ЭВМ

К 1950 г. слово алгоритм чаще всего ассоциировалось с алгоритмом Евклида, который представляет собой правило вычисления НОД двух целых положительных чисел. Суть алгоритма Евклида состоит в следующем. Пусть даны два целых положительных числа m и n. Требуется вычислить их НОД, т.е. наибольшее целое положительное число, на которое нацело делятся оба исходных числа.

Решить такую задачу можно несколькими путями.

1. Самый простой и интуитивно понятный. Пусть m = 15, n = 21. Введем вспомогательное число С и будем изменять его от 1 до m, если m < n.

Шаг 1. C = 1; m :c = 15; n : c = 21 Остаток r в обоих случаях равен 0, следовательно число 1 является общим делителем, что и естественно.

Шаг 2. С = 2 – не делятся без остатка оба числа;

Шаг 3. С = 3 – оба числа делятся без остатка., т.е число 3 является общим делителем. Запомним число 3.

Шаг 4. С = 4 – не делятся.

Шаг 5. С = 5 – не делятся и т д. Все остальные числа до 15 не являются делителем обоих чисел, следовательно, для чисел 15 и 21 НОД = 3.

Если принять за основную операцию – операцию деления и отдельно операцию сравнения остатка с нулем, то для реализации этой последовательности действий необходимо выполнить 40 операций.

2. При тех же самых исходных числах.

Шаг 1. С = 15 – не делятся.

Шаг 2. С = 14 – не делятся и т. д. Получим опять НОД = 3, но при этом выполним только 33 операции.

Евклид же предложил совершенно другой алгоритм.

Алгоритм Евклида используется для вычисления НОД двух целых положительных чисел (т.е. ограничениями на его применение является то, что числа должны быть обязательно целыми и положительными). Существо этого алгоритма заключается в следующем:

1) большее число поделить на меньшее;

2) меньшее число поделить на остаток от первого деления;

3) остаток от первого деления поделить на остаток от второго деления;

4) остаток от второго деления поделить на остаток от третьего деления;

5) и т.д до тех пор, пока в остатке не будет получен нуль.

Пример 1.1 Вычислить НОД чисел 192 и 264 (исходные числа положительные и целые).

264 ½192 192 ½ 72 72 ½ 48 48 ½ 24

192 1 144 2 48 1 48 2

72 48 24 0

Ответ: НОД (192,264) = 24 .

Известен алгоритм вычисления НОД трех целых положительных чисел. Покажем его на конкретном примере.

Пример 1.2 Найти НОД чисел 210, 150, 144.

Разложим каждое число на простые множители:

210 = 2 * 3 * 5 * 7;

150 = 2 * 3 * 5 * 5 ;

144 = 2 * 2 * 2 * 2 * 3 * 3 .

Выберем общие множители этих чисел. Их произведение будет равно НОД.

НОД ( 210, 150, 144 ) = 2 * 3 = 6, т.е. число 6 является наибольшим числом, на которое делятся 210, 150 и 144.

Очень важным и интуитивно понятным, но весьма сложно формализуемым в математике является понятие сложности алгоритма. Покажем это на конкретном примере.

Алгоритмы, для которых известна полиномиальная зависимость сложности, называются эффективными. Эффективность может быть временной и пространственной.

В заключение отметим, что в математике еще имеется много задач, для которых не удалось пока построить полиномиальный алгоритм. Одной из таких задач является задача вскрытия стойкого совершенного шифра.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]