Запись алгоритмов

Алгоритмы и их запись

Компьютер работает очень быстро. Он выполняет сотни миллионов операций в секунду. Человек, даже тренированный, способен сделать за секунду только несколько осмысленных действий. Ели изменить масштаб времени так, чтобы компьютер выполнял не более одной команды в секунду, то человек в этом масштабе будет совершать одно движение в 100…200 лет!

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

Допустим, мы выбрали один из языков программирования высокого уровня и решили написать на нем программу для компьютера. Что же она будет содержать? А что вообще содержат всякие инструкции и указания, которыми мы руководствуемся при жизни? Каждый способен привести множество примеров:

  • Кулинарный рецепт: «Довести до кипения 5 стаканов подсоленного молока, тонкой струйкой всыпать 1 стакан манной крупы и, непрерывно помешивая, варить на слабом огне 10-15 минут до загустения. После этого положить 1 столовую ложку сахара и размешать».
  • Совет прохожего: «Идите прямо два квартала, на перекрестке поверните направо, дойдите до магазина и войдите во двор. Зайдите во второй подъезд и поднимитесь на третий этаж».
  • Дозировка и применение лекарства: «Принимать по одной таблетке 3-4 раза в день после еды в течение недели. При необходимости повторить курс лечения через 2-3 недели».
  • Инструкция к стиральной машине: «Загрузите белье в машину, распределив равномерно крупные и мелкие вещи, и плотно закройте дверцу. Засыпьте стиральный порошок в выдвижной ящик. Нажмите кнопку Питание, чтобы включить машину. Выберите необходимые условия работы, поворачивая программатор по шкале и нажимая на каждую кнопку. Нажмите кнопку Старт».

Эти инструкции может выполнить любой человек, и не только человек, но даже машина. Другие инструкции требуют специальной подготовки:

  • Из инструкции по окраске полов: «Профилированные галтели олифят. После высыхания шпаклюют резиновой пластинкой на сдир и шлифуют». Даже чтобы понять эти фразы необходимы соответствующие знания.
  • Ремонт двигателя: «Установить ротор на цапфу коленчатого вала, а кулачок на ротор так, чтобы штифты вошли в прорези ротора. Поставить и закрепить наковальню и конденсатор двумя винтами, при этом щеточка должна быть заведена за кулачок». Да, тут уже без инструктора не обойдешься.

Инструкции могут быть записаны специальными обозначениями, понятными только посвященным людям. Например, известная со школьной скамьи формула для вычисления корней квадратного уравнения тоже является своеобразной инструкцией, которая будет не понятна человеку, не изучавшему математику.cmp

Аналогичные указания следует давать компьютеру. При этом надо учитывать, что компьютер не обладает никакими предварительными знаниями, позволяющими человеку додумывать то, что не написано явно в инструкции. Компьютер – это «быстродействующий идиот», выполняющий лишь то, что ему предписано. Даже людьми самые подробные инструкции понимаются по-разному. Это иногда приводит к ошибкам, что хорошо знают военные, стремящиеся подавать команды и отдавать приказы четко и однозначно, не допуская двух или нескольких толкований, а их выполнение доводят до автоматизма.

Что уж говорить о компьютере. Команды для него надо писать подробно и точно. Компьютеру дают не инструкцию, а алгоритм решения поставленной задачи, который исключает какое-либо додумывание, двучтение и двумыслие.

Алгоритм или, как его называли раньше – алгорифм – очень общее понятие и, как всякое общее понятие, для него трудно подобрать правильное определение. Попробуйте в двух-трех фразах объяснить, что такое «метод», «наука» или «культура». Существует целая теория алгоритмов, которая вводит не одно, а даже несколько определений, доказывает их эквивалентность и детально изучает алгоритмы исходя из строгого определения.

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

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

***

Свойства алгоритма



Rambler's Top100