Файл: Голембо, З. Б. Алгоритмизация и программирование электротехнических задач на электронных цифровых вычислительных машинах учеб. пособие.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 21.10.2024
Просмотров: 67
Скачиваний: 0
приближений, определяется, надо ли продолжать дальше вычис ления, или их надо прекратить.
Таким образом, понятие алгоритма является не строгим опре делением в обычном для математики смысле, а скорее описанием и абстрагируется непосредственно из опыта. Алгоритм задает строго определенную последовательность операций, поэтому эле менты этих операций, их комбинации и результаты могут быть пред ставлены .в виде вычислимой функции, т. е. алгоритму соответст вует некоторая вычислимая функция, определенная на цифрах и принимающая в качестве значений также цифры.
Понимание алгоритмической вычислимости числовой функции на множестве натуральных чисел сводится к тому, чтобы предпи санный алгоритмом порядок действия для любого множества номе ров п из области С применимости алгоритма G приводил к пра вильному результату т = ф(п), а при применении этого порядка действий к п, не входящему в С, не давал результата о равенстве <р(/г) какому-либо натуральному числу. Следовательно, вычислимой называется всякая функция, которая может быть задана какимлибо алгоритмом.
Поскольку понятие алгоритма само по себе не является строго определенным математически, существуют различные подходы к построению теории алгоритмов. Теории алгоритмов возникали не зависимо друг от друга и их построение происходило различно, но все они по существу определяют классы вычислительных про цессов (алгоритмов) одинаковой мощности. Существующие концеп ции алгоритмов и вычислений эквивалентны в следующем смысле: все они выделяют один и тот же счетный класс алгоритмически вы числимых функций. Таким образом, то, что называется теорией алгоритмов, на самом деле является теорией вычислимых функций. Поэтому установление эквивалентности предлагавшихся определе ний алгоритма и вычислимой функции является основой в оконча тельном определении алгоритма.
Математические алгоритмы применимы обычно к бесконечному классу задач. Для перехода от теории математических алгоритмов к ее построению применительно к реальным вычислительным маши нам требуется некоторая идеализация понятия последних. Считает ся, что вычислительная машина обладает неограниченным объемом памяти. При этом создается условие для перехода от реальных вычислительных машин к математическим алгоритмам. Так же пред полагается, что вычислительные операции в машине производятся дискретными шагами, причем на каждом шагу используется вполне определенный (ограниченный) накопленный запас данных.
Для любого вычислительного алгоритма определение способа приближения и нахождения ответа при помощи логических и ариф метических действий будет являться характерной особенностью.
Например, использование вычислительной математики в элек тротехнике сводится к нахождению алгоритмов, позволяющих численным путем исследовать разнообразные электромагнитные процессы.
12
Алгоритмы же, перерабатывающие информацию, связаны с ря дом требований: 1) возможность оперировать различными началь ными данными исходной информации, т. е. алгоритм должен иметь массовый характер, относиться не к какой-нибудь отдельно взя той задаче, а к целому классу задач; 2) содержанием совокупно сти четких однозначных предписаний, указывающих операции на каждом последующем этапе, после того как выполнен предыдущий, т. е. детерминированностью; 3) при любой исходной информации и соблюдении точного предписания, определяющего вычислительный процесс, алгоритмы должны приводить к правильному искомому результату, т. е. обладать результативностью.
б. Алгоритмическая неразрешимость некоторых массовых проблем
Интересен случай решения некоторым алгоритмом бесконеч ного класса однородных задач. При этом возникает массовая проб лема с определенной степенью трудности, решение которой состо ит в отыскании единого конструктивного метода, позволяющего решить любую из задач данного класса. Эту проблему можно рас сматривать как результат объединения многих единичных проблем. Алгоритмическая неразрешимость массовых проблем означает не возможность нахождения общего алгоритма для всех задач, при надлежащих к данному классу. Это, естественно, не означает, что для некоторой конкретной задачи из исследуемого класса нельзя найти частный алгоритм, дающий ее решение. В качестве конкрет ных примеров, имеющих отношение к построению электротехни ческих алгоритмов, можно указать на то, что общая проблема представимости матриц оказалась алгоритмически неразрешимой. Ее формулируют так: пусть некоторая матрица и представима че рез матрицы u l t u2 , u n , если для некоторой конечной последо вательности (вообще говоря, с повторениями) u n , u i 2 , u i n этих матриц их произведение совпадает с заданной исходной матрицей и. Проблема представимости состоит в том, чтобы найти общий конструктивный прием, с помощью которого за конечное число шагов для любой матрицы и и любой конечной системы S матриц можно было бы узнать, представима матрица и через матрицы сис темы S, или непредставима.
в. Перспективы расширения понятия алгоритма на класс неоднозначных формулировок
Представление об алгоритме как о жестко предписанной схеме действий, построенной из однозначно понимаемых правил, исклю чает формализацию многих сложных задач. В настоящее время делаются попытки определить возможные пути использования не которых типов неоднозначных формулировок. В качестве основы для необходимой степени формализации неоднозначных утвержде-
13
ний предлагается концепция расплывчатых (размытых, нечетких) множеств. Примером расплывчатых указаний, из которых складывается расплывчатый алгоритм, служат следующие предло жения: а) «Положить у приблизительно равным 10, если х прибли зительно равно 5» , б) «Если х велико, увеличить у на несколько единиц» . Источником неоднозначности в этих указаниях служит неопределенность, расплывчатость множеств, охарактеризованных выделенными словами.
Расплывчатое множество объектов задается с помощью функ ции членства, определенной на объектах и, в простейшем случае, принимающей значения на интервале [0,1]. Эта функция характе
ризует степень принадлежности объекта данному множеству. |
На |
пример, в предложении а множество чисел, приблизительно |
рав |
ных 5, является расплывчатым множеством на вещественной оси |
R. |
Обозначим это множество через Л, а функцию членства для него — через |д.Л(д:); аналогично расплывчатое множество чисел, приблизи тельно равных 10, обозначим через В с функцией членства \хВ{у). Тогда предложение вида а можно рассматривать как бинарное отношение множества С, характеризующееся двухместной функ цией членства |л.С<А'*'>. С этой точки зрения множества А и В являют
ся |
«тенями» расплывчатого множества С соответственно на оси х |
и |
у. |
Чтобы подчеркнуть специфику расплывчатых указаний, выска жем предположение, сходное с а, не в расплывчатой, а скорее в не детерминистской форме: а') «Выбрать у из интервала [9,9, 10,1], если х лежит в интервале [4,9, 5,1]». Здесь А обычное множество — интервал [4,9, 5,1], В — интервал [9,9, 10,1], а С — квадрат с проекциями на оси х и у соответственно интервалов А я В.
Еще более простой случай представлен однозначным указанием: а") «Положить у равным 10, если х равно 5».
Отметим, что ни форма а', ни форма а " не содержат указаний по поводу того, что делать, если х $[4,9, 5,1] или х ф5 соответствен но. Для получения исчерпывающей системы указаний область дей ствия инструкций типа а' или а " должна покрывать весь диапазон возможных значений х. В случае а'' это означает, что должны быть заданы пары (х, у) для всех х, принадлежащих области Г, т. е. должен быть задан график G (объединение этих пар). Подобным же образом расплывчатые указания вида а могут рассматриваться как
члены Сх семейства указаний [Сх\, |
помеченные |
индексом х, при |
|
чем х принимает значения из расплывчатого множества G. Аналогом |
|||
графика G является расплывчатый |
график |
G = |
U Сх. |
|
|
|
X |
Функция членства множества А |
[} В имеет вид: |
||
цЛ U Bw = Мах[рА{х), |
рВм]. |
Таким образом, применение понятия расплывчатого множества позволяет определенным образом формализовать расплывчатые указания.
|
ПРОГРАММИРОВАНИЕ |
Г Л А В А 2 |
И А Л Г О Р И Т М И Ч Е С К И Е |
|
ЯЗЫКИ |
§ 2.1. Общие замечания о программировании
Процесс переработки информации в ЭЦВМ заключается в ре ализации алгоритмов. Исходные данные передаются машине, пос ле чего она автоматически проводит решение задачи. При этом предъявляются специфические требования к той форме информа ции, в которую задачи должны быть приведены для передачи ма шинам: а) алгоритм должен быть представлен в виде конечной по
следовательности приказов; |
б) необходимая |
информация |
и все |
|
указания задаются только в виде чисел. |
|
|
||
Указания, выполняемые |
ЭЦВМ |
и заданные ей в виде |
чисел, |
|
называются командами. Последовательность |
команд, соообщае- |
|||
мая машине, называется программой. |
В программе каждой элемен |
тарной операции, выполняемой в ЭЦВМ, соответствует специальная команда, характеризующая вид операции и величины, над которы ми она выполняется. Если бы для решения какой-либо задачи не обходимо было полностью выписывать команды для каждой из опе раций, то составить программу для сложных задач было бы прак тически невозможно. Но задачи, решаемые на ЭЦВМ, обладают свойствами цикличности, т. е. повторяемости отдельных кусков, поэтому достаточно составить программы для таких кусков и обе спечить их повторение в ходе решения задачи.
Все числовые данные, а также сама программа размещаются в памяти машины. Способ размещения числовых данных в памяти при программировании должен быть выбран заранее. Операции запи сывают в виде машинных команд с выбранными адресами, вводят также команды переадресации, условного перехода из произволь ных пересылок информации (из одной ячейки памяти в другую), команды управления, т. е. все служебные операции, связанные с машинной реализацией алгоритмов. Чем больше разнообразных операций может выполнять ЭЦВМ, тем проще становится процесс программирования для реализации в ней данного алгоритма. Однако разнообразие операций приходится ограничивать по тех ническим и конструктивным соображениям.
Непосредственное программирование оказалось чрезвычайно трудоемким процессом. В связи с этим были выработаны различные приемы сокращения процесса программирования, значительная часть которых сводится к применению стандартных подпрограмм, не зависящих от рассматриваемого алгоритма и обеспечивающих расширение состава операций. Суть сказанного состоит в следую щем. Многие из этапов программирования являются общими для ряда алгоритмов, например, вычисление тригонометрических фун-
15
кций, извлечение корня, перевод значений чисел из десятичной сис темы счисления в двоичную и обратно. Для таких этапов реализа ции алгоритма целесообразно иметь однажды разработанные стан дартные подпрограммы. Создаются также другие разделы под программ, например, нули и экстремумы функций, обыкновенные дифференциальные уравнения, численные квадратуры и численное дифференцирование, статистический анализ и т. п. (т. е. создается математическое обеспечение ЭЦВМ).
Во время реализации алгоритма при необходимости произвести стандартные вычисления их передают на одну из стандартных под программ, затем с помощью соответствующей команды вновь воз вращаются к выполнению программы, реализующей алгоритм.
При составлении различных программ используют имеющийся набор операций, а также более сложные операции, выполняемые при помощи подпрограмм. Операцию, которую обеспечивает под программа при программировании, можно рассматривать как эле ментарную. Таким образом, применение стандартных подпрограмм значительно укрупняет элементарные части, на которые приходит ся разбивать алгоритм для его программирования. Однако метод стандартных подпрограмм зависит от вида ЭЦВМ. Каждая новая ЭЦВМ имеет свой внутренний язык, т. е. свою систему команд. Про грамма, составленная на языке одной машины, уже не пригодна для другой. Поэтому возник вопрос о разработке универсальных язы ков программирования, не зависящих от типа ЭЦВМ и ее внутрен него языка.
§2.2. Алгоритмические языки
итранслирующие системы
Универсальные алгоритмические языки программирования, не зависящие от специфики ЭЦВМ, начали разрабатываться после создания большого количества ЭЦВМ, каждая из которых имела свой внутренний язык. В настоящее время зарегистрировано свы ше 1700 алгоритмических языков, используемых для «связи с ма шиной» при решении задач в 700 областях. Разработка и публи кация новых языков интенсивно продолжается.
Под алгоритмическим языком понимается связанная синтакси ческой структурой система обозначений и терминов, содержащая исчерпывающие сведения о том, какие действия, в какой последо вательности и при каких условиях надо выполнить, чтобы решить ту или иную задачу. Такая система позволяет по определенным правилам формализованно описывать информацию и процедуры ее обработки. Важным свойством алгоритмического языка является возможность автоматического перевода описания взятой задачи, выполненного по правилам этого языка, в готовую машинную про грамму для любой ЭЦВМ. Перевод описания задачи выполняется с помощью заранее подготовленной для данной ЭЦВМ программы, называемой транслятором или программирующей программой. Транслятор анализирует описание, сделанное на алгоритмическом
16