![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Понятие алгоритма. Термин «алгоритм» (Algorithm) происходит от латинской формы написания имени великого математика и астронома
Термин «алгоритм» (Algorithm) происходит от латинской формы написания имени великого математика и астронома, автора персидского учебника по математике Абу Джафара ибн Мусы аль-Хорезми (уроженца Хорезма), жившего в IX в. и сформулировавшего правила выполнения арифметических действий. Первоначально под алгоритмами и понимали только эти правила. Позже термин «алгоритм» стали использовать для обозначения любой последовательности действий, приводящей к решению какой-либо задачи. Алгоритм является одним из фундаментальных понятий в математике и программировании. В широком смысле алгоритм означает заранее заданное и точное предписание возможному исполнителю последовательности действий над заданным объектом, приводящее к достижению указанной цели за конечное число шагов. При этом понятие исполнителя невозможно определить с помощью какой-либо формализации. Исполнителем может быть человек, группа людей, робот, станок, компьютер, язык программирования и т.д. Важнейшим свойством, характеризующим любого из них, является то, что исполнитель умеет выполнять некоторые команды, действуя формально не вникая в смысл того, что он делает. Чтобы создать программу для компьютера, недостаточно знания только языка программирования.Надо сконструировать программу, разбить ее на определенные блоки и выстроить эти блоки один за другим в соответствии с заранее заданным порядком действий (этот порядок и называется алгоритмом программы). Алгоритм должен быть составлен таким образом, чтобы исполнитель, в расчете на которого он создан, мог однозначно и точно следовать командам алгоритма и эффективно получать определенный результат. Это накладывает на записи алгоритмов ряд обязательных требований. Сформулируем эти требования в виде перечня свойств, которым должны удовлетворять алгоритмы, адресуемые заданному исполнителю. 1. Одно из первых требований, которое предъявляется к алгоритму, состоит в том, что описываемый процесс должен быть разбит на последовательность отдельных шагов. Возникающая в результате такого разбиения запись представляет собой упорядоченную совокупность четко разделенных друг от друга предписаний (директив, команд, операторов), образующих прерывную (или, как говорят, дискретную) структуру алгоритма. Только выполнив требования одного предписания, можно приступить к выполнению следующего. Рассмотренное свойство алгоритмов называют дискретностью. Итак: дискретность (упорядоченность) означает, что все действия исполнителя (компьютера) в алгоритме должны быть выстроены в четком, раз и навсегда определенном порядке через отдельные шаги. 2. Чтобы составить алгоритм для определенного исполнителя, нужно знать, какие команды он может понять и выполнить, а какие нет. У каждого исполнителя имеется своя система команд и, очевидно, что составляя запись алгоритма для него, можно использовать лишь те команды, которые имеются в системе команд исполнителя. Это свойство алгоритмов называют понятностью. Итак: понятность алгоритма заключается в том, что каждый шаг алгоритма обязательно представляет собой какое-либо допустимое действие исполнителя, т.е. алгоритм состоит только из предписаний, входящих в систему команд данного исполнителя. 3. Будучи понятным, алгоритм не должен содержать предписаний, смысл которых может восприниматься неоднозначно, т.е. одна и та же команда, будучи понятна разным исполнителям, после исполнения каждым из них должна давать одинаковый результат. Запись алгоритма должна быть настолько четкой, полной и продуманной в деталях, чтобы у исполнителя не могло возникнуть потребности в принятии решений, не предусмотренных составителем алгоритма. Иначе говоря, алгоритм не должен оставлять места для произвола исполнителя. Кроме того, в алгоритмах недопустимы также ситуации, когда после выполнения очередной команды алгоритма исполнителю неясно, какая из его команд должна выполняться на следующем шаге. Отмеченное свойства алгоритмов называютопределенностью или детерминированностью. Итак: детерминированность (определенность) имеет ввиду следующее - каждое правило должно быть однозначным, т.е. на каждом шаге однозначно определен способ действий. 4. Обязательное требование к алгоритмам - результативность. Смысл этого требования состоит в том, что при точном исполнении всех предписаний алгоритма процесс должен прекратиться за конечное число шагов и при этом должен получиться определенный результат. Итак: результативность подразумевает, что каждый шаг (и алгоритм в целом) после своего завершения дает однозначно определенный результат. 5. Наиболее распространены алгоритмы, обеспечивающие решение не одной конкретной задачи, а некоторого класса задач данного типа. Это свойство алгоритма называютмассовостью. В простейшем случае массовость обеспечивает возможность использования различных исходных данных. Итак: массовость означает, что алгоритм должен быть как можно более универсальным, подходящим для решения разных типов задач. 6. Алгоритм должен быть по возможности простым и выполняться с минимальными затратами машинного времени и оборудования. Это свойство называют эффективностью. Алгоритм должен быть выполнен не просто за конечное число операций, а за разумное конечное время. На практике в качестве исполнителя алгоритмов чаще всего используют ЭВМ, поэтому алгоритм, предназначенный для исполнения на компьютере, должен быть записан на понятном ему языке (на первый план здесь выдвигается необходимость точной записи команд, не оставляющей места для произвольного толкования их исполнителем). Короче говоря, язык для записи алгоритмов должен быть формализован (более строго описан). Формализация предполагает замену словесной формулы решаемой задачи краткими символьными обозначениями, близкими к обозначениям в языках программирования или к математическим. Такой язык принято называть языком программирования, а запись алгоритма на этом языке - программой для компьютера. При построении алгоритма для сложной задачи используют системный подход: использование принципов декомпозиции (нисходящее проектирование «сверху-вниз») и синтеза (программирование «снизу-вверх»). Первое предполагает первоначальную разработку алгоритма в виде укрупненных блоков (разбиение задачи на подзадачи, или модули со связями между собой) и их постепенную детализацию (пошаговое разбиение алгоритма на все более мелкие части до уровня элементарных конструкций, для которых можно составить конкретные команды). Затем (после декомпозиции) проводится сборка блоков (модулей) в единую программу (т.е. синтез). Кроме этих, при разработке алгоритмов применяется принцип «от главного к второстепенному», предполагающий составление алгоритма, начиная с главной конструкции и принцип структурирования, т.е. использования только типовых алгоритмических структур при построении алгоритма. Как и при разработке структуры любой сложной системы, при формировании алгоритма используют дедуктивный и индуктивный методы. При дедуктивном подходе рассматривается частный случай общеизвестныхалгоритмических моделей (здесь при заданных предположениях известный алгоритм приспосабливается к условиям решаемой задачи). Индуктивный способ предполагает эвристический системный подход (декомпозиция - анализ - синтез). В этом случае общих и наиболее удачных методов не существует (возможны некоторые подходы, позволяющие в каждом конкретном случае находить и строить алгоритмы). Итак, алгоритмизация - это совокупность взаимосвязанных действий, выполняемых в процессе разработки и обоснования алгоритма. Она включает: расчленение вычислительного процесса на автономные шаги, формальную запись содержания каждого шага вычислительного процесса; определение очередности (порядка) выполнения выделенных шагов; проверку правильности работы алгоритма при реализации заданного метода вычисления. Вычислительный процесс, реализующий алгоритм решения задачи, формализуется в виде вычислительной схемы. Вычислительная схема представляет собой некоторую последовательность операций и форму их записи. При этом алгоритм решения задачи сводится к выполнению некоторого числа операций над исходными данными и получаемыми промежуточными результатами в заданной последовательности, включая получение общего результата решения задачи.
|