Научная статья на тему 'БЕСТУПИКОВЫЙ АЛГОРИТМ РАСШИРЕННОГО СИНТАКСИЧЕСКОГО АНАЛИЗА И ЕГО ПРИЛОЖЕНИЕ К ЯЗЫКАМ ПРОГРАММИРОВАНИЯ ДЛЯ КВАНТОВЫХ КОМПЬЮТЕРОВ'

БЕСТУПИКОВЫЙ АЛГОРИТМ РАСШИРЕННОГО СИНТАКСИЧЕСКОГО АНАЛИЗА И ЕГО ПРИЛОЖЕНИЕ К ЯЗЫКАМ ПРОГРАММИРОВАНИЯ ДЛЯ КВАНТОВЫХ КОМПЬЮТЕРОВ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
19
6
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
АЛГОРИТМ СИНТАКСИЧЕСКОГО АНАЛИЗА / КВАНТОВЫЙ КОМПЬЮТЕР / SYNTACTICAL ANALYSIS ALGORITHM / QUANTUM COMPUTER

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Кишкан Владимир Владимирович, Сафонов Константин Владимирович

При разработке перспективных языков программирования, предназначенных для обеспечения работы суперкомпьютеров, в том числе квантовых, возникает необходимость исследований, связанных с тестированием разрабатываемого языка в условиях, когда парсеры для него еще не существуют. В частности, в процессе разработки языка программирования для квантового компьютера возникает необходимость провести синтаксический анализ (разбор) некоторой программы, написанной на новом языке программирования, принадлежащем, как и все языки программирования, классу контекстно-свободных языков (кс-языков). Проблема синтаксического анализа мономов кс-языков возникла в 50-60-х гг. прошлого века, однако в ее постановке имеются некоторые разночтения, в связи с чем возникает необходимость уточнить формулировку этой проблемы. В связи с этим будем называть расширенной проблемой синтаксического анализа проблему разработки беступикового (безостановочного, безвозвратного) алгоритма, который позволяет установить, может ли данный моном быть выведен при помощи системы продукций, которые образуют грамматику кс-языка, а также найти сразу все выводы этого монома, если такие существуют. Описание вывода монома понимается следующим образом: необходимо определить, какие продукции из грамматики кс-языка, сколько раз и в каком порядке применяются для вывода этого монома, что равносильно построению всех деревьев вывода. В статье разработан беступиковый алгоритм решения расширенной проблемы синтаксического анализа, основанный на методе иерархии маркированных скобок. Маркировка скобок показывает, за какой продукцией они закреплены, и позволяет проследить порядок ее использования. В алгоритме используется метод последовательных приближений для решения система уравнений Хомского-Шютценберже, ассоциированной с грамматикой кс-языка. Разработанный алгоритм имеет простую программную реализацию, дана также оценка сложности алгоритма.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Кишкан Владимир Владимирович, Сафонов Константин Владимирович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

DEADLOCK ALGORITHM FOR ADVANCED SYNTACTICAL ANALYSIS AND ITS APPLICATION TO PROGRAMMING LANGUAGES FOR QUANTUM COMPUTERS

When developing promising programming languages designed to support the work of supercomputers, including quantum ones, there is a need for research related to testing the developed language under conditions when parsers do not yet exist for it. In particular, in the process of developing a programming language for a quantum computer, it becomes necessary to parse a certain program written in a new programming language, which, like all programming languages, belongs to the class of context-free languages (cf-languages). The problem of syntactical analysis of the monomials of cf-languages was posed in the 50-60s of the last century, however, there are some discrepancies in its formulation, and therefore there is a need to clarify the formulation of this problem. In this regard, we will call the expanded problem of parsing the problem of developing a stupid (non-stop, irrevocable) algorithm that allows establishing whether a given monomial can be deduced using a system of products that form a cf-language grammar, and also find all the conclusions of this monomial at once if the latter exists. The description of the monomial inference is understood as follows: it is necessary to determine for which products from the grammar of the cf-language, how many times and in what order they are used to derive this monomial, which is equivalent to constructing all the output trees. The article has developed a deadlockless algorithm for solving the extended problem of parsing, based on the method of hierarchy of marked brackets. The marked brackets order shows what products they are assigned to, and allows you to trace the order of its use. The algorithm uses the method of successive approximations to solve the Chomsky-Schützenberger system of equations associated with the cf-language grammar. The developed algorithm has a simple software implementation; an assessment of the complexity of the algorithm is also given.

Текст научной работы на тему «БЕСТУПИКОВЫЙ АЛГОРИТМ РАСШИРЕННОГО СИНТАКСИЧЕСКОГО АНАЛИЗА И ЕГО ПРИЛОЖЕНИЕ К ЯЗЫКАМ ПРОГРАММИРОВАНИЯ ДЛЯ КВАНТОВЫХ КОМПЬЮТЕРОВ»

РАЗРАБОТКА АРХИТЕКТУРЫ КВАНТОВЫХ КОМПЬЮТЕРОВ НА НОВЫХ ПРИНЦИПАХ, СОЗДАНИЕ НОВОГО КВАНТОВОГО ПРОГРАММИРОВАНИЯ

DEVELOPMENT OF THE ARCHITECTURE OF QUANTUM COMPUTERS BASED

ON NEW PRINCIPLES, CREATING NEW QUANTUM PROGRAMMING

05.13.17 ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ

THEORETICAL FOUNDATIONS OF COMPUTER SCIENCE

DOI: 10.33693/2313-223X-2020-7-2-42-48

УДК: 519.682

Беступиковый алгоритм расширенного синтаксического анализа и его приложение к языкам программирования для квантовых компьютеров

В.В. Кишкан1 ©, К.В. Сафонов2 ©

1 Восточно-Сибирский техникум туризма и сервиса, г. Красноярск, Российская Федерация

2 Сибирский государственный университет науки и технологий имени академика М.Ф. Решетнёва, г. Красноярск, Российская Федерация

E-mail: safonovkv@rambler.ru

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

Кишкан В.В., Сафонов К.В.

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

Ключевые слова: алгоритм синтаксического анализа, квантовый компьютер

f \

ССЫЛКА НА СТАТЬЮ: Кишкан В.В., Сафонов К.В. Беступиковый алгоритм расширенного синтаксического анализа и его приложение к языкам программирования для квантовых компьютеров // Computational nanotechnology. 2020. Т. 7. № 2. С. 42-48. DOI: 10.33693/2313-223X-2020-7-2-42-48

V J

DOI: 10.33693/2313-223X-2020-7-2-42-48

Deadlock algorithm for advanced syntactical analysis and its application to programming languages for quantum computers

V.V. Kishkan1 ©, K.V. Safonov2 ©

1 East Siberian College of Tourism and Service, Krasnoyarsk, Russian Federation

2 Reshetnev Siberian State University of Science and Technology, Krasnoyarsk, Russian Federation

E-mail: safonovkv@rambler.ru

Abstract. When developing promising programming languages designed to support the work of supercomputers, including quantum ones, there is a need for research related to testing the developed language under conditions when parsers do not yet exist for it. In particular, in the process of developing a programming language for a quantum computer, it becomes necessary to parse a certain program written in a new programming language, which, like all programming languages, belongs to the class of context-free languages (cf-languages). The problem of syntactical analysis of the monomials of cf-languages was posed in the 50-60s of the last century, however, there are some discrepancies in its formulation, and therefore there is a need to clarify the formulation of this problem. In this regard, we will call the expanded problem of parsing the problem of developing a stupid (non-stop, irrevocable) algorithm that allows establishing whether a given monomial can be deduced using a system of products that form a cf-language grammar, and also find all the conclusions of this monomial at once if the latter exists. The description of the monomial inference is understood as follows: it is necessary to determine for which products from the grammar of the cf-language, how many times and in what order they are used to derive this monomial, which is equivalent to constructing all the output trees. The article has developed a deadlockless algorithm for solving the extended problem of parsing, based on the method of hierarchy of marked brackets. The marked brackets order shows what products they are assigned to, and allows you to trace the order of its use. The algorithm uses the method of successive approximations to solve the Chomsky-Schutzenberger system of equations associated with the cf-language grammar. The developed algorithm has a simple software implementation; an assessment of the complexity of the algorithm is also given.

Keywords: syntactical analysis algorithm, quantum computer

FOR CITATION: Kishkan V.V., Safonov K.V. Deadlock algorithm for advanced syntactical analysis and its application to programming languages for quantum computers. Computational nanotechnology. 2020. Vol. 7. No. 2. Pp. 42-48. (In Russ.) DOI: 10.33693/2313-223X-2020-7-2-42-48

ВВЕДЕНИЕ

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

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

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

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

Проблема синтаксического анализа мономов кс-языка возникла на заре теории языков программирования в 1950-1960-х гг. [Гинзбург, 1970; Глушков, 1974; Ахо, 1978; Salomaa, 1978]. Однако в постановке проблемы имеются некоторые разночтения, в связи с чем возникает необходимость уточнить ее формулировку.

А именно, рассмотрим кс-язык, порожденный кс-грамматикой, которая представляет собой систему правил вывода (продукций):

z. ^ qh (z, x), ... , z. ^ qjpj (z, x), j = 1 ... , n, (1)

где q (z, x) - мономы от некоммутативных символов алфавита z1,..., zn, x1,... , xm с числовым коэффициентом, равным 1.

Символы x1, ... , xm из второй группы называются терминальными символами и образуют словарь кс-языка. Применительно к языкам программирования терминальными символами являются цифры, буквы, вспомогательные знаки, а также состоящие из них «блоки», обозначающие, например, операторы языка программирования. Такие операторы могут обозначаться в виде некоторой последовательности букв и других символов, например, в некоторых языках программирования операторы GOTO, RETURN, но сами рассматриваются как неделимые терминальные символы алфавита.

Символы первой группы z1, ... , zn называются нетерминальными, поскольку не присутствуют явно в тексте программ, а играют вспомогательную роль, участвуя в кс-грамматике как совокупности продукций, порождающих кс-язык.

По правилам грамматики формируются мономы от терминальных символов x1, ... , xm, которые интерпретируются как правильные предложения языка [Глушков, 1974; Salo-maa, 1978]. Такие мономы рассматриваются как корректные, в отличие от произвольных мономов, которые могут не соответствовать правилам грамматики, а значит, являются некорректными.

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

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

ли быть получен из начального символа z при помощи продукций, вторая часть проблемы - описание синтаксической структуры монома. Такое описание понимается в литературе по-разному.

Так, различные авторы при постановке проблемы синтаксического анализа допускают следующие варианты: требуется разработать алгоритм, для того чтобы установить: какие правила подстановки и сколько раз использовались при выводе данного монома, при этом порядок использования правил подстановки не имеет значения [Сафонов, 2005]; какие правила подстановки, сколько раз и в каком порядке использовались при выводе этого монома, т.е. построить хотя бы один из возможных выводов монома [Ахо, 1978]. Как видно, для полного решения проблемы синтаксического анализа, конечно, необходимо построить сразу все возможные выводы монома, если таких несколько.

Разночтения в формулировке проблемы синтаксического анализа сохранялись на протяжении десятилетий; различные варианты имеются в настоящее время [Хантер, 2002; Ахо, 2008; Doh, 2011; Тюгашев, 2016].

Кроме того, исследователи уделяют большое внимание тому, чтобы разработать беступиковый алгоритм синтаксического анализа мономов кс-языка [Глушков, 1974: 248].

Если алгоритм таков, что может приводить к тупикам, то он должен предусматривать возвраты с анализом определенной предыстории алгоритма, что значительно усложняет его. Однако, для произвольной кс-грамматики беступикового алгоритма синтаксического анализа на основе наиболее известных методов свертки или развертки не существует [Там же: 259].

Как итог, имеющиеся алгоритмы достаточно сложны и содержат тупики; кроме того, эти алгоритмы могут решать ограниченные задачи, например, задачу нахождения одного из возможных выводов монома [Кормен, 2006; Scott, 2009; Pingali, 2015; Verbitskaia, 2016]. Таким образом, актуализируется задача уточнения и расширения формулировки проблемы синтаксического анализа мономов кс-языка, решения этой проблемы, а также определения сложности получаемого алгоритма.

1. РАСШИРЕННАЯ ПРОБЛЕМА

СИНТАКСИЧЕСКОГО АНАЛИЗА МОНОМОВ КС-ЯЗЫКА

Для уточнения формулировки проблемы синтаксического анализа, напомним следующие сведения.

Над символами алфавита определены три операции:

1) некоммутативная операция формального умножения - операция конкатенации;

2) коммутативная операция формальной суммы (вместе с этими операциями алфавит образует полукольцо);

3) дополнительная коммутативная операция умножения элементов алфавита, а значит и мономов, на числа (действительные или комплексные) [Глушков, 1974; Salomaa, 1978].

Говоря точнее, над полукольцом можно рассматривать символьные многочлены и формальные степенные ряды (ФСР) с числовыми коэффициентами.

В теории кс-языков имеется эффективный инструмент исследования - система уравнений с многочленами, построенными по продукциям кс-грамматики, называемая (собственной) системой уравнений Хомского-Шютценберже:

z. = qh (z, x) + ... + qp (z, x) = Q. (z, x), j = 1 ... , n, (2)

Кишкан В.В., Сафонов К.В.

при этом многочлены й. х) удовлетворяют естественно объяснимым требованиям, а именно, (0, 0) = 0, и многочлены й. 0) не содержат линейных членов, что означает отсутствие в правилах грамматики простого переобозначения нетерминальных символов [Гинзбург, 1970; Глушков, 1974; Salomaa, 1978].

Предполагается, что система уравнений Хомского - Шют-ценберже решается относительно нетерминальных символов ... , zn) = z, а решение ищется в виде ФСР от терминальных символов (х, ... , х ) = х:

* 1' ' т'

z = z (х) = ^ (х), ... , zn (х));

естественно, эти ФСР, будучи подставленными в решаемую систему уравнений, дадут верные равенства. ФСР, который представляет начальный символ z1 (стартовый для написания программы, либо обозначающий начало предложения в естественном языке) и является соответствующим кс-языком; его членами являются все корректные мономы, которые порождены данной кс--грамматикой, записанной в виде системы уравнений Хомского-Шютценберже [Глушков, 1974; Salomaa, 1978].

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

В монографии [Глушков, 1974], написанной академиком В.М. Глушковым в соавторстве с Г.Е. Цейтлиным и Е.Л. Ющен-ко отмечено: «Одной из важных проблем в разработке современных систем программирования является проблема синтаксического анализа программ. Процесс синтаксического анализа программы состоит в распознавании правильности данной программы, т.е. ее принадлежности к рассматриваемому алгоритмическому языку. Этот этап называется этапом синтаксического контроля программы. Одновременно с контролем осуществляется описание синтаксической структуры правильных программ, подобно тому, как производится грамматический разбор предложений в естественных языках» [Там же: 234]. Далее там же сказано: «В математической лингвистике широко распространен способ представления синтаксической структуры языковых объектов в виде деревьев грамматического разбора» [Там же: 303].

Исследователи также отмечают, что предпочтительными для исследования синтаксической структуры монома являются беступиковые (бесперебойные, безостановочные, беспереборные) алгоритмы. Так, в [Там же: 248] сказано: «С точки зрения практических приложений значительный интерес представляют формализмы для описания языков, допускающие беступиковый (беспереборный) синтаксический анализ».

Однако для произвольной кс-грамматики беступикового алгоритма синтаксического анализа на основе наиболее известных методов свертки или развертки не существует, отмечается лишь, что «важным классом однозначных кс-грамматик, допускающих беступиковый анализ разверткой, являются II М-грамматики» [Там же: 259].

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

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

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

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

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

2. АЛГОРИТМ РЕШЕНИЯ

РАСШИРЕННОЙ ПРОБЛЕМЫ СИНТАКСИЧЕСКОГО АНАЛИЗА

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

Пример 1. Пусть даны продукции и моном z2z1.

Применяя к моному первую продукцию, а затем вторую, получим моном

если же сначала применить вторую продукцию, а затем первую, получится другой моном:

Для определения необходимых для вывода монома продукций и порядка их применения продукций будем опираться на вариант метода иерархии маркированных скобок, предложенный в работе [^Ь|кап, 2019]. Достоинством этого метода является то, что он является беступиковым, однако, к недостаткам этого метода относится сложная система маркированных скобок, затрудняющая его практическое применение.

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

ziz2ziz2zi;

Z1Z2Z2Z1Z2.

DEVELOPMENT OF THE ARCHITECTURE OF QUANTUM COMPUTERS BASED ON NEW PRINCIPLES

других продукции, в-третьих, организуется алгоритмически простой процесс вывода всех мономов кс-языка, вплоть до нужной степени, с помощью метода последовательных приближений, который решает расширенную систему уравнений Хомского-Шютценберже [^Ь|кап, 2019].

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

I, ^ у (г, х^ у = 1.....п к = 1.....рг

где метка г.. - символ из расширенного алфавита, «привязан-

ук

ная» к стоящей справа от нее открывающейся скобке [ и помечает правило вывода I. ^ q.. (г, х); при этом соответствую-

у ук

щую закрывающуюся скобку ] в дальнейшем всегда можно однозначно найти в выражении.

Этот способ маркировки скобок с учетом структуры системы уравнений (2) приводит от расширенной кс-грамматики к расширенной системе уравнений Хомского-Шютценберже:

Г "1 Г "1

zj = Q'j {2, X t) = th [qh (z, x)\ + ...tIPi [qjPi (z, x), j = 1.....n.

(3)

Далее, решение этой системы уравнений может быть получено методом последовательных приближений:

гк+ 1 (х, г) = й* (I (к) (х, г), х, г); к = 0, 1, ... ; I (0) (х, г) = 0. (4)

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

Считываем мономы - начальные члены ФСР г (х) степени degх (V) относительно символов х1, ... , хт, пропуская символы г.., определяем, есть ли среди них моном V. При этом ук

мономиальные метки укажут, какие продукции его генерируют, а иерархия маркированных скобок установят порядок их применения.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Замечание 1. Полезно иметь оценку числа итераций в методе последовательных приближений, обеспечивающего стабилизацию начальных членов решения системы уравнений Хомского-Шютценберже.

Имеет место следующая лемма.

Лемма 1. Пусть к2 > к1, тогда мономы степени не выше к по переменным х многочленов

1у(к2) (х, *), у = 1, ... , п,

не зависят от к2.

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

Доказательство. Лемма 1 следует из равенства г*(х, е) = г1 (х), в котором параметры г заменены на пустую цепочку е, а также оценки, данной в работе [Хомский, 1966: 205].

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

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

Доказательство. Сначала заметим, что можно проверить корректность расстановки скобок следующим образом.

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

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

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

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

Пример2. Рассмотрим продукции и запишем их в виде расширенной грамматики:

г1 ^ г11 [11г23Ь г1 ^ г12 [11г2].

Применяя к начальному символу первую продукцию, а затем вторую, получим моном

г11 [г12 [1112] 13].

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

Наконец, сформулируем основной результат в виде следующей теоремы.

Теорема 1. Расширенный метод мономиальных меток, основанный на расширенной системе уравнений Хомско-го-Шютценберже (3), позволяет за конечное число шагов осуществить беступиковый синтаксический анализ, с учетом порядка применения продукций, любого монома кс-языка, порожденного кс-грамматикой (1).

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

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

Кишкан В.В., Сафонов К.В.

Пример3. Пусть даны продукции

Z1 ^ Z1Z2, Z1 ^ x1, Z2 ^ x2

Запишем продукции в виде расширенной грамматики, содержащей мономиальные метки и маркированные скобки:

^ ^ [zlz2], zl ^ ^ [х1], z2 ^ ^21 [х2],

и заметим, что моном х1х2 получается путем последовательного применения продукций с мономиальными метками t11, t1, ^ или продукций с мономиальными метками t11, t , t12.

В обоих случаях имеется вывод в терминах расширенной грамматики:

^ ^ [ZlZ2] ^ tll [[tl2Xl]

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

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

1. Пусть дан моном (программа) w степени (длины) N. Проводим N итераций метода последовательных приближений (4) для решения соответствующей расширенной системы уравнений Хомского-Шютценберже.

2. Перебираем все полученные в п. 1 мономы степени N, определяя те мономы, которые, с точностью до множителей совпадают с мономом w (множители как отмечено выше, пропускаются). Если таких мономов нет, то моном w вывести невозможно, если такие мономы есть, то они дают решение расширенной проблемы синтаксического анализа в соответствии со следующим п. 3.

3. Считываем все найденные в п. 2 мономы слева направо, устанавливая иерархию маркированных скобок (по признаку сравнения скобок - внутренняя или внешняя скобка) и определяя тем самым порядок применения продукций при выводе монома w, т.е. все возможные способы вывода монома.

Далее рассмотрим задачу оценки сложности (количества операций) для разбора монома с учетом порядка применения продукций.

3. ОЦЕНКА СЛОЖНОСТИ АЛГОРИТМА

СИНТАКСИЧЕСКОГО АНАЛИЗА НА ОСНОВЕ ИЕРАРХИИ МАРКИРОВАННЫХ СКОБОК

Оценим сложность предложенного алгоритма синтаксического анализа.

Для произвольной кс-грамматики одним из эффективных алгоритмов является алгоритм Кока-Янгера-Касами ^К - алгоритм), позволяющий установить, можно ли в заданной кс-грамматике вывести заданную строку, и если да, то предоставить один из ее выводов.

Пусть дан моном (программа) w степени (длины) N. Обычно сложность алгоритма синтаксического анализа выражают через число N в виде О (/М), где/ N - некоторая функция от N, что означает, что сложность не превышает числа С/здесь С - некоторая константа.

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

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

Алгоритм Кока-Янгера-Касами является универсальным в том смысле, что он применим к кс-грамматике в нормальной форме Хомского, к которой можно привести произвольную кс-грамматику. Сложность этого алгоритма - полиномиальная и равна О N3).

Итак, сложность (число операций) алгоритма с использованием маркированных скобок обозначим К. Очевидно, что

К = К + К2 + К3,

где К1, К2, К3 - число операций, предусмотренных п. 1, 2, 3 этого алгоритма соответственно.

Рассмотрим число К. Одна итерация метода последовательных (4) приближений состоит в подстановке многочлена в многочлен.

Имеет место следующая лемма.

Лемма 3. Число операций при подстановке многочлена степени г в фиксированный многочлен равно О (5), где 5г -число мономов в подставляемом многочлене степени г.

Доказательство. Достаточно оценить число операций при подстановке многочлена степени г в моном; легко видеть, что это число равно 5г, что и доказывает лемму 2.

Далее, имеет место следующая лемма.

Лемма 4. Имеет место оценка К1 = О N 5г).

Доказательство. Для получения оценки достаточно умножить оценку из леммы 3 на число итераций N.

Оценим теперь числа К2 и К3. Понятно, что оценка для этих чисел одинаковая; она определяется необходимостью прочитать каждый полученный моном слева направо. Такая оценка дается следующей леммой.

Лемма 5. Имеют место оценки

К2 = О N 5г), К3 = О N 5г).

Доказательство. Очевидно, что каждая оценка равна произведению числа мономов степени N на длину монома N.

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

Лемма 6. Сложность алгоритма, реализующего метод синтаксического анализа из теоремы 1, равна О N 5г).

Рассмотрим теперь оценку для числа 5г применительно к многочленам, участвующим в методе последовательных приближений (4), а именно, рассмотрим многочлен

z1N) (х, П = О* ^- 11 (х, П, х,

определяющий начальные мономы порождаемого кс-языка.

Понятно, что в качестве многочленов О., достаточно рассмотреть многочлены вида

zd + h (х),

а значит, достаточно оценить число мономов многочлена ^ * - 1 (х, Щ ".

и моном x1x2.

DEVELOPMENT OF THE ARCHITECTURE OF QUANTUM COMPUTERS BASED ON NEW PRINCIPLES

Очевидно, что при возведении суммы д слагаемых квадрат, получается не более д2 слагаемых (каждое слагаемое умножается на каждое), а при возведении в степень d получается не более д1 слагаемых. Далее, при возведении полученной суммы снова в степень d получится (д1)1 = д'2 слагаемых. Наконец, при выполнении N итераций число слагаемых может возрастать до д.

Это значит, что число 5г из лемм 4-6 фактически имеет найденный порядок:

5Г = О (д'\

Как результат, сформулируем полученную теорему.

Теорема 2. Сложность алгоритма, основанного на расширенном методе мономиальных меток, основанном на расширенной системе уравнений Хомского-Шютценберже (3), равна О (%'").

Несмотря на то, что сложность данного алгоритм достаточно высока, она равна сложности метода мономиальных меток, предложенного в работе [Сафонов, 2005], однако, в отличие от этого метода, позволяет получить полное решение расширенной проблемы синтаксического анализа.

ЗАКЛЮЧЕНИЕ

Разработан алгоритм, основанный на иерархии маркированных скобок, который является конструктивным алгоритмом, который весьма прост и является беступиковым (безвозвратным, безостановочным) алгоритмом, в отличие от известных ранее алгоритмов.

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

Литература

1. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции. Т. 1. Синтаксический анализ. М.: Мир, 1978. 352 с.

2. Ахо А., Лам М., Сети Р., Ульман Дж. Компиляторы: принципы, технологии и инструментарий. М.: Вильямс, 2008.

3. Гинзбург С. Математическая теория контекстно-свободных языков. М. Мир, 1970. 325 с.

4. Глушков В.М., Цейтлин Г.Е., Ющенко Е.Л. Алгебра, языки, программирование. Киев: Наукова думка, 1974. 328 с.

5. Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ. 2-е изд. М.: Вильямс, 2006.

6. Сафонов К.В. О возможности вычислительного распознавания контекстно-свободных языков // Вычислительные технологии. 2005. Т. 10 (4). С. 91-98.

7. Тюгашев А.А. Основы программирования. Ч. I. СПб.: Ун-т ИТМО. 2016.

8. Хантер Р. Основные концепции компиляторов. М.: Вильямс, 2002.

9. Хомский Н., Шютценберже М.Н. Алгебраическая теория контекстно-свободных языков // Кибернетический сборник. Нов. серия. 1966. Вып. 3. С. 195-242.

10. Doh K.-G., Kim H., Schmidt D.A. Abstract LR-Parsing. Berlin; Heidelberg: Springer, 2011. Рр. 90-109.

11. Kishkan V.V., Safonov K.V., Tsarev R.Yu. Syntactical analysis of context-free languages taking into account the order of application of productions // Journal of Physics: Conference Series. 2019. Vol. 1333. P. 032072.

12. Salomaa A., Soittola M. Automata-theoretic aspects of formal power series. NY: Springer-Verlag, 1978. 288 p.

13. Pingali K., Bilardi G. A graphical model for context-free grammar parsing. Heidelberg; Berlin: Springer, 2015.

14. Scott E., Johnstone A. GLL parsing // Electronic Notes in Theoretical Computer Science. 2009. Vol. 253 (7).

15. Verbitskaia E., Grigorev S., Avdyukhin D. Relaxed parsing of regular approximations of string-embedded languages. Cham: Springer International Publishing. 2016. Pp. 291-302.

References

1. Aho A., Ulman J. Theory of syntactic analysis, translation and compilation. Vol. 1: Syntactic analysis. Moscow: Mir, 1978. 352 p.

2. Aho A., Lam M., Seti R., Ulman J. Compilers: principles, technologies and tools. Moscow: Williams, 2008.

3. Ginzburg S. Mathematical theory of context-free languages. Moscow: Mir, 1970. 332 p.

4. Glushkov V.M., Tseitlin G.E., Yushchenko E.L. Algebra, languages, programming. Kiev: Naukova Dumka. 1974. 328 p.

5. Kormen T., Leiserson C., Rivest R., Stein K. Algorithms: construction and analysis. 2nd ed. Moscow: Williams. 2006.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

6. Safonov K.V. On the possibility of computational recognition of context-free languages. Computational Technologies. 2005. Vol. 10 (4). Pp. 91-98.

7. Tyugashev A.A. Basics of programming. Part I. St. Petersburg: University of ITMO, 2016.

8. Hunter R. Basic concepts of compilers. Moscow: Williams, 2002.

9. Chomsky N., Schutzenberger M.N. Algebraic theory of context-free languages. Cybernetic Collection. New Series. 1966. Vol. 3. Pp. 195-242.

10. Doh K.-G., Kim H., Schmidt D.A. Abstract LR-Parsing. Berlin; Heidelberg: Springer, 2011. Pp. 90-109.

11. Kishkan V.V., Safonov K.V., Tsarev R.Yu. Syntactical analysis of context-free languages taking into account the order of application of productions // Journal of Physics: Conference Series. 2019. Vol. 1333. P. 032072.

12. Salomaa A., Soittola M. Automata-theoretic aspects of formal power series. NY: Springer-Verlag, 1978. 288 p.

13. Pingali K., Bilardi G. A graphical model for context-free grammar parsing. Heidelberg; Berlin: Springer, 2015.

14. Scott E., Johnstone A. GLL parsing // Electronic Notes in Theoretical Computer Science. 2009. Vol. 253 (7).

15. Verbitskaia E., Grigorev S., Avdyukhin D. Relaxed parsing of regular approximations of string-embedded languages. Cham: Springer International Publishing. 2016. Pp. 291-302.

Статья поступила в редакцию 05.05.2020, принята к публикации 17.06.2020 The article was received on 05.05.2020, accepted for publication 17.06.2020

СВЕДЕНИЯ ОБ АВТОРАХ

Кишкан Владимир Владимирович, старший преподаватель Восточно-Сибирского техникума туризма и сервиса. Красноярск, Российская Федерация Сафонов Константин Владимирович, д-р физ.-мат. наук, профессор; заведующий кафедрой Сибирского государственного университета науки и технологий имени академика М.Ф. Решетнёва. Красноярск, Российская Федерация. ORCID ID: 0000-0003-0405-3065. E-mail: safonovkv@rambler.ru

ABOUT THE AUTHORS

Vladimir V. Kishkan, senior lecturer at the East Siberian College of Tourism and Service, Krasnoyarsk, Russian Federation

Konstantin V. Safonov, Dr. Sci. (Phys.-Math.), Professor; Head of Chair at the Reshetnev Siberian State University of Science and Technology, Doctor of Physical and Mathematical Sciences. Krasnoyarsk, Russian Federation. ORCID ID: 0000-0003-0405-3065. E-mail: safonovkv@ rambler.ru

i Надоели баннеры? Вы всегда можете отключить рекламу.