logo
INFO2

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

Использование вычислительных машин в качестве ис­полнителей алгоритмов предъявляет  ряд требований к алгоритмам. В отличие от людей, компьютер может вы­полнять только точно определенные операции. Поэтому машинные алгоритмы должны обла­дать следующими свойствами:

1. Чтобы исполнитель сумел решить поставленную перед ним задачу, ис­пользуя алгоритм, он должен уметь выполнить каждое его указание. Ины­ми словами, он должен понимать суть управления. То есть при составлении алгоритма нужно обязательно учиты­вать "правила игры", т.е. систему предписаний (или систему команд), которые понимает ЭВМ. Например, при решении какой-то задачи студент использовал обращение к функциям sin x (это тригонометрическая функция) и к функции Бесселя (это цилиндрическая функция), но компьютер (как и читатель, наверное) не понимает последней. Она создателями данного класса машин не предусмотрена. Следовательно, алгоритма (в целом) машина не поймет. Мы будем говорить в данном случае о "понятности" алго­ритма.

Под "ПОНЯТНОСТЬЮ" алгоритмов понимают указания, которые понятны исполнителю.

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

В приведенном выше рецепте при­готовления омлета сказано: "Разбить в эту смесь 3 яйца и все -это хорошо взбить ложкой". На бытовом уровне нам понятно, что речь идет о трех куриных яйцах (а каких еще! - скажете вы). Но яйца могут быть и голубиные, и утиные, и даже страусиные (все рез­ко отличаются по величине друг от друга). Здесь явно "закралась" неоднозначность.

Или указания типа: "посолить по вкусу", "насыпать две-три ложки са­харного песку", "получил оценку 4 или 5", "жарить до готовности"» "копать от забора до обеда" не могут встречаться в алгоритмах. Очевидно, что понятные в определенных ситуациях для человека предписания такого типа могут поставить в тупик ЭВМ.

Или вспомним известную всем притчу о царской воле. Царь прика­зал подчиненным выполнить такой указ: "Казнить нельзя помиловать". Он забыл в указе поставить запятую, а подчиненные не знали, что им де­лать. Указание "казнить нельзя, по­миловать" и "казнить, нельзя по­миловать" задают совсем разные действия, от которых зависит жизнь человека.

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

Под ОДНОЗНАЧНОСТЬЮ алгоритмов понимается единственность толкования правил выполнения дей­ствий и порядка их выполнения.

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

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

Под ДИСКРЕТНОСТЬЮ понимают возможность разбиения алгоритма на отдельные элементарные действия, выполнение которых человеком или машиной не вызывает сомнения.

4. Очень важно, чтобы составленный алгоритм обеспечивал решение не одной частной задачи, а мог выполнять решение широкого класса задач данного типа.

Например. Необходимо решить конкретное квадратное уравнение х4- 4х+3=0. Но ведь можно составить алгоритм решения любого квадратного уравнения вида: ах2 + bх + с =0.

Действительно, для случая, когда дискриминант D = b2 - 4ас >0, корни квадратного уравнения можно найти по известным формулам.

если же D<0, то действительных корней не существует. Таким образом, этот алгоритм можно использовать для любого квадратного у равнения. Такой алгоритм будетМАССОВЫЙ.

Под КОНЕЧНОСТЬЮ алгоритмов понимают завершение работы алгоритма в целом за конечное число шагов.

Еще к желательным свойствам алгоритмов нужно отнести РЕЗУЛЬТАТИВНОСТЬ, она предполагает, что выполнение алгоритмов должно завершаться получением определенных результатов.

Подобные ситуации в информатике возникают, когда какие-либо действия невозможно выполнить. В математике такие ситуации называют неопределенностью. Например, деление числа на ноль, извлечение квадратного корня из отрицательного числа, да и само понятие бесконечности неопределенно. Поэтому, если алгоритм задает бесконечную последовательность действий, то в этом случае он так­же считается результатом неопределенным.

Но можно действовать по-другому. А именно: указать причину неопределенного результата. В таком случае, по­яснения типа "на ноль делить нельзя", "компьютер выполнить такое не в состоянии" и т.п. можно считать результатом выполнение алгоритма.

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

И последнее общее свойство алгоритмов - их правильность.

Мы говорим, что алгоритм ПРАВИЛЬНЫЙ, если его выполнение поет правильные результаты решения поставленных задач.

Соответственно мы говорим, что алгоритм СОДЕРЖИТ ОШИБКИ, если можно указать такие допустимые исходные данные или условия, при которых выполнение алгоритма либо не завершится вообще, либо не будет получено никаких результатов, либо полученные результаты окажутся неправильными.