Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Стариченко Б.Е. Теоретические основы информатик...doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
11.63 Mб
Скачать

10.2.3. Формальная система

Обсуждавшее выше понятие системы является общим и универсальным, т.е. может использоваться в различных отраслях человеческого знания. Наряду с ним в информатике и ряде других приложений используется понятие «формальная система»; оно отличается от общего понятия системы, подобно тому, как понятие математической модели отличалось от понятия модели вообще.

Формальная система - это математическая модель, задающая множество дискретных компонентов путем описания исходных объектов и правил построения новых компонентов из исходных и уже построенных.

Уточнения к определению:

1. Компонентами формальной системы является информационные представления материальных объектов, состояний, отношений и пр. Представления могут быть знаковыми (символическими) или графическими, но обязательно информационными. Таким образом, формализация (или построение формальной системы) - это замена реального прототипа ее формальным описанием, т.е. ее информационной моделью.

2. Компоненты формальных систем могут представлять комбинацию конечного числа исходных объектов - неделимых (простейших) элементов с определенным набором свойств. Множество видов таких элементов называется алфавитом системы. Число экземпляров элементов каждого вида может быть любым (в том числе бесконечным).

3. Правила построения новых компонентов могут иметь вид «условие - действие» («если имеющиеся объекты или компоненты удовлетворяют некоторым условиям, то для построения нового компонента необходимо выполнить такое-то действие»). Другим видом правил является «посылка - заключение» («если уже построены компоненты вида А1...Аn-1, то компонент Ап также считается построенным»). Новые компоненты называются выводимыми объектами (правильнее было бы их называть «выводимыми компонентами»).

4. Определение формальной системы во многом напоминают общее (интуитивное) определение алгоритма, данное в гл. 6. Это подобие не случайно и будет обсуждаться ниже.

Рассмотрим несколько примеров формальных систем.

Пример 10.1

Множество арифметических формул, которые могут содержать цифровые или буквенные выражения с целочисленными коэффициентами. Алфавит: цифры 0...9; буквы a...z, знаки +, -, х, /, скобки (, ). Любой символ может считаться исходной формулой, любая комбинация цифр с первой ненулевой называется числом и считается формулой. Правила построения новых формул следующие:

  • если А и B - числа и А 0, то АВ также число (т.е. частный вид формул - числа - получаются приписыванием одних к другим таким образом, чтобы слева был не 0);

  • если F1 и F2 - формулы, то (F1 + F2), (F1 - F2), (F1 x F2) и (F1 /F2) также являются формулами.

В описанной формальной системе выводимыми оказываются формулы типа:

Пример 10.2

Множество возможных шахматных позиций, которые могут быть получены в процессе игры. Алфавит системы - клетки шахматной доски (черные и белые, как свободные, так и занятые той или иной фигурой). Исходное состояние - начальная шахматная позиция. Формальными правилами вывода новых позиций являются правила шахматной игры.

Пример 10.3

Множество высказываний в математической логике. Алфавитом служат буквы, обозначающие переменные, символы логических операций, скобки. Исходными компонентами являются аксиомы; правилами - правила исчисления высказываний. Множеством выводимых объектов оказываются все тождественно истинные высказывания.

Пример 10.4

Машина Тьюринга - это формальная система, порождающая множество своих конфигураций. Исходным объектом является начальная конфигурация; правилами - функциональная таблица. Однако ранее (гл. 7) была доказана эквивалентность представления алгоритмов в различных алгоритмических моделях. Следовательно, если алгоритм в представлении машины Тьюринга является формальной системой, то и алгоритм в любом другом представлении также оказывается формальной системой. Вместе с тем, обратное утверждение («любая формальная система является алгоритмом») будет неверным - причина данного обстоятельства прояснится при обсуждении свойств формальных систем.

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

  1. Дискретность. Это свойство формальных систем проявляется, во-первых, в том, что компоненты системы состоят из неделимых элементов (объектов); во-вторых, в том, что число правил построения новых объектов из имеющихся конечно.

  2. Формальность. Суть формального подхода состоит в выполнении (соблюдении) ряда принципов:

  • принцип педантизма: все, что делается - делается строго по правилам формальной системы. Если формальная система не позволяет построить желаемые объекты в рамках имеющихся правил, то вести построение, нарушая правила, нельзя. Можно изменить имеющиеся правила или ввести новые, но это эквивалентно построению другой формальной системы;

  • принцип явного описания: все условия применения правил и действия, которые нужно совершить при их применении, формулируются явно. В формулировках и описаниях действий не должны использоваться знания и опыт исполнителя или «действия по умолчанию», т.е. что-то не описанное явно, но подразумевающееся. На практике построить такое строгое описание если и удается, то оно оказывается весьма громоздким. Однако вести его строго и последовательно оказывается необязательным: если исполнителем является человек, можно необходимые знания сначала ему передать, а затем на них опираться; если исполнитель - устройство, детальность описания определяется имеющейся системой команд.

  • принцип синтаксичности: условия применения правил формулируются только с помощью чисто внешних и четко различимых признаков тех объектов, к которым эти правила применяются (именно поэтому важна дискретность - различия не должны быть малыми до неразличимости). Иначе говоря, чтобы применять правила, достаточно уметь различать только внешние свойства объектов: их элементный состав (символы, фигуры и пр.) и их взаимное расположение. Такие свойства в теории формальных систем называются синтаксическими. Поэтому принципу можно дать иную формулировку: объекты считаются различными, если и только если они различны синтаксически, т.е. имеют различный внешний вид. При таком подходе отпадает необходимость в понятиях «существенные различия» и «несущественные различия» - они либо есть - и тогда это разные объекты, либо их нет - тогда объекты идентичны. Отсутствует и понятие внутренних различий, не имеющих явных внешних проявлений «злой - добрый», «полый - сплошной», «со сложным внутренним строением - с простым строением». Именно принцип синтаксичности позволяет осуществлять синтаксический анализа предъявленного текста. Синтаксически правильный текст - это текст, выводимый в данной формальной грамматике, а любой текст, содержащий синтаксические ошибки, не выводим. Такой анализ осуществляется при трансляции компьютерной программы с языка программирования в машинные коды.

  1. Элементарность действий. Речь идет о том, что хотя правила формальной системы могут иметь самый разнообразный вид, однако любое сложное правило может быть сведено к последовательности простых комбинаторных манипуляций с элементами системы, носящих число механический характер. В теории алгоритмов уже обсуждались эти манипуляции; в приложении к формальным системам это порождает следующий набор элементарных действий:

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

  • замена одного элемента другим (или группой других);

  • удаление элемента (т.е. замена его пустым элементом).

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

  1. Необязательность детерминизма. Это свойство состоит в том, что на каждом шаге процесса построения новых объектов в общем случае применимо не одно правило, а несколько, и, следовательно, следующий шаг выбирается из нескольких возможных. В этом и состоит отличие формальных систем от алгоритмов, в которых любому порождаемому объекту применимо только одно правило (это свойство детерминированности алгоритма), что обеспечивает однозначность работы и результата алгоритма. Будет справедливым утверждение, что формальная система с единственным правилом на каждом шаге функционирования является алгоритмом, и, следовательно, формальная система является более общим понятием, чем алгоритм, а алгоритм можно считать частным случаем формальной системы. В формальной системе на каждом шаге или некоторых шагах оказывается возможным применение различных правил (это видно из рассмотренных выше примеров - шахматной игры или построения формул), что обеспечивает порождение ни одного результата (как в алгоритме), а множества результатов (например, множество вариантов игры в шахматы или множество арифметических формул).

Относительно рассмотренных общих свойств формальных систем необходимо сделать еще ряд замечаний.

Формальная система функционирует строго по своим правилам и различает свои объекты только по синтаксическим признакам. С этой точки зрения она однозначно задает некоторую математическую модель. Но при использовании этой модели для решения какой-либо задачи, элементам формальной системы присваиваются конкретные свойства и признаки, т.е. происходит интерпретация системы. Подобный механизм широко применяется в программировании: разрабатывается процедура, обеспечивающая выполнение некоторой последовательности действий по обработке данных с формальными параметрами (т.е. задается схема, последовательность обработки), а затем при вызове процедуры вместо формальных производится подстановка фактических значений. Одна и та же формальная система может иметь различные интерпретации, зависящие от предметной области, в которой используется модель, либо от целей, для которых она создавалась. Например, для формальной системы, описывающей законы математической логики, имеется иная интерпретация - правила функционирования логических схем, о чем шла речь ранее.

Интерпретация является внешней процедурой по отношению к формальной системе и в рамках самой системы не обсуждается. Уровень интерпретации - его называют метауровнем - может быть как формализованным, так и неформальным. На метауровне система становится уже не средством решения задачи, а объектом изучения. Например, формальная система, описывающая правила игры в шахматы, позволяет отличить правильные шахматные ходы от неправильных, но в ее рамках невозможно отличить хорошие ходы от плохих. Вопрос об оценке качества хода решается не в системе, а на метауровне. Причем, возможно неформальное решение - на основе опыта и мастерства игрока, а также шахматной теории (которая является обобщением опыта многих шахматистов); возможна и формальная интерпретация оценки качества хода, которую создают и затем закладывают в шахматные компьютерные программы их разработчики. Точно также при компиляции компьютерных программ осуществляется их синтаксический контроль, т.е. проверка соответствия правилам формальной грамматики, однако, компилятор не может отличить хорошую (в смысле эффективности исполнения) программу от плохой.