Введение в понятие алгоритма
Понятие алгоритма
В сегодняшнем социуме слово «алгоритм» настолько широко распространено, что большинству интуитивно понятно. Под ним мы понимаем какую-либо последовательность шагов для достижения той или иной цели. Однако для теоретической науки понятие «алгоритма» достаточно сложное.
Считается, что однозначного определения алгоритма нет, хотя в основном различные источники дают очень близкие определения.
Итак, в широко распространенных определениях алгоритма (в рамках школьного курса информатики) можно выделить следующие составляющие:
Алгоритм – это конечная последовательность указаний …
- … на языке понятном исполнителю, …
- … задающая процесс решения задач определенного типа …
- … и ведущая к получению результата, однозначно определяемого допустимыми исходными данными.
В последнем пункте определения говорится о том, что результат выполнения алгоритма напрямую зависит от исходных данных. Т.е. один и тот же алгоритм при разных исходных данных даст разные результаты. С другой стороны, если одному и тому же алгоритму передать несколько раз одни и те же данные, он должен столько же раз выдать один и тот же результат.
Слово «алгоритм» происходит от имени ученого IX века Муххамеда бен Аль-Хорезми («аль-хорезми» -> «алгоритм»), который описал правила выполнения арифметических действий в десятичной системе счисления. Словом «алгоритм» потом и стали обозначать эти правила вычислений. Однако с течением времени понятие алгоритма видоизменялось и в XX веке под ним стали понимать какую-либо последовательность действий, приводящую к решению поставленной задачи.
Сначала определение понятия алгоритма было проблемой математики, однако с течением времени теория алгоритмов стала развиваться за счет влияния открытий не только в математике, но и в информатике. В настоящее время алгоритм является одним из главных понятий информатики.
Другими словами, следует понимать, что первоначально теория алгоритмов возникла в математике и представляла собой поиск способов решения задач определенного типа посредством определенного набора указаний.
Свойства алгоритма
- Дискретность (в данном случае, разделенность на части) и упорядоченность. Алгоритм должен состоять из отдельных действий, которые выполняются последовательно друг за другом.
- Детерминированность (однозначная определенность). Многократное применение одного алгоритма к одному и тому же набору исходных данных всегда дает один и тот же результат.
- Формальность. Алгоритм не должен допускать неоднозначности толкования действий для исполнителя.
- Результативность и конечность. Работа алгоритма должна завершаться за определенное число шагов, при этом задача должна быть решена.
- Массовость. Определенный алгоритм должен быть применим ко всем однотипным задачам.
Исполнитель и разработчик алгоритма
Разрабатывать, придумывать алгоритмы могут только разумные существа (например, человек). А вот формально (не думая и не оценивая) исполнять, могут какие-либо машины (например, компьютеры, бытовые приборы). В чем польза такого разделения труда? Дело в том, что человек освобождается от рутинной деятельности, которая часто может занимать много времени, и поручает ее машинам.
Однако машины не люди: приборы понимают лишь ограниченное число команд и могут обрабатывать данные (объекты) далеко не всех типов. Отсюда следует, что разработчик алгоритма в конечном итоге должен описать алгоритм в допустимых командах определенного исполнителя (той машины, которой будет поручено выполнение алгоритма). Совокупность команд, которые данный исполнитель может выполнять, называется системой команд исполнителя. Объекты (данные), над которыми исполнитель может выполнять действия, формируют среду исполнителя.
Язык программирования - средство записи алгоритмов для компьютеров
Достаточно универсальным исполнителем является компьютер. С его помощью можно выполнять разнообразные по видам алгоритмы: делать математические вычисления, обрабатывать текстовые данные, изменять графику и др. В каком-то смысле компьютер может делать многое, что и человек, а некоторые вещи намного быстрее. Однако человек и компьютер «разговаривают» на совершенно разных языках: один – на естественном (русском, английском и др.), а другой – на формальном (машинном) языке.
Разработав алгоритм, человек должен как-то «объяснить» его компьютеру. Для этих целей служат языки программирования, а результатом записи алгоритма на них является программа.
В настоящее время язык программирования – это скорее некий посредник между человеком и вычислительной машиной. Программа, написанная на языке программирования, в последствии переводится на машинный язык транслятором.
Итог
Изучение алгоритмов имеет большую практическую значимость. Это связано с тем, что создание алгоритма предполагает подробное описание каждого шага решения задачи, и в конечном итоге шаг алгоритма может быть достаточно прост для выполнения его компьютером. А значит, задачи, для которых можно выработать алгоритм их решения, могут быть автоматизированы, т.е. переложены «на плечи» машин.
Однако следует всегда помнить, что не все задачи имеют алгоритмическое решение.
При этом для тех задач, которые все-таки имеют алгоритмическое решение, могут быть разработаны различные алгоритмы. Но наиболее эффективным, скорее всего, будет только один.