Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гончарова_диплом.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
9.64 Mб
Скачать
    1. Сущность понятия «Алгоритм», виды и свойства алгоритма

Понятие алгоритма - одно из фундаментальных понятий информатики. Алгоритмизация наряду с моделированием выступает в качестве общего метода информатики. К реализации определенных алгоритмов сводятся процессы управления в различных системах, что делает понятие алгоритма близким и кибернетике [13].

Началом систематической разработки теории алгоритмов можно считать 1936 год, и связывают это с публикацией работы А.А. Черча. Но первое научное определение понятия алгоритма сформировалось в 1920-х годах [15]. Так что же такое алгоритм? В научно-педагогической и методической литературе существуют различные подходы к определению этого понятия.

Последовательность действий, которую необходимо выполнить над исходными данными, чтобы достичь поставленной цели, принято называть алгоритмом. Приведенное определение понятия алгоритма является не строгим.

Н. Д. Угринович [22, с.107] трактует это понятие так: «алгоритм – это описание детерминированной последовательности действий, направленных на получение из исходных данных результата за конечное число дискретных шагов с помощью понятных исполнителю команд».

Обратимся и к другим источникам формулирующим данное понятие.

«Алгоритм – понятное и точное предписание исполнителю выполнить конечную последовательность команд, приводящую от исходных данных к исходному результату» [17,с.151]. «Алгоритм – описание конечной последовательности шагов в решении задачи, приводящей от исходных данных к требуемому результату» [3, с.101].

Итак, не смотря на некие отличия все определения, сводятся к тому, что алгоритм это четко определенная, конечная последовательность шагов (действий, предписаний) преобразующая исходные данные в результат.

Теория алгоритмов находит применение в различных сферах деятельности человека. Появление компьютеров внесло свою лепту в эту теорию. Алгоритмы, реализованные на компьютере, позволили решать сложные задачи в различных областях, например:

  • в медицине – автоматическая диагностика и обработка данных компьютерной томографии;

  • в производстве – управление техническими устройствами, заменяющими человека в сложных или опасных для жизни условиях;

  • в кинематографии – обработка изображений, моделирование пейзажей и движений, сжатие аудио- и видеоинформации;

  • в Интернете – увеличение скорости поиска и обработки данных поисковыми системами;

  • в аэрокосмонавтике – управление космическими кораблями и спутниками и т.д. [8];

Можно выделить общие свойства, которыми должен обладать любой алгоритм независимо от того, к какой сфере деятельности или области знаний он относится, и кто его выполняет. Но для начала давайте определим, что подразумевает под собой данное понятие. «Свойство алгоритма – это набор характеристик, атрибутов, отличающих алгоритм от любых других предписаний и обеспечивающих его автоматическое выполнение» [24, с.199]. Существуют следующие свойства:

  • дискретность;

  • детерминированность;

  • массовость;

  • результативность;

  • конечность.

Рассмотрим все эти свойства на конкретном примере.

Представьте, что вы отправились с друзьями в поход и вам нужно разжечь в лесу костер. Алгоритм разжигания костра при хорошей погоде может выглядеть следующим образом [8]:

  1. Выберите место для костра в отдалении от деревьев и кустов.

  2. Соберите сухие ветки.

  3. Сложите их недалеко от выбранного для костра места.

  4. На месте костра сложите «шалашиком» тонкие сухие ветки.

  5. Положите под ветки бумагу для растопки.

  6. Подожгите бумагу.

  7. По мере разгорания, подкладывайте более толстые сухие ветки, соблюдая расстояние между ними для вентиляции.

В приведенном алгоритме четко указываются как сами действия, так и порядок их выполнения. Если поменять местами пункты 2 и 3 алгоритм работать не будет. Невозможно сложить ветки, которые еще не собраны.

Приведенный алгоритм обладает свойством дискретности (от лат. discretus – разделенный, прерывистый). Это свойство предполагает, что любой алгоритм должен состоять из последовательности шагов, следующих друг за другом. Следующий шаг выполняется только после завершения предыдущего.

Этот алгоритм также обладает свойством детерминированности (от лат. determinate – определенность, точность). Это свойство указывает, что любое действие в алгоритме должно быть строго и недвусмысленно определено и описано для каждого случая.

Так как для разжигания костра мы можем использовать ветки различных деревьев, и источником огня могут быть спички, лупа или зажигалка, то мы можем определить, что этот алгоритм обладает и таким свойством как массовость. Свойство массовости понимается как применимость алгоритма к решению бесконечного класса однотипных задач, различающихся исходными данными [1,19, 22].

После выполнения всех действий мы получим огонь. Из этого следует очень важное свойство – результативность.

Из свойства результативности следует свойство конечности алгоритма, которое определяет завершение каждого действия в отдельности и алгоритма в целом за конечное число шагов.

Алгоритм, составленный для некоторого исполнителя, можно представить различными способами: с помощью графического или словесного описания, последовательностью формул, записанным на алгоритмическом языке. Остановимся на графическом описании алгоритма, называемом блок-схемой. Этот способ имеет ряд преимуществ благодаря наглядности, обеспечивающей, в частности, высокую «читаемость» алгоритма и явное отображение управления в нем [13]

Для отображения алгоритма в виде блок-схемы используется стандартный набор графических объектов (блоков), перечень и условные обозначения которых приведены в таблице 1 [19]. Использование блок-схем, состоящих из типового набора блоков, позволяет трактовать алгоритм однозначно.

Таблица 1 – Стандартные графические объекты блок-схем

Вид блока

Назначение блока

Указание на начало и конец алгоритма

Организация ввода и вывода данных

Непосредственное выполнение действия

Проверка условия

Повторение ряда действий

Любой, даже самый сложный алгоритм, можно представить с помощью трех типовых конструкций (структур): следования, ветвления и цикла. На рисунке 1 представлены блок-схемы этих базовых структур.

В зависимости от того, какие базовые структуры использованы при составлении алгоритмов, различают три основные разновидности алгоритмов: линейный, разветвляющийся и циклический.

Линейный алгоритм – это алгоритм, в котором действия выполняются последовательно одно за другим.

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

При полной форме действия выполняются в обоих случаях: и при истинности, и при ложности условия. Ей соответствует следующее выражение: если <условие>, то <действие 1>, иначе то <действие 2>.

Неполной форме ветвления соответствует выражение: если <условие>, то <действие >.

Циклический алгоритм – это схема выполнения части алгоритма, в которой некоторые действия повторяются [15]. Они могут содержать разные виды циклов:

  • цикл со счетчиком – это цикл с известным числом повторений;

  • цикл с постусловием – это цикл с неизвестным числом повторений, в котором выход из цикла осуществляется при выполнении условия;

  • цикл с предусловием – это цикл с неизвестным числом повторений, в котором цикл продолжается, пока выполняется условие [8].

Обобщая все вышеизложенное можно сказать, что под алгоритмом понимают понятное и точное предписание исполнителю совершить последовательность действий, направленных на достижение поставленной цели. Алгоритм обязательно должен обладать свойствами, такими как: детерминированность, массовость, понятность, дискретность и результативность. Различают линейные алгоритмы, алгоритмы с ветвлением и с повторением. Если провести более или менее внимательный анализ, то окажется, что большую часть своих действий человек выполняет по определенным алгоритмам, иногда даже не осознавая этого. Так что роль алгоритмов в жизни человека трудно переоценить.