Расширенная алгебра алгоритмов

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

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Datum:2007
1. Verfasser: Акуловский, В.Г.
Format: Artikel
Sprache:Russisch
Veröffentlicht: Інститут програмних систем, журнал "Проблеми програмування" 2007
Schlagworte:
Online Zugang:https://nasplib.isofts.kiev.ua/handle/123456789/296
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Назва журналу:Digital Library of Periodicals of National Academy of Sciences of Ukraine
Zitieren:Расширенная алгебра алгоритмов / В.Г. Акуловский // Пробл. програмув. — 2007. — N 3. — С. 3-15. — Библиогр.: 12 назв. — рус.

Institution

Digital Library of Periodicals of National Academy of Sciences of Ukraine
_version_ 1860193717346893824
author Акуловский, В.Г.
author_facet Акуловский, В.Г.
citation_txt Расширенная алгебра алгоритмов / В.Г. Акуловский // Пробл. програмув. — 2007. — N 3. — С. 3-15. — Библиогр.: 12 назв. — рус.
collection DSpace DC
description Предложен формальный аппарат (расширенная система алгоритмических алгебр), ориентированный на детальную разработку алгоритмов с учетом особенностей языка, на котором будет реализован алгоритм, с использованием трехзначной логики и декларативных знаний совместно с процедурными. Показаны возможности формального преобразования алгоритмов и построения производных алгоритмических конструкций. Приведены примеры использования формального аппарата.
first_indexed 2025-12-07T18:07:44Z
format Article
fulltext Теоретичні та методологічні основи програмування © В.Г. Акуловский, 2007 ISSN 1727-4907. Проблеми програмування. 2007. № 3 3 УДК 519.681 В.Г. Акуловский РАСШИРЕННАЯ АЛГЕБРА АЛГОРИТМОВ Предлагается формальный аппарат (расширенная система алгоритмических алгебр), ориентированный на детальную разработку алгоритмов с учетом особенностей языка, на котором будет реализован алго- ритм, с использованием трехзначной логики и декларативных знаний совместно с процедурными. По- казаны возможности формального преобразования алгоритмов и построения производных алгоритми- ческих конструкций. Приведены примеры использования формального аппарата. Введение Система алгоритмических алгебр, разработанная В.М. Глушковым и его уче- никами [1–3], называемая обычно алгебра алгоритмов Глушкова (в дальнейшем ал- гебра алгоритмов), хорошо зарекомендо- вала себя при решении весьма широкого класса задач, подтверждая, таким образом, перспективность использования алгебраи- ческого аппарата в рамках прикладной теории алгоритмов (алгоритмики, в терми- нах Г.Е. Цейтлина [4]). Данная теория, как и любая другая, развивается, а предлагае- мая работа – очередной шаг в направлении её развития. Предпосылками к выполнению данной работы явилось следующее. Первым побудительным мотивом послужили критические оценки архитек- туры современных ЭВМ, высказанные в ряде публикаций, в частности Кнута [5] и разработчика трехзначной ЭВМ «СЕ- ТУНЬ» Н.П. Брусенцова [6]. Последний утверждает [7]: “… ущербность современных компьютеров обусловлена тем, что логические выводы, которыми они оперируют, исчерпываются дискретной двоицей – "да", "нет", а иные модальности аксиоматически отсечены "законом исключенного третьего", что не согласуется с тем, как устроен и функцио- нирует природный мир. В тоже время трехзначная логика не только вполне кор- ректна и адекватна действительности, но является даже более удобной и привычной для людей формой мышления”. Это ут- верждение иллюстрируется примером ветвления по знаку величины Х (рисунок). В рассматриваемом примере троич- ное ветвление по знаку величины Х опи- Рисунок. Ветвление по знаку x>0 x=0 x<0 Вход sign(x) а – Троичная схема x=0 x<0 x>0 Вход x>0 x<0 да да нет нет б – Двоичная схема Теоретичні та методологічні основи програмування 4 сано заданием единственной трехзначной операции sign(Х) и выполняется за один шаг, в то время как такое же ветвление, осуществляемое средствами двузначной логики, связано с необходимостью двух операций и выполняется, вообще говоря, за два шага. Поскольку преимущество трехзнач- ной логики в приведенном примере, оче- видно, то можно с достаточной уверенно- стью рассчитывать на то, что многие ал- горитмические построения в трехзначной логике могут быть реализованы более ком- пактно и эффективно, обеспечивая качес- тво создаваемых алгоритмов и программ. Учитывая, что нечто выразимое в трехзначной логике выразимо и в двузнач- ной, можно использовать преимущества трехзначной логики в разработках для со- временных (двухзначных) ЭВМ. Появле- ние же трехзначных компьютеров, когда и если это произойдет, позволит повысить качество реализации алгоритмов, пос- троенных с использованием трехзначной логики. Во-вторых. Известно, что качество разрабатываемого алгоритма в существен- ной мере зависит от соответствия средств его описания специфике решаемой задачи. В-третьих. Известно также, что чем детальнее, с учетом всех нюансов, разра- ботан алгоритм, тем меньше проблем воз- никает на последующих этапах разработки программного изделия. При этом чем де- тальнее разрабатывается алгоритм, тем больше открывается возможностей для формальных его преобразований. Однако возможности его детализации определя- ются в существенной мере соответствием, используемых средств разработки алгорит- ма, изобразительным возможностям целе- вого языка, т.е. языка программирования, на котором этот алгоритм будет записан. В-четвертых. Исторически в про- граммировании сложилась ситуация, при которой в большинстве случаев использу- ются процедурные знания, т. е. знания, растворенные в алгоритмах. А декларатив- ные знания − знания, отделенные от алго- ритма, используются в системах, основан- ных на знаниях (экспертные системы, ло- гическое программирование и т.п.). Представляется интересным и пер- спективным использование декларативных знаний совместно с процедурными в рам- ках единого формального аппарата, так как это позволит расширить область примене- ния этого формального аппарата на новые классы задач и упростить (в некоторых случаях) решение задач традиционных. Исходя из приведенных предпосы- лок, можно сказать, что основной задачей, решаемой в данной работе, является разра- ботка расширенной алгебры алгоритмов, которая обеспечивает следующие допол- нительные возможности: использование преимуществ трех- значной логики при разработке алгоритмов (следует отметить, что трехзначная логика использовалась в алгебре алгоритмов, од- нако в данной работе мы попытаемся испо- льзовать её возможности в полной мере); построение алгоритмических кон- струкций, ориентированных на конкрет- ные приложения, с приемлемым качеством их реализации; детализация алгоритмов до уровня, на котором программисту уже практически не приходится принимать алгоритмиче- ских решений, в частности, за счет учета особенностей целевого языка программи- рования; использование декларативных зна- ний в задачах, где в этом возникает по- требность или где это просто удобней. При этом, естественно, необходимо сохранить положительные свойства ал- гебры алгоритмов, в частности, возможно- сти преобразования алгоритмов с целью их оптимизации. 1. Система алгоритмических алгебр Для разработки алгебраической системы В.М. Глушковым была предло- жена известная абстрактная модель функ- ционирования ЭВМ, которая представляет собой схему взаимодействия двух ав- томатов управляющего – U и операцион- ного – O. Выходные сигналы А управляю- щего автомата U отождествляются с опе- Теоретичні та методологічні основи програмування 5 раторами, которые изменяют состояние операционного устройства O. Выходные сигналы операционного автомата O, пред- ставляют собой значения различных эле- ментарных логических условий α, опреде- ленных на операционном устройстве. Множество М состояний операционного автомата O называется информационным множеством. Уточним данную модель следую- щим образом. Разобъем множество М на два подмножества М=MS ∪ MD, где MS – статическая составляющая, которая постоянно определена и которая может интерпретироваться, как оператив- ная память; MD – динамическая составляющая, которая отражает динамические измене- ния состояния множество М, не фикси- руемые в памяти. Эта составляющая оп- ределена (доступна для анализа) только сразу после выполнения некоторых опера- торов и не определена во всё остальное время. MD может интерпретироваться, как регистровая память. Таким образом, возникает необхо- димость включить в рассмотрение два ви- да операторов (изменяющих состояние MS и изменяющих состояние MD), посту- пающих на вход операционного устрой- ства О. Для описания алгоритмов рассмот- рим двухосновную алгебраическую сис- тему, основами которой являются множе- ство операций и множество логических условий. Пусть < U, W, Ω > - САА, где U – множество операторов; W – множество логических условий; Ω – сиг- натура операций, состоящая из логических операций – Ω1, принимающих значения на множестве W и операций – Ω2, прини- мающих значения на множестве операто- ров U. Выделим на множестве операторов два подмножества UUU ′′∪′= , где опе- раторы из множества U ′ изменяют стати- ческую составляющую MS множество М состояний операционного автомата O, пе- реводя его в новое состояние: ,)( mmA ′= MSmm ∈,∀ ′ , UA ′∈∀ ; а операторы из множества U ′′ изменяет его динамическую составляющую МD: ,)( mmA ′=′ MSm∈∀ , MDm ∈∀ ′ , U ′′′∈A∀ и только после выполнения этих операторов эта составляющая MD определена. Можно сказать (в программистской терминологии), что оператор UA ′∈ отли- чается от оператора UA ′′′∈ тем, что пер- вый выполняет операции присваивания, а второй таких операций не содержит. Множество операторов U вклю- чают пустой оператор E, не изменяющий состояния информационного множества, т. е. ,)( mmE = Mm∈∀ . Для того чтобы ввести понятие не- определенного оператора N присоединим к информационному множеству М специ- альное неопределенное состояние ν. Будем трактовать неопределенный оператор как ошибочный (недопустимый), выполнение которого N(m) = ν переводит операцион- ный автомат O в состояние, после пере- хода в которое его дальнейшее функцио- нирование будем считать неопределенным. Множество логических условий ра- зобъем на два подмножества ,FPW ∪= где P – множество всюду определенных на множестве М предикатов, результатом вычисления которых является логическая переменная α, характеризующая текущее состояние операционного автомата О. Со- стояние операционного автомата О при вычислении предиката p Pp∈∀ не изменя- ется, т. е. mmmp == )()( α , Mm∈∀ . F – множество логических условий, такое, что для любого оператора Ux∈ , результат применения которого x(m)m =′ к текущему состоянию m )m(m, M∈′ выполняется )m(m)( ′= ff для любого Ff ∈ . Другими словами, условия множе- ства F сохраняют свои значения незави- симо от действия операторов множества U и называются фиксирующими, так как по- зволяют сохранить (зафиксировать) теку- щее состояние операционного автомата О. Отметим, что фиксирующие логи- ческие условия не являются чем-то прин- ципиально новым в программировании, так как они, по видимому, всегда исполь- Теоретичні та методологічні основи програмування 6 зовались на практике под именами “флаж- ки”, ”признаки” и т.п. В данном случае это средство только формализовано в соот- ветствующем контексте. (В дальнейшем для краткости и там где это не затруднит понимания, вместо термина фиксирующее логическое условие будем использовать термин – “фиксирую- щее условие”, а в некоторых случаях про- сто – “условие”). Элементы множества P и F прини- мают истинные значения трехзначной ло- гики Е3 = {0, 1, µ}, где 0 – ложь, 1 – ис- тина, µ – промежуточное значение. (Отме- тим, что вместо традиционного термина – неопределенность будем использовать термин промежуточное значение, так как это значение в работе не трактуется как неопределенное). На множестве Е3 введено отноше- ние порядка < так, что 0 < µ < 1. К логическим операциям системы Ω1 относятся следующие обобщенные операции со своими таблицами истинно- сти [8]: α¬ − инверсия, обобщение опера- ции отрицания (табл. 1); αr − циклическое отрицание (табл. 2); дизъюнкция и конъюнкция =∨ βα ),,max( βα= ),min( βαβα =∧ (табл. 3). Обобщенные булевы операции удо- влетворяют всем законам булевой алгебры, кроме закона исключенного третьего и за- кона противоречия. Очевидно, однако, выполняется за- кон исключенного четвертого ∨∨αα r 1∨ =α rv и закон аналогичный закону проти- воречия 0∧∧ =ααα rrr . Кроме этих операций определим три операции левого умножения Левое умножение ppppBBBB ′ предиката P∈ p на оператор UB ′′′∈ представляет собой условие α, характеризующее со- стояние M, которое было бы получено после выполнения оператора UB ′∈ , од- нако статическое состояние MS операци- онного автомата O при этом остается не- изменным, так как: ,)( )())((p(m)B mmm mmpmBp =′∪= =′∪=′=′ α MD.mMS,m ∈′∀∈∀ Смысл оператора состоит в прогнозирова- нии вычислительного процесса. Таблица 1 α α¬ 0 1 µ µ 1 0 Таблица 2 α αr 0 µ µ 1 1 0 Таблица 3 α β βα ∨ βα ∧ 0 0 0 0 0 µ µ 0 0 1 1 0 µ 0 µ 0 µ µ µ µ µ 1 1 µ 1 0 1 0 1 µ 1 µ 1 1 1 1 Теоретичні та методологічні основи програмування 7 Левое умножение фиксирующего усло- вия на предикат pf где P∈ p , а Ff∈ . Для фиксации текущих значений состояния M операционного автомата вве- дем операцию левого умножения фикси- рующего условия на предикат следующим образом: mmf ′== )((m) α [ p ] , MSmMm ∈∀,∈∀ ′ , где }{∪ fmm =′ , а )(mf α= . То есть, текущее значение состоя- ния операционного автомата O фиксиру- ется как элемент множества MS, позволяя сохранять историю вычислительного про- цесса. Левое умножение фиксирующего усло- вия на оператор fb x Для управления состоянием фик- сирующих условий присоединим к мно- жеству U элементарный оператор xb , ко- торый изменяет состояние условия Ff ∈ в результате применения операции левого умножения этого оператора на фиксирующее условие mmfb x ′=)( , MSmm ∈′∀ , , где =′m }{∪ fm , xf = , 3Ex ∈ . Таким образом, может быть уста- новлено произвольное состояние фикси- рующего логического условия в границах, определяемых значностью логики. Воз- можность управления состоянием фикси- рующих логических условий является до- полнительным средством управления хо- дом всего вычислительного процесса. Для операторов из U введем следующие операции Композиция А∗∗∗∗В (последователь- ное выполнение). Композиция оператора А и В UBA ∈,∀ означает последователь- ное выполнение сначала оператора А и затем оператора В. Иными словами: m)mB(B(A(m))B)(m)*(A ′′=′== , MS∈,,∀ mmm ′′′ . Эта операция обладает свойством ассоциативности (A*B)*C=A*(B*C) и для нее выполняются тождества A*E=E*A=A, где Е тождественный оператор, A*N=N*A=N, (1) где N неопределенный оператор. (Символ ∗ между операторами в очевидных случаях будем опускать, т. е. ABBA =* ). Операция αααα3 – дизъюнкция [αααα] (A ∨∨∨∨ B∨∨∨∨ С). Эта операция ориентирована на использование трехзначных логических условий:      = = = = ,(m) если ),( ;0(m) если ),( 1;(m) если ),( )( µα α α mC mB mA mD т. е., выполняется один из трех возможных операторов, который выбирается в соот- ветствии со значением логического усло- вия α, принимающего истинные значения трехзначной логики Е3. αααα −−−− итерация }{Aα (соответствует программной конструкции WHILE). Опе- рация α-итерации оператора А по усло- вию α, примененная к некоторому со- стоянию информационного множества Mm∈ , состоит сначала в проверке усло- вия α. Затем, если α истинно, применя- ется оператор А и вновь проверяется ус- ловие α. Этот циклический процесс, со- стоящий в проверке условия α и выпол- нении оператора А при истинном α, осу- ществляется до тех пор, пока условие α не станет ложным, чем в этом случае завер- шается выполнение α-итерации. Для этой операции выполняются такие тождест- венные соотношения: { } { } ααα ¬= AA (2) { } Ν=Eα , (3) где E – тождественный, а N – неопреде- ленный оператор. { } Ε=A0 , (4) где 0 – тождественно ложное условие, а Е – тождественный оператор. { } Ν=A1 , где 1 – тождественно истинное условие, а N – неопределенный оператор. Теоретичні та методологічні основи програмування 8 В последнем случае следует обра- тить внимание на тот факт, что сущест- вует достаточно широкий класс систем управления (например, системы управле- ния нижнего уровня иерархических АСУ ТП, реализуемые на программируемых контроллерах), для которых оператор ви- да }{A1 , называемый бесконечным циклом, не только применим, но и необходим. По- этому, введем дополнительную операцию цикла Aα , которая полностью экви- валентна операции α − итерация, но для которой выполняется соотношение NA ≠ 1 . В качестве логического условия α в операторе α3 – дизъюнкция и α − итерация могут выступать p-предикат, f – фикси- рующее условие и операции левого умно- жения pB ′ и pf. Отметим, что операция левого умножения pf может использовать- ся не только в указанных операциях, но и как самостоятельная конструкция, с помо- щью которой формируется значение фик- сирующего условия. Результатом данного раздела (и ос- новным результатом всей работы) является расширенная система алгоритмических алгебр (САА-Р), возможности которой ре- шать выше поставленные задачи демонст- рируются в следующих разделах. 2. Производные операции САА-Р Очевидно, что качество разрабаты- ваемых алгоритмов, учитывая их многооб- разие, несомненно и существенно зависит от изобразительных возможностей, пре- доставляемых средствами их разработки. Предлагаемая САА-Р позволяет строить производные операции, учитывающие специфику разрабатываемых алгоритмов и целевого языка программирования. Про- демонстрируем это на примерах наиболее широко используемых конструкций: αααα – дизъюнкция (соответствует программной конструкции ЕСЛИ...ТО…. .....ИНАЧЕ) вводится, как частный слу- чай α3 – дизъюнкции: [α] (A ∨ B) = [α] (A ∨ B∨ ∨ E), таким образом .∈∀ ;0)(),( ;1)(),( ))(∨]([ Mm mеслиmB mеслиmA mBA    = = = α α α Эту операцию удобно использовать в тех случаях, где возможности трехзнач- ной логики излишни, например, при срав- нении двух величин на равенство. αααα-фильтрация (последовательная фильтрация) [ ]( )Aα , которая соответству- ет программной конструкции ЕСЛИ... …ТО... и является частным случаем α - дизъюнкции: ( ) )∨]([][ EAA αα = и обеспечивает выполнения оператора А только при истинном значении α. Для этой операции справедливы такие тожде- ственные соотношения: ( ) ( )AA ][)]([][ ααα = , (5) ( ) EA =¬ )]([][ αα . (6) continue – ( ) }*][*{ BcontinueA βα , операция позволяет перейти к следующей итерации цикла до завершения предыду- щей, т. е., эта операция адекватна одно- именному оператору языков программи- рования. Воспользовавшись операцией последовательной фильтрации, получаем }{ }{ )]([)]([ BАBcontinueА ββ αα ¬= , где фильтрующее условие β позволит пропус- тить оператор B и перейти к очередной итерации. break – }*)]([*{ BbreakA βα , опе- рация соответствует одноименному опера- тору в языках программирования и позво- ляет прервать в любой момент выполнение цикла, потребность, в чем возникает дос- таточно часто. Для реализации осуществляемого оператора воспользуемся вспомогатель- ным фиксирующим условием f: }{ }{ )]([**)]([ 0 ∧ 1 BfbAfbBbreakA f ∨= ββ αα . В построенной конструкции усло- вие f устанавливается в исходное истинное состояние для входа в цикл. В цикле при Теоретичні та методологічні основи програмування 9 истинном условии β (условии завершения цикла) α – дизъюнкция приводит к уста- новке условия f в состояние ложь, в ре- зультате чего оператор В не будет выпол- нен и цикл завершится (по условию f∧α ), а в противном случае (при лож- ном β) выполняется оператор В и цикли- рование продолжается. Переключатели − удобные во многих случаях производные операции, которые позволяют сократить размер и сделать более понятным алгоритм, содер- жащий вложенные α – дизъюнкции, кото- рый запишем следующим образом: .∏ ,..., ,..., )...)∨]([∨... ...∨]([∨]([∨]([ 21 21 332211       = k k kk AAA EA AAA αααα ααα Аналогично строится операция для более общего случая вложенных α3- дизъюнкций: . ,...,, ,...,, ,...,, )...)A∨]([∨... ...∨∨]([∨]([ ∏ 21 21 21 k 322211           =∨ ∨ k k k kk BBB AAAEA AAAA ααα α αα При построении производных опе- раций необходимо учитывать возможно- сти целевых языков реализовывать новые операции. В противном случае, вновь соз- данная удобная алгоритмическая конст- рукция при её реализации на некотором языке программирования может столь существенно понизить эффективность по- лученного программного продукта, что его использование окажется неприемле- мым. Проиллюстрируем справедли- вость этого утверждения следующим примером. В работе [4] приведена производ- ная операция цикла вида }{ ,][ AB α где контроль условия циклирования осущест- вляется в середине цикла. Реализация такого оператора не вы- звала бы никаких затруднений при его реализации на Ассемблере (по крайней ме- ре, для процессора 80х86), но она отсутст- вует в большинстве современных языков программирования. Реализация данной операции в виде }{ }{BAAAB αα =][ имеет тот недостаток, что оператор A записыва- ется дважды. Если же оператор А доста- точно объемен, а операция используется достаточно часто, то это может привести к такому увеличению алгоритма, а в послед- ствии и программы, что возникшие из- держки сделают применение этой конст- рукции недопустимой. В связи с этим рассмотрим возмож- ность реализации данного оператора дру- гим (одним из возможных) способом и за- пишем его в виде }{ }{ )∨]([**][ 01 fbABfbAB f αα = . Данная реализация выполняется следующим образом. Мы ввели служеб- ное фиксированное условие f и, используя элементарные операторы 1b и 0b , устанав- ливаем соответственно истинное и лож- ное значения этого условия. Оператор 1b устанавливает исходное истинное значе- ние условия f (параметр цикла) для входа в цикл. В котором выполняется оператор B и при истинном условии α операция α-дизъюнкция выполняет оператор A. Цикл выполняется до тех пор, пока усло- вие α не примет значение ложь. В этом случае оператор A не будет выполнен, а условие f будет установлено в ложное со- стояние оператором 0b , что и приведет к завершению цикла. В данном случае некоторая гро- моздкость полученного выражения не должна смущать, так как дополнительно используемые операторы элементарны по определению и не могут оказать сущест- венного влияния на эффективность созда- ваемого оператора. Реализовать его мож- но практически на любом языке програм- мирования. Производные операции, приведен- ные в этом разделе, демонстрируют воз- можности, предлагаемого формального аппарата, создавать удобные для различ- ных приложений алгоритмические конст- рукции (операции), а так же конструкции, Теоретичні та методологічні основи програмування 10 адекватные возможностям языков про- граммирования. При этом показана воз- можность, не только строить такие конст- рукции, но и строить их с учетом эффек- тивности реализации на целевом языке программирования. И хотя, приведенные операции, могут использоваться для ре- шения практических задач, главным ре- зультатом следует считать иллюстрацию практически неограниченных возможно- стей конструирования новых операций. 3. Эквивалентные преобразования элементарных алгоритмических конструкций Повышение качества любой про- граммы, достигается наиболее результа- тивно на этапе разработки алгоритма этой программы. А наиболее эффективным средством преобразования является фор- мальный аппарат, с помощью которого описывается алгоритм. Таким аппаратом является расширенная алгебра алгоритмов с развитой системой соотношений, позво- ляющей осуществлять глубокие эквива- лентные преобразования. Эквивалентными, в данном случае, считаются такие, и только такие алгорит- мические конструкции, которые описыва- ют действия, приводящие к одинаковым результатам. В данной работе будем рассматри- вать соотношения, характеризующие об- щие свойства регулярных схем (РС), и продемонстрируем возможности эквива- лентных преобразований, широко исполь- зуемых элементарных алгоритмических конструкций (некоторые аспекты этой проблемы рассмотрены в [9]). Рассмотрим возможность разложе- ния операции α − дизъюнкции на последо- вательные фильтры: .)(][*)]([)∨]([ BABA ααα ¬= Отличие правой части выражения от левой заключается в том, что в правой части логическое условие α проверяется дважды. И после выполнения оператора А, в случае истинности последовательно- го фильтра по условию α, этот оператор может повлиять на состояние логическо- го условия, нарушив эквивалентность вы- полнения. Наложив ограничение на опе- ратор А такое, что он не изменяет логиче- ского условия α, обеспечим эквивалент- ность преобразования. Если выполнить такое ограничение не удается оператор можно переписать в виде ,)А](α[*)B(]α¬[=)B∨A](α[ наложив аналогичные ограничения на опе- ратор В. Исходя из этого, можно сделать следующий вывод. В том случае, когда на условие α влияет один из двух операторов A или B, указанное ограничение можно снять за счет выбора порядка следования этих операторов. Такое разложение применимо и для более общего случая операции α3- дизъюнкция, которую запишем в виде )C](α[*)B(]α[*)A(]α[=)C∨B∨A](α[ rrr , с аналогичными ограничениями на вхо- дящие в выражение операторы и на поря- док их следования. В том случае, когда в качестве ло- гического условия фигурирует фиксирую- щее условие f, никаких ограничений на разложение α3-дизъюнкции и α − дизъ- юнкции на последовательные фильтры не накладывается, так как фиксирующие ус- ловия по определению не зависят от вы- полнения операторов и, таким образом: ),(][*)(][)B∨]([ BfAfAf ¬= )]([*)(][*)(][)C∨B∨]([ CfBfAfAf rrr = . Рассмотрим возможности пре- образования следующих вложенных α-дизъюнкций и α − итераций: 1. =∨∨ ))](]([[ СBAαα разложив α-дизъюнкции по последова- тельным фильтрам, получаем ( ) ( ) ( ) =¬¬= CBA ][*)]]([[*)]]([[ ααααα , преобразовав выражение в соответствии с соотношениями (5, 6) получаем ( ) ( ) =¬= CEA ][**][ αα , исключив, тождественный оператор в со- ответствии с (1) и свернув фильтры в α-дизъюнкцию получаем такой эквива- лентный результат: ).С∨A](α[= Теоретичні та методологічні основи програмування 11 2. )]([))](]([[ ABAAB ∨∧=∨∨ ββ αα . Эквивалентность такого преобра- зования становится очевидной, если обра- тить внимание на тот факт, что оператор В выполняется только при истинности ус- ловий α и β, а оператор А во всех ос- тальных случаях. 3. )]([))]([]([ ВАВАА ∨∨=∨∨ ββ αα . В данном случае доказательство аналогично предыдущему случаю, так как оператор В выполняется только при лож- ных значениях условий α и β, а оператор А во всех остальных случаях. 4. }{ }{ }{ )]([ АА ββα α= . Доказательством эквивалентности является утверждение о том, что условие α проверяется однократно, т. е. по завер- шению выполнения оператора А оба ло- гические условия α и β принимают лож- ное значение. Докажем справедливость этого утверждения от противного. Пола- гая, что по завершению вложенного цикла условие α истинно и применяя последова- тельно соотношения (2, 4, 3) получаем }{ }{ }{ }{ }{ }{ }{ ,0 NЕААА ===¬= ααβαβα β т. е. конструкция вырождается в неопре- деленный (ошибочный) оператор и, таким образом, эквивалентнось преобразования доказана. 5. }{ }{( ) }{ }{BАBA ββββ αα *)]([∨][ = . В данном случае доказательством служит тождественное соотношение (2), в соответствии с которым выполнение в цикле оператора А (при истинном α) при- ведет к невыполнению в цикле оператора B, а при ложном α будет пропущено вы- полнение в цикле оператора A. Данный раздел иллюстрирует воз- можности преобразования РС за счет ис- пользования соотношений, характери- зующих их общие свойства, без привле- чения соотношений, отражающих специ- фику предметной области. Открытой и весьма актуальной остается проблема ав- томатизации формальной трансформации регулярных схем. 4. Примеры использования расширенной алгебры алгоритмов Продемонстрируем некоторые возможности построенной алгебраиче- ской системы на простейших примерах, которые выбраны таким образом, чтобы иллюстрировать эти возможности, не за- громождая процесс восприятия сложно- стями алгоритмов как таковых. Пример 1. Первой рассмотрим задачу обра- ботки массивов, которая иллюстрирует использование операции α3 – дизъюнкция. Пусть ∗= nxxxX ...21 ∗= nyyyY ...21 исходное состояние двух произвольных числовых последовательностей (массивов чисел), где  – сдвоенный указатель, пе- ремещающийся по массиву, причем ука- затель может перемещаться отдельно; * – маркер, отмечающий конец массива. Необходимо сравнить одноименные элементы массивов X и Y и больший эле- мент скопировать на место меньшего. Совпадающие элементы из массива уда- ляются. Для простоты будем полагать, что все указатели синхронно перемещаются по обоим массивам. Введем следующие элементарные операторы: ⇒ C – синхронно перемещает указа- тели на один шаг по массивам X и Y; КОП(x,y) – копирует элемент, находя- щийся справа от указателей из массива Х в массив Y; КОП(y,x) – копирует элемент, находящийся справа от указателей из мас- сива Y в массив Х; СДВИГ(X,Y) – пере- мещает часть массивов X и Y (включая маркер *), находящуюся справа от указа- теля на одну позицию влево, удаляя, та- ким образом, совпадающие элементы; и предикаты: СРАВН(x,y) – значения которого для элементов, расположенных слева от указателей, трактуются следующим обра- зом: 1 – элемент массива Х больше эле- мента массива Y, 0 – элемент массива Х Теоретичні та методологічні основи програмування 12 меньше элемента массива Y, µ – сравни- ваемые элементы равны; d(*) – истинное, когда указатель достигает маркеров конца массивов. Алгоритм обработки массивов ОБР(X,Y) запишем таким образом: [ ] ( )( ∨ ⇒    = yxКОПyxСРАВНCY)ОБР(X, d ,),((*) ( ) ( ) ) }YXСДВИГxyКОП ,, ∨∨ . Для детализации построенной ре- гулярной схемы разработаем алгоритм реализации оператора СДВИГ(X,Y). Для чего введем следующие элементарные операторы: C r – синхронно перемещает указа- тели | на один шаг по массивам X и Y; ⇐ С – возвращает указатели | к указа- телям ; ТРАНСП(x,y) – синхронно переме- щает в массивах X и Y элементы, распо- ложенные справа от указателей  (включая маркер *), на место элементов располо- женных слева от указателей |; и предикат: d(∗|) − принимающий истинное зна- чение, когда указатель | выходит за грани- цу (за маркер) массива. Запишем регулярную схему в виде ( ) ⇐      = СyxТРАНСПCY)СДВИГ(X, d ,* → |)(* . Подставив, полученный оператор в исходное выражение, получаем результи- рующую регулярную схему: ( ) ( )             ⇐→ |)*( ,∨,∨ СyxТРАНСПCxyКОП d . Полученный алгоритм представляет собой циклическую процедуру обработки массивов X и Y, где после сравнения од- ноименных элементов больший из них ко- пируется на место меньшего. В случае ра- венства элементов необработанные части массивов сдвигаются на одну позицию влево удаляя, таким образом, совпадаю- щие элементы в обоих массивах. Цикл прекращает свою работу, когда указатель  достигает конца массива. Этот пример демонстрирует пре- имущества трехзначной логики при раз- работке данного алгоритма, так как легко представить, что использование двузнач- ной логики приведет к вложенности кон- струкций и, таким образом, затруднит по- нимание алгоритма. Пример 2. Возможность разработки средства- ми САА-Р алгоритмов использующих декларативные знания (некоторые аспек- ты этой задачи рассмотрены в [10]) про- демонстрируем на примере системы кон- троля за состоянием некоего гипотетиче- ского парового котла. В качестве базовой выберем наи- более простую и распространенную про- дукционную модель представления зна- ний [11], в которых знания (используется простейший вариант) представляются с помощью правил вида ЕСЛИ условие ТО реакция. При этом в качестве фактов (посы- лок) будем использовать фиксирующие условия, а в качестве правил последова- тельные фильтры. Допустим, что система вводит дан- ные с датчиков давления и температуры, анализирует введенную с них информацию и реализует алгоритм управления в соот- ветствии со следующими правилами: правило № 1 ЕСЛИ «аварийная ситуация » И «давление превысило норму» ТО «открыть аварийный клапан» правило № 2 ЕСЛИ «нормальная ситуа- ция» И «температура нормальная» ТО «закрыть клапан» правило № 3 ЕСЛИ «предаварийная си- туация» И «температура растет» ТО «аварийная ситуация» правило № 4 ЕСЛИ «температура превы- сило норму» И «давление растет» ТО «предаварийная си- туация» [ ] ( )( ∨,),( ⇒ *)( yxКОПyxСРАВНCY)ОБР(X, d    = Теоретичні та методологічні основи програмування 13 правило № 5 ЕСЛИ «давление нормаль- ное» ИЛИ «давление ниже нормы» ТО «нормальная ситуа- ция» Для построения регулярной схемы будем использовать следующие элемен- тарные операторы: ВВОД(DТ)-ввод информации с дат- чиков давления и температуры; предикаты, принимающие значения в следующей трактовке и сохраняемые таким фиксирующими условиями: сост_d = 1 – давление превысило норму, 0 – давление ниже нормы, µ – дав- ление нормальное, фиксирующее условие – sd; изм_d = 1 – давление растет, 0 – давление не изменяется, µ – давление па- дает, фиксирующее условие – id; сост_t = 1 – температура превысила норму, 0 – температура ниже нормы, µ – температура нормальная, фиксирующее условие – st; изм_t = 1 – температура растет, 0 – температура не изменяется, µ – температу- ра снижается, фиксирующее условие –it; Регулярную схему алгоритма рабо- ты системы запишем в таком виде: ПРАВИЛА itbitbitbtизм stbstbstbtcocт idbidbidbdизм sdbsdbsdbdсост DTВВОДКОТЕЛ * *)∨](_[* *)](_[* *)](_[* *)∨∨](_[* *)( 01 01 01 01 1 µ µ µ µ ∨ ∨∨ ∨∨ = Смысл регулярной схемы состоит в следующем. Контроль работы котла осу- ществляется непрерывно, поэтому в дан- ном случае использован бесконечный цикл (цикл по тождественно истинному усло- вию, о необходимости и возможности ис- пользования которого упоминалось вы- ше). В цикле прежде, чем использовать правила, собираются факты о состоянии объекта управления. Для этого после ввода данных (оператор ВВОД(DТ)), использу- ются операции 3α – дизъюнкция, с помо- щью которых фиксируется состояние объ- екта управления. Далее обрабатываются правила. Детализуем оператор ПРАВИЛА, для чего введем следующие операторы: ОКЛ – открыть клапан; ЗКЛ – закрыть клапан; и промежуточные фиксирующие условия: авс – аварийная ситуация; предавс – предаварийная ситуация; норм – нормальная ситуация. Регулярная схема выглядит таким образом: )}.](∨[*)](∨[* *)](∧[* *)](∧[* *)](∧{[ 11 1 нормbdsdsпредавсbidst авсbitпредавс ЗКЛtsнорм ОКЛsdавсПРАВИЛА k rrr r = Работа алгоритма заключается в следующем. После установки исходных состояний фиксирующих логических ус- ловий в цикле выполняется последова- тельность α-фильтров. Каждый из фильт- ров ведет к выполнению (невыполнению) некоторого действия (оператора) или к ус- тановке (не установке) истинного значения промежуточного фиксирующего условия. Условием завершения цикла (условие k) является факт невыполнения ни одного из правил, включенных в цикл. Воспользовавшись операцией лево- го умножения предиката на фиксирующее условие, заменив ею операцию 3α – дизъ- юнкция, и подставив оператор ПРАВИЛА, получаем окончательный вид РС: .}]∨[*]∨[* *]∧[* *)](∧[*)](∧{[* *]_[*]_[* *]_[*]_[* *)( 1 нормdsdsпредавсidst авсitпредавс ЗКЛtiнормОКЛsdавс k ittизмsttсост iddизмsddсост DTВВОДКОТЕЛ rrr r = Теоретичні та методологічні основи програмування 14 Таким образом, построен алгоритм системы слежения, в котором органично сочетается использование декларативных и процедурных знаний. Такое сочетание обладает, по крайней мере, одним очевид- ным преимуществом. Использование зна- ний, представленных в форме правил, мо- жет существенным образом повысить по- нятность и читабельность программной документации. Это облегчит взаимодейст- вие специалистов (заказчиков, технологов) из разных предметных областей с разра- ботчиками программного обеспечения. Кроме того, можно рассчитывать, на то, что правила могут использоваться в каче- стве спецификации алгоритмов (или их основных фрагментов), что позволит ре- шать (по крайней мере, частично) пробле- му верификации алгоритмов и программ. Заключение Основным результатом данной ра- боты является расширенная система алго- ритмических алгебр (САА-Р) – <U, W, Ω>, построенная на основе детализации абст- рактной модели функционирования ЭВМ, в которой информационное множество M операционного автомата О разбито на два подмножества статическое MS и динами- ческое MD. Принципиально важными особен- ностями построенной САА-Р является сле- дующее. Введена операция α3-дизъюнкция 2 Ω∈ , позволяющая полностью исполь- зовать возможности трехзначной логики, обеспечивая компактность записи и эффек- тивность некоторых классов алгоритмов. Выделено подмножество операто- ров U∈U′′ , меняющих динамическую со- ставляющую MD информационного мно- жества M и оставляющих статическую со- ставляющую MS неизменной. С помощью операторов из подмножества U∈U′′ реали- зуется операция левого умножения усло- вия на оператор 1Ω∈′pB , ( PpUB ∈′′∈′ , ), т.е. прогнозирование вычислительного процесса. Множество логических W условий разбито на множество предикатов P и множество фиксирующих логических ус- ловий F, причем последние сохраняют свои значения не зависимо от действия любого из операторов UA∈ . Введенная операция левого умножение фиксирующе- го условия на предикат 1Ω∈pf ( FfPp ∈∈ , ) сохраняет состояние логиче- ского условия, характеризующее текущее состояние вычислительного процесса (со- храняет предысторию), которое может быть использовано на последующих эта- пах вычислительного процесса. А опера- ция умножения фиксирующего условия на оператор 1 x Ω∈fb ( FfUb x ∈′∈ , ), позволяет задать требуемое значение фиксирующе- му условию. Таким образом, создано до- полнительное средство управления вычис- лительным процессом, расширяющее, в частности, возможности построения про- изводных алгоритмических конструкций. Кроме того, фиксирующее условие может трактоваться как элемент декларативных знаний (факт) и в этом качестве позволяет расширить область применения САА-Р на класс задач, в которых удобно использо- вать декларативные знания совместно с процедурными. Построенная расширенная алгебра алгоритмов обеспечивает вышеуказанные возможности, сохраняя при этом способ- ность формального преобразования алго- ритмов с целью их оптимизации, и откры- вает достаточно широкие перспективы для дальнейшего развития. Ближайшей перспективой развития САА-Р является следующее. Апробация формального аппарата на примере реше- ния конкретных практических задач. Раз- работка “библиотеки” производных опера- ций и эквивалентных преобразований ал- горитмических конструкций. Использова- ние более развитых моделей представ- ления знаний и алгоритмов логического вывода. Учитывая, что проектирование управляющих структур неразрывно связа- но с проектированием структур данных [12], в качестве следующего основного Теоретичні та методологічні основи програмування 15 этапа развития САА-Р назовем включение в рассмотрение данных. Поскольку аппарат САА-Р позволя- ет сочетать использование декларативных и процедурных знаний, то перспективным представляется направление развития, при котором знания, представленные в виде правил, используются не только для реше- ния внешних по отношению к алгоритму задач, а и как средство управления собст- венно вычислительным процессом. 1. Глушков В.М. Теория автоматов и фор- мальные преобразования микропрограмм. // Кибернетика. – 1965. – № 5. – С. 1–10. 2. Глушков В.М., Цейтлин Г.Е., Ющенко Е.Л. Алгебра. Языки. Программирование. – Киев: Наук. думка, 1978. – 319 с. 3. Ющенко Е.Л., Цейтлин Г.Е.,Грицай В.П., Терзян Т.К. Многоуровневое структурное проектирование программ: Теоретические основы, инструментарий. – М.: Финансы и статистика, 1989. – 208 с. 4. Цейтлин Г.Е. Введение в алгоритмику. – Киев: “Сфера”, 1998. – 310 с. 5. Кнут Д. Искусство программирования для ЭВМ. Получисленные алгоритмы. – М.: Мир, 1977. – Т.2. – 822 с. 6. Брусенцов Н.П., Владимирова Ю.С. Ком- пьютеризация булевой алгебры // Докл. Академии наук, 2004. – Т. 395.– № 1. 7. Брусенцов Н.П. Кибернетика – ожидания и результаты. Политехнические чтения. Вып. 2. – М.: Знание, 2002. – С. 104 – 105. 8. Поспелов Д.А. Логические методы анализа и синтеза схем. Изд. 3–е, перераб. и доп. – М.: Энергия, 1974. – 368 с. 9. Акуловський В.Г., Костенко В.В. Перетво- рення елементарних алгоритмічних конс- трукцій за допомогою засобів алгебри ал- горитмів // Вісн. АМС України. − 2006. – № 3. – С. 93 – 99. 10. Акуловський В.Г., Костенко В.В. Розробка алгоритмів на основі продукційної моделі подання знань // Вісн. АМС України. − 2006. – № 2. – С. 41– 46. 11. Гаврилова Т.А., Хорошевский В.Ф. Базы знаний интеллектуальных систем. – СпБ: Питер. – 2001. – 384 с. 12. Вирт Н. Алгоритмы + структуры данных = программы. – М.: Мир, 1985. – 406 с. Получено 18.04.2007 Об авторе: Акуловский Валерий Григорьевич, кандидат технических наук, доцент кафед- ры информационных систем и технологий. e-mail: akulovski@rambler.ru Место работы автора: Академия таможенной службы Украины. 49000, Днепропетровск, ул. Дзержинского 2/4. Тел/факс. канцелярии (общий отдел) – (0562) 45 5596; дом.тел. (0562) 67 5004; моб. тел. 80509410566. e-mail: academy@amsu.dnp.ukrpack.net
id nasplib_isofts_kiev_ua-123456789-296
institution Digital Library of Periodicals of National Academy of Sciences of Ukraine
issn 1727-4907
language Russian
last_indexed 2025-12-07T18:07:44Z
publishDate 2007
publisher Інститут програмних систем, журнал "Проблеми програмування"
record_format dspace
spelling Акуловский, В.Г.
2008-02-22T19:19:07Z
2008-02-22T19:19:07Z
2007
Расширенная алгебра алгоритмов / В.Г. Акуловский // Пробл. програмув. — 2007. — N 3. — С. 3-15. — Библиогр.: 12 назв. — рус.
1727-4907
https://nasplib.isofts.kiev.ua/handle/123456789/296
Предложен формальный аппарат (расширенная система алгоритмических алгебр), ориентированный на детальную разработку алгоритмов с учетом особенностей языка, на котором будет реализован алгоритм, с использованием трехзначной логики и декларативных знаний совместно с процедурными. Показаны возможности формального преобразования алгоритмов и построения производных алгоритмических конструкций. Приведены примеры использования формального аппарата.
ru
Інститут програмних систем, журнал "Проблеми програмування"
№3
С. 3-15
Теоретичні та методологічні основи програмування
Расширенная алгебра алгоритмов
Article
published earlier
spellingShingle Расширенная алгебра алгоритмов
Акуловский, В.Г.
Теоретичні та методологічні основи програмування
title Расширенная алгебра алгоритмов
title_full Расширенная алгебра алгоритмов
title_fullStr Расширенная алгебра алгоритмов
title_full_unstemmed Расширенная алгебра алгоритмов
title_short Расширенная алгебра алгоритмов
title_sort расширенная алгебра алгоритмов
topic Теоретичні та методологічні основи програмування
topic_facet Теоретичні та методологічні основи програмування
url https://nasplib.isofts.kiev.ua/handle/123456789/296
work_keys_str_mv AT akulovskiivg rasširennaâalgebraalgoritmov