Fourth Conference on Software Engineering...Andrey Ivanov / JetBrains Iakov Kirilenko / St....

78

Transcript of Fourth Conference on Software Engineering...Andrey Ivanov / JetBrains Iakov Kirilenko / St....

Fourth Conference on Software Engineeringand Information Management (SEIM-2019)

(full papers)Saint Petersburg, April 13, 2019

Yurii Litvinov, Peter Trifonov (editors)

Saint Petersburg — 2019

Fourth Conference on Software Engineering and Information Management (SEIM-2019)Saint Petersburg, April 13, 2019

Yurii Litvinov, Peter Trifonov (editors)

This volume contains ten selected papers originally presented at the Fourth Conference onSoftware Engineering and Information Management (SEIM-2019), which was held in SaintPetersburg, Russia, on April 13, 2019. These papers were selected in thorough single-blindreviewing process.

ISBN 978-5-9500625-9-9

Формат 215х275. Печать цифровая.Тираж 40 экз. Заказ №272955.Отпечатано в ООО "Цифровая фабрика "Быстрый Цвет".197022, Санкт-Петербург, наб. реки Карповки, д.5, корп.16.(812) 644-40-44

Copyright c○ 2019 for the individual papers by the papers’ authors. Copying permitted forprivate and academic purposes. This volume is published and copyrighted by its editors.

Table of Contents

Message from the Editors 4

SEIM 2019 Organization 5

Распознавание типов стеганографических атак на основе «хрупких» метокМария Исаева, Александра Афанасьева 6

Метод защиты персональных данных на основе применения технологии цепочки бло-ков (блокчейн)Иван Козин 10

Product Customization by ModelingVyacheslav Busarov and Natalia Grafeeva 17

Анализ перемещений в IntelliJ RustАртем Мухин 22

Об использовании кодовых конструкций в модульной метрике для исправления ошибокв канале с АБГШ с двоичным входом и квантованным выходомНикита Зеулин 29

Применимость эвристического алгоритма для задач поиска траекторий движения черезсистему физической защитыИлья Шарков, Егор Желудков 34

Обработка данных акустических сигналов для применения к ним коэффициента кор-реляции Пирсона и их кластеризацияПавел Балагурин, Павел Макарихин, Анастасия Григорьева 41

Модификация алгоритма декодирования сверточных кодов для канала с замираниямиВиктор Пятаков 48

Монадические парсер-комбинаторы с поддержкой симметричной альтерации и левойрекурсииДанила Боровков 55

Survey on blockchain technology, consensus algorithms, and alternative distributed technologiesAleksey Fefelov, Nikita Mishin, Vyacheslav Bushev, Iakov Kirilenko, Daniil Berezun 63

3

Message from the Editors

The Fourth Conference on Software Engineering and Information Management (SEIM-2019)opens its doors to young researchers and practitioners in different areas of computer scienceand software engineering, providing an opportunity to present their research, discuss state-of-the-art technology and engage in useful networking. As before, we consider SEIM to mainlyfocus on researchers who are just starting out their scientific careers, and hope to ease theirintroduction to the conference process. On the other hand, SEIM might also be of interest tomore experienced researchers, who are aimed at sharing their research with a wider scientificcommunity.

The conference welcomes submissions on a wide range of topics, including but not limitedto:

∙ Algorithms and data structures∙ Big data∙ Cloud systems∙ Coding theory∙ Compilers∙ Crowdsourcing∙ Data storage and processing∙ Development management∙ Digital signal processing∙ Distributed systems∙ E-commerce / e-government∙ Empirical software engineering∙ High-performance computing∙ Information retrieval∙ Information security∙ Intelligent data analysis∙ Internet of Things∙ Machine learning

∙ Mobile systems∙ Modelling∙ Natural language processing∙ Networks and telecommunications∙ (Non-)relational databases∙ Operating systems∙ Programming languages∙ Recommendation systems∙ Robotics∙ Semantic web∙ Social networks∙ Software analysis∙ Software testing∙ Software verification∙ Software virtualization∙ Software-defined networks∙ Theoretical computer science∙ Visual languages

This year we received 64 papers, each reviewed by at least 3 members of the ProgramCommittee, of which 10 were selected for publication in CEUR-WS.org, 10 for indexing inRSCI, and 7 were accepted as talk-only to allow the authors to receive valuable feedbackabout their research. We would like to thank the members of our Program Committee fortheir continuous work and contribution to the success of our conference.

These proceedings include the SEIM-2019 papers, which were selected by the ProgramCommittee for indexing in RSCI. These papers passed not only the original review procedure,but also an additional round of post-review with the conference feedback. We thank theauthors for their submissions to SEIM-2019 and hope to see them in the future.

Furthermore, we would also like to thank Tatiana Mironova, Sergey Zherevchuk andSvyatoslav Mikhailov for their great help in organizing the conference, Computer ScienceCenter for hosting the event, and JetBrains Research for their overall support. The additionalinformation about the SEIM conference series can be found on the conference website at:http://2019.seim-conf.org/Yurii Litvinov, Peter Trifonov (editors)

4

SEIM 2019 Organization

The conference was organized jointly with Computer Science Center and supported by JetBrains Research.

Steering CommitteeDmitry Bulychev / St. Petersburg State UniversityVladimir Itsykson / St. Petersburg Polytechnic UniversityAndrey Ivanov / JetBrainsIakov Kirilenko / St. Petersburg State UniversityKirill Krinkin / St. Petersburg Electrotechnical UniversityBoris Novikov / St. Petersburg State University

Program Committee ChairsYurii Litvinov / St. Petersburg State UniversityPeter Trifonov/ St. Petersburg Polytechnic University

Program CommitteeMarat Akhin / Saint Petersburg Polytechnic UniversityMikhail Belyaev / Saint Petersburg State PolytechnicalUniversityDaniil Berezun / JetBrains and Saint Petersburg StateUniversitySergey Bezzateev / Saint Petersburg University of AirspaceInstrumentationNatalia Bogach / State Polytechnical UniversityDmitry Boulytchev / Saint-Petersburg State UniversityTimofey Bryksin / Saint Petersburg State UniversityDmitry Bugaychenko / Saint-Petersburg State UniversityGeorge Chernishev / SPbUMikhail Glukhikh / JetBrainsNatalia Grafeeva / Saint-Petersburg State UniversitySemyon Grigorev / Saint Petersburg State UniversityDmitry Grigoriev / St. Petersburg State UniversityVladimir Itsykson / SPbSPUAleksandr Kapitonov / ITMO UniversityIakov Kirilenko / Saint Petersburg State UniversityVladimir Kovalenko / Delft University of TechnologyKirill Krinkin / Open Source and Linux LabSvetlana Lazareva / RaidixDmitry Luciv / Saint-Petersburg State University

Igor Malishev / Saint-Petersburg State PolytechnicalUniversityDmitry Mordvinov / Saint-Petersburg State UniversityBoris Novikov / National Research University Higher Schoolof EconomicsAndrei Ovchinnikov / SUAIOleg Pliss / OracleAnton Podkopaev / Saint Petersburg State UniversityStanislav Sartasov / SPbSUYuri Senichenkov / Saint Petersburg State PolytechnicalUniversityKirill Smirnov / SPbSUDarja Solodovnikova / University of LatviaSergey Stupnikov / Institute of Informatics Problems,Russian Academy of SciencesDimitri Timofeev / Peter the Great St.Petersburg PolytechnicUniversityDmitry Tsitelov / Devexperts, LLCAndrey Turlikov / Saint Petersburg University of AirspaceInstrumentationEkaterina Verbitskaia / Saint Petersburg State UniversityMikhail Zymbler / South Ural State University

5

Распознавание типов стеганографических атак на

основе «хрупких» меток

М.Н. Исаева

Кафедра Безопасности информационных систем

Санкт-Петербургский государственный университет

аэрокосмического приборостроения

Санкт-Петербург, Россия

[email protected]

А.В. Афанасьева

Кафедра Безопасности информационных систем

Санкт-Петербургский государственный университет

аэрокосмического приборостроения

Санкт-Петербург, Россия

[email protected]

Аннотация — В статье предложен статистистический

подход к определению типов атак на изображения со

встроенными цифровыми водяными знаками (ЦВЗ) с

помощью «хрупких» меток, данный подход предложен

впервые. Проведены эксперименты с несколькими

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

выявления возможности их сочетания в одном изображении.

Определение типа атаки может помочь при попытке

восстановлении исходного изображения. Целью

восстановления изображения может быть повышение его

качества, повышения стойкости робастных ЦВЗ, повышение

пропускной способности скрытого стеганографического

канала и т.д. Предложенный подход основан на

предположении о статистической устойчивости и

существенном различии искажений, возникающих в

«хрупкой» метке при применении отдельных видов атак.

Полученные в ходе экспериментов результаты позволили

выявить достоинства предложенного подхода и ограничения

при его применении.

Ключевые слова — цифровой водяной знак, хрупкие метки,

стеганография.

I. ВВЕДЕНИЕ

В настоящее время актуальна проблема незаконного копирования объектов авторского права. Для защиты авторских прав мультимедийных файлов (в особенности, изображений) применяются технологии внедрения цифровых водяных знаков (ЦВЗ).

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

В предыдущей работе [6] было проведено исследование возможности применения хрупких меток для распознавания атак на базе простых точечных оценок. Эксперименты показали, что такая возможность существует, однако возникло большое количество ошибок

первого и второго рода. Под ошибками первого рода в работе понимается не обнаружение реализованного преобразования над изображением-контейнером, а под ошибками второго рода – обнаружение преобразований, которых не было, т.е. «ложные» обнаружения.

II. ОБЗОР ПОДХОДОВ К ВНЕДРЕНИЮ ЦВЗ

Одним из определяющих параметров для алгоритмов встраивания ЦВЗ является область внедрения. Метка может быть внедрена как в пространственную область, так и в область преобразования[1,4].

Внедрение в пространственную область изображения – это размещение бит скрываемой информации среди значений компонент пикселей. Любое изображение можно представить, как двумерную матрицу, которая содержит в себе интенсивность цвета (или тона). Для формата BMP24 цвет представляется 256 значениями интенсивности для всех компонент, принимая значения от 0 (минимальная интенсивность цвета) до 255 (максимальная интенсивность цвета). Внедрение в пространственную область происходит с помощью изменения значений компонент в двумерной матрице интенсивностей по определенному алгоритму или формуле.

Для встраивания информации в область преобразования необходимо выбрать, какой тип преобразования будет использоваться в алгоритме. Самым распространенным является дискретно-косинусное преобразование (ДКП). Внедрение в данном случае будет происходить в блоки коэффициентов ДКП. Для этого исходное изображение разбивается на блоки. Во многих алгоритмах используются блоки размером 8×8 (Рис. 1). Затем к каждому блоку применяется двумерное ДКП, после которого получается матрица коэффициентов ДКП.

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

6

Рис. 1. Двумерная матрица коэффициентов ДКП для

блока изображения 8×8 В настоящей работе было выбрано три метода

внедрения меток в изображения. Первый – это метод LSB (Least Significant Bits), т.е. внедрение информации в наименее значащие биты контейнера [1]. Информация внедрялась в 2 младших бита значения пикселей изображения. Второй метод – метод встраивания ЦВЗ на основе псевдоквантования, при котором значения пикселей изображения пересчитывались по определенным формулам[5]. Третий метод – метод внедрения информации в коэффициенты ДКП [7]. Методы были подобраны таким образом, чтобы они минимально влияли друг на друга.

III. ОБЗОР АТАК, НАПРАВЛЕННЫХ НА УДАЛЕНИЕ ЦВЗ ИЗ

ИЗОБРАЖЕНИЯ

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

— атаки, направленные на удаление ЦВЗ;

— геометрические атаки, направленные на искажение контейнера.

К атакам, направленным на удаление ЦВЗ, можно отнести преобразования, которые изменяют визуальные характеристики изображения. Эти атаки основаны на предположении о том, что ЦВЗ – это шум, от которого можно избавиться с помощью фильтров или сжатия.

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

Для объектов авторского права наиболее существенную угрозу представляют атаки, направленные на удаление ЦВЗ из мультимедиа файлов. К сожалению, такими атаками для изображений могут являться любые преобразования и фильтры, которые направлены на изменение визуальных характеристик изображений. К таким преобразованиям можно отнести сжатие JPEG с потерями, а также множество различных фильтров: фильтры размытия, фильтры для изменения резкости или контрастности изображения, добавление шума на изображение [2-3].

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

— сжатие JPEG с потерями;

— размытие с помощью фильтра Гаусса с параметрами (m = 0 – математическое ожидание, σ = 3 – среднеквадратичное отклонение (СКО)) и апертурой (размер окна фильтра) R = 3. Данные параметры влияют на степень размытия изображения;

— увеличение резкости с помощью фильтра Лапласа, у которого апертура R = 1;

— добавление аддитивного шума с параметрами (m = 1 – математическое ожидание, σ = 5 – СКО. Данные параметры влияют на уровень «зашумленности» изображения);

— изменение контрастности, основанное на методе выравнивания гистограмм.

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

IV. ОПИСАНИЕ МЕТОДА ОПРЕДЕЛЕНИЯ ТИПОВ АТАК

В основе метода лежит статистический анализ векторов ошибки извлечения «хрупкой» метки. Для построения вектора ошибки внедренная и извлеченная метки представляются в виде двоичных векторов. Вектор ошибки получается следующим образом:

оригинальная метка ⊕ извлеченная метка = вектор ошибок

Значение компоненты вектора ошибок равно 0, если данная позиция извлеченной метки совпала со значением оригинальной. Если же произошла ошибка в конкретной позиции, то вектор ошибок на этой позиции принимает значение 1.

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

В качестве параметра, по которому принимается решение о типе обнаруженной атаки, в данном случае используется условная вероятность, которая рассчитывается по формуле Байеса [8]:

=

(1)

P(Bi) – это вероятность гипотезы, гипотезой является тип атаки. P(Bi)=1/N , где N – число типов атак, которые рассматриваютсяв работе. P(A) – полная вероятность, которая рассчитывается по формуле:

= ∑ -

= (2)

7

Вероятность P(A|Bi) вычисляется как вероятность совместного события по данной формуле:

= ∏ {

если =

- если =

(3)

где Pei – вероятность ошибки в i-ой позиции метки, ei – значение i-го бита полученного вектора ошибки после извлечения.

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

Пусть есть вектор вероятности ошибок Pe1 = (0,3; 0,4; 0,5; 0,2) для первой атаки и Pe2 = (0,1; 0,1; 0,3; 0,6) и принятый вектор ошибок e = (1 0 1 0). Для двух атак вероятность P(B) = 0,5.

В таком случае, вероятность P(A|B1) = 0,072 и P(A|B2) = 0,0108, P(A) = 0,0414. В конечном итоге получается две апостериорные вероятности: P(B1|A) = 0,87 и P(B2|A) = 0,13, следовательно, по максимуму апостериорной вероятности детектирована атака под номером 1.

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

Таблица 1. Результаты экспериментов

Событие

Атака

Атака

определена

верно

Атака

определена

неверно

Атака не

определена

Cжатие JPEG 0 0,86 0,14

Размытие 0,81 0,08 0,01

Резкость 1 0 0

Добавление шума 0 0,64 0,36

Контрастность 0 0,59 0,41

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

V. ЗАКЛЮЧЕНИЕ

В данной работе предложен новый метод

детектирования типов атак, направленных на удаление

ЦВЗ из статических изображений, основанный на хрупких

метках. Были использованы статистические методы

принятия решения по максимуму апостериорной

вероятности, широко применяемые в задачах

детектирования передаваемого сигнала по принятому в

каналах связи. Целью дальнейших исследований в данной

области является расширение множества атак, попытка их

классифицировать, а также попробовать перейти от

статистических методов к решению задачи

классификации искаженных изображений по типу атаки с

помощью нейронных сетей.

ЛИТЕРАТУРА

[1] Федосеев В.А. Цифровые водяные знаки и стеганография: учебное

пособие с заданиями для практических и лабораторных работ / В.А. Федосеев. – Электрон. текстовые и граф. дан. – Самара: СГАУ, 2015. – 128 с. – 1 эл. опт. диск (CD-ROM).

[2] Гильмутдинов М.Р. Введение в цифровую обработку изображений. Методы фильтрации и сжатия изображений. Учебное пособие / М.Р. Гильмутдинов, А.И. Веселов, В.А. Ястребов, А.М. Тюрликов; СПб.: ГУАП, 2015. – 76 с.

[3] Гильмутдинов М.Р. Цифровая обработка изображений. Статистический анализ и квантование визуальных данных. Учебное пособие / М.Р. Гильмутдинов, А.М. Тюрликов, Е.М. Линский; СПб.: ГУАП, 2013. – 41 с.

[4] Грибунин В.Г. Цифровая стеганография / В.Г. Грибунин, И.Н. Оков, И.В. Туринцев; М.: СОЛОН-ПРЕСС, 2009. – 272 с.

[5] Глумов Н.И. Алгоритм встраивания полухрупких цифровых водяных знаков для задач аутентификации изображений и скрытой передачи информации / Н.И. Глумов, В.А. Митенкин; Компьютерная оптика, Том 35. – 2011. — № 2. — С. 262-267.

[6] Исаева М.Н. Метод выявления типов стеганографических атак на основе «хрупких» меток / Методы и технические средства обеспечения безопасности информации. – 2018. – №27. – С. 53-54.

[7] Бахрушина Г.И. Алгоритм цифрового маркирования полутонового изображения, использующий двумерное кодирование по Уолшу / Г.И. Бахрушина, О.В. Коренева; Электронное научное издание «Ученые заметки ТОГУ», Том 7. – 2016. - №1. – С. 48-60.

[8] Вентцель Е.С. Теория вероятностей: Учеб. для вузов. — 6-е изд. стер. — М.: Высш. шк., 1999.— 576 c.

8

Detection of steganographic attack types based on fragile watermarks M.N. Isaeva

Department of information systems security

St.Petersburg State University of Aerospace Instrumentation

Saint-Petersburg, Russia

[email protected]

A.V. Afanasyeva

Department of information systems security

St.Petersburg State University of Aerospace Instrumentation

Saint-Petersburg, Russia

[email protected]

Abstract - in this paper proposed statistical method to recognize types of attacks on images with built digital

watermarks with “fragile” watermarks. Several experiments were conducted using various algorithms of embedment of

these marks with a goal to discover a possibility of their combination in one image. An attack type recognition could help

in recovery process of an original image. The goal of image recovery may be a quality improvement, a resistance increase

of robust digital watermark, a capacity increase of a hidden steganographic channel and etc. Proposed method is based on

an assumption that there is statistical stability and significant difference of distortions, which appear in "fragile"

watermark during implementation of particular types of attacks. Obtained through experiments results allow to reveal

advantage of proposed method and additionally its limitations.

9

Метод защиты персональных данных на основе

применения технологии цепочки блоков

(блокчейн)

Иван Козин

Отдел защиты информации

АО «Кронштадт технологии»

г. Санкт-Петербург, Россия [email protected]

Аннотация – разработан подход к созданию

распределённой информационной системы обработки

персональных данных, основанной на технологии

блокчейн, включающий предложения по определению

общей архитектуры системы, а также порядка хранения

данных, вознаграждения пользователей, достижения

консенсуса, способа вычисления хеш-функции и развития

системы. Подход к вознаграждению пользователей

основан на применяемой в Китае системе социального

кредитования. Процедура достижения консенсуса

включает в себя автоматизированный анализ рисков

обработки недостоверных данных. В качестве

математических аппаратов анализа рисков предложены

теория искусственных нейронных сетей и теория нечётких

множеств.

Ключевые слова – информационная безопасность,

персональные данные, блокчейн, децентрализация,

достижение консенсуса, социальное кредитование.

I. ВВЕДЕНИЕ

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

С учетом положений Указа Президента [1] в качестве одного из основных направлений обеспечения информационной безопасности можно выделить защиту персональных данных (ПДн). Под ПДн понимается любая информация, относящаяся к прямо или косвенно определённому или определяемому физическому лицу (субъекту ПДн) [2]. Примерами таких данных являются паспортные данные, сведения о доходах, состоянии здоровья, политических взглядах, религиозных и философских убеждениях. Нарушение безопасности ПДн может привести к материальному и моральному ущербу как для субъекта ПДн, так и для организации, осуществляющей обработку ПДн. Таким образом, обеспечение безопасности ПДн при их обработке в информационной системе является важной и актуальной задачей.

В настоящее время существует множество подходов к обеспечению безопасности информации при ее обработке в информационной системе. Одним из таких подходов является распределённая обработка, основанная на применении технологии цепочки блоков – блокчейн (англ. block chain).

II. ОБЗОР ПОДХОДОВ К ОБЕСПЕЧЕНИЮ БЕЗОПАСНОСТИ

С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ БЛОКЧЕЙН

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

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

Первое поколение цепочек блоков (блокчейн 1.0) лежит в основе цифровых систем денежных расчётов, первым и наиболее популярным представителем которых является запущенный в 2009 году биткоин [3].

Второе поколение цепочек блоков (блокчейн 2.0) поддерживает выполнение функций регистрации, подтверждения и передачи не только валюты, но и других видов активов – всех видов контрактов и собственности. В настоящее время применение умных контрактов требует серьёзной доработки нормативно-правовой базы, регулирующей процедуры исполнения контрактных обязательств [4].

На сегодняшний день нет общепринятого определения цепочки блоков третьего поколения (блокчейн 3.0). В целом, третье поколение цепочек блоков позволяет реализовывать решения задач, не связанных с денежным обращением и рыночными транзакциями. Примерами таких решений являются: службы идентификации; службы аттестации (обеспечивающие доказательство авторства и целостность документов с указанием временных меток и без раскрытия содержащейся в них информации); системы удостоверения личности (обеспечивающие людей международными паспортами, не привязанными к конкретному государству) [5].

Примерами решений, построенных на использовании технологии блокчейн, и предназначенных для обработки ПДн, являются проекты DACC

1, Goldilock

2, Decenturion

3.

1 URL: https://dacc.co/ (дата обращения: 22.03.2019) 2 URL: https://www.goldilock.com/ (дата обращения: 22.03.2019) 3 URL: https://decenturion.com/ (дата обращения: 22.03.2019)

10

III. ПОСТАНОВКА ЗАДАЧИ ПОСТРОЕНИЕЯ

РАСПРЕДЕЛЁННОГО РЕЕСТРА ОБРАБОТКИ ПЕРСОНАЛЬНЫХ

ДАННЫХ

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

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

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

В качестве района опытной эксплуатации РРПДн предлагается рассмотреть отдельный субъект РФ – Калининградскую область, население которой на 2018 год составляет примерно 1 млн человек.

IV. ПОСТРОЕНИЕ РАСПРЕДЕЛЁННОГО РЕЕСТРА ОБРАБОТКИ

ПЕРСОНАЛЬНЫХ ДАННЫХ

A. Состав обрабатываемых персональных данных

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

Для решения указанных задач в РРПДн необходимо обрабатывать следующие сведения: содержащиеся в паспорте гражданина РФ; об образовании и профессиональных навыках; о финансовом состоянии.

B. Общая архитектура распределённого реестра

С учётом цели и состава ПДн, а также больших объёмов данных, которые предполагается обрабатывать в РРПДн, предлагается: выделить в РРПДн несколько самостоятельных цепочек блоков, по одной для каждой предметной области (ЦБ-И для идентификационных данных, ЦБ-П для данных о профессиональных навыках, ЦБ-А для данных об активах и ЦБ-К для данных об умных контрактах); в качестве основы ЦБ-И использовать технологию блокчейн второго поколения, т.к. использование блоков вместо транзакций позволяет уменьшить объём трафика и нагрузку на вычислительные ресурсы узлов сети; в качестве основы ЦБ-П, ЦБ-А и ЦБ-К использовать технологию блокчейн

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

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

Частота обновления цепи (создания новых блоков) должна быть обусловлена спецификой области обработки ПДн.

Ядро платформы РРПДн предлагается реализовать на языке программирования Java 8 с применением NoSQL базы данных. Взаимодействие с ядром платформы предлагается построить на базе архитектуры RESTful API. Подобный подход к построению архитектуры распределённого реестра, предназначенного для обработки ПДн, реализован в платформе Erachain

4. При разработке РРПДн

рекомендуется использовать методы разработки безопасного программного обеспечения (например, предложенные в работах [6, 7]). Также при проектировании РРПДн может найти применение методика расчёта надёжности сложных систем, предложенная в работе [8].

C. Порядок хранения данных

Объёмные данные предлагается хранить на личных носителях информации пользователей РРПДн (субъектов ПДн), являющихся узлами аудита или консенсуса. При этом пользователю необязательно скачивать себе полную базу данных РРПДн, допускается скачивание приемлемой по размеру части. При необходимости обработки биометрических данных может найти применение метод маскирующего сжатия на основе модели взвешенной структуры изображения, представленный в работе [9]. Для обеспечения конфиденциальности ПДн предлагается обеспечить их шифрование. Обобщённая схема хранения ПДн представлена на рисунке 1.

Рис. 1. Обобщённая схема хранения ПДн

Распределённое хранилище ПДн должно обеспечивать хранение больших по объёму файлов (таких как документы Microsoft Word, биометрические

4 URL: https://www.erachain.org/home (дата обращения: 22.03.2019)

СКЗИРасшифрованные

ПДн

СКЗИРасшифрованные

ПДн

Зашифрованные

ПДн

Лёгкий

клиент

Узел

аудита

Узел

консенсуса

СКЗИРасшифрованные

ПДн

Зашифрованные

ПДн

Подсистема генерации блоков

РРПДн

11

данные). Примером системы, которая способна обеспечить работу РРПДн, является проект InterPlanetary File System (IPFS).

Также предлагается заложить в блоки цепи условие архивирования неиспользуемых блоков. Для архивирования могут применяться такие системы как Internet Archive, Wayback Machine или аналогичные.

С учётом численности населения района опытной эксплуатации (1 млн пользователей – субъектов ПДн) примерный объём данных РРПДн, включающего в свой состав 10 копий цепочек блоков, составит до 285 ГБ.

D. Порядок вознаграждения

Для стимулирования субъектов ПДн к участию в обеспечении работы РРПДн предлагается ввести в РРПДн три учётные единицы вознаграждения – баллы социальной надёжности (БСН), баллы социальной эффективности (БСЭ) и социальные монеты.

Социальные балы (БСН и БСЭ), по определению автора, это неотчуждаемая характеристика субъекта, выражающая общую пользу, которую субъект приносит обществу. БСН предлагается начислять за достоинства, формирующие фундамент доверия к пользователю РРПДн (отсутствие правонарушений, вовремя выплачиваемые кредиты и прочие, в т.ч. за регистрацию в РРПДн и хранение данных РРПДн на личном устройстве), а БСЭ за деятельность, способствующую развитию общества в целом (выдающиеся успехи в профессиональной деятельности, продвижение инновационных технологий и т.п.). Подобный подход к построению общественных отношений в настоящее время (в период с 2014 по 2020 годы) активно внедряется в Китае в рамках программы «система социального кредитования» [10]. Членство в списке «заслуживающих доверие» даёт повышенный приоритет при оказании различных услуг. Попадание в список «недобросовестных» влечёт за собой различные ограничения.

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

E. Достижение консенсуса

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

Процедура подтверждение вносимых в реестр ПДн состоит из следующих шагов:

1) передача пользователем своих ПДн (в т.ч. копий официальных документов для подтверждения достоверности) в очередь транзакций;

2) подтверждение достоверности ПДн, находящихся в очереди транзакций (вручную на основе копий официальных документов, а также с помощью автоматизированной оценки рисков);

3) формирование нового блока.

Обобщённая схема подтверждение ПДн, вносимых в реестр, представлена на рисунке 2.

(1.1 – шифрование ПДн на устройстве пользователя; 1.2-1.3 – передача ПДн в очередь транзакций РРПДн, расшифровка; 2.1 – ручное подтверждение достоверности ПДн пятью узлами консенсуса; 2.2 – оценка рисков передачи недостоверных ПДн; 3.1-3.4 – генерация нового блока, шифрование; 3.5 – автоматическое подтверждение нового блока пятью узлами консенсуса; 3.6 – передача нового блока в соответствующую цепочку блоков)

Рис. 2. Обобщённая схема подтверждения данных, вносимых в РРПДн

Автоматизированную оценку рисков (шаг 2.2 на рисунке 2) предлагается реализовать с использованием методов машинного обучения. В качестве примера предлагается выделить четыре характеристики, с использованием которых может быть проведён анализ рисков: степень формальной связи узла консенсуса (пользователя, осуществившего ручное подтверждение достоверности ПДн, передаваемых в РРПДн) и объекта подтверждения, которая может быть обусловлена общим учебным заведением или местом работы, родственной связью, участием в общих умных контрактах и т.п.; степень участия в сети взаимных подтверждений ПДн (может свидетельствовать об осуществлении сговора среди пользователей и совершении действий, распределенных среди нескольких человек и от того особо затруднительных в выявлении); размер потенциального вознаграждения субъекта ПДн; степени надёжности узла консенсуса и объекта подтверждения.

Таким образом, в рассматриваемом примере риск обработки недостоверных ПДн будет выражен риском вступления в сговор узла консенсуса и объекта подтверждения. Каждую из представленных характеристик можно описать в виде коэффициентов xn,

n {1; 4}, где n выражает порядковый номер характеристики: x1 – степень связи узла консенсуса и объекта подтверждения; x2 – степень участия в сети взаимных подтверждений ПДн; x3 – размер потенциального вознаграждения субъекта ПДн; x4 – степень надёжности узла консенсуса и объекта подтверждения.

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

Поскольку на сегодняшний день не существует строгой теории по выбору ИНС [11], за основу разрабатываемой ИНС предлагается взять хорошо

ЦБ-К

СКЗИМемпул

(очередь транзакций)СКЗИ

Устройство

оператора ПДнПДн

Подсистема

генерации блоков

Устройства

узлов консенсуса

Новый

блок

1.1 1.2 1.3

2.1

3.4

3.6

Подсистема

оценки рисков

Подсистема

подтверждения

Подсистема достижения консенсуса

Новый

блок

2.23.1

3.2

3.3

3.5

ЦБ-А

ЦБ-П

ЦБ-И

12

изученный многослойный полносвязный персептрон без обратных связей.

Для присвоения числовых значений входным сигналам ИНС предлагается использовать математический аппарат теории нечетких множеств.

В рамках решаемой задачи характеристики xn могут быть рассмотрены как характеристические функции принадлежности µA(u) множеству значений вероятности ввода недостоверных ПДн A, заданные на универсальном множестве U и принимающие значения, равные единице, на тех элементах множества U, которые принадлежат множеству A, и значения, равные нулю, на тех элементах, которые не принадлежат множеству A:

1

0

,( ) .

,A

еслиu Au

еслиu A

При этом для каждой функции принадлежности должны рассматриваться свои множества. В качестве примера может быть рассмотрена возможная зависимость значения характеристической функции принадлежности µА(u) множеству значений вероятности вступления субъектов ПДн в сговор A от степени участия во взаимных подтверждениях: U – множество значений промежуточных подтверждений, U = {u, u R:0 u 1000}; A – множество значений промежуточных подтверждений, сигнализирующих о вероятности участия в сговоре; µA(u) – характеристическая функция принадлежности множеству значений промежуточных подтверждении, сигнализирующих о вероятности участия в сговоре; u – количество промежуточных подтверждений.

Несущее множество риска вступления в сговор можно записать следующим образом:

0.9 / 0 0.8 / 3 0.7 / 5 0.6 /10

0.5 / 25 0.4 / 50 0.3 /100 0.1/1000

A

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

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

0

0 0 3 5

10 25 50 1

1000 3 5

10 25 50 1

00 1000

00 1000

μ / 0.9 / 0.8 / 0.7 /

0.6 / 0.5 / 0.4 / 0.3 / 0.1/

A

u u u u

u u u u u

A u u u u

u u u u

u

u

где запись вида 1000

0

μ /A

u

uu

не предполагает сумму, но

предполагает объединение по всем элементам конечного несущего множества значений u. Точкой перехода (x(u)=0.5) для функции принадлежности является u=25.

Как показал А. Н. Колмогоров [12], любую непрерывную функцию n переменных на единичном

отрезке [0; 1] можно представить в виде суммы конечного числа одномерных функций:

λ φ2 1

1 21 1

( , ,..., ) ( ( )),n n

n i p ip i

f x x x g x

где функции g и p являются одномерными и

непрерывными, i = const для всех i. Из этого следует, что любую непрерывную функцию f:[0;1]

n [0;1]

можно аппроксимировать при помощи трехслойной нейронной сети, имеющей n входных, 2n + 1 скрытых и один выходной нейрон. Данный результат обобщен на многослойную сеть с алгоритмом обратного распространения ошибки [13-15]. Таким образом, при построении ИНС предлагается использовать три слоя: первый слой будет включать в себя два нейрона, второй слой – пять нейронов, последний слой (выходной) – один нейрон.

В качестве метода обучения предлагается использовать алгоритм обратного распространения ошибки [16]. Данный алгоритм позволяет минимизировать среднеквадратичную ошибку ИНС.

Согласно методу градиентного спуска изменение весовых коэффициентов и порогов нейронной сети происходит по следующему правилу:

ω ω αω

1( ) ( ) ,( )

i j i ji j

Et t

t

α1( ) ( ) ,( )

j jj

ET t T t

T t

где 21

2( )j jj

E y t – среднеквадратичная ошибка

ИНС для одного образа.

Показано [17], что

γ γω

' ( ) ,i i kki

EF S

γ ' ( ),i ii

EF S

T

где i – выходное значение i-го нейрона.

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

ω ω αγ1( ) ( ) ' ( ) ,i j i j j j it t F S y

αγ1( ) ( ) ' ( ).j j j jT t T t F S

Выражения (5) и (6), называемые обобщенным дельта-правилом, определяют правило обучения многослойных ИНС в общем виде.

13

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

t g( ) ,j j

j j

S S

j S S

e ey S

e e

где Sj – взвешенная сумма j-го нейрона. Поскольку

производная этой функции имеет вид F’(Sj) = 1 – ,

правило обучения можно представить в виде

ω ω αγ 21 1( ) ( ) ( ) ,i j i j j j it t y y

αγ 21 1( ) ( ) ( ),j j j jT t T t y

где t – номер итерации, α – значение шага обучения, i – значение ошибки для i-го нейрона, Tj – значение порога j-го нейрона.

Ошибка для j-го нейрона выходного и скрытого слоев определяется следующим образом:

γ ,j j jy t

γ γ ω21( ) .j i i i ji

y

Для выполнения алгоритма обратного распространения ошибки необходимо выполнить следующие действия.

1) Задать значения шага обучения α (0 < < 1) и желаемой среднеквадратичной ошибки Em.

2) Придать случайные числовые значения весовым коэффициентам и пороговым значениям ИНС. В соответствии с рекомендацией, представленной в работе [18], весовым коэффициентам ωij предлагается

придавать значения, примерно равные

√ , где n(i) –

число элементов в слое i.

3) Последовательно подать образы из обучающей выборки на входы ИНС. При этом для каждого входного образа необходимо выполнить следующие действия:

а) Произвести фазу прямого распространения образа по ИНС. При этом вычисляется выходная активность всех нейронов ИНС:

( ω )j ij i ji

y F y T

б) Осуществить фазу обратного распространения сигнала, в результате которой определится ошибка

нейронов j для всех слоев ИНС. При этом, соответственно, для выходного и скрытого слоев:

γ ,j j jy t

γ γ ω' ( ) .j i i j ii

F S

В (7) i характеризует нейронные элементы следующего слоя по отношению к слою j.

в) Изменить весовые коэффициенты и пороги нейронных элементов для каждого слоя ИНС в соответствии с (5) и (6):

ω ω αγ1( ) ( ) ' ( ) ,i j i j j j it t F S y

( 1) ( ) αγ '( )j i jT t T t F S

4) Вычислить суммарную среднеквадратичную ошибку E:

2

1

1

2( ) ,

Lk kj j

k j

E y t

где L – размерность обучающей выборки.

5) Если E > Em, происходит переход к шагу 3, в противном случае алгоритм заканчивается. Таким образом, алгоритм функционирует до тех пор, пока суммарная среднеквадратичная ошибка ИНС не станет меньше заданной.

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

ω αγ ξ ω1( ) ' ( ) ( ),i j j j i i jt F S y t

где ξ – моментный параметр, выбираемый из диапазона [0; 1]. В соответствии с рекомендациями, представленными в работе [18], предлагается использовать значение = 0.9.

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

В качестве итоговой конфигурации был выбран трехслойный полносвязный гомогенный персептрон без обратных связей с четырьмя входными сигналами, восемью нейронами и гиперболическими тангенсами в качестве функций активации. В первом слое содержится два нейрона, в скрытом слое – пять и в выходном – один. Итоговая конфигурация подготовленной ИНС представлена на рисунке 4.

Рис. 4. Итоговая конфигурация ИНС

x1

x2

x3

x4

OUT

Слой 1 Слой 2 Слой 3

14

После ввода РРПДн в эксплуатацию должно осуществляться регулярное обучение подсистемы оценки рисков (обучение ИНС без учителя). Аналогичный подход к построению ИНС ранее предлагался в работе [19], посвящённой выявлению аномалий в санкционированном поведении пользователей.

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

F. Выбор хеш-функции

Как показывают современные исследования [20], наиболее стойкими являются криптосистемы, основанные на работе с ЭК. В классе криптосистем с открытым ключом они имеют наиболее высокие показатели защищённости в расчёте на каждый бит ключа, а также быстродействия при аппаратной и программной реализациях [21]. Подробное описание порядка функционирования криптосистем на ЭК представлено в [22].

С учётом проведённых исследований [23], для создания криптосистемы предлагается использовать гладкую ЭК над конечными полями (т.е. набор точек, принадлежащих конечному полю). Конечные векторные поля и группы могут конкурировать с ЭК по эффективности, но в настоящее время задача дискретного логарифмирования в векторных структурах изучена в недостаточной мере.

Для увеличения скорости работы алгоритма предлагается использовать кривые, подготовленные Национальным институтом стандартов и технологий США (NIST) [24]. Кроме того, небольшая длина ключа и высокая скорость работы криптографических алгоритмов, основанных на ЭК, позволяют применять их в устройствах с ограниченными вычислительными ресурсами (мобильные телефоны, планшеты и т.п.).

G. Общий порядок развития распределённого реестра

В основу развития распределённого реестра предлагается заложить следующие принципы:

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

2) процедура формирования цепочек блоков должна состоять из четырёх этапов: формирование ЦБ-И (для формирования базы данных уникальных идентификаторов пользователей); формирование ЦБ-П (для формирования определённого количества узлов консенсуса); формирование ЦБ-А и ЦБ-К; постепенное расширение круга пользователей, которым предоставлено право регистрации в РРПДн;

3) ЦБ-И должна содержать уникальные идентификаторы пользователей, которые будут использоваться в ЦБ-П, ЦБ-А, ЦБ-К;

4) ПДн, передаваемые в ЦБ-И, ЦБ-П и ЦБ-А, должны подтверждаться официальными документами;

5) до достижения определённого количества узлов консенсуса формирование новых блоков должно осуществляться силами разработчика;

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

V. ЗАКЛЮЧЕНИЕ

Предложен метод обеспечения безопасности ПДн при их обработке в распределённом реестре, снованный на использовании технологии блокчейн. Предложенный метод:

1) включает предложения по построению общей архитектуры распределённого реестра, порядку хранения данных, вознаграждению участников работы распределённого реестра, способу достижения консенсуса, выбору хеш-функции и общему порядку развития реестра;

2) отличается от известных: уникальной архитектурой ИСПДн; способом достижения консенсуса, включающим процедуру автоматизированной оценки рисков внесения и обработки недостоверных ПДн, основанную на применении теории искусственных нейронных сетей и теории нечётких множеств; подходом к вознаграждению участников работы распределённого реестра, основанном на системе социального кредитования;

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

Использование предложенного метода, как дополнительной меры

5 защиты ПДн, позволит:

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

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

5 В отношение РРПДн, как ИСПДн, должны применяться меры защиты информации, установленные ФСТЭК России и ФСБ России

15

доверия, гармонизации общественных отношений и повышения безопасности субъекта РФ в целом.

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

[1] Указ Президента РФ от 06.03.1997 № 188 «Об утверждении перечня сведений конфиденциального характера». http://www.kremlin.ru/acts/bank/10638 (дата обращения: 31.01.2019).

[2] Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных». https://rg.ru/2006/07/29/personaljnye-dannye-dok.html (дата обращения: 31.01.2019).

[3] Nakamoto S. Bitcoin: A Peer-to-Peer Electronic Cash System. 2009. https://bitcoin.org/bitcoin.pdf (дата обращения: 31.01.2019)

[4] De Filippi P. «Primavera De Filippi on Ethereum: Freenet or Skynet? The Berkman Center for Internet and Society at Harvard University», видеоролик на YouTube, 15 апреля 2014 г., https://www.youtube.com/watch?v=slhuidzccpI (дата обращения: 31.01.2019)

[5] McMillan R. Hacker Dreams Up Crypto Passport Using the Tech Behind Bitcoin., журнал Wired, 30 октября 2014 г., http://www.wired.com/2014/10/world_passport/ (дата обращения: 31.01.2019)

[6] Козин И. Метод разработки автоматизированной системы управления информационной безопасностью региональной информационной системы // Сборник трудов «Региональная информатика и информационная безопасность. Выпуск 3» Санкт-Петербург. СПОИСУ. – СПб., 2017. С. 283 – 289. ISBN: 978–5–906931–68–9

[7] Козин И. Метод разработки автоматизированной системы управления информационной безопасностью распределённой информационной системы // Информация и космос. 2018. № 3. С. 80 – 88. ISSN: 2072-9804

[8] Беззатеев С.В., Волошина Н.В., Санкин П.С. Методика расчёта надёжности сложных систем, учитывающая угрозы информационной безопасности // Информационно-управляющие системы. Издательство: Санкт-Петербургский государственный университет аэрокосмического приборостроения (Санкт-Петербург). 2014. № 3. С. 78 – 83. ISSN: 1684-8853 eISSN: 2541-8610

[9] Беззатеев С.В., Волошина Н.В. Маскирующее сжатие на основе модели взвешенной структуры изображения // Информационно-управляющие системы. Издательство: Санкт-Петербургский государственный университет аэрокосмического приборостроения (Санкт-Петербург). 2017. № 6. С. 88 – 95. ISSN: 1684-8853 eISSN: 2541-8610

[10] Ринчиков А.Б. Перспективы внедрения системы социального кредита в Китае, опыт Ханчжоу // Сборник трудов ежегодной научной конференции Центра политических исследований и

прогнозов ИДВ РАН, 15-17 марта 2017 г. (Институт Дальнего Востока РАН, г. Москва). 2017. С. 348 – 357.

[11] Улезло Д. С., Кадан А. М. Методы машинного обучения в решении задач информационной безопасности // Intelligent Technologies for Information Processing and Management (ITIPM’2015) Proceedings of the 3rd International Conference. 2015. С. 41 – 44.

[12] Колмогоров А. Н. О представлении непрерывных функций нескольких переменных в виде суперпозиций непрерывных функций одного переменного и сложения // Докл. АН СССР, Т. 114, 1957. С. 953 – 956.

[13] Hornik K., Stinchcombe M., White H. Multilayer Feedforward Networks are Universal Approximators. – Neural Networks, 1989. № 2(5). P. 359 – 366.

[14] Rojas R. Theorie der Neuronalen Netze: Eine Systematische Einfuehrung. Korrigierter Nachdruck. 1996. № 4.

[15] Maxwell T., Giles C. L., Lee Y. C., Chen H. H. Nonlinear Dynamics of Artificial Neural Systems. 1986.

[16] Rumelhart D., Hinton G., Williams R. Learning Representations by Back-Propagating Errors. – Nature, 1986. P. 533 – 536. doi:10.1038/323533a0

[17] Головко В. А. Нейронные сети обучение, организация и применение. – М.: ИПРЖР, 2001. – 256 с.

[18] Hertz J., Krogh A., Palmer R. Introduction to the Theory of Neural Computation. – Addison Wesley, Redwood City, 1991. 327 p.

[19] Козин И. С. Метод обеспечения безопасности персональных данных при их обработке в информационной системе на основе анализа поведения пользователей// Информационно-управляющие системы. 2018. № 3. С. 69–78. doi:10.15217/issn1684-8853.2018.3.69

[20] Пискова А.В. Разработка алгоритма электронной цифровой подписи, основанного на задачах факторизации и дискретного логарифмирования на эллиптических кривых // Сборник трудов IV Всероссийского конгресса молодых ученых – СПб: Университет ИТМО. 2015. С. 322 – 326.

[21] An Elliptic Curve Cryptography (ECC). Primer why ECC is the next generation of public key cryptography. The Certicom ‘Catch the Curve’ White Paper Series, June 2004. 24 p.

[22] Болотов А. А., Гашков С. Б., Фролов А. Б. Элементарное введение в эллиптическую криптографию. Протоколы криптографии на эллиптических кривых. М.: КомКнига, 2006. 274 с.

[23] Hankerson D., Menezes A., Vanstone S. Guide to Elliptic Curve Cryptography. Springer-Verlag, New York, 2004. 358 p.

[24] Тырыгина Г.А., Хайбуллин Р.Р. Выбор эффективного метода подбора эллиптической кривой для реализации на ней криптографической системы // Молодой учёный (ООО «Издательство Молодой учёный», Казань) № 3 (137). 2017. С. 53 – 56.

PROVIDING PERSONAL DATA PROTECTION

BASED ON THE BLOCK CHAIN TECHNOLOGY

Abstract – Developing an approach of creating a decentralization personal data information system, based on the block chain technology, included proposal to determinate system architecture, storage, user’s fee, consensus mechanism, hash-function calculation method, and development procedure. Approach of user’s fee based on the social credit system, employed in China. Consensus

mechanism includes automated risk analysis of unreliable data processing. Mathematics of risk analysis had been offered a neural network theory and fuzzy set theory.

Key words – Information security, personal data, block chain, decentralization, consensus mechanism, social credit

16

Product Customization by Modeling1st Vyacheslav Busarov

Mathematics and Mechanics FacultySaint Petersburg State University

Saint Petersburg, Russian [email protected]

2nd Natalia GrafeevaMathematics and Mechanics Faculty

Saint Petersburg State UniversitySaint Petersburg, Russian Federation

[email protected]

Abstract—Customer is core in any product. This fact issupported by the currently popular Customer-Centric Designconcept. In order to cater to the needs of the widest possiblecustomer range, new products are designed with an extensivevariety of features, options and properties. Customization isespecially critical for businesses, since their toolkit performanceis crucial for their business success. Herein we approach productcustomer business as a complex cost function. This approachallows offering the customer custom-tailored optimized businesstools. Our research included conducting a series of tests relatedto LCV (Light Commercial Vehicle) optimization based on actualbusiness data of one of Russia’s major logistics operators.

Index Terms—Data Mining, Modeling, Customization, Opti-mization, Recommendation systems

I. INTRODUCTION

Product customization process allows offering the customerthe best custom-tailored solutions based on the availableresources. A wide range of various solutions with differentfeatures can be generated on the basis of the same product,which enhances process value for the end user. However,manual review becomes impossible even for small test cases:a product with 10 parameters, where each item is based on3 variables, results in 59 thousand final versions. Moreover,property definition can be carried out based either usingpre-defined options and their combinations, or at the designstage, when the most appropriate product parameter values aredefined for the selected user groups. In this case the numberof options increases incommensurately, since discrete variablesbecome continuous.

B2C solutions (Business-to-Consumer) also include intan-gible factors, such as brand status or user experience. In B2Bsegment (Business-to-Business) these factors are excluded, andpurchase decision is made based on product performance. Thisapproach is market driven: non-performing businesses fail.

The existing recommender platforms use the same approachboth to B2C and B2B segments, although in the first onedecisions are driven by emotions, while in the other one theyare driven by cost effectiveness. Nor do such platforms takeinto consideration customer specifics: recommendations areissued on the basis of customer comparison against a groupof other customers or product comparison against a group ofother products. No custom-tailored solution can be developedin this case.

We suggest tailoring solutions that will be based directlyon customer business. Let us consider product operation as acomplex cost function.

For this purpose we need to identify adjustable productparameters, uncontrollable operation environment parametersand the flow of tasks that need to be solved with the aid ofthe product. Further we need to define the KPI (as a rule,it is cost or profit-based). All of the above will help us tobuild a business process model which can be regarded as a”blackbox” function. Its output will be the pre-defined KPI.Then the most customer-relevant product will be located atthe extremum of this function. A wide range of optimizationalgorithms is available for such non-analytic functions. Sincein reality the time available for finding the solution is strictlylimited, the decision will depend on the best accuracy of theresult available within a limited number of iterations.

This product customization approach can be applied toany business product, yet this case study will focus on LCVfleet and one of Russia’s major logistics operators. LCVoptimization recommendations will be issued on the basis ofits real business data.

II. DATA SET

This case study is describes LCV optimization for EMSRussian Post. The data set includes vehicle parameters, oper-ating environment parameters, delivery service parameters andMoscow-related data for January, February and July, 2018.

A. Operating Environment

Area map is stored on OpenStreetMap.org. According tocorporate business process, the city is split into delivery areas.Each area represents a closed polygon defined by (latitude,longitude) vertex set in listed order. The layout was plottedusing GoogleMaps (Fig. 1). Each of the total of 5 areashas a dedicated hub for hub-to-peer delivery and unclaimedorder storage. Several courier teams are responsible for orderprocessing in each area.

The road network is stored on GraphoHopper.com andrepresents a connected weighted directed graph. All routemodification points (left/right and U turn) and buildings arerepresented as graph vertices, while the connecting roadsrepresent graph edges. Edge weight includes several factors:length, maximum speed limitation, real speed based on actualtraffic situation. The same service is used for route plotting.

17

Fig. 1. Courier delivery areas in Moscow.

Traffic includes data history collected using waze.comservice. This information represents the average speed oneach route leg (road network graph edge) within each 30minute interval in January, February and July 2018. There isvisualization of traffic (Fig.2). Furthermore, in order to preventoverlearning in specific traffics situations, it varies based onthe specified traffic jam probability on the given route leg.

Fig. 2. Visualization of traffic by waze.com.

B. Delivery Service Parameters

Order flow is defined by sender’s address, delivery address,order weight and dimensions and order check-in time. Alladdresses are related to specific vertices on the road map.Order lists also included cancelled and unclaimed orders,which account for about 12%. Couriers are scheduled on shiftbasis. Shift parameters include: start hour, end hour, startingpoint, service area, number of couriers.

For each delivery area hub locations for hub-to-peer deliveryand unclaimed order deposit. Another parameter includes theguaranteed order delivery time which cannot be exceeded.

C. Vehicle Parameters

• body type,• length,• height,• width,• wheel base length,• wheel base width,• type of front suspension,• rear suspension type,• fuel type,• power train,• number of cilinders,• number of turbines,• the presence of rear doors,• the presence of side doors,• drive shaft,• wheel diameter,• wheel width,• horse power,• fuel capacity,• brake type,• brake material,• transmission type,• count of speed.Vehicle parameters (based on the configured parameters):• payload,• cargo volume,• weight,• fuel consumption,• maintenance cost,• insurance cost,• transport tax.

III. RELATED WORK

Currently two alternative customization solutions are avail-able: peer review and recommender platforms. Peer review isconducted manually based on peer knowledge and expertise.However, the range of versions of the same product makesthis approach ineffective. For example, 10 parameters, whereeach item has only 3 variables, generate around 59 thousandcombinations. Yet, at the design stage with continuous productparameters peer review appears to be entirely inapplicable.Recommender-based customization is possible when eachproduct version is regarded as a separate product, and thefinal choice is made using the range. Two strategies forrecommender system development are available: content-basedfiltering and collaborative filtering [1] [2].

Substantially filtering consists in product choice criteriaand user specifics identification. These items define user andproduct profiles allowing streamlining association [3].

Collaborative filtering uses user group behaviour historyby preferences and behaviour patterns. This strategy is based

18

on the assumption that a given user will prefer the productsselected by similar users [4].

In the course of this analysis we reviewed 121 recommendersubject recommendations where 43 used content-based filter-ing, 65 - collaborative filtering and 13 used a combination ofboth approaches.

The first strategy is inapplicable for b2b product customiza-tion, since operating cost constitutes the sole criterion in thiscase. It can be computed only through real product operationor through simulation. However, it cannot be performed foreach option due to computational complexity.

The second approach is based on user group purchasehistory, yet the customers frequently do not have such infor-mation, or its scope is very limited (1-2 purchases). Besides,the versatility of business process is so high that most casesare unique, which makes the application of this approachimpossible. However, simulation-based customization does notencounter such problems.

IV. CHOICE OF THE OPTIMIZATION ALGORITHM

Most of current system operate by blackbox principle. Thissimplifies the operation, yet complicates the understandingof such operation. The more complex such systems are, themore relevant their optimization becomes [5]. In simulationof all or some of the processes of an existing business, modelcomplexity becomes a key factor.

Formally, we use a f : X ⊆ Rn → R function for whichf(x),∀x ∈ X values can be computed in unavailability of anyother data related to f function.

In most blackbox cases, most time costs are related to thenext function value calculation. Since we solve a real practicalproblem, the time slot for extremum calculation is limited. Allalgorithms have limited accuracy, which is critical for the endresult. Therefore, algorithm choice has to be based on outputaccuracy given the limited number of iterations. The numberof iterations is limited by the total limited optimum searchtime and computational complexity of the next function valueusing the available resources. Hereinafter the achievement ofmaximum accuracy within the specified iteration limit willbe referred to as performance. It will be used as our maincriterion.

For optimization algorithm accuracy computation we willoperate the term ”trial”, which means the set of parameters xused for a single f(x) computation. A trial can be completed,which means the availability of f(x) output. Otherwise, it willbe referred to as pending [6].

We shall introduce several φ(x) benchmark functions withknown uncertain optimum points. Then the optimization algo-rithm accuracy will be evaluated based on the optimality gap.If x∗ is the minimum of φ(x) function and x – is the bestoptimized solution, then |φ(x∗)−φ(x)| is the optimality gap.In the event an irregular component existence in the algorithm,the average optimality gap will be computed through multipleexecution for the same benchmark function [6].

Comparison between different benchmark functions is com-plicated due to inequality of their value sets. For example,

a qualitative optimization tool on Rastrigrin function mayachieve a 160 optimality gap, whereas a random samplingof Beale function can as easily result in a 60 optimality gap[7]. For accuracy evaluation rescaling we will study the ratiobetween the optimality gap of an individual extremum searchalgorithm and the random search value of the same algorithmfor the same benchmark function.

For output accuracy based comparison of extremum searchalgorithms benchmark functions from the blackbox optimiza-tion benchmarking workshop will be used [7].

Blackbox extremum search algorithms use the minimumnumber of assumptions related to the problem, and a widerange of such algorithms and their variations is available.Google Search analysts have identified the best performingoptimization tools [6], which include: multiarmed bandit tech-nique using a Gaussian process regressor (GPBandit) [8],SMAC algorithm, covariance matrix adaptation evolution strat-egy (CMA-ES) [9], and probabilistic search method [6].

This research [6] included varying dimensionality tests. Forthe given d dimension benchmark functions with the relatednumber of d measurements were generated. Each optimiza-tion algorithm was executed 100 times for each benchmarkfunction, followed by recording the average for all runs.

Test output is demonstrated in Fig. 3: X axis representsthe number of iterations, Y axis - the accuracy measured asthe ratio between the optimality gap of the specific algorithmand the same value in the random search algorithm [6].2xRandom Search refers to random search algorithm wherein each iteration the benchmark function value for two trialsis computed in contrast to a single trial in the other algorithms.

Fig. 3. Blackbox function optimization algorithm tests [6].

19

The output of comparative tests allows selecting the optimalalgorithm for varying dimensionality and time limitations ex-pressed through the number of iterations. In our real data teststhe focus business process is simulated through a function withthe variable vehicle parameters referred to above. Therefore,a function with 23 variables and 103 iteration limit will beoptimized. Consequently, the CMA-ES algorithm appears tobe the most appropriate.

V. CME-ES DESCRIPTION

Evolution Strategy (ES) [9] is a stochastic search algorithmfor minimizing a blackbox function operating from S ⊆ Rn

to R . At each search step an array of the potential extremumpoints of the optimized function, the so-called child-points,exists. With the aid of the specified selection (fitness) functionthe best ones are selected for further operation in the algo-rithm. This is followed by stochastic variation, aka mutationor recombination, the process of new child point generation onthe basis of the existing ones. At the next step of the algorithmthe operations are repeated [10].

Mutation is achieved through addition of the normallydistributed random variable vector. This distribution is referredto as mutational and its parameters as strategic since theydefine the algorithm performance [11]. With a certain proba-bility, strategic parameters may be generated with the aid ofthe optimal point selected at each algorithm step. Naturally,maximization of this probability becomes a target. At eachalgorithm step the following mutation takes place [9]:

σ(g+1)k = σ(g)exp(ξk) (1)

x(g+1)k = x(g) + σ

(g+1)k zk (2)

where g – the step number of the algorithm; x(g) ∈ Rn –point generation (potential extremum points); σ(g) ∈ R+ –parametric vector (mutation step size); k = 1..λ – descendantnumbers; λ – population size; ξk – vector of random variables,most often having a normal distribution, and in the algorithmCMA-ES P (ξk = 0.3) = P (ξk = −0.3) = 1

2 [12] [13];zk ∼ N(0, I) ∈ Rn – vector of random variables with (0, I)– normal distribution, where I – unit matrix.

Mutational distribution varies depending on the specific taskand in the process of algorithm execution. The mutationswhich produced the optimal points at a certain step can alsoproduce optimal steps in the short term. This assumptionunderlies the derandomization idea allowing reproduction ofsome of the preceding successful mutations. In CMA-ESderandomization consists of two levels, which results in thefollowing mutation format. The first level modifies equations(1) and (2):

σ(g+1)k = σ(g)exp(

ξk

d) (3)

x(g+1)k = x(g) + σ(g)exp(ξk)zk (4)

where d ≥ 1 – damping parameter.This allows:

• simplifying individual adaptation for each task, since ithelps adjusting the difference between σ

(g)k and σ

(g+1)k ;

• reducing stochastic fluctuation of key parameters.The second level modifies equations (3) and (4) as follows:

σ(g+1)k = σ(g)exp(

||zk|| − E[||N(0, I)||]d

) (5)

x(g+1)k = x(g) + σ(g)zk (6)

This allows:• apparent modification rate adjustment;• increasing the probability of the production of the optimal

points at the next step.

VI. CUSTOMIZATION BY MODELING

Our focus is on B2B products, since it is in this marketsegment that decisions are based on pragmatic conclusionsrather than on emotions as in the B2C segment [14] [15].Our task consists in offering a real business solution at thelowest total cost of ownership (TCO). In transport businessTCO is calculated as the ruble equivalent of the delivery of1kg of goods per 1 km. In this case small parcels below0.5 kg are considered equally. This indicator is the resultof operation, and, therefore, it can be calculated throughsimulating customer business processes. The business modelcan be viewed as a blackbox, i.e. a function without analyticalrepresentation. The parameters of this function describe cus-tomer business and operating environment, while the variablesare the adjustable parameters of the product in operation. Thusthe task is limited to extremum search for a complex function.

It is implied that the same model exists for all businessesoperating in the same environment, which can be adjusted tosimulate any business operations. For intra-city LCV deliverythis will mean simulating peer-to-peer and hub-to-peer deliv-ery. The input data will include:

• environment data - road network, traffic;• delivery service parameters - order flow, couriers, sched-

ule, hubs, guaranteed delivery time;• vehicle parameters.

VII. EXPERIMENTS

The model was developed on AnyLogic platform and repre-sents a multi-agent imitation of intra-city delivery in Moscow,each agent being a courier. Order flow and delivery serviceparameters are the real data of the business in consideration.Courier order distribution history was used in the simulationprocess, yet if such data are unavailable, the model canperform this task autonomously. Courier work visualizationfeature (Fig. 4) was also implemented.

Delivery cost function was calculated through simulationon the basis of data for 3 calendar weeks: 15–21 January2018, 19–25 February 2018 and 16–22 July 2018. Accordingto the available data, the average annual mileage per vehicle isaround 150 thousand km. Maintenance, insurance and vehicletax costs were uniformly allocated on the average mileage.

20

Fig. 4. Delivery business model visualization. Colour circles indicate orders,diamonds - couriers, dot lines - routes of one of the couriers.

Based on the simulation output the average cost of 1 kg per1 km was calculated.

Cost function optimization was performed with the aid ofCovariance Matrix Adaptation Evolution Strategy (CMA-ES)[9]. Vehicle parameters are the variables of the optimizedfunction. Its parameters are available in Advisor open sourceproject . The tests were run on MacBookPro with hexacoreIntelCore i9 4.8GHz, RAM – 32GB. One iteration of thesimulation took an average of 87.2 seconds; during the op-eration of the simulation model at the peak 29.6 GB RAMwas involved. Detailed results of the study were transferredto company representatives. TABLE I lists the top 15 budgetvehicle models which demonstrated the following operationcost in the best configurations:

TABLE IDELIVERY COST MEASUREMENT

Vehicle make and model Delivery cost ( RUBkg×km

)Renault Dokker 9.85

Ford Transit 10.16Volkswagen Caddy 10.72

Mercedes Sprinter Classic 11.28VolkswagenT ransporter 11.48

Renault Master 12.32Gazel NEXT 12.66

Volkswagen Crafter 13.84Renault Kangoo 14.39Peugeot Expert 14.71Peugeot Partner 15.13

Lada Largus 15.92Peugeot Boxer 15.96

Fiat Ducato 15.98Citroen Jumpy 15.99

Delivery cost for the recommended Renault Dokker andFord Transit vehicles amounted to 9.85 RUB

kg×km and 10.16RUB

kg×km respectively. The existing Lada Largus delivery costis 15.92 RUB

kg×km . Therefore, the choice of customized vehicleswould result in 38% cost saving on intra-city operations.

VIII. CONCLUSION

This project describes the approach to solving the urgentneeds of customization. Our approach has the following ben-efits compared to recommender systems:

• Tailored result. Recommender platforms offer solutionswhich fit users with similar requirements. Our solutionoffers the optimal solution for the specific client andbusiness.

• Quick start. Adapted to a wide range of various activitieswith multiple different variables, including undocumentedvariables. The existing recommender platforms need aknowledge base for operation. Our solution only needscustomer business parameters.

• Ability to operate with continuous parameters. Mostrecommender platforms operate discrete data arrays.

An important step consists in applying this approach to thereal business data of one of Russia’s major delivery operators,EMS Russian Post, for which we configured and prioritized theoptimal LCV models. This became possible to the introductionof the criterion of the most cost efficient vehicle configurationsfor delivery operators based on their business process data.

REFERENCES

[1] G. Koutrika, “Recent advances in recommender systems: matrices,bandits, and blenders,” Openproceedings.org, 2018

[2] G. Koutrika, “Modern recommender systems: from computing matricesto thinking with neurons,” SIGMOD 18, pp. 1651–1654, 2018

[3] M.J. Pazzani, and D. Billsus, “Content-based recommendation systems,”Springer, The adaptive web, pp. 291–324, 2007

[4] J.B. Schafer, D. Frankowski, J. Herlocker, and S. Sen, “Collaborativefiltering recommender systems,” Springer, The adaptive web, pp. 291–324, 2007

[5] A. Duarte, M. Laguna, and R. Mart, “Black-box solvers,” Springer,Metaheuristics for business analytics, pp. 105–136, 2018

[6] D. Golovin, B. Solnik, S. Moitra, G. Kochanski, J. Karro, and D. Sculley,“Google vizier: a service for black-box optimization,” KDD 17, Halifax,NS, Canada, pp. 1487–1495, August 2017

[7] S. Finck, N. Hansen, R. Rost, and A. Auger, “Real-parameter black-box optimization benchmarking 2009: presentation of the noiselessfunctions,” Rocquencourt, France, February 2009

[8] N. Srinivas, A. Krause, S. Kakade, and M. Seeger, “Gaussian processoptimization in the bandit setting: no regret and experimental design,”ICML 10, Haifa, Israel, pp. 1015–1022, June 2010

[9] N. Hansen, and A. Ostermeier, “Completely derandomized self-adaptation in evolution strategies,” Evolutionary computation 9, vol. 2,pp. 159–195, 2001

[10] D. Gong, J. Sun, Z. Miao, “A set-based genetic algorithm for intervalmany-objective optimization problems,” IEEE Transactions on evolu-tionary computation, vol. 22, pp. 47–60 , February 2018

[11] I. Rechenberg, “Evolutionsstrategie, optimierung technischer systemenach prinzipien der biologischen evolution,” Frommann-holzboog,Stuttgart, Germany, pp. 157–160, 1973

[12] T. Back, and H.-P. Schwefel, “ An overview of evolutionary algorithmsfor parameter optimization,” Evolutionary computation, vol. 1, pp. 1–23, 1993

[13] I. Rechenberg, “Optimierung von strukturen,” Evolutionsstrategie ’94,vol. 1, Stuttgart, Germany, pp. 167–182, 1994

[14] E.A. Kemp, A.L. Borders, N.A. Anaza, and W.J. Johnston, “Theheart in organizational buying: marketers understanding of emotionsand decision-making of buyers,” Journal of business and industrialmarketing, vol. 33, pp. 18–29, 2018

[15] R.P. Bagozzi, M. G. Prashanth, and U. Nyer, “The role of emotions inmarketing,” Springer, Journal of the academy of marketing science, pp.27–184, March 1999

21

Анализ перемещений в IntelliJ Rust

Артем МухинСанкт-Петербургский

государственный университет[email protected]

Abstract—Компилятор языка Rust гарантирует без-опасность работы с памятью при помощи статическогоанализатора borrow checker. Этот анализатор проверяетсоответствие программы правилам владения и заимство-вания.

IntelliJ Rust — это плагин для поддержки языка Rust вIDE, основанных на платформе IntelliJ. В работе описыва-ется разработка анализатора перемещений (подмножестваborrow checker) и его интеграция в IntelliJ Rust.

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

I. Введение

Rust — современный язык системного программи-рования. Он появился в 2010 году и разрабатываетсяисследователями Mozilla Research.

Небольшой размер среды исполнения (runtime) иручное управление памятью (без сборщика мусора)ставят Rust в один ряд с языками C и С++. При этом,в отличие от старых языков системного программиро-вания, Rust имеет ряд важных преимуществ.

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

Однако, в отличие от компиляторов большинствафункциональных языков, таких как OCaml и Haskell,которые полагаются на сборщик мусора и не поз-воляют работать с памятью вручную, компиляторRust вынужден гарантировать правильность работы спамятью статически. За это в компиляторе отвечаетанализатор заимствований (borrow checker). Анализзаимствований основан на анализе потока данных ипроверяет соответствие программы некоторым прави-лам перемещений (move) и заимствований (loan).

IntelliJ Rust — это плагин для поддержки языкаRust в интегрированных средах разработки (IDE), ос-нованных на платформе IntelliJ: IntelliJ IDEA, CLion,PyCharm и др. Этот плагин разрабатывается в ком-

пании JetBrains и имеет открытый исходный код,доступный на GitHub1.

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

II. Статический анализ программ

Статический анализ — это процесс автоматическо-го исследования исходного кода программы с цельюпроверить некоторые её свойства (например, коррект-ность или отказоустойчивость).

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

Существует множество видов программного обеспе-чения, использующих статический анализ программ:• Автономные статические анализаторы [2]• Компиляторы (для проверки типов, проверки

инициализации переменных до их использования,удаления недостижимого кода) [3]

• Интегрированные среды разработки (для опре-деления мертвого и недостижимого кода, поискаиспользований неинициализированных перемен-ных) [4]

III. Существующие решения

Помимо IntelliJ Rust существует множество редак-торов кода, поддерживающих Rust с помощью пла-гинов: Visual Studio Code, Vim, Emacs и др. Наибо-лее популярные плагины для них используют Rust

1https://github.com/intellij-rust/intellij-rust

22

Language Server (RLS) [5] — реализацию LanguageServer Protocol [6] для языка Rust. RLS позволяетредакторам получать информацию о коде, необходи-мую для работы различных действий и инспекций вредакторе: перехода к определению, поиска использо-ваний символа, показа типа выражения, форматиро-вания кода и т. д. Эту информацию RLS получает откомпилятора Rust (rustc).

Подход использования компилятора как бэкендадля IDE отлично работает в некоторых случаях. На-пример, CLion использует для анализа кода clangd —реализацию Language Server Protocol на основе Clang.Visual Studio использует компилятор Roslyn [7]. Од-нако в отличие от clangd и Roslyn, компилятор rustcне проектировался таким образом, чтобы помогатьIDE. Во-первых, компилятор Rust не умеет работатьв режиме сервера: при каждом изменении исходногокода приходится перезапускать компиляцию проектав новом процессе. Во-вторых, rustc не предоставляетнеобходимый для среды разработки API: например,нельзя получить варианты автодополнения кода. Втретьих, rustc не умеет анализировать синтаксическинекорректный код: если пользователь забыл дописатьгде-то один символ или не успел дописать всё выра-жение, то RLS не сможет предоставить результаты се-мантического анализа кода, а покажет только ошибкупарсинга.

Таким образом, RLS не позволяет анализироватькод «на лету» (прямо во время ввода символов),а также лишен одной из важнейших возможностейсовременных IDE — автодополнения кода на основетипов и областей видимости; вместо этого автодопол-нение RLS основано на регулярных выражениях.

Целью проекта IntelliJ Rust является создание пол-ноценной IDE для Rust, поэтому наш плагин не ис-пользует RLS и rustc. Вместо этого вся необходи-мая функциональность реализуется внутри плагина:парсер (который умеет работать с неполным кодом),разрешение имен, вывод типов и т. д. Анализ кодаинкрементален (его результаты кэшируются), и поль-зователи видят ошибки сразу же в момент написаниякода; им не приходится запускать анализ отдельно иждать его результатов. Поэтому чтобы сообщать обошибках перемещений и заимствований, необходимореализовать эту часть компилятора внутри плагина.

В декабре 2017 года благодаря усилиям АлексеяКладова, в прошлом одного из основных разработчи-ков IntelliJ Rust, возник проект Rust Analyzer[8], кото-рый также называют RLS 2.0. В отличие от RLS, RustAnalyzer не просто запускает rustc и использует еговывод, а самостоятельно реализует основные этапыкомпиляции, необходимые IDE. Данный проект оченьинтересен и важен для языка Rust, поскольку на егооснове можно будет реализовать более совершенныеплагины для поддержки Rust в любых текстовыхредакторах и IDE. Однако на момент написания ра-боты Rust Analyzer ещё не готов для полноценного

использования в качестве бэкенда IDE.

IV. Модель владения в языке RustМы не будем подробно рассматривать синтаксис и

семантику языка Rust [9], [10], поскольку анализ пе-ремещений связан прежде всего с системой типов [11].Ключевой особенностью системы типов Rust являет-ся модель владения (также называемая семантикойперемещений), которую можно неформально описатьтремя правилами:

1) Каждый ресурс имеет владельца (некоторую пе-ременную)

2) В каждый момент времени владелец у ресурсатолько один

3) Когда переменная-владелец выходит из областивидимости [12], ресурс освобождается

Для демонстрации этих правил рассмотрим примерпрограммы на Rust:

1 struct S;2 fn foo(a: S) {}3

4 let x = S;5 let y = x;6 let z = x; // Error: use of moved value7 foo(x); // Error: use of moved value

Сначала в результате присваивания переменная xстановится владельцем ресурса (созданного на стекеэкземпляра структуры S). Далее происходит передачавладения: теперь владельцем этого ресурса являетсяпеременная y. Теперь переменная x уже не владеетресурсом, поэтому передача владения от x к z приво-дит к ошибке компиляции. Такую же ошибку вызоветпередача владения в функцию foo (т. е. к параметруa).

Переменная считается перемещенной сразу послееё объявления; при этом сразу после инициализациипеременная перестает быть перемещенной:

1 struct S;2 let x: S; // x is moved3 x = S; // x is not moved

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

Идея модели владения исходит из понятия аф-финной системы типов. Линейная система типов [13]гарантирует, что каждый ресурс будет использованровно один раз. Аффинная система типов — ослаб-ление линейной, позволяющее также не использоватьресурс ни разу.

В последние годы активно развиваются проектыпо формализации системы типов языка Rust, в томчисле с доказательствами корректности модели вла-дения [14], [15].

23

V. Категоризация памятиВыражения в программе на Rust всегда связаны

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

Категории можно определить индуктивно; состав-ные категории являются композицией базовых. На-пример, выражение (*x).a имеет составную категорию«Обращение к полю разыменованного указателя».

Базовые категории:• Временное значение (rvalue);• Адрес локальной переменной;• Разыменованный указатель;• Обращение к содержимому (поле, элемент).

Категорий изменяемости всего три:• Неизменяемое;• Изменяемое по определению;• Изменяемое как содержимое изменяемого.Процесс категоризации реализован в виде рекур-

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

VI. Построение графа потока управленияГраф потока управления [16] — это ориентирован-

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

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

2https://doc.rust-lang.org/book/mutability.html3https://www.graphviz.org/

Рис. 1. Пример графа потока управления

VII. Анализ потока данных

Анализ перемещений в Rust основывается на ана-лизе потока данных [17], [3]. Этот вид анализа учи-тывает не только порядок исполнения программы,но и информацию о том, какие значения вычислены(или определены) в данной точке исполнения. Этуинформацию можно представить в виде решетки.

A. Решетки

Решетка[18] — это алгебраическая структура с дву-мя идемпотентными, коммутативными и ассоциатив-ными операциями ∨ и ∧, удовлетворяющими свойствупоглощения:

a ∨ (a ∧ b) = a

a ∧ (a ∨ b) = a

Рис. 2. Булеан множества {0, 1, 2, 3} как решетка

На решетке можно установить отношение частич-ного порядка: a v b, если a ∧ b = a. У решетки естьединственный наименьший элемент⊥ и единственныйнаибольший элемент >. Высота решетки — это мак-симальная длина пути от ⊥ до > (в случае решеткиподмножеств S это |S|).

24

В дальнейшем мы будем работать с решеткой под-множеств L некоторого конечного множества S (при-мер такой решетки изображен на рисунке 2). Заметим,что её высота конечна и равна |S|.

Функция f : L→ L называется монотонной, если

∀a, b ∈ S : a v b⇒ f(a) v f(b)

Теорема о неподвижной точке: В решетке конечнойвысоты L каждая монотонная функция f имеет един-ственную наименьшую неподвижную точку:

fix(f) =⋃

i≥0f i(⊥), f(fix(f)) = fix(f)

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

В ходе работы был реализован модуль прямогоанализа потока данных [17]. В качестве реализациимножества используются битовые массивы: каждойпеременной назначается индекс, по которому в мас-сиве находится либо 1 (переменная принадлежит это-му множеству), либо 0 (переменная не принадлежитэтому множеству).

Анализ потока данных оперирует с двумя массива-ми: GEN и KILL. Элементы массива — слова, их раз-мер равен высоте решетки, округленной вверх до чис-ла, кратного 8 (чтобы оперировать с байтами). GEN[i]— i-тое слово массива, соответствует i-ой вершинеграфа потока управления; GEN[i][k] — k-ый бит i-тогослова, соответствует k-тому элементу решетки. Такимобразом, GEN хранит отдельное множество элементоврешетки для каждой вершины графа. Аналогичноеверно для массива KILL.

В массив GEN записывается информация, кото-рая возкникла в некоторый момент исполнения, ав массив KILL — информация, которая исчезла внекоторый момент исполнения.

Массивы GEN и KILL заполняются перед нача-лом анализа потока данных. Сам процесс анализапредставляет собой распространение данных во времяобхода графа потока управления в порядке reversepost-order. Распространение — это процесс построе-ния множеств (массивов) IN и OUT по следующимформулам:

IN(e) =⋃

p∈preds(e)OUT(p)

OUT(e) = GEN(e) ∪ (IN(e) \KILL(e)) = fe(IN(e))

где:e текущая вершина графа потока управления,

т. е. некоторое выражение в исходной про-грамме

IN(e) множество элементов решетки в точке испол-нения сразу перед e

OUT(e) множество элементов решетки в точке ис-полнения сразу после e

Заметим, что GEN и KILL фиксированы, и вычис-ление OUT(e) монотонно по IN(e). Следовательно,процесс распространения конечен и приводит к един-ственному наименьшему решению.

VIII. Анализ перемещений

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

Часто при анализе потока данных биты соответ-ствуют переменным. Однако в нашем случае битысоответствуют каждому перемещению, а не каждомуперемещаемому пути. Этот факт отрицательно вли-яет на производительность анализа, т. к. в каждойточке исполнения анализатору приходится искать ипроверять перемещения, связанные с текущей пере-менной. С другой стороны, такой способ представле-ния удобнее для нас, поскольку при возникновенииошибки IDE может показать конкретное место, гдебыло произведено перемещение. По этой же причинев рамках анализа было бы неудобно работать с болееэффективными представлениями кода (например, сформой SSA [3]).

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

A. Сбор перемещений

• Проверяет наличие перемещенияЗначения в Rust перемещаются по умол-чанию кроме некоторых особенных типов(ссылки, указатели, функции) и типов, реа-лизующих класс типов Copy.

25

• Проверяет возможность перемещенияНекоторые категории памяти перемещать за-прещено: элементы массива, статические пе-ременные, разыменованные указатели. Привозникновении таких попыток перемещенияанализатор сообщает пользователю об ошиб-ке (см. рисунок 4)

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

Непосредственно после сбора перемещений проис-ходит построение множеств GEN и KILL. Рассмотримпроцесс их построения на примере простой програм-мы. Напротив каждого оператора показаны соответ-ствующие им значения множеств GEN и KILL (т. е.множества k, таких что GEN[i][k] = 1 или KILL[i][k] =1, где i — номер вершины-оператора).

GEN[i][0] — биты перемещения y = xGEN[i][1] — биты перемещения x;

1 fn foo() {2 let x = S; // GEN = {}, KILL = {0, 1}3 let y = x; // GEN = {0}, KILL = {}4 x; // GEN = {1}, KILL = {}5 // GEN = {}, KILL = {0, 1}6 }

В данной программе создается переменная x. Её ини-циализация уничтожает оба перемещения. Далее зна-чение x перемещается в y, поэтому возникает первоеперемещение. Затем возникает второе перемещениеx. В конце обе переменные выходят из области ви-димости и происходит уничтожение соответствующихперемещений.

После этого происходит обход графа и распростра-нение данных. На выходе получаем множества IN иOUT. Ниже показаны значения множества IN дляоператоров исходной программы:

1 fn foo() {2 let x = S; // IN = {}3 let y = x; // IN = {}4 x; // IN = {0}5 // IN = {0, 1}6 }

Таким образом, к моменту исполнения последнегооператора в блоке уже произошло первое перемеще-ние, а к концу всего блока — оба перемещения.

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

ли соответствующая память до этого. Для этого ис-пользуются уже построенные множества IN и OUT.

B. Проверка перемещений

• Проверяет, что память инициализированаКаждое использование какого-либо значениядолжно относиться только к инициализиро-ванной памяти. Поэтому всякое использова-ние неинициализированного ресурса (в т. ч.после его перемещения или объявления безинициализации) порождает ошибку компиля-ции (см. рисунок 5).

• Проверяет, что присваивание корректноПрисваивания с чтением (например, +=)должны иметь слева пути, значения кото-рых инициализированы. Поле, в которое про-исходит присваивание (например, x.a = 1),должно принадлежать инициализированнойструктуре.

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

Рис. 3. Пример работы инспекции «Use of moved value»

Рис. 4. Пример работы инспекции «Cannot move»

IX. Тестирование

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

26

Рис. 5. Пример работы инспекции «Use of possibly uninitializedvariable»

Кроме того, для проверки анализ запускался нареальных проектах на Rust (в том числе Cargo4 иTokio5). Было обнаружено и исправлено нескольколожно-положительных срабатываний.

X. ЗаключениеВ ходе данной работы в плагине IntelliJ Rust был

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

Основное направление дальнейшей работы — этореализация полноценного анализатора заимствова-ний. Анализатор перемещений несложно расширитьдо анализатора заимствований. Основная проблемазаключается в том, что в декабре 2018 года вышлоглобальное обновление языка Rust [19], включающеев себя новый анализатор заимствований, который под-держивает нелексические времена жизни [20]. Благо-даря этому анализ заимствований стал менее строгими более практичным: теперь некоторые «ошибки за-имствований», которые находит старый анализатор,становятся ложно-положительными срабатываниями.Полностью реализовать новый анализатор — отдель-ная и сложная задача. Возможно, мы найдем способиспользовать старый анализатор заимствований и из-бежать ложных срабатываний.

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

4https://github.com/rust-lang/cargo5https://github.com/tokio-rs/tokio

ния и анализ потока данных. Эта функциональностьпозволяет в будущем написать другие виды анализа,например, подсветку неиспользованных переменных(как часть liveness analysis [17]).

References[1] A. Asperti, “The intensional content of Rice’s theorem,”

SIGPLAN Not., vol. 43, pp. 113–119, Jan. 2008.[2] S. C. Johnson, “Lint, a c program checker,” in COMP. SCI.

TECH. REP, pp. 78–1273, 1978.[3] L. Torczon and K. Cooper, Engineering A Compiler. San

Francisco, CA, USA: Morgan Kaufmann Publishers Inc.,2nd ed., 2011.

[4] D. Jemerov, “Implementing refactorings in intellij idea,” inProceedings of the 2Nd Workshop on Refactoring Tools, WRT’08, (New York, NY, USA), pp. 13:1–13:2, ACM, 2008.

[5] “Language server protocol.” https://github.com/rust-lang/rls/. Accessed: 12.01.2019.

[6] “Language server protocol.” https://microsoft.github.io/language-server-protocol/. Accessed: 12.01.2019.

[7] “Roslyn overview.” https://github.com/dotnet/roslyn/wiki/Roslyn-Overview. Accessed: 12.01.2019.

[8] “Rust analyzer.” https://github.com/rust-analyzer/rust-analyzer. Accessed: 12.01.2019.

[9] “Rust book.” https://doc.rust-lang.org/book. Accessed:12.01.2019.

[10] “Rust reference.” https://doc.rust-lang.org/reference.Accessed: 12.01.2019.

[11] B. C. Pierce, Types and Programming Languages. The MITPress, 1st ed., 2002.

[12] M. L. Scott, Programming Language Pragmatics. SanFrancisco, CA, USA: Morgan Kaufmann Publishers Inc., 2005.

[13] P. Wadler, “Linear types can change the world!,” 10 1993.[14] E. W. Reed, “Patina : A formalization of the rust programming

language,” 2015.[15] R. Jung, J. Jourdan, R. Krebbers, and D. Dreyer, “Rustbelt:

securing the foundations of the Rust programming language,”PACMPL, vol. 2, no. POPL, pp. 66:1–66:34, 2018.

[16] F. E. Allen, “Control flow analysis,” in Proceedings of aSymposium on Compiler Optimization, (New York, NY,USA), pp. 1–19, ACM, 1970.

[17] A. S. Uday Khedker and B. Sathe, Data Flow Analysis: Theoryand Practice. CRC Press, 2009.

[18] V. K. Garg, Introduction to Lattice Theory with ComputerScience Applications. John Wiley and Sons, Inc, Jun 2015.

[19] “Rust 2018.” https://blog.rust-lang.org/2018/12/06/Rust-1.31-and-rust-2018.html. Accessed: 12.01.2019.

[20] “Non-lexical lifetimes: introduction.” http://smallcultfollowing.com/babysteps/blog/2016/04/27/non-lexical-lifetimes-introduction/. Accessed: 12.01.2019.

27

Move analysis in IntelliJ RustArtem Mukhin

Rust compiler guarantees the memory safety using astatic analyzer called «borrow checker». The analyzerchecks the compliance of programs with ownership andborrowing rules.

IntelliJ Rust is a plugin to support Rust language inIntelliJ-based IDE. The paper describes the developmentof a move analyzer (a subset of borrow checker) and itsintegration into IntelliJ Rust.

28

Об использовании кодовых конструкций вмодульной метрике для исправления ошибок в

канале с АБГШ с двоичным входом иквантованным выходом

Н.В. ЗеулинСПб ГУАП

Санкт-Петербург, Россия[email protected]

Аннотация—В данной работе рассматривается примене-ние вычетных кодов в модульной метрике для исправленияошибок в канале с аддитивным белым гауссовским шумом(АБГШ) с двоичным входом и квантованным выходом.Показано, что использование оптимального размера зоныстирания позволяет уменьшить вероятность ошибки деко-дирования.

Index Terms—теория кодирования, модульная метрика,вычетный код, код БЧХ

I. Введение

В данной работе рассматривается применение вы-четных кодов в модульной метрике для исправленияошибок в канале с АБГШ. Исследование в области ко-дов в модульной метрике не является обширным, и какправило сводится к доказательству существования со-вершенных кодов [1]. Такой низкий интерес может бытьобъяснен тем, что модульная метрика не согласованани с одним каналом, в отличие от метрики Хэмминга,согласованной со всеми симметричными каналами безпамяти [2]. Причиной того, что наиболее известныекоды построены в метрике Хэмминга, является не толь-ко ее простота описания, но и то, что она описываетнаихудший случай, когда на выходе нет информации оканале [3].

Одним из способов построения линейных кодов вмодульной метрике и метрике Ли является использова-ние целочисленных решеток и весовых матриц [1], [4].В данной работе качестве кода в модульной метрике,был выбран нелинейный вычетный код над алфавитоммощности q = 2, предложенный в [5]. Данный кодобладает алгебраической процедурой декодирования сполиномиальной сложностью. Процедура перехода отq-ичного вычетного кода к (2zq−1)-ичному вычетномукоду при использовании квантования на 2z уровней наприемной стороне была предложена в [6]. Процедуракодирования вычетного кода предполагает построениятаблицы, в которой передаваемому сообщению соот-ветствует кодовое слово. Составление таблицы требу-ет полного перебора всех векторов заданной длины,

поэтому построение вычетного кода большой длиныявляется трудоемкой задачей, и в данной работе былвыбран код длины 15. Системы Интернета вещей дляпередачи сообщений используют коды короткой длины(40-600 бит), в том числе коды БЧХ [7], поэтому срав-нение вычетного кода и кода БЧХ может представлятьинтерес.

II. Вычетные коды

Пусть u = {u1, u2, ..., un | ui ∈ Z} , v ={v1, v2, ..., vn | vi ∈ Z}. Определим расстояниемежду векторами u и v в модульной метрике какdM (u, v) =

∑ni=1 |ui − vi| и вес в модульной метрике

как wM (u) =∑n

i=1 |ui|. Если dM (u, v) = t, тогдабудем говорить, что вектор u был получен из вектораv путем наложения t ошибок. Введем отношениепорядка u� v ≡

{ui > vi|i = 1, n

}. Если dM (u, v) = t и

u� v, тогда будем говорить, что вектор u был получениз вектора v путем наложения t однонаправленныхувеличивающих ошибок. Если dM (u, v) = t и v � u,тогда будем говорить, что вектор u был получениз вектора v путем наложения t однонаправленныхуменьшающих ошибок.

Пусть F2[x] - кольцо полиномов от переменной xнад полем GF(2m). Определим множество локаторовA = {α1, α2, ..., αn | αi ∈ GF(2m)} и отображение F(u)вектора u в локаторный полином u(x) как

F(u) ≡ u(x) =

n∏

i=1

(1− xα−1i )ui . (1)

Обозначим кодовый алфавит как Q ⊂ Z.Определение 1: Вычетным кодом, или мультикодом,

называется множество векторов {ci ∈ Qn : F(ci) ≡s(x) mod xt+1 | ∀i ∈ 1,M}, где s(x) ∈ F2[x]/xt+1 -полином степени не больше, чем t.

Теорема 1 ( [5]): Вычетный код C = {u ∈ Qn :F(u) ≡ s(x) mod xt+1}, s(x) ∈ F2[x]/xt+1, deg(s(x)) ≤ t,

29

исправляет не менее t однонаправленных ошибок вмодульной метрике.

Теорема 2 ( [5]): Вычетный код B = {u ∈ C :∑ni=1 ui = σ mod (2t+1)} исправляет не менее t ошибок

в модульной метрике.Теорема 3 ( [6]): Вычетный код C∗ = {u ∈

Qn : F(u) = s(x)2z

mod x(t+1)2z}, s(x)2z ∈F2[x]/x(t+1)2z

, deg(s(x)2z

) ≤ 2zt + 2z − 1 исправляетне менее 2zt + 2z − 1 однонаправленных ошибок вмодульной метрике.

Теорема 4 ( [6]): Вычетный код B∗ = {u ∈ C∗ :∑ni=1 ui = σ mod 2z(2t + 1)} исправляет не менее

2zt+ 2z − 1 ошибок в модульной метрике.Заметим, что коды в общем случае не являются

линейными. Вычетные коды C∗ и B∗ используют ал-фавит Q = {0, 1, ..., 2z} и могут быть получены из Cи B умножением кодовых слов на 2z. Кратко опишемпроцедуру декодирования кода C.

Пусть вектор b = a + u, b ∈ Qn получен из кодовогослова a ∈ C ⊂ Qn наложением вектора увеличивающихошибок u. Пусть F(a) ≡ a(x), F(b) ≡ b(x), F(u) ≡ u(x).Тогда

b(x) = a(x)u(x) = s(x)u(x) mod xt+1. (2)

Домножая обе части уравнения на s(x)−1 и обозначаяy(x) = b(x)s(x)−1, получим

y(x) = u(x) mod xt+1. (3)

Остаток ri(x) степени p ≤ t, полученный на i-ом шагеприменением алгоритма Евклида к полиномам y(x)и xt+1, является полиномом увеличивающих ошибокu(x).

Рассмотрим алгоритм декодирования кода B. Пустьвектор b = a + e, b ∈ Qn получен из кодового словаa ∈ B ⊂ Qn наложением вектора ошибок e = u+v, где uи v - векторы увеличивающих и уменьшающих ошибоксоответственно. Пусть F(a) ≡ a(x), F(b) ≡ b(x), F(e) ≡e(x). Тогда

b(x) = a(x)e(x) = a(x)u(x)

v(x)= s(x)

u(x)

v(x)mod xt+1. (4)

Домножая обе части уравнения на s(x)−1 и v(x) иобозначая y(x) = b(x)s(x)−1, получаем

y(x)v(x) = u(x) mod xt+1. (5)

Разность между степенями многочленов u(x) и v(x)равна r = (wM (b)−σ) mod 2t+1. Остаток степени b t+r

2 c,полученный применением алгоритма Евклида для по-линомов y(x)v(x) и xt+1, является полиномом увеличи-вающих ошибок. Устраняя найденные увеличивающиеошибки, декодируем полученный вектор алгоритмомдля кода C.

Алгоритмы декодирования кодов C∗ и B∗ аналогичныалгоритмам декодирования кодов C и B с той разницей,

что при декодировании кода C∗ максимальная степеньполинома ошибки равна 2z(t+1)−1, а при декодирова-нии кода B∗ степень полинома увеличивающих ошибокравна b 2z(t+1)−1+r

2 c. Подробнее алгоритмы декодирова-ния вычетных кодов описаны в [5] и [6]

III. Модель каналаРассмотрим канал с двоичным входом и q-ичным

выходом. Для передачи сообщений используется дво-ичная фазовая модуляция (binary phase shift keying,BPSK). Кодовое слово c ∈ B ⊂ {0, 1}n подается навход модулятора и на выходе принимает вид x ={xi : xi = 2ci − 1} ∈ {−1, 1}n. Вектор x передается поканалу с АБГШ и на входе демодулятора может бытьпредставлен как y = x + n, где n =

{ni ∼ N (0, σ2)

}. На

выходе демодулятора принятое кодовое слово можнопредставить как c′ = c+e, где e = u+v - сумма векторовувеличивающих ошибок u и уменьшающих ошибок v.Обозначим q как размер выходного алфавита. Дляq = 2 рассмотрим двоичный симметричный канал(ДСК) с переходной вероятностью ε = Pr {−1 | 1} =Pr {1 | − 1} = Q(

√2Eb/N0), где

Q(x) = Pr {X > x} =1√2π

∫ +∞

x

e−z2/2dz. (6)

Зная, что код B исправляет не менее t ошибок вмодульной метрике, вероятность ошибки декодирова-ния есть Pr {dM (c, c′) > t}. Поскольку для q = 2 вы-полняется dM (c, c′) = dH(c, c′), вероятность ошибкидекодирования кода, исправляющего не менее t ошибокв метрике Хэмминга, может быть выражена как

Pr {dH(c, c′) > t} =n∑

i=t+1

(n

i

)εi(1− ε)n−i. (7)

Для произвольного выходного алфавита q ≥ 2 веро-ятность перехода двоичных символов x0 = −1 и x1 = 1в q-ичный символ yi соответственно равны

p(yi|x0) = Q(∆i−1 +√

2γ)−Q(∆i +√

2γ),p(yi|x1) = Q(∆i−1 −

√2γ)−Q(∆i −

√2γ), (8)

где γ = Eb/N0, [∆0,∆1, ...,∆q] - границы квантов,∆i > ∆i−1, ∆0 = −∞, ∆q = +∞. Обозначим ве-роятность того, что на символе произошла ошибкавеса j в модульной метрике как Pj = p(yj |x0) =p(yq−j |x1). Вероятность успешного декодирования естьPr {dM (c, c′) ≤ t} и выражается как

Pc =

t/(q−1)∑

iq−1=0

(t−(q−1)iq−2)/(q−2)∑

iq−2=0

...

t−∑q−1j=2 jij∑

i1=0

(n

iq−1

)(n− iq−1

iq−2

)...

(n−∑q−1

j=2 iji1

)

P i11 ...P

iq−1q P

n−∑q−1j=1 ij

0 . (9)

30

Тогда вероятность ошибки декодирования естьPr {dM (c, c′) > t} и может быть выражена как

Pe = 1− Pc. (10)

IV. Численные результаты

Вычетный код B(15, 4, 5) длины n = 15, с числоминформационных символов k = 4 и минимальнымрасстоянием в модульной метрике dM = 5 был получениз исходного вычетного кода B длины n = 15 мощностиM = 27 и расстоянием в модульной метрике dM = 5исключением последних 11 кодовых слов до мощностиM = 16:

B =

0 0 0 0 0 0 0 0 1 0 1 0 1 1 10 0 0 0 0 0 1 1 0 1 1 0 0 0 10 0 0 0 0 1 0 1 1 0 0 1 0 0 10 0 0 0 1 0 0 1 0 0 1 1 0 1 00 0 0 1 1 0 0 0 0 1 0 1 0 0 10 0 0 1 1 1 1 1 1 1 1 0 0 1 10 0 1 0 1 0 1 0 0 0 0 0 0 1 10 0 1 1 0 1 0 0 0 0 0 0 1 0 10 1 0 0 1 1 0 0 0 0 1 0 0 0 10 1 0 1 0 0 1 0 1 0 0 0 0 0 10 1 1 0 0 1 1 1 1 0 1 1 1 0 10 1 1 0 1 0 0 1 1 1 0 1 1 1 10 1 1 1 1 0 1 0 0 1 1 1 1 0 10 1 1 1 1 1 0 1 1 1 1 1 0 0 01 0 0 1 0 0 0 1 0 0 0 0 0 1 11 0 0 1 0 1 1 1 1 0 1 1 1 1 0

Мощность вычетного кода можно оценить снизу как

|B| ≥ qn

(nF + 1)t(2t+ 1), (11)

где q - размер кодового алфавита, n - длина кода. Вданном случае q = 2, nF = 15, t = 2.

На Рис. 1 показана плотность распределения приня-того сигнала при передаче двоичного символа 0. Наприемной стороне производится квантование на q = 3уровня, и размер уровня, отводимый под символ сти-рания 1, определяется величиной ∆.

Из соотношений (8) следует, что с применениемквантования на выходе канала вероятность переходапереданного символа в другой зависит от текущегоотношения Eb/N0 и значения ∆. Тогда при приемесигнала необходимо использовать такое ∆, чтобы ве-роятность ошибки декодирования при заданном Eb/N0

была минимальна. Задача подбора оптимального зна-чения уровня стирания ∆, изображенного на Рис. 1,может быть решена минимизацией вероятности ошибкидекодирования. Используя аналогичный подход, пред-ложенному в [8], выпишем постановку задачи миними-зации вероятности ошибки декодирования. Рассмотримвыражение (10) для частного случая q = 3 и выразимвероятности появления ошибки веса 0, 1 и 2 через

Рис. 1. Квантование принятого сигнала.

-2 -1 0 1 2 3 4 510

-6

10-5

10-4

10-3

10-2

10-1

100

Fra

me

Err

or

Ra

te (

FE

R)

Рис. 2. Переход к многоуровневому квантованию.

P0 = p(−1| − 1) = 1−Q(−∆ +√

2γ),P1 = p(0| − 1) = Q(−∆ +

√2γ)−Q(∆ +

√2γ),

P2 = p(1| − 1) = Q(∆ +√

2γ).(12)

Вероятность правильного декодирования можетбыть записана как

Pc =

t/2∑

i2=0

t−2i2∑

i1=0

(n

i2

)(n− i2i1

)P i1

1 Pi22 P

n−i1−i20 . (13)

Подставляя (13) в (10), задача оптимизации размерауровня стирания принимает вид

∆opt = arg min∆∈[0,1]

Pe. (14)

31

-2 -1 0 1 2 3 4 5

0.14

0.15

0.16

0.17

0.18

0.19

0.2

Рис. 3. Зависимость оптимального размера зоны стирания ∆ отEb/N0.

Аналогичная задача для кода, исправляющего не ме-нее t ошибок в метрике Хэмминга, может быть записанакак

∆opt = arg min∆∈[0,1]

Pr{⌊

dmin − s− 1

2

⌋> t

}, (15)

где s - количество стираний.

На Рис. 3 изображена зависимость оптимальногоразмера зоны стирания от Eb/N0, полученного реше-нием оптимизационных задач (14) и (15). Отсутствиезоны стирания для кода в метрике Хэмминга объясня-ется видом зависимости вероятности ошибки декодиро-вания от ∆ при заданном Eb/N0, изображенной на Рис.4. Видно, что на определенном интервале Eb/N0 ис-пользование стираний приводит только к увеличениювероятности ошибки декодирования кода в метрикеХэмминга.

Из Рис. 2 видно, что при вероятности ошибки деко-дирования (frame error rate) FER = 10−2 использованиеоптимального размера зоны стирания позволяет выиг-рать ≈ 2 дБ. Множество размеров стирания ∆ можетбыть помещено в таблицу, в которой каждому значениюсоответствует текущее состояние канала.

Для сравнения с вычетным кодом B(15, 4, 5) былвыбран код БЧХ C(15, 4, 7), полученный из исходногокода БЧХ (15, 5, 7) в систематической форме выкалы-ванием первого информационного символа.

0 0.2 0.4 0.6 0.8 1

10-2

10-1

100

Fra

me

err

or

rate

(F

ER

)

B*(15,4,10)

Рис. 4. Зависимость вероятности ошибки декодирования отразмера зоны стирания ∆ при Eb/N0 = 1 дБ.

C =

0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 1 0 1 0 0 1 1 0 1 1 10 0 0 1 0 1 0 0 1 1 0 1 1 1 00 0 0 1 1 1 1 0 1 0 1 1 0 0 10 0 1 0 0 0 1 1 1 1 0 1 0 1 10 0 1 0 1 0 0 1 1 0 1 1 1 0 00 0 1 1 0 1 1 1 0 0 0 0 1 0 10 0 1 1 1 1 0 1 0 1 1 0 0 1 00 1 0 0 0 1 1 1 1 0 1 0 1 1 00 1 0 0 1 1 0 1 1 1 0 0 0 0 10 1 0 1 0 0 1 1 0 1 1 1 0 0 00 1 0 1 1 0 0 1 0 0 0 1 1 1 10 1 1 0 0 1 0 0 0 1 1 1 1 0 10 1 1 0 1 1 1 0 0 0 0 1 0 1 00 1 1 1 0 0 0 0 1 0 1 0 0 1 10 1 1 1 1 0 1 0 1 1 0 0 1 0 0

Декодирование кодов выполнялось двумя способами:алгебраически и по минимуму расстояния. Под декоди-рованием по минимуму расстояния понимается нахож-дение ближайшего кодового слова к принятому либо вметрике Хэмминга, если используется код БЧХ, либо вмодульной метрике, если используется вычетный код.Декодирование кода БЧХ со стираниями проводилосьследующим образом: сначала декодировался принятыйвектор, символы стирания которого были заменены насимвол 0, после этого декодировался принятый вектор,символы стирания которого были заменены на символ1. Результатом декодирования являлось слово, ближай-шее до принятого по нестертым позициям. Из Рис. 5,6 видно, что, построенный код БЧХ, декодируемый ал-гебраически и по минимуму расстояния, выигрывает увычетного кода, также декодируемого алгебраически ипо минимуму расстояния, на всем заданном интервалеEb/N0.

32

-2 -1 0 1 2 3 4 5

10-6

10-4

10-2

100

Fra

me

Err

or

Ra

te (

FE

R)

Рис. 5. Сравнение вероятности ошибки декодирования без вве-дения зоны стирания.

-2 -1 0 1 2 3 4 510

-8

10-6

10-4

10-2

100

Fra

me

Err

or

Ra

te (

FE

R)

Рис. 6. Сравнение вероятности ошибки декодирования привведении зоны стирания.

V. Заключение

В данной работе было рассмотрено использованиевычетных кодов короткой длины в модульной метрикедля исправления ошибок в канале с АБГШ. Исполь-зование оптимального размера зоны стирания позво-ляет уменьшить вероятность ошибки декодирования.Как показало сравнение вычетного кода с кодом БЧХравной длины, вероятность ошибки декодирования ко-да БЧХ меньше, чем для вычетного кода как прииспользовании алгебраического декодирования, так ипри декодировании по минимуму расстояния. С дру-гой стороны, конструкция вычетного кода позволяетдополнительно исправлять 2z−1 в каналах с двоичнымвходом и q-ичным выходом, где q = 2z + 1.

Вычетный код, используемый в статье, не позволяетпродемонстрировать преимущества использования ко-

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

Список литературы[1] Etzion T. Product constructions for perfect Lee codes. IEEE

Transactions on Information Theory. – 2011. – Т. 57. – №. 11.– С. 7473-7481.

[2] Gabidulin E. A brief survey of metrics in coding theory.Mathematics of Distances and Applications. – 2012. – Т. 66.

[3] D’Oliveira R. G. L., Firer M. Channel metrization. EuropeanJournal of Combinatorics. – 2018.

[4] Etzion T., Vardy A., Yaakobi E. Coding for the Lee andManhattan metrics with weighing matrices. IEEE Transactionson Information Theory. – 2013. – Т. 59. – №. 10. – С. 6712-6723.

[5] В.А. Давыдов. Коды, исправляющие ошибки в модульнойметрике, метрике Ли и ошибки оператора: Проблемы пере-дачи информации, 1993, том 29, выпуск 3, 10-20.

[6] В.А. Давыдов. О применении модульной метрики к решениюзадачи декодирования по минимуму евклидового расстоя-ния. Проблемы передачи информации (принята к публика-ции).

[7] Shirvanimoghaddam M. et al. Short Block-Length Codesfor Ultra-Reliable Low Latency Communications: IEEECommunications Magazine. – 2019. – Т. 57. – №. 2. – С. 130-137.

[8] Chen W. H. J., Fossorier M. P. C., Lin S. Optimumquantizer design for the weighted erasure decoding algorithm:Communications, 1999. ICC’99. 1999 IEEE InternationalConference on. – IEEE, 1999. – Т. 2. – С. 838-842.

[9] В.А. Давыдов. Методы исправления ошибок в модульнойи порожденных ею метриках: дис. кандидата техническихнаук: 05.13.01. - Санкт-Петербург, 1993.

On performance of codes in Manhattan metrics overquantized BI-AWGN channel

Author: Nikita Zeulin. SUAI, Saint-Petersburg, RussiaEmail: [email protected]

Аннотация—In this article, using of remainder codes inManhattan metrics for error correction over quantized BI-AWGN channel is investigated. It is shown, that using of anoptimal size of erasure zone allows to decrease decoding errorprobability.

Index Terms—coding theory, Manhattan metrics, remaindercode, BCH code

33

Применимость эвристического алгоритма для

задач поиска траекторий движения через

систему физической защиты И.К. Шарков, Е.А. Желудков

Высшая школа программной инженерии

Санкт-Петербургский политехнический университет Петра Великого (СПбПУ)

Санкт-Петербург, Россия [email protected]

Аннотация — В данной статье описано исследование

применения алгоритмов поиска пути в задачах генерации

траекторий движения нарушителя и охранника через

СФЗ. Исследовались алгоритмы поиска кратчайшего пути

на сетке (JPS и алгоритм Ли), а так же разработанный

эмпирический алгоритм поиска пути. Проведена оценка

применимости созданного алгоритма в сравнении с

алгоритмами поиска пути на планарных графах.

Ключевые слова – поиск пути, системы физической

защиты, СФЗ, JPS, алгоритм Ли, эвристические

алгоритмы.

I. ВВЕДЕНИЕ

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

Для создания алгоритмов, осуществляющих поиск траекторий движения рационально применять алгоритмы, которые уже используются для похожих задач (поиск короткого пути в пространстве и поиск пути в сети – это разные задачи), или разрабатывать собственные эвристические алгоритмы. Эвристические алгоритмы в настоящее время находят своѐ применение во многих областях, зачастую там, где поиск подходящего и точного алгоритма является невероятно сложной задачей, а иногда и невозможной.

Одной из таких областей можно назвать область разработки систем моделирования для оценки эффективности средств физической защиты (СФЗ). Эта тематика предлагает исследовать множество возможных путей проникновения нарушителей на охраняемый объект и маршрутов его перехвата охранниками. В результате такого моделирования можно судить об эффективности исследуемой СФЗ [1].

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

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

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

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

В данной статье проведен обзор и сравнение трех алгоритмов: Jump-Point Search (JPS), алгоритм Lee, алгоритм поиска пути по графу видимости и «Polaris».

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

II. ПОСТАНОВКА ЗАДАЧИ

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

как будет описываться карта с набором препятствий (упрощенная карта СФЗ).

каковы основные алгоритмические отличия нарушителя и охранника (если таковые есть).

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

34

алгоритмов был одинаковый или максимально схожий. Это позволит проводить максимально объективные исследования.

Таким образом, минимально необходимый набор входных данных, необходимый для создания траектории нарушителя или охранника:

1. Координаты стартовой и финишной точки фрагмента движения.

2. Субъект (определяет модель поведения при столкновении с препятствием):

Нарушитель

Охранник

3. Геометрия препятствий (полигоны фигур).

4. Свойства преодолимости препятствий (наборы допустимых для преодоления препятствий определяются данными субъекта).

Все препятствия описаны в виде набора точек (полигонов). А свойства преодолимости указывают на набор препятствий, которые субъект может преодолевать (игнорировать или перемещаться особым образом). Все препятствия, не помеченные свойством преодолимости, считаются непреодолимыми по умолчанию. Например, для конкретной модели нарушителя будут считаться непреодолимыми (запрещенными для пересечения) зоны обнаружения датчиков, о которых ему заранее известно, но ограждения без датчиков он считает перпендикулярно преодолимым. А для охранника, например, ограждение считается непреодолимым, зато он считает легко преодолимыми ворота/двери/калитки в них. Стены зданий, например, считаются непреодолимыми для всех по умолчанию, если не было заявлено иное. И так далее.

Режим прокладчика зависит от выбранного субъекта и влияет на характер траектории. Эти различия указаны в ТАБЛИЦЕ 1.

ТАБЛИЦА 1. РАЗЛИЧИЕ СУБЪЕКТОВ

Нарушитель Охранник

Может преодолевать любые

ограждения перпендикулярным

методом, если в свойствах

препятствий не указано иное.

Не может преодолевать

ограждения, но

воспринимает все ворота как

отверстия в них. Так,

ограждения, имеющие ворота, разбиваются для

охранника на несколько

непреодолимых частей

Преодолимы все препятствия, обозначенные субъекту как преодолимые. Например, шлагбаум, ров, барьер и т.д.

Стены зданий являются непреодолимыми препятствиями

III. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ: АЛГОРИТМЫ НА ОСНОВЕ

ГРАФОВ

Вначале следует упомянуть существующие современные алгоритмы поиска пути на сетке (часто в англ. «on a grid») – это алгоритмы поиска «пути по первому наилучшему доступному совпадению» [2] на основе 2D сетки. Эти алгоритмы активно используют в игровых имитациях, программах-трассировщиках печатных плат и т.п. Под такими алгоритмами

подразумеваются алгоритмы поиска пути на графах, которые применяют при сетевом анализе и поиске путей на однородных графах. Как правило, для поиска кратчайшего пути используется сетка, где у каждого узла имеется 4 или 8 связных узлов по горизонтальным, вертикальным и диагональным направлениям. Ребра такого графа могут иметь веса (uniform-cost grids), которые распределяются в зависимости от применяемого алгоритма. В нашем случае – вес определяется положением узловой точки финиша (цели).

Самым простым с точки зрения реализации и понимания является алгоритм поиска в ширину (breadth-first search, далее BFS) [3]. В этом алгоритме на сетке определяются узлы старта и финиша, а затем осуществляется поиск по соседним узлам в разные (доступные) стороны до тех пор, пока не будет найден финиш (цель). После этого алгоритм завершается. Выбирается та ветвь поиска, которая привела к цели.

Одним из самых известных и часто применяемых алгоритмов поиска является алгоритм Дейкстры [4]. Этот алгоритм осуществляет поиск по ребрам графа, где нет отрицательного веса. Особенностью алгоритма является то, что поиск осуществляется во все стороны в зависимости от веса ребер графа.

Кроме него известен алгоритм «жадного поиска» (best-first search). Он ищет любой первый попавшийся путь между точкой старта и целью, а не наиболее короткий.

Однако, рассматривать BFS, алгоритм Дейкстры и «жадный поиск» в описанной задаче нецелесообразно. Дело в том, что в подавляющем числе случаев планов СФЗ – это карта сложных препятствий большой площади. Потому необходимо использовать большую сетку графа, которая сможет охватить территорию сложно структурированного объекта. Упомянутые алгоритмы с каждым следующим шагом (итерацией) будут требовать все большего объема памяти и выполнять большее число расчетов. Целесообразно применять на графах с маленькой размерностью.

Таким образом, рационально рассматривать современные алгоритмы поиска пути на сетке с эвристическими функциями. Это алгоритмы совершенствующие и ускоряющие действие упомянутых выше или применяющие иной подход. Примерами таких алгоритмов являются Jump-Point Search [5,6] и Алгоритм Ли [7]. При этом первый является современной оптимизацией А*, которая позволяет увеличить скорость поиска короткого маршрута в разы.

Jump-Point Search (далее JPS) – алгоритм поиска пути на графе по первому наилучшему совпадению с применением эвристической функции поиска. Алгоритм находит маршрут с наименьшей стоимостью (весом) от старта до финиша. JPS является оптимизированной версией А*[8], позволяющей пропускать часть ненужных (предсказуемых) расчетов за счет «перескакивания» (jump) части однородных.

Алгоритм Ли (алгоритм волновой трассировки) – алгоритм поиска кратчайшего пути на планарном графе (ребра не пересекаются). Является оптимизацией «поиска в ширину».

35

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

Рис. 1. Погрешность охвата непреодолимого препятствия.

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

Рис. 2. Потеряный путь между двумя препятствиями.

Таким образом, сетку нужно задавать так, чтобы максимально полезно и без потери полезных маршрутов построить граф возможных траекторий на объекте с препятствиями. Диагональный шаг сетки должен быть не больше минимального расстояния между объектами разделенного на корень из двух (см. рис. 3). Таким образом, горизонтальный шаг сетки должен будет определяться по формуле 1:

(1)

Рис. 3. Правильно рассчитанный горизонтальный шаг сетки

сохраняет траектории между препятствиями.

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

IV. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ: АЛГОРИТМ НА ОСНОВЕ ГРАФА

ВИДИМОСТИ И СОЗДАНИЕ ЭВРИСТИЧЕСКОГО АЛГОРИТМА

ПОИСКА ПУТИ

Поиск кратчайшего пути можно осуществлять с помощью графов видимости. Это граф, ребра которого соединяют узлы со взаимной видимостью в пространстве. В рассматриваемой задаче – это вершины полигонов препятствий. Такой граф будет взвешенным, так как длина ребер будет различной. Его часто применяют в планировании движений роботов на заранее известной местности, на основе которой построен граф видимости [9].

Кроме алгоритмов поиска путей на планарных графах и графах видимости существуют эвристические алгоритмы поиска путей на основе исследования и алгоритмического обхода препятствий. Единых стандартов или общих алгоритмов для такого подхода не выводили. В первую очередь это связанно с различными постановками задач и желательными особенностями для поиска пути [10]. Примеры решения таких задач: моделирование броуновского движения с поиском выхода, моделирование движения стай летучих мышей в пещере, алгоритмы для движения роботов-пылесосов и т.д.

Часть из этих алгоритмов подходят к решению задачи с помощью формирования собственного неоднородного графа, на основе которого ищут путь уже описанными ранее алгоритмами (применимы для неоднородных графов) или при помощи комбинаторики и «поворота ветвей» (tree rotation) [11] с поиском кратчайшего пути. Пример способов формирования графов: применение диаграмм Вороного, триангуляция. Однако это по-прежнему остаются алгоритмы поиска кратчайшего пути по сетке планарного графа.

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

Каждый полигон препятствия – это многоугольник с известными координатами вершин, идентичный форме препятствия. Движение внутри непреодолимых препятствий невозможно.

36

V. ОПИСАНИЕ АЛГОРИТМА «POLARIS»

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

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

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

Рис. 4. Траектория найденного пути сразу после выхода из цикла.

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

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

Рис. 5. Поведение траектории на углах полигона и точках видимости.

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

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

Рис. 6. Траектория после оптимизации пути с 1 и 10 циклами

оптимизации

Эвристический алгоритм «Polaris» был описан, формализован и запрограммирован на языке C#, что позволило проводить его исследование. Блок-схема алгоритма, описывающая базовый принцип его работы представлена ниже на рис. 7.

37

Рис. 7. Блок-схема алгоритма «Polaris»

VI. УСЛОВИЯ СРАВНЕНИЯ АЛГОРИТМОВ

На языке C# была написана утилита, позволяющая:

• Открывать и демонстрировать карты с препятствиями (полигонами препятствий),

• Задавать координаты точек Start и Finish,

• Выбирать тип траектории: нарушитель или группа реагирования,

• Выбирать и настраивать один из описанных выше алгоритмов: JPS, алгоритм Ли и эвристический «Polaris»,

• Строить при помощи выбранного алгоритма поиска пути траекторию между точками Start и Finish,

• Строить одну тысячу траекторий по выбранному алгоритму с границ карты до точки Finish (для сеточных алгоритмов сетка строится 1 раз на 1000 траекторий),

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

Для исследования были созданы специальные карты с препятствиями разных видов и геометрических форм.

VII. СРАВНЕНИЕ АЛГОРИТМА ПОИСКА ПУТИ НА ГРАФЕ

ВИДИМОСТИ И «POLARIS»

Для сравнения использовалась реализация

алгоритма, где граф видимости строится с

использованием Rotations Trees [10]. Сходство

алгоритма «Polaris» заключается в задаче обнаружения

видимых вершин преодолимого препятствия, однако

для «Polaris» исследуются только вершины препятствия,

преграждающего путь, а не всех окружающих

полигонов. Таким образом, алгоритм на графе

видимости первым шагом должен построить сам граф

на основе карты препятствий и их вершин, а затем с

помощью выбранного способа (любой подходящий

алгоритм поиска пути для взвешенных графов,

например Дейкстры) ищет кратчайший путь. «Polaris»

не строит графов, а опирается на пошаговый анализ

препятствий (описан ранее в статье). Оба алгоритма

часто дают схожий результат по характеру траекторий,

который можно увидеть на рисунке 8.

Рис. 8. Внешний вид траекторий, полученных алгоритмом по графу

видимости и «Polaris»

В результате испытаний очевидным становится то,

что в большинстве случаев на картах с большим числом

препятствий траектория по графу видимости короче,

чем траектория, получаемая с помощью «Polaris»:

3830,3 против 4093,1 метров. Но при этом время

генерации траектории больше, так как оно тратится на

генерацию графа, а затем поиск пути выбранным

способом (использовались Дейкстра и Lee): 1608 против

1 миллисекунды.

38

Таким образом, в задачах, где необходимо

осуществить поиск оптимальной траектории на карте

СФЗ, алгоритм поиска на графе видимости будет

лучшим выбором. Но если задача требует генерации

большого числа траекторий из разных точек на карте

высокой сложности, то быстродействие алгоритма

может начать играть первостепенную роль.

VIII. СРАВНЕНИЕ АЛГОРИТМОВ JPS, LEE И «POLARIS»

Для проверки алгоритмов поиска пути на графах, был использован особый метод формирования сетки. Проблема заключается в том, что прямое вычисление сетки при помощи разделения рабочего поля карты на сегменты, определение занятых узлов и т.д. – очень длительная вычислительная задача. Чем меньше размер сегментов и больше сеть, тем дольше проводятся вычисления. Для всех вышеприведенных примеров формирование сетки путем деления карты занимало в разы больше времени, чем алгоритм прокладки траектории (от пары секунд до нескольких минут). Чтобы решить эту задачу, был применен другой подход: формирование битовой карты. Для этого карта инкапсулировалась в точечный рисунок при помощи объекта Bitmap , а затем небезопасным кодом преобразовывалась в битовую карту (LockBits). По этим битовым значениям строилась сетка графа.

Так же был создан «множитель» сетки – с его помощью увеличивается размер создаваемого битмапа, влияющего на размер сетки. Размер ячеек сетки по умолчанию равняется 1 юниту (одной единице измерения карты). Если в какой-то ситуации путь не удается найти (из-за размера сетки), то «множитель» нужно увеличивать до тех пор, пока не будет найден минимальный или оптимальный множитель. Чем больше значение множителя, тем более плавная траектория, но дольше вычисления. Пример битмап-изображений карт с множителем 1 и 7 можно увидеть на рис. 9.

Рис. 9. Сравнение битмап-изображений с множителем сетки 1 и 7

В случае эвристического алгоритма «Polaris» «множитель» управляет количеством повторов фильтрации итоговой траектории (множитель от 0 до 50).

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

Рис. 10. Внешний вид траекторий, полученных с помощью

следующих алгоритмов JPS, Lee и «Polaris»

Длины траекторий для данных алгоритмов получились следующими: 65.7, 76.1 и 61.3 метра соответственно.

Некоторые из результатов испытаний на картах с

препятствиями приведены в таблице 2. Для каждого

алгоритма на одной и той же карте использовались

одинаковые координаты старта и финиша.

ТАБЛИЦА 2. РЕЗУЛЬТАТЫ ИССЛЕДОВАНИЯ РАЗНЫХ КАРТ

АЛГОРИТМАМИ JPS, LEE И «POLARIS»

КАРТА: Комбинированный сложный лабиринт малой площади

АЛГОРИТМ: Jump-Point Search

Множитель сетки Минимальный=8 Оптимальный=16

Время T(1)=7ms T(1000)=7.272

T(1)=38ms T(1000)=32.691s

Длина 63.9 61.6

АЛГОРИТМ: Алгоритм Ли

Множитель сетки Минимальный=8 Оптимальный=16

Время T(1)=34ms

T(1000)=7.685s

T(1)=245ms

T(1000)=58.255s

Длина 74,3 71.6

АЛГОРИТМ: «Polaris»

Множ. фильтрац. Минимальный=0 Оптимальный=16

Длина T(1)=7ms

T(1000)=1.127s

T(1)=176ms

T(1000)=48.823s

Длина 118,6 60,2..61,6

КАРТА: Лабиринт со сложной формой полигона

АЛГОРИТМ: Jump-Point Search

Множитель сетки Минимальный=1 Оптимальный=10

Время T(1)=29ms

T(1000)=29,023s

T(1)=1550ms

T(1000)=4 492,963s

Длина 1378.8 1343.9

АЛГОРИТМ: Алгоритм Ли

Множитель сетки Минимальный=1 Оптимальный=7

Время T(1)=319 ms

T(1000)=70.321 s

T(1)= 105 484 ms

T(1000)> 2 часа

Длина 1677 1630.1

АЛГОРИТМ: «Polaris»

Множ. фильтрац. Минимальный=0 Оптимальный=2

Время T(1)=6 ms

T(1000)=0,748s

T(1)=167 ms

T(1000)=44,198s

Длина 4395,6 1340..1408

КАРТА: Структура препятствий большой площади (высокая

степень детализации форм множества препятствий) АЛГОРИТМ: Jump-Point Search

Множитель сетки Минимальный=0,01 Оптимальный=0,05

Время T(1)=35 ms

T(1000)=44,868s T(1)=947 ms

Длина 59131.1 61230.2

АЛГОРИТМ: Алгоритм Ли

Множитель сетки Минимальный=0,01 Оптимальный=0,05

Время T(1)=203 ms T(1)=25 430 ms

АЛГОРИТМ: «Polaris»

Множ. фильтрац. Минимальный=0 Оптимальный=7

Время T(1)=21 ms

T(1000)=2,593s

T(1)=40 ms

T(1000)= 7.412s

39

Длина 91152 54681..57669

Выбрав одинаковые множители сетки и фильтрации, была составлена сравнительная таблица 3.

ТАБЛИЦА 3. РЕЗУЛЬТАТЫ ГЕНЕРАЦИИ ТРАЕКТОРИЙ НА РАЗНЫХ КАРТАХ

СФЗ

Алгоритм Малая простая карта Малая сложная карта

t1 L t1000 t1 L t1000

JPS 0.002 144 0.8 7 64 33

Ли 0.006 170 0.78 34 74.3 58

«Polaris» 0.002 154 0.1 92 62 48

Средняя сложная

карта

Крупная хаотичная

карта

JPS 1.55 1343 4000 17,3 1622 -

Ли 105.4 1677 >7000 27,8 1818 -

«Polaris» 0.167 1340 44.19 0,292 1553 48,6

t1 – время построения одной траектории от заданных точек старта и

финиша, L – длина и t1000 – время генерации тысячи случайных

траекторий с периметра карты до финиша

IX. ВЫВОДЫ

Сложность выполнения алгоритмов оценивалась по времени их выполнения и затрачиваемой памяти. Оценка асимптотической сложности пока не проводилась. При разумном ограничении времени счета и ресурсов памяти не всегда удается получить наиболее короткую траекторию с помощью алгоритмов поиска пути на графах. Алгоритмы на графах хорошо справляются с картами препятствий малых размеров и простой структуры. JPS дает более качественные результаты по характеру траектории и затрачиваемому времени, чем алгоритм Ли. Но алгоритм Ли использует гораздо меньше ОЗУ. Алгоритм поиска пути на графе видимости дает наилучшую траекторию по характеру поведения, но затраты времени на вычислительные процессы в разы выше, чем у остальных алгоритмов, а затраты памяти превышают затраты «Polaris» и в половине случаев затраты других алгоритмов.

На карте крупных масштабов эвристический алгоритм «Polaris» продемонстрировал гибкость за счет независимости от сеток графа, сокращая расстояние за счет диагональных линий под любым углом в сторону цели. При крупномасштабных картах с препятствиями простой формы (все препятствия выпуклые) алгоритм способен работать без фильтрации, выдавая качественные результаты. А в сложных структурах можно подобрать оптимальный коэффициент фильтрации, при этом «Polaris» все равно будет справляться быстрее, чем алгоритмы на графах. Работа без фильтрации дает наиболее высокую производительность на слабых вычислительных машинах. Учитывая, что современные СФЗ охраняемых объектов – чрезвычайно сложные комплексные системы из большого числа препятствий, «Polaris» применим в этих задачах с наибольшей результативностью

Длина траекторий, полученных «Polaris», практически всегда короче, а затрачиваемое время для генерации большого числа траекторий из разных точек меньше, чем у алгоритмов-конкурентов, за счет высокой степени распараллеливаемости счетных процессов. Распараллеливание алгоритмов поиска пути на графах не дало значительных изменений результатов.

БЛАГОДАРНОСТИ

Выражаем благодарность за помощь в создании математической модели и консультировании по работе с RMD7 Колесова Юрия Борисовича и Инихова Дмитрия Борисовича, за научную и академическую поддержку Сениченкова Юрия Борисович. Хотим поблагодарить коллег в компании «ПЕНТАКОН» Крылова Виктора Михайловича и Квачадзе Василия Роландовича за помощь в формировании целей и задач создаваемых моделей, а так же Москвину Дарью Ринатовну за техническую поддержку и тестирование.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

[1] Шарков И.К. Применение ООМ при создании моделей систем защиты периметра. // "КОМОД-2017". [Электронный ресурс]. URL:http://dcn.icc.spbstu.ru/index.php?id=377&L=2%252527%2522 (дата обращения: 01.10.2018).

[2] J., Pearl. Heuristics: Intelligent Search Strategies for Computer Problem Solving. б.м. : Addison-Wesley, 1984. стр. 48.

[3] Шанаев Г.Ф., Леус А.В. Системы защиты периметра. – М.: Секьюрити Фокус, 2011. – С. 256.

[4] Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн. Алгоритмы: построение и анализ = Introduction to Algorithms. — 2-е изд. — М.: «Вильямс», 2006. — С. 1296. — ISBN 0-07-013151-1.

[5] Online Graph Pruning for Pathfinding on Grid Maps. Daniel Harabor, Alban Grastien. The Australian National University : Twenty-Fifth AAAI Conference on Artificial Intelligence, 2011.]

[6] Harabor D., Grastien A. The JPS Pathfinding System. // 26th National Conference on Artificial Intelligence. - 2012. AAAI.

[7] Lee C.Y. An Algorithm for Path Connections and Its Applications. // IRE Transactions on Electronic Computers - №2 - 1961. - P. 364—365.

[8] Zeng, W.; Church, R. L. Finding shortest paths on real road networks: the case for A*. // International Journal of Geographical Information Science. 2009. 23 (4): 531–543.

[9] Пшихопов В.Х. Интеллектуальное планирование траекторий подвижных объектов в средах с препятствиями / под ред. В.Х. Пшихопова. – М.: Физматлит, 2014. – 350 с.

[10] Нейдорф Р.А., Полях В.В., Черногоров И.В., Ярахмедов О.Т. Исследование эвристических алгоритмов в задачах прокладки и оптимизация маршрутов в среде с препятствиями // Известия ЮФУ 2016. -127 с.

[11] The diameter of associahedra Advances in Mathematics 259, 13–42 (2014)

The applicability of the heuristic algorithm for tasks of search

trajectories through Physical Protection System

Sharkov I.K., Zheludkov E.A.

Graduate school of software engineering

Peter the Great St. Petersburg Polytechnic University

Saint-Petersburg, Russia

[email protected]

Abstract – This article explores the application of path search

algorithms in movement trajectory generation of intruders and

guards through PPS. The algorithms for finding the shortest path

on the grid (JPS and Lee algorithm) as well as the developed

heuristic path finding algorithm was also evaluated. Developed

algorithm applicability was evaluated in comparison to graph path

finding algorithms.

Keywords – pathfinding, physical protection systems, PPS,

JPS, Lee algorithm, heuristic algorithms

40

Обработка данных акустических сигналов дляприменения к ним коэффициента корреляции

Пирсона и их кластеризация

Павел БалагуринСанкт-Петербургский

Государственный университетEmail: [email protected]

Павел МакарихинСанкт-Петербургский

Государственный университетEmail: [email protected]

Анастасия ГригорьеваСанкт-Петербургский

Государственный университетEmail: [email protected]

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

I. Введение

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

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

Таким образом, задача кластеризации является ак-туальной для области АЭ, так как позволяет полу-чить наборы данных со схожей природой. Существуютразличные методики для её решения и различныеобласти применения результатов. Так, в [2] для поис-ка подобных сигналов рассматривается форма волны.В [3] используют метод k-средних применительно кфункции распределения частот. В [4] кластеризацияпроизводится на основе априорно полученных критиче-ских интервалов для значений характеристик сигналов.

В [5] оценивают энергию сигнала АЭ с помощью спек-трального анализа. В [6] распознавание источников АЭпроисходит по форме кривой спектральной плотностимощности. В [7] применяется метод скользящего окна.В [8] кластеризация используется для мониторингапрогрессирования износа материала. В [9] с помощьюкластеризации повышается точность определения ме-стоположения источников АЭ. Наиболее интересныерезультаты получены в работе [10], где рассматривает-ся набор из нескольких характеристик, определяютсявзаимосвязи между ними и сравниваются 2 метода:метод главных компонент и самоорганизующаяся картаКохонена. Также метод главных компонент использу-ется в работе [11]. В работах [2], [10], [3] применяетсямашинное обучение. Все вышеобозначенные методикиимеют свои преимущества и недостатки. И то, что напротяжении стольких лет исследований не появился об-щепринятый метод группировки сигналов по классам,говорит о том, что задача остается открытой.

В данной статье предложен способ кластеризацииАЭ-сигналов с помощью коэффициента корреляцииПирсона. Коэффициент корреляции Пирсона – это ме-тод параметрической статистики, позволяющий опре-делить наличие или отсутствие линейной связи междудвумя количественными показателями, а также оце-нить ее тесноту и статистическую значимость [12],[13]. В данном случае он отражает схожесть динами-ки поведения фиксированной характеристики у двухсигналов. Расчет коэффициента корреляции Пирсонапроизводится по следующей формуле:

r(x, y) =

n∑i=1

(X −X)(Y − Y )

√n∑

i=1

(X −X)2n∑

i=1

(Y − Y )2

(1)

где X = 1n

n∑i=1

Xi, Y = 1n

n∑i=1

Yi - среднее значение

выборок, n - объем выборок.

Предложенный подход тестируется на данных, по-лученных от механической калибровки. Калибровка- проверка работоспособности аппаратуры до нагру-жения объекта с помощью имитатора. ИмитаторомАЭ-сигналов в данном исследовании служит щелчок

41

твердометром по волноводу. Это является подобиемисточника Су-Нильсена, часто используемого в АЭ [14],[15]. В нашем случае каждая из двух калибровочныхсерий состояла из 10-11 сигналов. Грубо говоря, сиг-нал - это ультразвуковая волна, появляющаяся внутриисследуемого объекта в момент возникновения физиче-ского события (появление микротрещины, рост суще-ствующей трещины, объединение нескольких дефектовв одну, механический щелчок, посторонний шум и др.).Эта волна распространяется от места возникновенияво всех направлениях. По мере продвижения она фик-сируется высокочувствительными датчиками в виденабора характеристик. В результате регистрируются изаписываются данные от отдельных датчиков, которыев совокупности дают информацию о произошедшемсобытии. Обычно датчики фиксируют такие характе-ристики волны как амплитуда, длительность, частота,энергия, время нарастания сигнала и т.д. Заметим, чтона графиках и корреляционных матрицах в статье но-мера сигналов соответствуют порядку их регистрации,т.е. 0-10 - сигналы из первой серии, 11-20 - из второйсерии.

Различные типы повреждений и трещин генерируютсигналы АЭ различного вида. Это свойство АЭ исполь-зуется при построении критериев, предназначенныхдля оценки стадий разрушения объекта.

Целью настоящей работы является анализ входныхданных на соответствие условиям применения коэф-фициента Пирсона, их преобразование в случае необ-ходимости и кластеризация АЭ-сигналов с помощьюданного коэффициента. В качестве входных данныхвыбраны две характеристики: амплитуда и отношениевремени нарастания сигнала к длительности сигналаR/D.

II. Обоснование выбора коэффициента корреляции

Кластеризация АЭ-импульсов осуществляется наоснове функции корреляции. В математической ста-тистике для определения корреляции между двумявеличинами традиционно используются следующие ко-эффициенты корреляции: Пирсона, Спирмена, Кендал-ла, Фехнера. Применение коэффициентов Кендаллаи Спирмена невозможно, так как они предназначеныдля определения взаимосвязи между двумя ранговымипеременными, а данные АЭ не являются ранговыми.Значения их характеристик не подлежат ранжирова-нию. Коэффициент Фехнера:

KФ =na − nbna + nb

(2)

где na - количество совпадений знаков отклоненийвеличин от их среднего арифметического, nb - соот-ветственно количество несовпадений [12][13]. Коэффи-циент Фехнера не является достаточно строгим кри-терием для нашего исследования, так как он прове-ряет только факт отклонения значений переменныхот среднего значения. Коэффициент Пирсона позволя-ет количественно вычислить отклонения от среднегозначения. Для того чтобы убедиться в правильностисвоего предположения, был проведен ряд практических

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

Для его использования необходимо, чтобы выпол-нялись следующие условия [12][13]:

• исследуемые значения переменных должныбыть распределены нормально;

• исследуемые переменные должны быть измере-ны в интервальной шкале или шкале отноше-ний;

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

Все значения рассматриваемых характеристик из-мерены в интервальной шкале. Оставшиеся два условияпроверяются в следующих разделах.

III. Проверка законов распределения данных

Рис. 1. Распределение значений характеристики Амплитуда

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

42

и это дает основания для вычисления корреляцииотносительно данной характеристики.

Значения характеристики «Отношение времени на-растания к длительности сигнала» не распределенынормально (Рис. 2), поэтому в дальнейшем исследова-нии планируется ее либо исключить из рассмотрения,либо высчитывать с помощью другого, менее требо-вательного коэффициента. Например, коэффициентаФехнера (2). Или рассмотреть возможность примене-ния коэффициента фазовой синхронизации Sync иликоэффициента TDS(Time Delay Stability), чувствитель-ность которых проанализированна в работе [16].

Рис. 2. Распределение значений характеристики R/D (отноше-ние времени нарастания сигнала к длительности сигнала)

IV. Алгоритм исключения значений, не нашедшихсоответствия

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

1) Для того чтобы последовательность значенийпеременных начиналась с 0, от каждого эле-мента массива отнимаем первый элемент.

2) Находится разность между вторым и первымэлементами массива A: dA = a2 − a1

3) Находятся разности между первым элементоммассива B и остальными: dB1 = b2 − b1, dB2 =b3 − b1 и так далее.

4) Среди полученных разностей элементов мас-сива B находится та, которая больше соответ-ствует разности второго и первого элементамассива A. Для этого вычисляются модулиразностей d1 = |dA − dB1|, d2 = |dA − dB2| итак далее и выбирается наименьшая. В массивC записываются соответствующие элементы B.

5) Для следующих элементов массива A данныевычисления повторяются. При этом в массиве

Рис. 3. Результат работы алгоритма.

B разность элементов вычисляется относитель-но элемента, который последним записан вмассив C.

В результате сформирован массив C, полученныйиз массива B, который имеет ту же размерность, чтои массив A.

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

Для оптимизации данного алгоритма можно не ис-кать разности между всеми элементами массива B.Для этого запоминается разность di = |dA − dBi| и,если при дальнейшем вычислении di+1 выясняется, чтоdi+1 > di, то дальше можно вычисления не проводитьи переходить к следующему элементу A.

Результат работы алгоритма можно видеть на ри-сунке 3, где мы сравниваем два сигнала, у одногоиз которых четыре значения, а у другого - семь. Награфике отмечены те точки, которые выбрал алгоритм.

V. Эксперименты

Подробно размеры и схема объекта исследова-ния (металлобетонный массив) описаны в работе [17].Прежде чем применять разработанное программноеобеспечение на реальных экспериментальных данных,оно было протестировано на так называемых калиб-ровочных данных. Это позволило заранее знать, где

43

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

Было проведено множество тестов на данных ка-либровки из разных дней эксперимента (всего около20 дней/экспериментов). Полученные результаты былипримерно аналогичные, поэтому в статье ограничимсярассмотрением и анализом графиков для одного изэкспериментов, который проходил 3 ноября (Таблица I.). Для ознакомления расчетные данные основной кор-реляционной матрицы приведены и для другого дня -17 ноября, в Таблице II.

Эти матрицы и графики сигналов, объединившихсяв кластер, получены с помощью разработанного про-граммного обеспечения, реализующего предложенныйподход на языке C# и R. В таблице I представленывычисленные значения коэффициента Пирсона каждо-го сигнала с каждым. Значительное количество ну-лей обусловлено использованием при расчетах понятияоценки статистической значимости tкритическое. Рассчи-танное значение коэффициента корреляции Пирсонапризнается не значимым, если tнабл < tкритическое, ив этих случаях принимается гипотеза о равенстве 0 ко-эффициента корреляции. Обратимся к графикам. По-иск класстеров ведется в многомерном критериальномпространстве нескольких характеристик АЭ-сигналов.Отображаем найденые наборы сигналов, относящиесяк одному класстеру в срезе амплитуда-время. Выборобусловлен тем, что в этом случае лучше всего замет-на фазовая синхронизация процессов и стабильностьвременной задержки данных процессов, позволяющиесудить правильно ли метод определил кластер. Каквидно из графиков, сигналы действительно четко раз-деляются на наборы согласно априорным ожиданиям.Среди них образовались два различных кластера, одиниз которых соответствует первому источнику сигналов(Рис. 4), другой - второму источнику (Рис. 5). Этидва разделения сигналов получены при установлениивысокого порогового значения коэффициента Пирсона,равного 0,85. Как можно видеть, в первый кластер про-граммой отнесены сигналы с номерами из промежуткаот 1 до 10, во второй - от 11 до 20. Это свидетель-ствует о четком разделении между сигналами разныхсерий. Основным различием этих серий было то, чтосигналы генерировались в двух разных местах объекта.Поскольку при проведении эксперимента присутствуетчеловеческий фактор, некоторые из 20 сигналов былине такими четкими, как другие. Назовем их "оши-бочными". Они сгенерировались при неудачном угленаклона имитатора или слабом ударе. В рассмотренномдне это сигналы № 0, 1, 2, 5. При уменьшении поро-гового значения коэффициента Пирсона до 0,65 все 16сигналов калибровки будут отнесены к одному набору(Рис. 6), и среди них по-прежнему не будет ошибочных.Таким образом, варьируя пороговое значение, можнополучать кластеризацию нужной точности.

Обозначим rA - коэффициент Пирсона примени-тельно к амплитудам сигнала. Заметим, что получен-ное отношение подобия не транзитивно. То есть из того,

Рис. 4. Набор, в который попали импульсы из первой сериикалибровочных сигналов при r > 0.85

что сигнал a подобен сигналу b, и b подобен сигналуc, не следует, что a подобен c.

rA(a, b) > k

rA(b, c) > k

}; rA(a, с) > k, (3)

где k ∈ [0; 1] - выбранное пороговое значение.

VI. Выводы и дальнейшие исследования

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

44

Рис. 5. Набор, в который попали импульсы из второй сериикалибровочных сигналов при r > 0.85

Для этого необходима их предварительная обработкапредложенным алгоритмом и проверка на нормаль-ность распределения значений. Разработано программ-ное обеспечение, реализующее предложенный подход ивизуализирующее его результаты для среза амплитуда-время. Данная работа является первым шагом к ре-шению важной прикладной задачи - нахождению ав-томатического способа оценки состояния объекта попараметрам потока АЭ-сигналов. В работе [7] былапредпринята попытка решения этой задачи методоманализа трендов поведения графиков АЭ-параметров.Тем самым отслеживалось состояние разрушаемогообъекта целиком с помощью усредняющих методов. Витоге результат был признан положительным, но не до-статочно точным, ввиду того, что в оценках оставалсяэлемент неопределенности. Поэтому теперь составленплан исследования, подразумевающий решение той жезадачи более тонким, составным методом. Этот методвключает в себя: тщательный выбор меры подобиясигналов (корреляционного коэффициента), возможнодля каждой характеристики сигнала своей меры; об-работка данных АЭ, если она требуется для возмож-ности применения выбранных коэффициентов; состав-ление корреляционной функции, способной устойчиворазделять на кластеры сигналы одной природы какна тестовых, так и на реальных данных, желательночтобы кластеры при этом не пересекались между собой;изучение физических свойств бетона и влияния на егосвойства температурной нагрузки, классификацию наоснове полученной кластеризации; дальнейшее уточне-

Рис. 6. Набор, в который попали почти все сигналы при r >0.65

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

Вид взаимной корреляционной функции, автомати-зирующий разбиение событий на кластеры:

F (x, y) =

n∑

i=0

gi(x, y) (4)

где x, y - волны, gi(x, y) - функции корреляции по i-ой характеристике сигнала, n - количество функций.В ходе дальнейшего исследования планируется дляеё уточнения провести подобный анализ других АЭ-характеристик из критериального многомерного про-странства. Подобрать для них меру подобия. Даннаяработа позволила определить первое из слагаемых, аименно установить g0(x, y) = rA(x, y), где rA - коэффи-циент Пирсона применительно к амплитудам сигналов

45

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

Список литературы

[1] В.И.Иванов, Г.А.Бигус, И.Э.Власов. Акустическая эмиссия.2-е изд. М.:Издательский дом "Спектр 2015. - 192 с.

[2] Ince, N. F., Kao, C. S., Kaveh, M., Tewfik, A., Labuz, J.F. (2010). A machine learning approach for locating acousticemission. EURASIP Journal on Advances in Signal Processing,2010, 15.

[3] Tat, H., Wu, J., Pike, M., Schaefer, J., Pauca, V. P., Li,R., Nickerson, W. (2017). Machine Learning for AcousticEmission Signatures in Composite Laminates. In Proceedings ofthe American Society for Composites—Thirty-second TechnicalConference.

[4] Schmidt, J., Baran, I., Ono, K. (2005). Acoustic emissionbehavior of failure processes of glass-fiber laminates undercomplex state of loading. J Acoust Em, 23, 173-180.

[5] О.С.Кузнецова, С.В.Сычёв, Ю.А.Фадин, С.Г.Чулкин. При-менение акустической эмиссии для исследования изнашива-ния хрупких материалов // Научно-технические ведомостиСПбГПУ. Наука и образование 3-2’2012. - С. 174-177.

[6] Растегаев И. А., Мерсон Д. Л. Актуальные проблемы проч-ности: монография. / Под ред. В. В. Рубаника. Витебск: УО«ВГТУ». – 2018 – Т. 2. – 402-427.

[7] BelousovaV,GrigorievaA(2018) Development of softwarepackage for data analysis of acoustic emission control.CEURWorkshop Proceedings of 3rd conference on SoftwareEngineering and Information Management, SEIM 2018, vol2135. Russian Federation, Saint Petersburg, pp 61–66, 14 April2018

[8] Rastegaev I. A. at al. Using acoustic emission signalcategorization for reconstruction of Wear development timelinein tribosystems: Case studies and application examples//Wear.-2018 (410-411), 83-92.

[9] В.А.Барат, А.Л.Алякритский. Метод статистической обра-ботки данных акустико-эмиссионного мониторинга на при-мере реактора гидроочистки Мозырского НПЗ // Журнал“В мире НК” № 4 [42]. - 2008. - С.52-55.

[10] L.Calabrese, G.Campanella, E.Proverbio – Use of ClusterAnalysis of Acoustic Emission Signals in Evaluating DamageSeverity in Concrete Structures – J. Acoustic Emission, 28(2010), pp. 129-141.

[11] Барат В.А., Чернов Д.В., Елизаров С.В. Применениеметодов обнаружения разладки потока данных для по-вышения помехоустойчивости метода акустической эмис-сии//Дефектоскопия. 2016. № 6. С. 60-70.

[12] Г.Хан, С.Шапиро. Статистические модели в инженерныхзадачах. М.: Мир, 1969. — 395 с.

[13] С.А.Васнев. Статистика. Москва: МГУП, 2001. — 170 с.[14] Е.В.Измайлова, Ю.В.Ваньков. Реализация источника

Су-Нильсена для проверки работоспособности акустико-эмиссионной аппаратуры // Вестник ЮУрГУ.Серия "Компьютерные технологии, управление,радиоэлектроника". 2014 - С. 41-42.

[15] ГОСТ Р 52727-2007. Техническая диагностика.Акустико-эмиссионная диагностика. Общие требования.М.:Стандартинформ, 2007. - 18 с.

[16] Пыко, Н. С., Пыко, С. А., Mаркелов, O. A., Ульяницкий,Ю. А. (2017). Статистический анализ показателей взаимнойдинамики двух стохастических процессов при амплитуднойрасстройке между ними. In Международная конференцияпо мягким вычислениям и измерениям (Vol. 1, pp. 93-96).Федеральное государственное автономное образовательноеучреждение высшего образования Санкт-Петербургский го-

сударственный электротехнический университет ЛЭТИ им.ВИ Ульянова (Ленина).

[17] Е.Ю.Нефедьев, В.П.Гомера, 0А.Д.Смирнов,А.В.Григорьева, Л.О.Стояновский. Выявление методомакустической эмиссии образования и развития трещин вметаллобетонном массиве в процессе тепловых испытаний// Современное машиностроение: Наука и образование:материалы 7-й международной научно-практическойконференции / Под ред. А.Н. Евграфова и А.А. Поповича.- СПб.: Изд-во Политехн. ун-та, 2018. - С. 332-348.

Acoustic signal data processing to apply Pearsoncorrelation criteria and their clustering.

Pavel Balagurin, Pavel Makarikhin, Anastasia Grigorieva

The article proposes the approach for clusteringof acoustic emission signals (AE), based on applyingthe Pearson coefficient to various signal characteristics.Determined which characteristics of signals possible usefor the Pearson correlation coefficient. An algorithm isproposed that prepares them for this and subsequentclustering. The described approach is implemented as asoftware product and tested on experiments. Conclusionsabout its applicability are drawn.

46

Табли

цаI.

Кор

реля

цион

наяматри

цаси

гнал

ов(наосно

везнач

ений

коэф

.Пир

сона

)дл

яка

либр

овки

от03.11.17.

№0

12

34

56

78

910

1112

1314

1516

1718

1920

01

0,57

00

00

00

0,90

00

00

00

00

00

00

10,

571

00

00,

630

00

00

00

00

00

00

00

20

01

0,77

0,60

00

0,78

00,

820,

790

00

00

0,62

00

00

30

00,

771

0,56

00,

890,

530

0,60

0,53

0,65

0,70

0,75

0,77

0,70

0,85

0,73

0,68

0,66

0,69

40

00,

600,

561

00

00,

860

00

00

00

00

00

05

00,

630

00

10

00

00

00

00

00

00

00

60

00

0,89

00

10

00

00,

670,

710,

810,

800,

720,

790,

800,

680,

630,

767

00

0,78

0,53

00

01

0,83

0,98

0,97

0,57

0,59

0,53

0,57

0,59

0,63

0,54

0,61

0,64

08

0,90

00

00,

860

00,

831

0,81

0,86

00

00

00

00

00

90

00,

820,

600

00

0,98

0,81

10,

980,

550,

570,

560,

580,

580,

630,

570,

600,

610,

5310

00

0,79

0,53

00

00,

970,

860,

981

00

00

00,

570

0,54

0,55

011

00

00,

650

00,

670,

570

0,55

01

0,98

0,95

0,97

0,98

0,94

0,94

0,98

0,98

0,98

120

00

0,70

00

0,71

0,59

00,

570

0,98

10,

970,

980,

990,

960,

950,

990,

990,

9713

00

00,

750

00,

810,

530

0,56

00,

950,

971

0,98

0,97

0,94

0,99

0,96

0,93

0,98

140

00

0,77

00

0,80

0,57

00,

580

0,97

0,98

0,98

10,

980,

960,

960,

970,

960,

9915

00

00,

700

00,

720,

590

0,58

00,

980,

990,

970,

981

0,95

0,96

0,99

0,98

0,98

160

00,

620,

850

00,

790,

630

0,63

0,57

0,94

0,96

0,94

0,96

0,95

10,

910,

950,

940,

9317

00

00,

730

00,

800,

540

0,57

00,

940,

950,

990,

960,

960,

911

0,95

0,91

0,96

180

00

0,68

00

0,68

0,61

00,

600,

540,

980,

990,

960,

970,

990,

950,

951

0,99

0,97

190

00

0,66

00

0,63

0,64

00,

610,

550,

980,

990,

930,

960,

980,

940,

910,

991

0,96

200

00

0,69

00

0,76

00

0,53

00,

980,

970,

980,

990,

980,

930,

960,

970,

961

Табли

цаII.

Кор

реля

цион

наяматри

цасигнал

ов(наосно

везнач

ений

коэф

.Пир

сона

)дл

яка

либр

овки

от17.11.17.

№0

12

34

56

78

910

1112

1314

1516

1718

1920

01

0,59

0,97

0,98

0,59

00

00,

590,

850,

660

00

0,64

00

00,

680

01

0,59

10,

950,

930,

980

0,72

0,71

0,99

00,

970,

770

00,

980,

780

00,

970

0,81

20,

970,

951

0,99

0,87

0,99

0,97

0,89

0,88

00,

920,

950,

980,

990,

920,

830,

990,

960,

950,

940,

823

0,98

0,93

0,99

10,

841

0,98

0,86

0,85

00,

890,

930,

991

0,89

00,

990,

990,

930,

990

40,

590,

980,

870,

841

00,

770,

780,

990

0,94

0,80

00

0,95

0,86

00

0,94

00,

885

00

0,99

10

10

00

00

00,

991

00

0,99

0,97

00,

990

60

0,72

0,97

0,98

0,77

01

0,97

0,77

00,

610,

970

00,

650,

730

00,

620

0,71

70

0,71

0,89

0,86

0,78

00,

971

0,78

0,95

0,58

0,97

00

0,62

0,77

00

0,59

00,

758

0,59

0,99

0,88

0,85

0,99

00,

770,

781

0,74

0,94

0,81

00

0,95

0,85

00

0,94

00,

879

0,85

00

00

00

0,95

0,74

10

00

00

00

00,

940

010

0,66

0,97

0,92

0,89

0,94

00,

610,

580,

940

10,

670

00,

990,

690,

900

0,99

00,

7211

00,

770,

950,

930,

800

0,97

0,97

0,81

00,

671

00

0,70

0,69

00

0,68

00,

6812

00

0,98

0,99

00,

990

00

00

01

0,99

00

0,98

0,96

00,

990

130

00,

991

01

00

00

00

0,99

10

00,

990,

970

0,98

014

0,64

0,98

0,92

0,89

0,95

00,

650,

620,

950

0,99

0,70

00

10,

730

00,

990

0,76

150

0,78

0,83

00,

860

0,73

0,77

0,85

00,

690,

690

00,

731

00

0,68

0,61

0,99

160

00,

990,

990

0,99

00

00

0,90

00,

980,

990

01

0,97

0,87

0,86

017

00

0,96

0,99

00,

970

00

00

00,

960,

970

00,

971

00,

970

180,

680,

970,

950,

930,

940

0,62

0,59

0,94

0,94

0,99

0,68

00

0,99

0,68

0,87

01

00,

7119

00

0,94

0,99

00,

990

00

00

00,

990,

980

0,61

0,86

0,97

01

0,57

200

0,81

0,82

00,

880

0,71

0,75

0,87

00,

720,

680

00,

760,

990

00,

710,

571

47

Модификация алгоритма декодирования

сверточных кодов для канала с замираниями

В. С. Пятаков,

Санкт-Петербургский Государственный Университет Аэрокосмического Приборостроения, Санкт-Петербург, Россия

Аннотация — В данной статье рассматривается

модификация алгоритма декодирования сверточных кодов

для каналов с замираниями, имеющих память. Рассмотрены

два случая, когда декодер принимает жесткие и мягкие

решения. Итогом исследования является построенный

график зависимости вероятности ошибки на бит от

отношения сигнал/шум на бит для обоих вариантов решений

декодера.

Ключевые слова — сверточное кодирование; алгоритм

декодироавния Витерби; вероятность ошибки; отношение

сигнал/шум.

I. ВВЕДЕНИЕ

Основной задачей цифровой системы связи является надежная передача информации по каналу связи. Канал может быть проводным или беспроводным, но независимо от его вида, он будет подвержен разного рода помехам, которые приводят к ошибкам на приемной стороне. Тогда можно разработать такую систему передачи данных, в которой будет использоваться канальное кодирование, например сверточное, для уменьшения вероятности ошибки при передаче. Сверточное кодирование широко используется в наше время для обнаружения и исправления ошибок в реальном времени. Его применяют в современных цифровых системах связи, таких как: телевидение в [1], спутниковые системы связи в [2], мобильной связи в [3] и др.

II. ОПИСАНИЕ СИСТЕМЫ ПЕРЕДАЧИ ДАННЫХ

A. Схема системы передачи данных

Цель системы передачи состоит в том, чтобы передать сообщение от источника к получателю. Рассмотрим основные элементы системы передачи информации, следуя [4].

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

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

дискретным или цифровым, иначе аналоговым или непрерывным.

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

Рис. 1. Схема системы передачи дискретных сообщений.

B. Модулятор

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

,,0

,0,2cos/2)(

иначе

TttfTEts

i

i

где E энергия сигнала, T период следования

сигналов, if центральная частота i-го сигнала, Tlf ii / ,

il целое, 1,...1,0 qi . Величины il должны быть

разными при различных i. При данном выборе центральных частот сигналы частотной модуляции будут ортогональны.

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

48

, ,0

,0 ,2cos2

)(00

0

иначе

TttfT

E

ts

, ,0

,0 ,2cos2

)(11

1

иначе

TttfT

E

ts

C. Канал передачи данных

Сигнал на выходе канала с аддитивным белым гауссовским шумом, случайной фазой и замираниями имеет вид

,

,,0

0),()2cos(2

)(

иначе

TttnfT

E

tri

где случайный фазовый сдвиг, )(tn аддитивный

белый гауссовский шум со спектральной плотностью 2/0N , случайный коэффициент передачи канала.

Распределение фазового сдвига задано равномерным, т.е. функция плотности вероятности величины имеет

вид

,0

,2

1

)( w.

,20

иначе

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

,22nnn yx

где

,1

,1

21

21

ynn

xnn

yy

xx

где коэффициент корреляции, yx , гауссовские

случайные величины с нулевым средним и единичной дисперсией.

D. Демодулятор

Оптимальный демодулятор для данной модели построен по схеме, основанный на [4], которая изображена на рисунке 2.

Опишем алгоритм приема сигнала демодулятором. С выхода канала поступает сигнал с аддитивным белым гауссовским шумом, случайным фазовым сдвигом и замираниями. Сигнал умножается на ортонормированные функции вида:

,

,,0

0),2cos(2

)(1

иначе

TttfTt

i

,,0

0),2sin(2

)(2

иначе

TttfTt

i

где T период следования сигналов, if центральная

частота i-го сигнала, Tlf ii / , il целое, 1,...1,0 qi .

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

Обозначим результат как ir , где .1,...,1,0 qi

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

Жесткие решения демодулятора выбирают максимум из полученных коэффициентов и по нему определят, какой сигнал передавался в канал. Выходом такого демодулятора является величина i , где .1,...,1,0 qi

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

Рис. 2. Схема демодулятора ЧМ сигналов в канале со случайной фазой с

мягкими и жесткими решениями.

E. Кодер

В качестве помехоустойчивого кодера был использован сверточный кодер со скоростью кода 1/n, изображенный на рисунке 3.

49

Рис. 3. Схема сверточного кодера со скоростью кода 1/n.

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

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

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

000 , 101 , .110

Скорость помехоустойчивого кода определяется как nkR / , где k число входных информационных

символов, n число передаваемых в канал передачи

данных символов за один такт работы регистра сдвига.

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

Генератор сверточного кода можно представить в виде многочлена. Рассмотрим пример такой записи в виде

,1)( 231 xxxxg 1)( 23

2 xxxg . В двоичном виде

данные многочлены будут иметь вид (1111, 1101). Будет данный разряд регистра участвовать в суммировании или нет, определяет 1 в соответствующей позиции генератора.

Данные представления эквиваленты и при наличии большого количества разрядов будут не удобны для компактной записи, поэтому принято обозначать генераторы сверточного кода в восьмеричном виде, что для нашего примера будет ).15,17(g

F. Декодер

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

Сверточный код удобно представлять в виде кодовой решетки или решетчатой структуры. Алгоритм Витерби можно описать как поиск оптимального пути, в решетке предложенный в [5].

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

кодовой решетки равно v2 , где v кодовое ограничение.

Узел в кодовой решетке определяется из состояния. Из каждого узла выходят два пути, соответствующие входному 0 и 1, и называются ребрами перехода в кодовой решетке. Каждому ребру соответствует метка, которая определяется выходными символами сверточного кодера. При декодировании для каждого узла в кодовой решетке вычисляется накопленная метрика и наиболее вероятный путь до данного узла.

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

Через определенное количество тактов, равное глубине просмотра решетки vL )10...7...5( , где v кодовое

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

Переходы в решетке и метки ребер задаются сверточным кодером. На рисунке 4 приведен пример структуры кодовой решетки для сверточного кодера с параметрами ).5,7(,1,2,2,2/1 gknvR

Рис. 4. Структура кодовой решетки для сверточного кодера с

).5,7(,1,2,2,2/1 gknvR

50

G. Эквивалентная модель канала

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

Рис. 5. Эквивалентная схема канала передачи данных.

С выхода эквивалентной модели канала в зависимости от бита на входе, будут поступать на каждом такте следующие величины:

при передаче 0

,

,)sin()cos(

21

211

20

200

sc

sc

nnr

nEnEr

при передаче 1

,)sin()cos(

,

21

211

20

200

sc

sc

nEnEr

nnr

где 1100 ,,, scsc nnnn гауссовские случайные величины с 0

средним и дисперсией 2/0N , равномерно

распределенная случайная величина от 0 до 2 ,

случайный коэффициент передачи канала.

III. МОДИФИКАЦИЯ АЛГОРИТМА ДЕКОДИРОВАНИЯ

A. Использование Жестких Решений Демодулятора

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

,)...|()...|(...

)...|()|()()(

1

)()2()1()()1()4()3()2(

)1()2()3()1()2()1(

N

Ln

LnnnnLLL eeeepeeeep

eeepeepepp e

где L связность марковской цепи.

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

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

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

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

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

ребер.

Рис. 6. Исходная структура кодовой решетки.

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

модифицированной кодовой решетки на рисунке 7.

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

),...,,( )()2()1( Neeee - вектор ошибочных символов,

),...,,( )()2()1( Nxxxx - метки на ребре, ),...,,( )()2()1( Nyyyy -

принятые из канала символы.

Рис. 7. Структура модифицированной кодовой решетки.

51

Если ошибки в канале независимые, то вместо расстояния Хэмминга, можно использовать безусловные вероятности появления символов ошибок )(ep , с учетом

этого, метрику ребра можно оценить, как сумму логарифмов этих вероятностей:

)(log)(log)( 21212121 epepepepeeyy .

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

B. Использование Мягких Решений Демодулятора

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

Преобразуем выходные величины из эквивалентной схемы канала, разложив их на sin и cos составляющие, при этом они примут следующий вид:

,,

,,2

ikn

iknxr

ck

ck

ck

,,

,,2

ikn

iknyr

sk

sk

sk

где 0/ NE , yx, н. г. с. в (0, 1/2), skck nn , н. г. с. в (0,

1), .1,...1,0 qk

Введем обозначение

,)0,....,0,2,0,....,0,0(

qi

s

где is это геометрическое представление сигнала, тут

ненулевая компонента стоит на i - ой позиции.

Тогда можем записать выход канала в векторном виде:

.

,

sis

cic

y

x

nsr

nsr

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

,),,...,,(1

0

)()()2()1(

q

iilN

ssssss

и на приемной стороне возникают последовательности

).,...,,(

),,...,,(

)()2()1(

)()2()1(

Nssss

Ncccc

rrrR

rrrR

Внутри последовательности cR «содержится» вектор

),...,,( )()2()1( Nxxxx , а внутри последовательности sR

«содержится» вектор ),...,,( )()2()1( Nyyyy . Векторы x и y –

независимые друг от друга случайные гауссовские векторы с нулевыми средними. Внутри вектора x и внутри вектора y имеется зависимость, которая задается корреляционной матрицей Λ, которая имеет следующий вид:

.,...,2,1, , )()()()( Nkmyyxx mkmkmk

Λ

В данной работе параметр mk равен mk)2/1( .

Правило оптимального приема последовательности имеет следующий вид:

),)()()()((maxargˆ Tss

Tcc sCρsρsCρsρs

s

здесь C квадратная матрица вида

,)2(2 1 ΛIΛC

где I единичная NN матрица, а векторы )(sρc и )(sρ s

определяются как

)),(),...,(),(()(

)),(),...,(),(()(

)()2()1(

)()2()1(

Nssss

Ncccc

ssssρ

ssssρ

и их компоненты вычисляются, как скалярные произведения q-мерных векторов вида

),,()( )()()( llc

lc srs ),()( )()()( ll

sl

s srs , .,...,2,1 Nl

Изменение решетки будет зависеть от значений матрицы C , так как матрица C имеет вид полосовой, ее

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

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

При увеличении коэффициента корреляции , ширина

полосы увеличивается, а при увеличении отношения сигнал/шум , ширина полосы сужается, матрица C

стремится к единичной.

Для понимания участия элементов матрицы C в

процессе принятия решения при декодировании с использованием алгоритма Витерби, распишем более подробно правило оптимального приема:

,)()(2)(

)()(2)(maxarg

при ,0 т.к

)()(2)(

)()(2)(maxarg

)()(2)(

)()(2)(maxarg

))()()()((maxargˆ

)(

1

)(0

2)(

1

0

)(

1

)(0

2)(

)(

1

)(0

2)(

1

0

)(

1

)(0

2)(

)(

1

)(1

0

02)(

1

0

)(

1

)(1

0

02)(

1

0

iks

L

i

ik

sk

s

s

N

k

ikc

L

i

ik

ck

c

i

iks

k

i

ik

sk

s

s

N

k

ikc

k

i

ik

ck

c

iks

k

i

ik

N

k

sk

N

k

s

ikc

k

i

ik

N

k

ck

N

k

c

Tss

Tcc

sCsCs

sCsCs

LiC

sCsCs

sCsCs

sCsCs

sCsCs

s

s

s

ssCρsρsCρsρs

52

где iC отличный от главной диагонали элемент

матрицы C , Li ,...,1,0 .

В зависимости от значения параметра L, количество состояний в кодовой решетке будет меняться по правилу

L2 , где кодовое ограничение сверточного кодера,

L параметр расширения матрицы C .

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

На рисунке 8 изображена измененная кодовая решетка, для случая, когда используется сверточный кодер с параметрами )5,7(,1,2,2,2/1 gknvR и параметр 1L .

Количество состояний в кодовой решетке в данном

случае будет 82 12 .

Рис. 8. Измененная кодовая решетка для мягких решений.

IV. МОДЕЛИРОВАНИЕ

Так как исследование проводилось для канала с памятью и были рассмотрены варианты жесткого и мягкого выхода демодулятора для сверточного кодирования, можно изобразить на графике полученные результаты обоих случаев. На рисунке 9 изображен график зависимости вероятности ошибки на бит от отношения сигнал/шум для сверточного кодера с параметрами )5,7(,1,2,2,2/1 gknvR для жесткого и

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

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

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

.

Рис. 9. График зависимости вероятности ошибки на бит от отношения

сигнал/шум для канала с замираниями с использованием

сверточного кодирования с параметрами

)5,7(,1,2,2,2/1 gknvR для мягких и жестких решений

демодулятора.

V. ЗАКЛЮЧЕНИЕ

В результате проделанной работы было сделано следующее:

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

Была найдена величина связности марковского приближения для аппроксимации распределения вектора ошибок в нашей системе;

Модифицированы алгоритмы декодирования сверточных кодов для мягких и жестких решений демодулятора для канала с зависимыми замираниями;

Построен график зависимости вероятности ошибки на бит от отношения сигнал/шум на бит для канала с зависимыми замираниями, где использовалось сверточное

53

кодирование с параметрами )5,7(,1,2,2,2/1 gknvR ,

для жестких и мягких решений демодулятора.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

[1] Быков В. В., Меньшиков К. В. Помехоустойчивые коды цифрового телевидения. М.: t-comm: телекоммуникации и транспорт, 2013.

[2] Банкет В. Л., Дорофеев В. М. Цифровые методы в спутниковой связи. — М.: Радио и связь, 1988.

[3] Громаков Ю. А. Стандарты и системы подвижной радиосвязи. М.: Эко-Трендз, 1998.

[4] Скляр Б. Цифровая связь. Теоретические основы и практическое применение М.: Издательский дом "Вильямс", 2003.

[5] Витерби А. Д., Омура Дж.К. Принципы цифровой связи и кодирования. М.: Радио и связь, 1982.

.

MODIFICATION OF THE CONVOLUTIONAL CODE

DECODING ALGORITHM FOR CHANNEL WITH FADING

V. S. Pyatakov

Saint-Petersburg State University of Aerospace Instrumentation, Saint-Petersburg, Russia

Abstract — This article discusses a modification of the

decoding algorithm for convolutional codes for fading channels

having a memory. Two cases are considered when a decoder

makes hard and soft decisions. The result of the research is a

plotted dependence of the bit error probability on the signal-to-

noise ratio per bit for both decoder decisions.

54

Монадические парсер-комбинаторы споддержкой симметричной альтерации и левой

рекурсииДанила БоровковJetBrains Research

Санкт-Петербург, Россия[email protected]

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

Ключевые слова—Objective Caml, монадические парсер-комбинаторы, левая рекурсия, мемоизация, стиль передачипродолжений

I. ВведениеМонадические парсер-комбинаторы [4], [5] представ-

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

Однако каноническая реализация монадическихпарсер-комбинаторов [4] обладает двумя фундамен-тальными недостатками: чувствительностью к левойрекурсии и несимметричностью альтерации. При этомдо недавнего времени [1] все способы устранения этихнедостатков были несовместимы с требованием компо-нентной разработки.

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

Предположим, что у нас есть компонента, в кото-рой определен парсер высшего порядка, распознающийпоследовательность операторов (каждый из которыхраспознается парсером-параметром ‘‘ s ’’ ):1 seq [ s ] : s (";" s)*

Этот парсер высшего порядка может быть исполь-зован для построения парсера операторов какого-либоконкретного языка:1 stmt: cond[stmt] | loop [stmt] | seq [stmt]

Как можно увидеть, парсер ‘‘ stmt ’’ оказался лево-рекурсивным. Таким образом, требование компоненти-зации не позволяет использовать статические методыдля устранения левой рекурсии.

Еще одной проблемой канонических парсер-комбинаторов является несимметричность альтерации:выражения A | B и B | A неэквивалентны, и, какправило, только одна из этих форм правильноспецифицирует язык. Условие, которому должнаудовлетворять “правильная” альтерация, таково:

∀φ ψ : A→ φ ∧B → ψ ⇒ ∀ω 6= ε : ψ 6= φω

Иными словами, первый член альтерации не долженраспознавать ни один собственный префикс ни одногослова, распознаваемого вторым членом (неформальноэто правило можно выразить девизом “longest matchfirst”). В следующем разделе мы объясним происхож-дение такого феномена, а пока заметим, что в случаезамкнутого описания можно подобрать правильныйпорядок альтернатив. Однако при переходе к компо-нентному случаю ситуация меняется: даже если парсе-ры A и B, реализованные в разных компонентах, обаудовлетворяют инварианту “longest match first”, можетоказаться, что как A | B, так и B | A его нарушают,что делает невозможным сборку правильного парсерабез изменения реализации компонент.

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

55

II. Контекст работы

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

A. Монадические парсер-комбинаторы

Парсер-комбинаторы в широком смысле можно отне-сти к ряду наиболее устойчивых идиом в функциональ-ном программировании. Техника парсер-комбинаторовопирается на идею представления нетерминалов функ-циями, которые их распознают, а грамматических при-митивов — функциями высшего порядка (комбинато-рами), которые конструируют новые распознавателииз существующих. В более узком смысле понятие мо-надических парсер-комбинаторов было введено в рабо-тах [4], [5]. Мы рассмотрим здесь ряд вариантов этойтехники, начиная с простейших распознавателей и кон-чая собственно монадическими парсер-комбинаторами,поддерживающими пользовательскую семантику. Да-лее для простоты мы будем считать, что входной потокдля анализа представлен списком символов.

В простейшем случае распознаватель — это функ-ция, которая получает входной поток и пытается нечтораспознать в его начале. Важным соображением явля-ется то, что, во-первых, входной поток может не содер-жать того, что ожидалось, и, во-вторых, распознава-ние, вообще говоря, может быть неоднозначным. Такимобразом появляется естественный “контракт” на типраспознавателя — это функция, которая преобразуетвходной поток в список остаточных потоков. Если этотсписок пуст, то распознавание окончилось неудачей.Рассмотрим некоторые элементарные распознаватели:

1 let empty s = [ s ]2 let sym c = function3 | s : : ss when s = c → [ ss ]4 | _ → [ ]

Здесь empty соответствует распознавателю пустойстроки, а sym с — распознавателю единственного сим-вола ‘‘ c ’’ . Простейшими комбинаторами являютсякомбинаторы последовательного разбора seq и альтер-нативы alt :

1 let seq x y s = flatten @@map y (x s)2 let alt x y s = x s @ y s

Здесь flatten — функция, преобразующая списоксписков в простой список, @@ — инфиксное при-менение, @ — конкатенация. С помощью этих двухосновных распознавателей и двух комбинаторов по-тенциально можно описать распознаватель достаточноширокого класса языков. С практической точки зре-ния, однако, представляют интерес не распознаватели,а анализаторы, которые не просто проверяют соответ-ствие входного потока грамматике, но и вычисляютнекоторое значение в результате такого сопоставления.

Не составляет труда, используя данную идею, перепи-сать два основных распознавателя:

1 let empty v s = [(v, s ) ]2 let sym c = function3 | s : : ss when s = c → [ ( c , ss ) ]4 | _ → [ ]

Теперь наравне с остатком входного потока каждыйпримитив возвращает семантическое значение — неко-торое пустое значение ‘‘ v ’’ в случае empty и собствен-но распознанный символ в случае sym. Кроме того,следующий новый комбинатор позволяет использоватьпользовательскую семантику, заданную функцией:

1 let sema x f s =2 map (fun (a, ss ) → ( f a , ss )) (x s)

Здесь ‘‘ x ’’ — парсер, ‘‘ f ’’ — заданная пользова-телем в виде функции семантика, ‘‘ s ’’ — входнойпоток. Фактически, этот комбинатор применяет поль-зовательскую функцию к каждому семантическомузначению, которое возвращает парсер ‘‘ x ’’ .

Интересно, что реализация комбинатора alt сохра-няется в прежнем виде. Что же касается комбинато-ра seq, то для его реализации существует нескольковариантов. Один из них, собственно, и называетсямонадическим:

1 let seq x y s =2 flatten @@map (fun (a, ss ) → y a ss ) (x s)

Здесь ‘‘ y ’’ — парсер высшего порядка, которыйпараметризован семантическим значением, которое вы-числяет парсер ‘‘ x ’’ . С точки зрения монадическойидиомы seq выполняет роль bind, empty — return , аalt — plus.Описанные здесь простейшие монадические

комбинаторы обладают рядом известных недостатков.Во-первых, они не допускают использованиялевой рекурсии. Действительно, описание видаlet rec x s = (seq x ...) s означает, что анализвходного потока с помощью парсера ‘‘ x ’’ сводится канализу этого же потока с помощью этого же парсера.Иными словами, леворекурсивные описания в стилемонадических парсер-комбинаторов зацикливаются.Кроме того, сложность разбора в худшем случаеявляется экспоненциальной из-за реализациикомбинатора alt . Этот недостаток может бытьисправлен альтернативной реализацией, при которойпредпочтение отдается первому парсеру:

1 let alt x y s =2 match x s with3 | [ ] → y s4 | z → z

Но в этом случае описание парсеров становитсячувствительным к порядку альтернатив: действитель-но, если нечто, распознаваемое ‘‘ x ’’ , является соб-ственным префиксом чего-то, распознаваемого ‘‘ y ’’ ,то до применения ‘‘ y ’’ дело не дойдет и анализ,

56

скорее всего, закончится неочевидной и непонятнойдля пользователя ошибкой. Поэтому на практике дляприменения монадических парсер-комбинаторов сло-жилось два правила — не использовать левую рекур-сию и придерживаться принципа “longest match first”:в альтернативе первым всегда должен идти парсер,который распознает более длинную подстроку входногопотока. Заметим, что данные недостатки характерныи для парсер-комбинаторов в целом, безотносительноих монадичности.

B. Мемоизация и передача продолженийПодходам к решению сформулированных в конце

предыдущего раздела проблем комбинаторного разбо-ра посвящена обширная литература. Так, существу-ют парсер-комбинаторы, которые используют алгорит-мы, способные распознавать все контекстно-свободныеграмматики (например, алгоритм Эрли [12] или обоб-щенный левосторонний разбор (GLL) [13]). Эти ком-бинаторы нечувствительны ни к левой рекурсии, ни кпорядку следования альтернатив. Однако интеграцияпользовательских семантик и монадичности в данныекомбинаторы является открытой проблемой, равно каки обеспечение композиционности описаний. С дру-гой стороны, предпринимались попытки применитьустранение левой рекурсии к комбинаторному описа-нию [15]. Однако в ситуации парсеров высшего поряд-ка само установление факта левой рекурсии являет-ся алгоритмически неразрешимой проблемой: парсерlet p x = seq x ... леворекурсивен, если p x = x. Вработе [7] поддержка левой рекурсии достигалась тем,что цепь леворекурсивных вызовов искусственно пре-рывалась в тот момент, когда её глубина превосходиладлину входного потока. Однако не всегда длина вход-ного потока известна статически.

Другим естественным направлением является ис-пользование мемоизации (собственно, мемоизацию ис-пользует и алгоритм Эрли). В ряде работ [6], [8]–[10] исследовался формализм PEG (Parsing ExpressionGrammars), для которого возможна комбинаторнаяреализация, и было показано, что с его помощьюможно распознавать в том числе и леворекурсивныеопределения. Однако в основе данного подхода лежитпринципиальное использование несимметричной альте-рации, что серьезно затрудняет компонентизацию.

Еще одним подходом является одновременное ис-пользование мемоизации и продолжений. В работе [11]предлагаются комбинаторы, исправляющие ошибки.Однако данные комбинаторы не поддерживают левуюрекурсию. Наконец, в работе [14] показано, как с помо-щью мемоизации и передачи продолжений построитьалгоритм анализа, распознающий все КС-языки. На ос-нове этого алгоритма сравнительно недавно была раз-работана библиотека парсер-комбинаторов Meerkat [1]для языка Scala. Анализаторы, построенные с помо-щью этой библиотеки, возвращают сжатый лес раз-

бора (SPPF, Shared Packed Parse Forest). Полученныекомбинаторы нечувствительны к порядку альтернативи левой рекурсии, однако не поддерживают пользова-тельскую семантику и не являются монадическими.

C. Библиотека OstapБиблиотека Ostap [2] представляет собой реализацию

монадических парсер-комбинаторов для языка OCaml.При её разработке преследовалась цель обеспечитьвозможность сборки парсеров из раздельно компили-руемых строго типизированных компонент. Для избе-жания неудобств, связанных с использованием парсер-комбинаторов напрямую, библиотека определяет син-таксическое расширение языка OCaml, предоставляю-щее предметно-ориентированный язык (DSL, DomainSpecific Language) для описания парсеров. Это расши-рение очень схоже с формой Бэкуса-Наура для описа-ния грамматик, оно интуитивно понятно и очень про-сто в использовании. Далее представлен пример пар-сера, написанный с помощью DSL библиотеки Ostap:1 ostap (2 primary: c :IDENT {‘Var c};3 exp:4 e :primary "+" p:exp {‘Add (e , p)}5 | primary;6 main: exp −EOF7 )

Здесь определен парсер выражений, состоящих изидентификаторов и правоассоциативной операции сло-жения. При описании парсеров пользователь можетзадать свою семантику разбора в фигурных скобках.Для целей компонентизации в библиотеке Ostap ис-пользуется объектно-ориентированное представлениевходного потока, и для описания разбора токеновIDENT и EOF в данном примере у объекта входно-го потока, переданного этому парсеру, должны бытьреализованы методы getIDENT и getEOF, которыеописывают лексический анализ для соответствующихлексем. Учитывая тот факт, что типизация объектовв OCaml структурна (а не номинальна), такой подходдает возможность описывать парсеры-компоненты, неимеющие общего типа входного потока. При комби-нировании этих компонент тип требуемого входногопотока выводится автоматически.

Библиотека Ostap была использована для реали-зации компилятора семейства обероноподобных язы-ков [3]; при этом, действительно, готовые анализаторысобирались из прекомпилированных компонент.

III. Реализация новых комбинаторовПредложенные в данной работе парсер-комбинаторы

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

57

• по сравнению с Meerkat:– изменился тип продолжений из-за необходимо-

сти обеспечения передачи монадических зна-чений;

– мемоизация учитывает монадические значе-ния и параметры парсеров высшего порядка.

• по сравнению с Ostap:– все базовые комбинаторы переписаны в форму

передачи продолжений;– введены явно-полиморфные типы методов для

объектов, представляющих входной поток;– использована генерируемая неподвижная точ-

ка для группы взаимно-рекурсивных опреде-лений парсеров.

Далее мы более подробно опишем реализацию суще-ственных составных частей новых комбинаторов.

A. ТипыПри определении типов мы отталкивались от реа-

лизации парсер-комбинатора seq, потому что именнов нем выражается монадичность парсеров и наиболееявно используются продолжения (реализация комби-натора alt интереса не представляет, потому что онане была изменена при адаптации алгоритма). Реализа-ция seq в библиотеке Meerkat предполагает передачувторого парсера в качества аргумента первому:1 fun x y s k → x s (kmemo (fun s ’ → y s ’ k))

Здесь ‘‘ x ’’ и ‘‘ y ’’ — парсеры, выступающие в ка-честве аргументов seq, ‘‘ s ’’ — входной поток, ‘‘ k ’’ —продолжение, kmemo — примитив мемоизации.

В монадическом случае первый парсер должен пе-редавать второму свой результат с помощью мона-дического значения. Так как первый парсер передаетуправление второму с помощью вызова продолжения,то при этом вызове необходимо передавать и монадиче-ское значение. Поэтому для продолжений был добавленеще один аргумент — монадическое значение ‘‘ a ’’ , икомбинатор seq приобрел следующий вид:1 fun x y s k → x s (kmemo (fun a s ’ → y a s ’ k))

Теперь перейдем к описанию типов. Прежде всего,введем следующий тип:1 type (α , β) tag =2 Parsed of α * β option3 | Failed of β option4 | Empty

Этот тип описывает три возможных результата при-менения парсера к входному потоку. Parsed означаетуспешный результат анализа и содержит некоторую ин-формацию, полученную в процессе анализа, и возмож-ную информацию об ошибке. Failed означает неудачуи содержит возможную информацию об ошибке. Emptyозначает, что ничего не произошло, парсер не былзапущен. Далее этот тип будет использоваться специ-альным образом, для чего введем следующий синоним:

1 type (σ , α , β) result = (α * σ , β) tag

Здесь α — это тип значения, полученного в процессеанализа с помощью пользовательской семантики, σ —тип входного потока, β — тип возможной ошибки.

Тип продолжения k вводится следующим образом:

1 type (α , σ , β , γ) k =2 α → σ → (σ , β , γ) result

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

Наконец, тип парсера определяется так:

1 type (α , σ , β , γ) parser =2 σ → (α , σ , β , γ) k → (σ , β , γ) result

Парсер — это функция от двух аргументов: входногопотока и продолжения. Здесь σ — тип входного потока,α — тип монадического значения, β — тип результата,γ — тип ошибки.

B. Мемоизация монадических парсер-комбинаторовМемоизация в библиотеке Meerkat использует три

функции: kmemo, memo и memoresult.Функция kmemo имеет один аргумент — продол-

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

Функция memo имеет один аргумент — парсер‘‘ p ’’ — и выполняет его мемоизацию. Ключевая частьмемоизации заключается в вызове функции memoresultна частично-примененном к входному потоку ‘‘ p ’’ ,об этой функции будет рассказано ниже. Для того,чтобы вызов memoresult происходил только один раз вреализации memo, используется таблица для хранениярезультатов запусков. Реализация функций kmemo иmemo не была изменена по сравнению с библиотекойMeerkat, поэтому обратимся к функции memoresult,которая претерпела некоторые изменения.

Алгоритм мемоизации в целом изменен не был —так же используются две таблицы: с продолжениямии с параметрами продолжений. При появлении новогопродолжения происходит сохранение его в соответ-ствующую таблицу и вызов его на всех сохранен-ных параметрах. При вызове какого-либо продолже-ния частично-примененного парсера ‘‘ p ’’ на новыхпараметрах происходит сохранение этих параметров ивызов всех сохраненных продолжений на них:

1 let memoresult = fun p →2 let ss : ( ’stream * ’a) l i s t ref = ref [ ] in3 let ks : K.ks ref = ref K.empty in

58

4 fun k →5 i f это первый запуск p6 then (7 ks := K. singleton k;8 p (fun a s →9 если (s, a) не было в ss10 записываем ее в ss и11 запускаем на ней все продолжения из ks12 иначе возвращаем Empty13 )14 )15 else (16 ks := K.add k !ks ;17 запустить k на всех сохраненных в ss парах18 )

Некоторые изменения, однако, были неизбежны. Вкачестве переменной ‘‘ ss ’’ вместо списка входныхпотоков, на которых вызывались продолжения мемо-изироваемого парсера, был использован список пар извходного потока и монадического значения, потому чтотеперь продолжения вызываются на двух аргументах.Для получения структур, которые можно модифициро-вать в продолжениях были использованы ссылки, какпри описании таблицы ‘‘ ss ’’ , так и ‘‘ ks ’’ .

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

Для хранения продолжений был разработан модульK, который помимо самого хранилища продолженийK.ks предоставляет несколько полезных функций, на-пример функции K. singleton и K.add, которые позво-ляют создавать новое хранилище с одним продолжени-ем и добавлять продолжение в уже существующее хра-нилище соответственно. Для правильного сравненияпродолжений между собой необходимо использоватьвнутренний модуль Obj и функцию неконтролируемогопреобразования типов Obj.magic. Введение дополни-тельного модуля позволило инкапсулировать исполь-зование небезопасных примитивов.

C. Реализация комбинатора opt

Помимо стандартных парсер-комбинаторов alt иseq в библиотеке Ostap используется еще несколькоудобных комбинаторов. Одним из таких является ком-бинатор opt, который имеет один аргумент — парсер.На выходе opt выдает парсер, который либо не делаетничего, либо совершает разбор с помощью парсера-аргумента, и возвращает результат типа α option.

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

1 let opt p = alt p empty

Это связано с тем, что использование комбина-тора alt подразумевает, что типы обоих парсеров-аргументов и результирующего парсера должны сов-падать, но в случае opt это не так. Правильная реали-зация такова:

1 let opt = fun p → memo (fun s k →2 let s ’ = Oo.copy s in3 let newk = kmemo (fun a s → k (Some a) s) in4 (p s newk) <@> (k None s ’))

По существу здесь использована специализирован-ная версия реализации комбинатора alt . Так как про-должение ‘‘ k ’’ из-за неподходящего типа не можетбыть передано парсеру ‘‘ p ’’ , для его запуска исполь-зуется новое продолжение ‘‘ newk’’ . В его реализациипроисходит необходимое изменение типа монадическо-го значения с некоторого α на α option и мемоиза-ция нового продолжения с помощью функции kmemo.Затем это продолжение используется для запуска пар-сера ‘‘ p ’’ . Вариант пустого разбора комбинатора optреализуется с помощью вызова продолжения ‘‘ k ’’ смонадическим значением None, которое показывает,что opt не разобрал ничего.

D. Явно-полиморфные типы

Как уже было сказано в обзоре, входной поток вOstap представляется с помощью объекта, и методыэтого объекта вида getTOKEN описывают лексическийанализ соответствующих лексем. Из-за того, что втипах методов объекта не может быть свободных пе-ременных, возникла необходимость использовать явно-полиморфные типы:

1 < getCONST :2 β . (α → ’ se l f → ( ’ self , β , γ) result ) →3 ( ’ self , β , γ) result ;4 . . >

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

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

E. Генерируемая неподвижная точка

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

59

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

1 ostap (x : "a"; y[ z ] : y[ z ] "+" x | x)23 ⇓45 let (x, y) =6 let generated_fixpoint = . . . in7 let x2 = fun x y → ostap ("a")8 and y2 z = fun x y → ostap (y[ z ] "+" x | x)9 in generated_fixpoint x2 y2

Здесь описывается два парсера ‘‘ x ’’ и ‘‘ y ’’ , и по-этому генерируется двуместный комбинатор неподвиж-ной точки. Помимо этого для работы комбинаторанеподвижной точки необходима генерация освобожден-ных от рекурсивных вызовов парсеров ‘‘ x2 ’’ и ‘‘ y2 ’’ .Как можно видеть, функция ‘‘ x2 ’’ имеет два допол-нительных аргумента по сравнению с ‘‘ x ’’ , которыедля простоты называются ‘‘ x ’’ и ‘‘ y ’’ . При этомтела функций ‘‘ x ’’ и ‘‘ x2 ’’ никак не отличаются.Таким образов все рекурсивные вызовы парсеров ‘‘ x ’’и ‘‘ y ’’ в описании этих самых парсеров заменены навызовы аргументов ‘‘ x2 ’’ и ‘‘ y2 ’’ . Именно в такомвиде комбинатор неподвижной точки принимает навход обрабатываемые функции.

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

IV. Тестирование и апробацияОписанная в предыдущих разделах модификация

монадических парсер-комбинаторов обладает следую-щими преимуществами по сравнению с исходной реа-лизацией:

• поддержкой произвольного порядка альтернативбез использования правила “longest match first”;

• поддержкой левой рекурсии;• более высокой производительностью за счет мемо-

изации.Все эти свойства были подтверждены эксперимен-

тально.

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

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

A. Нечувствительность с правилу “longest match first”В эталонном компиляторе, упомянутом выше, есть

фрагмент, где нарушение правила “longest match first”приводит к возникновению труднообнаружимых отло-женных ошибок. Этот фрагмент локализован в реали-зации парсера выражений:1 Ostap. Util . expr [ |2 ‘Lefta , ["!!" ] ;3 ‘Lefta , ["&&" ] ;4 ‘Nona , ["=="; "!="; "<="; "<"; ">="; ">" ] ;5 ‘Lefta , ["++"; "+"; "-" ] ;6 ‘Lefta , ["*"; "/” ; "%"] | ]

В данном фрагменте используется утилитаUtil . expr. Она позволяет описывать выраженияс бинарными и унарными операциями разногостаршинства и ассоциативности с помощьюпростых конструкций. Строка, начинающаяся с‘Nona, описывает неассоциативные операции ввыражениях. В реализации утилиты Util . expr онабудет преобразована в несколько последовательныхальтернатив из парсеров соответствующих строк-элементов массива. Поэтому в данном случае раньшенеобходимо было следовать правилу “longest matchfirst”, хотя использование альтернативы и скрытоот пользователя с помощью утилиты Util . expr. Напрактике это означало, что порядок знаков операцийимел значение: например, нельзя было указать знакоперации “<” раньше знака операции “<=”, посколькустрока “<” является подстрокой “<=”. То же самоебыло верно и для знаков “++” и “+” ниже по текстуфрагмента.

Для проверки того, что от правила “longest matchfirst” можно отказаться при использовании реализации

1https://compscicenter.ru/courses/compilers/2018-spring

60

парсеров в новой версии библиотеки, знаки “>” и “>=”были переставлены местами. Оказалось, что, действи-тельно, такие парсеры работают, причем работают содинаковой скоростью для любого порядка знаков.

B. Использование леворекурсивных описанийОписание оператора “;” также явняется интересным

местом в реализации парсера эталонного компилятора:

1 parse :2 s :stmt ";" ss : parse {Seq (s , ss)}3 | stmt;

В этом листинге представлена реализациия парсераparse , который анализирует последовательности вида‘‘ stmt ; stmt ; ...; stmt ’’ . При использовании старойверсии Ostap необходимо было использовать именноэту нелеворекурсивную реализацию — самым левымнетерминалом должен был быть stmt, а не parse .Реализация, представленная ниже, ранее не работалаименно по этой причине:

1 parse :2 ss : parse ";" s :stmt {Seq (ss , s)}3 | stmt;

Здесь парсер parse описан леворекурсивно — самымлевым нетерминалом является parse — поэтому проис-ходило зацикливание алгоритма разбора.

Для проверки новой версии библиотеки была исполь-зована вторая реализация, при этом парсер осталсяработоспособным и время его работы не изменилось.

C. Повышение производительностиДля сравнения производительности старой и новой

версии библиотеки была использована та же реали-зация эталонного компилятора, что и в предыдущихразделах. В качестве тестового набора использовалисьсгенерированные программы вида ‘‘ x1 := {expr }’’для разной длины выражения. Были проведены такжезамеры и для строк с несколькими выражениями, тоесть вида ‘‘ x1 := {expr }; ... xn := {expr }’’ , однакооказалось, что время работы на таких входах про-порционально времени работы для одного присваива-ния, поэтому для оценки производительности такиетесты далее не использовались. Тем не менее тести-рование на нескольких присваиваниях выявило инте-ресное свойство новой реализации: увеличение числаприсваиваний пропорционально увеличивает глубинурекурсивных вызовов для новой версии (при исполь-зовании старой версии такого не наблюдается). Этосвязано с тем, что новая версия использует гораздоболее глубокие рекурсивные вызовы, так как парсер-комбинатор seq реализован таким образом, что второйпарсер запускается в продолжении, а значит требуетдополнительное место на стеке. Поэтому при исполь-зовании новой версии необходимо правильно конфи-гурировать среду времени исполнения для выделениядостаточного количества памяти под стек.

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

Размер Время разбора, cек.примера Старая версия Новая версия

100 0,25 0,13200 0,52 0,24400 2,13 0,56800 9,19 1,971200 21,93 4,611600 42,65 9,50

V. Заключение

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

Список литературы

[1] A. Izmaylova, A. Afroozeh, and T. van der Storm T. Practical,General Parser Combinators // PEPM ’16 Proceedings of the2016 ACM SIGPLAN Workshop on Partial Evaluation andProgram Manipulation, pp. 1–12, 2016.

[2] D. Boulytchev. Ostap: Parser Combinator Library and SyntaxExtension for Objective Caml, 2009.

[3] D. Boulytchev. Combinators and Type-Driven Transformers inobjective caml // Science of Computer Programming, Vol. 114,Elsevier, pp. 57–73, 2015.

[4] G. Hutton and E. Meijer. Monadic Parser Combinators //Technical Report NOTTCS-TR-96-4, Department of ComputerScience, University of Nottingham, 1996.

[5] Ph. Wadler. Monads for functional programming // Proc.Marktoberdorf Summer school on program design calculi, 1992.

[6] L. Tratt. Direct Left-Recursive Parsing Expression Grammars// Technical Report EIS-10-01, Middlesex University, 2010.

[7] R. A. Frost, R. Hafiz, and P. Callaghan. Parser Combinatorsfor Ambiguous Left-Recursive Grammars // Practical Aspectsof Declarative Languages, PADL’08, 2008.

[8] A. Warth, J. R. Douglass, and T. Millstein. Packrat Parsers CanSupport Left Recursion // Partial Evaluation and Semantics-based Program Manipulation, PEPM ’08, pp. 103–110, 2016.

[9] B. Ford. Packrat parsing: simple, powerful, lazy, linear time,functional pearl // ACM SIGPLAN Notices, Vol. 37, No. 9,ACM, 2002.

[10] B. Ford. Parsing expression grammars: a recognition-basedsyntactic foundation // ACM SIGPLAN Notices, Vol. 39, No.1, ACM, 2004.

[11] S. D. Swierstra. Combinator parsers: From toys to tools //Electronic Notes in Theoretical Computer Science, Vol. 41, No.1, Elsevier, pp. 38–59, 2001.

[12] D. Peake, Sean Seefried. A Combinator Parser for Earley’sAlgorithm, 2004.

[13] D. Spiewak. Generalized Parser Combinators, 2010.[14] M. Johnson. Memoization in Top-down Parsing // Comput.

Linguist., Vol. 21, No 3, 1995.[15] A.Baars, D.Swierstra, M.Viera, Marcos. Typed Transformations

of Typed Grammars: The Left Corner Transform // ElectronicNotes in Theoretical Computer Science, Vol. 253, No 7, 2010.

61

Monadic parser-combinators supporting left-recursionand symmetric alteration

Danila Borovkov; JetBrains Research; Saint Petersburg,Russia; [email protected]

In this article I describe a library of monadic parser-combinators, which allows to build parsers withoutstandart restrictions for this technique: asymmetricalalteration and ban of use left-recursive specifications.These features are especially important to support in caseof componental development of parsers. Main concepts,problems and aprroaches in this area are described,implementation of monadic parser-combinator library ispresented and results of aprobation are discussed andanalyzed. From technical point of view this library is analternative implementation of existing parsing tool, whichmaintains main interfaces of mentioned tool.

62

Survey on blockchain technology, consensusalgorithms, and alternative distributed technologies

Aleksey Fefelov∗, Nikita Mishin‖ , Vyacheslav Bushev‡, Iakov Kirilenko§ and Daniil Berezun¶Mathematics and Mechanics Faculty, Saint Petersburg State University, Russia

[email protected], ‖[email protected], ‡[email protected][email protected], ¶[email protected]

Abstract—Since its origination, the blockchain technology hasattracted tremendous attention from mass media, developers,scientific community and industry. This influenced the fact that itbegan to actively and quickly grow and develop — new platforms,consensus mechanism, alternative technologies started to appear.There are many information sources about them but they allsuffer in one way or another — they are either excessive technicalarticles or a shallow descriptions. Therefore, as consequence ofsuch immense growth of technology and projects around it, thesystematization of "blockchain universe" becomes urgent.

The paper provides such taxonomy primarily based on histor-ical motivation and goals that induce to create new algorithms,systems and technologies.

I. INTRODUCTION

For the first time, the term “blockchain” appeared as a nameof a distributed database, implemented in BITCOIN systemby S. Nakamoto [1]. The original blockchain in the form asit was initially presented may be considered as an extendeddistributed digital version of a classical banking promissorynote. More precise, blockchain is a linked list of transactionsthat stores an entire system transactions history.

The key feature of the technology is that it provides historyimmutability, i.e. an immutability of blocks of transactions,and, in most cases, an ability to verify the authenticity of acurrent state of the system by any network participant (akanode).

There are two essentially different kinds of blockchains:those where any node can write to, read from and anyone canjoin the network are known as public or permissionless, anopponent is called private or permission.

Since the original Bitcoin blockchain has been proposeda number of different consensus algorithms were developed,which can be divided into two main groups: proof-based(see V) and voting-based (see VI). The former is used mainlyin private blockchains, and the latter is preferred in publicones.

When proof-based consensus is used it is possible to encour-age network participants, for example, a corresponding com-mission reward is used for a block creation [1, 2]. However,consensus algorithms of this kind are too energy-consumingto be used in private networks. But for the voting-basedalgorithms, as a common practice, there is no obvious solutionof encouraging network participants, because everyone makesan equal contribution, and one must either pay to everyoneinvolved in consensus problem solving, which would not

be very profitable from an economic point of view. At thesame time, these algorithms consume significantly less power,known to work well with a smaller number of nodes and aremore resistant to attacks[3].

The blockchain was designed as an open, transparent,and independent network, where all participants have equalrights [1]. And the first application for it was limited to afinance sector and few simple use cases. Limited applicationarea of the first blockchain realization, as well as constraints intransaction execution logic and scalability issues, were drivingfactors, which led to an implementation of new protocols,systems, and architectures. Also, due to an interest to thenew technology large companies have developed more cen-tralized forms of the blockchain [4], while maintaining thedistribution of data. This new excessive development, in turn,brought to the stage the problem of interaction among differentblockchains (interoperability problem) that also is solved bynew protocols and systems.

Thus, a systematic study of the blockchain is necessary.Recently, several surveys on blockchain have been pro-

posed. However they provide a rather narrow perspective ofprotocols, consensus algorithms, and existing alternatives. Forinstance, [5, 6] considers consensus mechanisms, ignoringplatforms as well as [7], where a technical overview ofblockchain technologies and related topics is provided. [8]is focused on security issues and [9] surveys algorithms thatare related to the enterprise. Also, some works are constrictedto concrete protocols and their analysis, e.g. [10, 11].

In contrast, this paper considers blockchain alternativeswhile providing a systematic study dedicated to some promis-ing and already well-known platforms. Also while [12]follows a similar approach, it is focused on permissionedblockchains in context of consensus protocols whereas wealso describe public ones specifying industry-focused char-acteristics. We believe that our paper is the first one thatprovides such a comparable description of platforms. In addi-tion, the paper provides an intuitive description of consensusalgorithms.

The paper is organized as follows. Section II describesthe most popular blockchain networks and platforms. SectionIII provides its alternatives. Section IV gives a classificationof consensus algorithms. Section V and Section VI presentsome proof-based and voting-based consensus algorithms,respectively. In Section VII we discuss possible research gaps

63

and future work. Section VIII concludes the paper.

II. BLOCKCHAIN SYSTEMS AND PLATFORMS

In this section, we provide an overview of main blockchainsystems and platforms. More systems and platforms may befound in a property table on Fig. 1. The table consists ofseveral categories that characterize projects. Some of them are:• Scalability — a number of transactions that can be

processed per second;• Smart contracts — a presence and a possibility of smart

contract creation;• Governance — who makes key decisions about policy,

standards, updating and maintaining a project.Blockchain was designed to solve several problems:• A third party (a middle man) when making financial or

other operations involving two parties;• The trust in potentially unsafe decentralized network;• High transaction fees cost.

The First blockchain system which solved problems above wasBITCOIN.

A. BITCOIN

As mentioned before, described in 2008 [1] by a person ora group of people called S. Nakamoto, BITCOIN has gainedpopularity over the years. BITCOIN, an electronic coin, isa decentralized digital payment system. It is the first openpublic blockchain. Nodes1 in BITCOIN system communicatingthrough peer-to-peer network2. Each user has a wallet [13]that contains a set of private and public keys generated bydigital signature algorithm (currently ECDSA [14]). Thesekeys fully define users. As a rough analogy username andits password can be considered as a pair of public and privatekeys correspondingly. Public keys define BITCOIN addressesto which users could send coins. Each user could have manybitcoin addresses: he secretly stores these pairs of keys in oneor more of his wallets. Best practices of BITCOIN recommendusing different bitcoin addresses for each new transaction inorder to preserve pseudonymity3.

Electronic payments are done by creating transactions thatmove coins from one address to another. The coin is repre-sented as a chain of digital signatures. Sender digitally signsprevious transaction hash with his private key and next ownerpublic key and then adds it to the end of the chain. Usingsenders public key one may validate the transaction by runningthrough the coin history, a so called chain of ownership. Thisconfirms that the sender owns the coins and has not alreadyspent them.

Each transaction in BITCOIN may have multiple inputs andat most two outputs. First output presents the payment and

1In peer-to-peer2 networks node stands for any device connected to thenetwork.

2 Peer-to-peer network is a network where all peers (participants) are equal— node is a client and also fulfill server function

3Pseudonymity is in a state of anonymity. It allows the user to remain it’sidentity in secret though digital coins can be tracked through token history andassociate with external events compromised user identity (not true anonymity)

the second one — the change that will be returned to oneof the senders addresses. These outputs are called UTXOs(Unspent Transaction Output) [15]. They could be either spentor unspent — there is no way to UTXO be in different states atthe same time. UTXO is a blockchain analogy of soft money:buying goods of total cost nB one pays with several UTXOs(banknotes) of total value mB : m ≥ n. The change (m −n)B is being returned to the customer as a new UTXO (newbanknote). UTXO is controlled by a scripting system calledBITCOIN SCRIPT [16].

BITCOIN SCRIPT is stack-based, non Turing-complete lan-guage without loops. Turing-incompleteness is very important:it guarantees scripts termination in a limited amount of time.Thus, all transactions and block creations are guaranteed toterminate. All BITCOIN SCRIPT programs (scripts) consistsof two parts: one, called scriptPubKey (aka locking script),is embedded into transaction inputs, another, called scriptSig(aka unlocking script) — into transaction outputs. In orderto spend some previous transaction outputs one has to com-bine new transaction scriptSig with the previous transactionscriptPubKey into one script. The resulting script is correctiff its execution yields True, i.e. it satisfies condition placedby locking script. In the simplest case, scriptSig representsthe senders signature with the private key, while scriptPubKeychecks public key correctness and signature validity for theaddress. In other words, coins can set off conditions on coinsspending via locking script. Those conditions must be met inorder to spend the UTXO, and the coins receiver must satisfythese conditions by unlocking script. Moreover, BITCOINSCRIPT actually allows some simple smart contracts creationlike multisignature. In other words, there is a possibility ofdecentralized application, Dapps, creation on top of BITCOIN.More details could be found in [16].

Ones transaction is created it broadcasts into the network.Then resourceful nodes (aka miners) validate and batch itinto new blocks. Ones block is created miner adds it intothe chain and broadcasts it to the network. Note that someambiguity may appear on this step. Thus, nodes have to cometo a consensus. In BITCOIN proof-of-work (see V-A) is used.When the majority of nodes accepts the created block, theminer created the block got a reward as new coins — currently12.5B [17].

Difficulty of mining [18], i.e. block creation difficulty,is adjusted every 2016 in order to keep the time of newblock generation around 10 minutes. It gives constraints onhow many transactions per second processed in network. Forbitcoin it’s around 3 − 5 tx/s [19].

It should be noted that after the appearance of BITCOIN, alot of different hard4 and source code forks appeared. Theyare caused by some changes in a protocol (larger block size,less generation time for the block) and consensus mechanism(switching to another algorithm, replacing hash function) fordifferent kind of purposes: increasing scalability, fixing bugs,

4A permanent divergence in the block chain, commonly occurs when non-upgraded nodes can’t validate blocks created by upgraded nodes that follownewer consensus rules

64

Name Type Consensus mechanism Scalability Smart contracts DappsProgramming

languageIndustry-focus Governance

Bitcoin Public PoW 3-5tx/s Limited Limited Script Financial services Bitcoin Foundation

Litecoin(Bitcoin fork)

Public PoW 56tx/s8 Limited Limited Script Financial servicesLitecoin

Foundation

Bitcoin Cash(Bitcoin fork)

Public PoW 61tx/s8 Limited Limited Script Financial servicesBitcoin CashFoundation

Dash(Bitcoin fork)

Public PoW 28tx/s8 Limited Limited Script Financial servicesDecentralizedGovernance(Public vote)

Peercoin PublicPow (for coin distri-bution) then PoS

3-5tx/s7 Limited Limited Script Financial servicesPeercoin

Foundation

Ethereum PublicPoW

(planning to switchto PoS)

15tx/s Full supportFull support,

plus DAOSolidity (and other) Cross-industry

Ethereumdevelopers

R3 Corda Private

pluggableconsensus (notarypool cluster may

choose anyconsensus

mechanism)[10]

Between 15 and1678 tx/s

depending onmeasurement9

Full support(use pure functions

+ legally binding)Full support

Any languagethat compiled to

JVM

OriginallyFinance industry

but may beapplied to other

industries

R3 consortium

Cardano Public Ouroboros Proof of Stake 50-250tx/s13 Full support Full support Plutus Financial servicesCardano

FoundationIOHK, Emurgo

Ripple Private RCPA (BFT-based)50,000tx/s1or

1500tx/s8 –12 – – Financial servicesDecentralizedGovernance(Public vote)

Stellar Private SCP (BFT-based)4,000tx/s5or

1000tx/s8 –12 – – Financial servicesDecentralizedGovernance(Public vote)

Iroha Private YAC (BFT-based) Is not officially measuredLimited

(Built-in commands)Full support Built-in commands Cross-industry

NetworkMaintainers

Fabric Private BFT-based (can be chosen) 3500tx/s2 Full support Full supportGeneral purpose

languages (i.e.GO, JAVA)

Cross-industryNetwork

Maintainers

IOTA Private PoW 1500tx/s8 Full support Full support Abra Cross-industryIOTA

Foundation

EOS Public DPoS 60+ tx/s6 Full support Full support EOS Cross-industry On-Chain15

Cosmos Depends on zone10 Tendermint

Possible in-finitely scalingby creating newzones4

Depends on zone10 Depends on zone10 Depends on zone10 Cross-industry

Holders of nativestaking token(Atom) may

proposesubmission andvote on proposal

by stake token3

Tezos Public Liquid Proof-of-Stake 40tx/s11Full support

+ formalverification14

Full support Michelson Financial services On-Chain15

Slimcoin Public PoB Is not officially measured - - - Financial services Slimcoin developers1 According to Ripple website, https://ripple.com/xrp/2 According to an article, https://www.ibm.com/blogs/research/2018/02/architecture-hyperledger-fabric/3 According to Cosmos website, https://cosmos.network/docs/spec/governance/4 For example, Ethermint (copy of Ethereum with PoS consensus) provide 200tx/s and further may be improved by a horizontal scaling, https://blog.cosmos.network/latest-in-cosmos-october-update-f8494790fad95 Depending on a hardware, as Stellar founder Jed McCaleb said in an interview with the blockchain-focused podcast Epicenter, https://soundcloud.com/epicenterbitcoin/eb-1286 02/10/2019 60tx/s has been reached, but according to news https://coincodex.com/article/2052/eos-achieves-3000-transactions-per-second peak is 3097tx/s7 Similar to Bitcoin. The only difference between BTC and PPC transactions is an added 4 bytes time field as it mentioned on an official Peercoin forum, https://talk.peercoin.net/t/how-many-transactions-per-second-can-ppc-handle/35358 According to Daniel O’Keeffe, creative writer and crypto capitalist, https://medium.com/coinmonks/understanding-cryptocurrency-transaction-speeds-f9731fd93cb39 According to Mike Ward, head of product at R3, https://medium.com/corda/transactions-per-second-tps-de3fb55d60e310 See appropriate article section11 According to https://medium.com/tezos/liquid-proof-of-stake-aec2f7ef1da712 Only limited API methods are provided, see appropriate article section13 Charles Hoskinson touched that topic in his AMA: 1:01:45 https://youtu.be/pQakcFK72Oc?t=370514 According to tezos developers15 According to terminology of https://blockonomi.com/blockchain-governance/

Fig. 1. Systems and platforms Overview

improving security. Some of these forks are presented in thetable.

After BITCOIN appearance an idea of using blockchain outof finance area had appeared [20]. From then it was founda number of blockchain applications: banking [21], insur-ance [22], music [23], real estate[24], internet of things [25],medicine [26–28]. New use cases required new systems which

can handle more sophisticated logic.Also, it can lead to the idea of decentralized applications

and even more — decentralized autonomous organizations.Decentralized applications is an application that runs on thedecentralized network and not controlled by a single authorityand cannot be shut downed. Decentralized autonomous organi-zations, DAO, are organizations that fully autonomous, decen-

65

tralized and have no single leader. They run and controlled byprogramming code. DAO may be a replacement for traditionalorganization structure. It’s owned by everyone who had tokens— tokens represent voting rights. The first time the above ideaswere implemented in ETHEREUM (see II-B).

B. ETHEREUM

ETHEREUM [2] is a platform for creating decentralizedapplications over blockchain. The key feature of ETHEREUMis smart contracts. A smart contract is a programmable objectwhich works on top of the blockchain. The smart contractcontains a set of rules and conditions on which participantsare agreed upon. If all rules and conditions are met then smartcontracts automatically executes after appropriate request ortransaction. It is impossible to influence on its execution orchange these conditions. Smart contracts are stored in theblockchain and they could keep some additional data for thelogic of execution. Usually, smart contracts in ETHEREUM areimplemented in SOLIDITY or another high-level programminglanguage which compiles into opcodes (operation codes) ofEthereum Virtual Machine. Ethereum Virtual Machine, EVM,is a virtual machine that is isolated from the external worldwithin which all transactions are executed.

ETHEREUM relates to public blockchain since anyone canconnect to the network, create a transaction or a smart contract,mine blocks or validate them without any kind of permissionor registration. It can be seen as a decentralized transactionalstate machine where the global state is moved by each trans-action from one state to another, which must be agreed uponby the majority of nodes. ETHEREUM global state consists ofaccounts and states associated with them (it can be seen asa mapping from accounts addresses to their states). There aretwo account types: user accounts and contracts. Like BITCOINaccounts, user accounts in ETHEREUM are defined by a pair ofprivate and public keys (also uses ECDSA). Unlike BITCOINwhere users balances are defined by UTXO, in ETHEREUMaccounts are fully defined by its global state. Contracts alsohave balances but they are controlled by associated with themcontracts codes. Moreover, contracts could store an additionaldata for their execution. As a rough analogy, contracts can beseen as a singleton in object-oriented paradigm with their ownstates and methods, which can be created by a user or othercontract transaction. Note that both account types contain someother important components which we omit in the paper sincethey are irrelevant for the current discussion. More details canbe found in ETHEREUM’s yellow paper [2].

As mentioned before, user accounts interact with contractsor other user accounts via transactions. There are two differenttransaction types: message calls and contract creations. Mes-sage call is an act of passing a message, an arbitrary set of dataand value (Ether), from one account to another. If the last oneis associated with a user account then a specified amount ofmoney is just transferred to this user account like in BITCOIN.If it is a contract account then it receives message and runsits code. Contract creation is an act of creating and deployinga smart contract. Each transaction that occurs between two

accounts trigger changes in ETHEREUM global state, therebyleading it to a new state. Both types of transactions containsome other fields except mentioned above, e.g. value, data andaccount address [2]. In order to provide a detailed descriptionof how Ethereum works we will consider two more transactionfields below: g a s P r i c e and g a s L i m i t .

Ethereum Virtual Machine, EVM, is a simple virtual stack-based Turing-complete bytecode machine. EVM has its ownlanguage called EVM bytecode which operates with opcodes.As mentioned, usually smart contracts are written in a high-level language such as SOLIDITY, and then SOLIDITY codeis being compiled to EVM bytecode. EVM has several lim-itations programmer has to take in mind all the time. Forexample, the size of EVM stack is limited to 1024 and aprogram execution bounded by gas. These limitations aremade to workaround halting problem for Turing-complete ma-chine. More precisely, all EVM operations, including storingor reading from memory, have prices expressed in the amountof gas [2]. This limitation not only prevents from infinite exe-cution which lead to disruption of node activity and the wholesystem (all nodes execute all transaction), but also preventsthe network from clogging that may lead to fetching down theETHEREUM network. It is important to note that release ofmemory occupied by the contract or it’s data is encouragedby protocol — some money are being refunded to the creator.This is done so that the size of the blockchain does notincrease too much. Thus, g a s L i m i t transaction field containsthe limit of gas that may be used during transaction execution.If both executions are not finished and the transaction is out-of-gas then a rollback occurs — all changes that were madethrough the transaction execution are being reverted. The sameis true for all other paths which don’t not lead to acceptableand correct state. While GasLimi t limits computation time,G a s P r i c e serves as a market characteristic. The higher theprice indicated in G a s P r i c e , the faster the transaction will becarried out since miners get fees for each transaction whichis equal to the product of g a s P r i c e and the total gas beingspent by the transaction.

Similarly to BITCOIN, transactions in ETHEREUM arebatched into the blocks. First, miners validate transaction,i.e. checks whenever account has enough money, signatureto be valid and so on. Then transaction is being executing onEVM. During the execution ETHEREUM records informationthat is needed after transaction termination [2]. If the executionsucceed, i.e. it leads to a valid state, this state becomes the newglobal state. Then all steps above are being repeated for othertransaction while there is enough gas, note that blocks alsohave g a s L i m i ts that are being decreased after each successfultransaction. It also is dictated by the protocol since an absenceof gas limit for blocks will potentially lead to blocks with ahuge size because the more transactions miner will add to ablock, the more fee he will receive. Besides, it will also leadto reducing the number of processed transactions per second.Current network “speed” is around 15tx/s [29].

Ethereum uses a proof-of-work algorithm calledETHASH [30] which was specifically created for it. This

66

algorithm has a dynamic difficulty. It is adjusted whenevera period of two block times changes: the difficulty is beingincreased when time makes smaller and vice versa. Notthat ETHEREUM creators set "ice age" or "difficulty bomb",difficulty function will slowly exponentially increase, inorder to switch to proof-of-stake consensus algorithm calledCasper [31] in future. In this situation, proof-of-work servefor initial distribution of coins in network.

Since now ETHEREUM uses proof-of-work, miners get areward for mining block, but as the time for generation block isshort compared to Bitcoin, part of reward also gets to ommers,aka uncle, block miners. Ommers got smaller reward than afull block. It is made to encourage nodes to stick to mainchain because each such ommer contribute to the security byaugmenting the amount of work waste on creating stale blocks.This total amount of work is applied when there need to choosecanonical blockchain path (path with the most computationdone upon it).

Public blockchains are not appropriate for many enterprises.They need some specific criteria to be met when using thistechnology:• High transaction speed and scalability;• Constraints on access to the network;• Constraints on performing different actions in the net-

work:– observing records in a ledger,– making a specific type of transaction;

• Constraints on involvement in consensus mechanism.Public blockchains do not meet these criteria. While

ETHEREUM provides the possibility to create permission net-work, scalability and speed are still an issue. HYPERLEDGERconsortium [32] was formed by LINUX FOUNDATION inorder to solve these problems for organizations, i.e. to createenterprise blockchains. It has several projects such as IROHA,FABRIC and others.

C. HYPERLEDGER IROHA

IROHA is a private network where access to all the data canbe controlled. Permissions can be set for commands, queriesand even joining the network. IROHA is built around domainsand accounts. An account is an entity that is able to performa specified set of actions [33], while a domain is just a set ofaccounts. Permission collections (roles) are given to accounts.Moreover, there are special grantable permissions, which allowcontrolling other accounts.

IROHA uses BFT consensus algorithm called YAC (YetAnother Consensus) [34], which is considered as an advantageof this network, because of its high work speed. Nevertheless,the more nodes joining the network, the more time it takes toreach the consensus.

IROHA has built-in commands for easy creation of newdigital assets, registering an account, transfering assets andso on. IROHA clients interact with any peer similarly to asingle server, i.e. one doesn’t need to ask different peers tomake sure that transaction has been written to the ledger.

This network also supports multisignature transactions, whichcan not succeed until every responsible account confirms thetransaction should proceed.

IROHA has no ability to write smart contracts5. Right nowit is still in the designing stage [36].

D. HYPERLEDGER FABRIC

FABRIC is one of the famous growing hyperledger projects.It was designed to satisfy enterprise requirement, that’s why itis permissioned and supports channels network [37]. Thereare a few well-know methods to avoid private data leakson a blockchain. The first one is encrypting data. And thesecond one is zero-knowledge proof (ZKP). A zero-knowledgeproof system is an interactive protocol between a prover anda verifier, which aims at demonstrating that some statementis true [38]. The prover should demonstrate that he knows aproof, but without showing the proof itself. FABRIC offerspayment channels (a way of making multiple transactionswithout committing all of them to the blockchain [39]). Insteadof zero-knowledge proof (ZKP) or encrypting data, setting up achannel between nodes is a more flexible way to avoid privatedata leaks because encrypting data being stored on every nodecan be eventually decrypted and ZKP can require time andcomputational resources.

One of the exclusivity of FABRIC is its modular architecture.In fact, instead of using the default BFT, a network creatorcan use any consensus protocol even one that requires nocryptocurrencies. But not only consensus can be embedded.FABRIC has many modular components, for example:• A pluggable ordering service establishes consensus on the

order of transactions and then broadcasts blocks to peers;• A pluggable membership service provider responsible for

associating entities in the network with cryptographicidentities; There are different actors in a blockchainnetwork include peers, client applications, administratorsand more; Each of them has a digital identity;

• An optional peer-to-peer gossip service disseminates theblocks output by ordering service to other peers;

• A pluggable endorsement and validation policy enforce-ment that can be independently configured per applica-tion;

• The ledger can be configured to support a variety ofdatabase management system.

FABRIC supports smart contracts, which are called chain-codes. They run in isolation within a container environmentand can be written in general-purpose programming languageslike JAVA, GO, and others, but they do not have a direct accessto the ledger state. It is well known that smart contracts mustbe deterministic to have the same behavior on every node,because of this many platforms require to use specific languagelike SOLIDITY. Typically smart contracts are executed by allthe nodes of the network, this is not an optimal approach. Anew approach in FABRIC is "execute-order-validate". Smart

5Hyperledger Iroha allows users to perform common functions, such ascreating and transferring digital assets, by using prebuilt commands [35].

67

contracts are executed by limited amount of peers, thentransactions are ordered and validated before committing tothe ledger. The first phase eliminates non-determinism becausesmart contracts are not executed on other nodes with adifferent network state, that’s why we can use general-purposeprogramming languages for writing smart contracts.

The systems described above solve scalability problem6

by sacrificing security or decentralization. For example, tech-niques such as Side Chains [40], Off-chain payments [41],Sharding [42] may be applied. However, with the emergenceof a large number of blockchains the interoperability [43]problem appears.

Interoperability (in blockchains) is an ability of blockchainsto communicate and freely exchange and share informationwith each other. Now there exist several projects that solve thisproblem such as WANCHAIN [44], EOS [45], COSMOS [46],Polkadot [47].

E. COSMOS

The aim of COSMOS project is to create "Internet ofBlockchains" [48]. This will solve interoperability and scalingproblems. COSMOS offers new architecture which consists ofseveral independent parallel blockchains, called zones. Eachzone is powered by Tendermint core [49] and is attached tothe main blockchain called the hub. Tendermint is relatedto Practical Byzantine Fault Tolerance consensus algorithm(its variation). For now, it requires mining as in PoW andguarantees safety when 2/3 of nodes are not compromised. Itis much faster in term of transactions per seconds then PoW.

Blockchains communicate with each other through inter-blockchain communication (IBC) protocol. All IBC goesthrough the hub which keeps track of all tokens exist in eachzone. Horizontal scaling through sharding mechanism may beapplied to solve scalability problem with such architecture —we just have several parts of blockchain (zones) divided toshards that communicate through IBC protocol.

COSMOS architecture allows extending an existing networkby implementing new blockchains with a custom users consen-sus mechanism. It proposes a fine tuning of each zone and thewhole network in case of governance. Each zone can have itsown tunable governance mechanism. Governance of Cosmosecosystem is implementing through a voting mechanism. Net-work ecosystem itself is governed by voting. Holders of nativestacking tokens (called Atoms) may propose submission andvote on proposals by staking tokens [50].

It’s worth to mention that the main launch of the networkalready happened [51].

III. BLOCKCHAIN ALTERNATIVES

The blockchain shows that distributed ledger technologies(DLT7) may be applied to many areas. It was the first fully

6 scalability problem in terms of blockchain referred to limits of transactionsper second that network can process

7it is a digital system for storing and recording transactions in multipleplaces at the same time and has neither the central administration nor datastorage

functional DLT technology. Due to interest, there are appearedseveral DLTs that are fulfilled requirements. Now there existseveral alternative DLTs for blockchain. In this section, weprovide a description of some of them.

A. R3 CORDA

CORDA [52] is a decentralized global database. It is de-signed especially for creating so-called CORDAPPS — appli-cations that bring new facilities to the database. The problemCORDA is intended to solve is a situation when network partic-ipants, such that individual people, institutions or companies,trust each other enough to trade and complete agreements butnot enough to rely on a counterparty to operate all the records.Note, that CORDA possesses a lot of blockchain features whileit does not appear as a blockchain system.

In Corda, states represent shared facts at a specific momentin time. They are immutable objects, stored in the ledger andknown by one or more nodes. States have several fields suchas the reference to a smart contract that govern them overtime and participants who shared this fact and, arbitrary datafor representing this fact. These states are passed around thenetwork between nodes and each node maintains a databasecalled Vault where it tracks current and historic states. Cordauses UTXO model which means that each transaction mayhave zero or more inputs and zero or more outputs. Statesare passed to transactions as inputs. Through transactionexecution, new states are produced as outputs and inputs aremarked as historic. In other words, a chain of states is created.The transaction could be seen as a proposal for changes ina ledger. This proposal would be committed if and only ifthe transaction does not contain double-spends, signed by allinvolved parties of it and valid in terms of a smart contract.

Smart contracts in CORDA are pure deterministic functionsthat can be written in any language compiled to JVM. Note,that contracts are executed in the deterministic version8 ofJVM. CORDA’s smart contracts can be explicitly linked tolegal contracts in the ledger, and thus such contracts will havelegal power. In CORDA, nodes can only see those transactionsin which they are directly involved or the ones that are ableto influence them. Thus since nodes can only see a limited setof ledger records, transactions are kept in a private manner.Moreover, the system scalability is improved since there is noneed to store or process transactions by all the nodes.

Since there are no miners in CORDA, so called notariesnodes fulfill their function. They provide transaction unique-ness checking, that also prevents the double-spending problem,whereas incoming transactions validation, i.e. correctness andauthorization checking, is still processed by ordinary nodes.

In CORDA, in order to join the network, nodes must obtainan identity signed by a root authority. It is important to

8 The special deterministic version of JVM is needed since contractsexecution has to be purely deterministic: contracts has to run, fail, terminatewith an exception (the same one on all machines), go to an infinite loop,and even go out of gas, etc. simultaneously on all machines. In other words,contracts execution has to be so fully specified that it has to be impossible tosee any difference both outside and inside the system in all circumstances.

68

note that since there is no blockchain in CORDA, there maybe several independent networks. As the independent, eachsuch network is free to choose own consensus algorithmand governance rules. They can be further be merged byestablishing a connection between their nodes, setting notariesnodes, consensus algorithm.

CORDAPPS are distributed applications that run on Cordaplatform (same functionality as DAPPS). They one of the keyfeature of CORDA and, as an opposite to HYPERLEDGER FAB-RIC, CORDAPPS are able to communicate, exchange assetswith each other through the platform.

Nevertheless, there was still a need for a platform that wouldbe designed specifically for fast international transactions withlow commission currency exchange for the banking sector. Inother words, a fast exchange and payment system were needed.A solution was proposed by RIPPLE project.

B. RIPPLE

RIPPLE network is one of the most popular today [53]. It hasmany modern features like supporting permissions, paymentchannels, multisignature transactions, decentralized exchangeand the ability to lock up XRP (native Ripple asset) until adeclared time passes. RIPPLE also has a smooth upgrade —users can vote for changes, which means that Ripple’s tech-nology can evolve over the time without intervention.

RIPPLE consensus algorithm is similar to BFT, but has ownadvantages. The key feature is that it is based on collectivelytrusted sub-networks. RIPPLE considers that this approachsignificantly decreases a consensus latency, and proves that asingle XRP transaction takes about 4 seconds to be confirmedagainst BITCOIN transactions [54]. Sub-networks are createdthrough Unique Node List (UNL). It is actually a list oftrusted servers (validators) for a current user of the network. Aconsensus achieving process is simple. Firstly, servers agreedon transactions set by a simple rule: to agree in cases when thetrusted majority of validators agree and to disagree otherwise.Then, when the final version of a ledger is known, each serverindependently computes a new ledger and finally, results arecompared. If a validated result differs, then the node shoulddownload the latest ledger version from other nodes in thenetwork.

It is known that RIPPLE consensus algorithm will tolerateup to 20% of fraudulent nodes since a transaction is onlyapproved if 80% of the UNL of a server agrees with it. Thisproperty is also called correctness. All non-faulty nodes willreach consensus on the same set of transactions regardless oftheir UNLs [55] when:

∀i, j .|UNLi ∩ UNLj | ≥ 15

max(|UNLi |, |UNLj |).It is important for any consensus algorithm to converge in

a finite time. RIPPLE uses an upper bound for the terminationof the algorithm. It considers communication latency betweennodes. If latency is larger than a defined bound, nodes areremoved from all UNLs.

For now, RIPPLE gives a recommended set of transactionvalidators, which means that by default the network is not

actually fully decentralized because you rely on the givenservers (of course, they can be changed). But eventually, RIP-PLE indents to entirely remove themselves from the processof selecting UNLs.

RIPPLE has no native support of smart contracts, there areonly a few API methods available [56]. Developers can useCODIUS platform, which was created by Ripple company toremove this flaw. With CODIUS, smart programs can holdassets of their own on any or multiple cryptography-basedledgers, such as XRP and BITCOIN as well [57].

C. STELLAR

STELLAR network is similar to RIPPLE, a consensus algo-rithm works the same way, but UNLs are replace by QuorumSlices. Stellar has a set of modern features like multisigning,time bounds and batching for transactions, but has no smartcontracts (a few API methods are given [58]).

STELLAR introduces a concept of custom assets besidesnative Stellar assets (Lumans). If someone issues an asset, hebecomes an anchor, and than can require an authorization toaccess his assets. Anchors are bridges between currencies andthe STELLAR network. Users can send assets after setting upa trustlines. The trustline is a way to tell the network thatthe user trusts an asset. Stellar cannot control things out ofthe network, every user should explicitly trust a creator of theasset he uses.

Blockchain is usually represented as a linked list, and thereare projects, which consider that blockchain itself is a problem.They introduce an alternative method of data storing, based onan efficient data structure.

D. DAG-based approach

Directed acyclic graph, DAG, is a directed graph datastructure with a topological ordering on nodes [59]). DAGsare used as an alternative method for storing decentralizeddata. Recall that usually blockchain is represented as a linkedlist. While many blockchain projects are trying to optimizechains using payment channels, hubs or other approaches, theDAG-based approach changes the entire data structure.

Blocks cannot be created simultaneously in blockchain.Moreover, creating and validating a block usually takes along time. The key idea of DAG-based approach is to dividetransactions between chains. The DAG-based network doesn’tlink new transaction with old ones. It would make the networktoo wide and validation more complicated. The goal of theapproach is to keep the network width within a certain rangethat can support quick transaction validations. Instead, DAG-based currencies have algorithms to construct chains in such away that the most recent transactions are likely to be approved.In case if a double or incorrect spending occurs, one of thecorrect graph chains will eventually grow heavier than another,and the lighter one will be abandoned. However, it means thattransactions cannot be considered as confirmed ones right afteradding into a chain.

Let us look at DAG-based networks, which are successfullyusing this technology.

69

IOTA is a cryptocurrency that is based on the networkuses a special DAG called TANGLE [60]. IOTA’s networkhas its native cryptocurrency called MIOTA and an ability toattach some custom data to transactions. This cryptocurrencyeliminates mining. Users of the network perform the role of avalidator and an issuer at the same time. In order to confirma transaction two previous transactions should be validated,but to prevent spamming of the network some proof of workis required too. This concept excludes expensive transactionfees and allows to perform micro-transactions. It also meansthat the more people are online, the faster transactions will bevalidated.

IOTA also uses its own cryptographic algorithm, but onSeptember 2017, MIT issued a report about serious vulnera-bility, and it is unknown if this will happen again [61].

An another IOTA’s disadvantage is that its consensus algo-rithm is vulnerable to the 34% attack. The network currently isusing the coordinator node to prevent malicious activity [62].The coordinator controls DAG-tree, and every transaction goesthrough the coordinator. For the network users, this means thattransactions will be processed slowly then it was expected. Fornow, the coordinator is a part and parcel of the network, butit is planned that some day IOTA will have enough activity tostart working without it [63]. Finally, IOTA doesn’t supportnative smart contracts.

However, thanks to fast transaction validation and low-costfees, it is possible to process smallest amounts with TANGLE,which makes IOTA an excellent payment network.

IV. CLASSIFICATION OF CONSENSUS ALGORITHMS

One of the most important blockchain parts is a consensusalgorithm it is based on. The Consensus is a problem indistributed systems where network participants need to cometo a single point of view, i.e. reach an agreement, on the currentsystem state, provided that there are faulty and unscrupulousnodes in the network whose purpose is to disable the systemor even more — to get control over it.

There are already a lot of different consensus algorithms.We do not set goals to strictly describe all existing consensusalgorithms. We will only give a classification and an intuitiveunderstanding of the essence of existing algorithms. For now,there are two fundamentally different types of consensual algo-rithms: proof-based and voting-based. The detailed descriptionof them is presented below in the corresponding subsections.

V. PROOF-BASED ALGORITHMS

Algorithms of this type are based on the idea that nodewhich created a block must provide some kind of evidence inorder to show the block correctness and to force the blockchainto accept the node into the chain. The exact form of theevidence depends on the concrete algorithm.

A. Proof of Work

The first and the most popular consensus algorithm is Proofof Work (PoW) [1].

Actually, this is a group of algorithms whose generalidea is that a group of independent nodes solves a complexcomputational problem. The problem should be formulatedas follows: its solution should be difficult to find and easilyverifiable. For example, find x, knowing f (x). Obviously, if weknow x, we can easily check whether it is a solution or not,however, finding a solution is usually an extremely difficultcomputational task. It is used by such systems as BITCOIN [1],ETHEREUM [2], etc. Now there are a lot of different algorithmsbased on PoW [64].

There are several main drawbacks of PoW consensus al-gorithms. First, they require enormous computing power toform and adopt a block in a circuit [65]. Second, they aresubject for various types of attacks such as “51 percent” at-tack [3], Double-Spending [66], etc. [67, 68]. Finally, with thisapproach, it is necessary to stimulate the network participants,aka miners, and to pay them a commission fee for blockcreation and transaction execution.

The first two problems were partially solved by Proof-of-Stake algorithm.

B. Proof of Stake

A concept of Proof-of-Stake (PoS) was first introducedin [69]. It is designed in order to solve the PoW problem,associated with the need to spend a huge amount of electricity.The basic principle of operation of this algorithm is that theprobability of a participant forming a new unit is proportionalto its share of assets of the total. Thus, the probability offorming a new unit does not depend on the power of theequipment. However, this approach gives a motivation toaccumulate funds in one hand, which, potentially, can lead tonetwork centralization [70]. Note that such an attack becomestoo expensive and unprofitable from an economic point ofview. ETHEREUM is planning to move from PoW to PoS inthe nearest future [2].

However, PoS also have a lot of drawbacks. For example,as a systems, based on PoW, systems, based on PoS alsovulnerable to “51 percent” attack, i.e. it is enough to havemore than 50 percent of the digital assets. Besides, the richalways get richer and the poor get poorer. Thus, the systemtends to become centralized.

There are many variants of proof-based consensus al-gorithms, including combining PoW and PoS. For ex-ample, Proof-of-Burn (see V-C), Delegated Proof-of-Stake(see V-D), Delayed Proof-of-Work (see V-E), Proof-of-Authority (see V-F). Below we give a brief description of theabove algorithms.

C. Proof-of-Burn

To date, there is no algorithm that solves all the problemsof PoS, but the Proof-of-Burn (PoB) [71] algorithm partiallysolves one of them —the “51 percent” attack.

The principle of operation of this algorithm is similar tothe PoS algorithm. The difference is that everyone who wantsto become a miner must donate, or burn, any amount of hisassets. Burning occurs by sending money to an address from

70

which it is guaranteed it is not able to spend them. After that,the probability that a participant will be able to form a newblock is proportional to his stake in the donated (burned) assetsof the total number of burned assets (but not his percent oftotal assets as opposed to PoS).

With this approach, with an increase of miners number, the“51 percent" attack obviously becomes extremely expensive,but theoretically, it is still possible. Currently, PoB is used bySLIMCOIN [72].

D. Delegated Proof-of-Stake

Another evolution of Proof-of-Stake algorithm is DelegatedProof-of-Stake (DPoS) [73]. A distinctive feature of this al-gorithm is that systems using it are partially centralized. Inaddition to the usual roles in the system, there is one newrole — “leaders”, which can be nodes that have publiclydeclared their readiness to continuously support the operationof a full-fledged network node, timely perform transactionverification and form new blocks.

The consensus based on the modified proof-of-stake worksaccording to such a rule that each user can optionally put uphis candidacy for the post of verifying workstation by validatornodes, or validators. Then among all users a vote is taken forcandidates, where the weight of each vote is determined bythe sum of the assets of the voter. According to the resultsof voting, N , a natural number that selects the community,usually 20 − 50, candidates who are given the right to formnew blocks of transactions. Protocol rules guarantee correctdecision making if most of the assets participating in the votingare controlled by honest users.

The validators selected as a result of voting are mixed in apseudo-random manner, forming a queue. Mixing is performedby a special algorithm, so it is impossible to predict the queuein advance, but it turns out the same for all honest membersof the network. Next, there is a time period for which eachof the validators must form one block, respectively, of thequeue. Moreover, each validator in this period is allocated astrictly limited time interval, usually 1 sec. Either the validatormanages to check the new transactions and form a new unitbased on the previous one, or the next validator in the queuewill do this work. After the time period is completed, thevalidators are again mixed and form a new queue.

It is also important to note that asset holders can re-vote can-didates for an arbitrary time. Consequently, the current groupof validators may change and a new queue of validators willbe formed by a different composition. In addition, one assetholder can vote for more than one candidate, distributing theweight of his coins proportionally among several candidates.Features of this algorithm are:• Low energy consumption;• The system is partially centralized;• High block adoption speed (due to relatively few valida-

tors);• Participants with a large share of stake can vote for

themselves to become validators (It will become tooexpensive when the network grows).

E. Delayed Proof-of-Work

To ensure maximum security, there has been proposed De-layed Proof-of-Work algorithm. Delayed Proof-of-Work [74]is a consensus based on the fact that one blockchain can takeadvantage of the security of another blockchain. Blockchainsystem based on this consensus algorithm has notary nodesselected by other nodes, which add data from the first to thesecond blockchain.

Blockchain systems based on this consensus algorithm havehigh safety, but only blockchains based on PoW, PoS can bea part of this algorithm.

Currently used in Komodo [75].

F. Proof-of-Authority

The basic idea behind Proof-of-Authority is that the rightsfor blocks creation and transaction verification are grantedonly to the most trusted validators.

Anyone who has publicly declared his or her or theirreadiness to maintain network operation uninterruptedly canbecome a validator. Also the following conditions must bemet:

1) Validators identity must be verified.2) The right to become a validator should be difficult to

obtain. For example, potential validators should obtaina license to carry out this activity.

3) There should be complete uniformity in all check andreceipt documents procedures for validators.

Thus, transactions can only process by validators. Blocksare created using only the computing power of validators.

Features of this algorithm are:• Low energy consumption• High speed• A bit centralized (used mainly in private blockchains)• If you capture server validator nodes, you can gain control

of the network.

VI. VOTING-BASED ALGORITHMS

Algorithms of this class are based on voting. The typicalbehavior of this class of algorithms is as follows.

One of the network nodes forms a new unit and invites therest to accept it into the network. Next comes a vote amongnetwork members, according to the results of which the blockis either accepted into the network or rejected. This type ofconsensus algorithm is mainly used in private networks.

The task of the Byzantine generals (Byzantine Fault Tol-erance [76]) is the classical problem of the interaction withremote objects, which is relevant in the voting-based consensusalgorithms.

The essence of the problem is as follows. Let there be ngenerals who besiege the fortress. Each of them can retreat orattack, it is important that they all have to make the samedecision. Generals can communicate with each other onlythrough messengers (they may not walk), and besides, theremay be traitors among the generals. If one general attackswithout remaining, then the offensive ends in defeat.

71

There are many solutions to this problem, differing in theprinciple of voting and the choice of the node generating newblocks. We will consider the main ones:• Practical Byzantine Fault Tolerance (pBFT) [77];• Federated Byzantine Agreement (FBA) [78];

A. Practical Byzantine Fault Tolerance (pBFT)

pBFT is one of the first solutions to the problem of theByzantine generals, which was proposed by Miguel Castroand Barbara Liskov in 1999 [79].

The pBFT model mainly focuses on providing a practicalByzantine ultimate replication machine (the process of trans-ferring information from one node to all others), which allowsByzantine faults (malicious nodes), assuming that there are in-dependent node failures and manipulated messages distributedby specific, independent nodes . The algorithm is designedto work in asynchronous systems and is optimized for highperformance.

The essence of this algorithm is that all nodes in thepBFT model are ordered, with one of the nodes being themain (leader), and all the other side (backup) ones. They allcommunicate with each other through message passing. Themain goal of the system is that all nodes come to a commonagreement (consensus) on the state of the system. Nodes areconstantly interacting and they need not only to prove thatmessages came from a particular node, but also to check thatthis message has not changed in the process of transmission.

Blockchains based on this algorithm have a high bandwidthbut are partially centralized.

Pros: high throughput.Cons: partially centralized, private.Currently used in Hyperledger Fabric [80].

B. Federated Byzantine Agreement

FBA [78] is another class of solutions for BFT problems.Used in Stellar and Ripple.

The main difference between FBA and pBFT is that eachnode decides who to trust and to whom not to. Thus, quorumareas are formed, that is, decision groups (Quorum Slice) andthe network is divided into many such overlapping groups. Anode may consist of several such groups. Decisions are firstmade within the trusted group and then distributed to the entirenetwork.

FBA is considered one of the best distributed consensus dueto its low transaction costs and high bandwidth.

VII. DISCUSSION

Beyond dispute, blockchain is now one of the most populartechnology trends. Many companies and organizations startusing blockchain on a wave of this popularity even if they donot really need it. Also, there are many publications describingvarious use cases of the blockchain [81]. In many proposedcases blockchain is not the most appropriate solution andmay be replaced by other corresponding technology. It raisesthe important question: whether blockchain’s use cases arebounded by the financial sector or not?

Another question relates to the scalability problem ofblockchains. For example, Visa can process around 24000tx/s[82]. It still faster than many blockchains. Thus, to satisfythe needs of users, blockchain must be scalable. Indeed thereexist several solutions to overcome this problem but eachsolution comes with some trade-offs. The creation of newapproaches is not only theoretical but also of practical interestdue to users needs.

Blockchain provide honored immutability, decentralization,and security, but systems that are based on this technology areless flexible in case of required rollbacks and history updates.Vivid examples are the DAO Hack [83] and the lost or anunrecoverable password, for example, in case of the death of awallet owner[84]. Thus, the more flexible solutions are neededbut it is just a trade-off.

The interesting topic in research may be found in designingblockchains in a such way that the energy consumed by thenetwork would have value not only within the network. Thegood example of this is GRIDCOIN [85] which used so-called Proof-of-Research. In GRIDCOIN users provide theircomputing power for scientific research purposes and earntokens.

One more problem is centralization problem. For exam-ple, BITCOIN was supposed to be a decentralized networkbut, as time goes, mining pools take over control of themost of computing power of the network which leads toits centralization[86]. Concentration or delegation tokens thatcould be a computing power in case of PoW, or special coinsin case of PoS, in hands of a node or a group of nodes — thisis a common problem for many consensus algorithms.

Formal verification is also a valuable issue for consensusalgorithms. It provides more credibility and reliability forblockchains, which use these algorithms.

For SMART CONTRACTS there is an important questionrelated to its Turing completeness: is the Turing completenessnecessary for writing smart contracts? Programs are writtenin Turing incomplete languages easier to verify then programswritten in Turing complete languages.

Moreover, the existence of SMART CONTRACTS in manyblockchain platforms with different languages can raise thequestion about universal language for writing smart contracts.There exist many language workbenches such as MPS [87],XTEXT [88], META-EDIT+ [89]. They provide tools to cre-ate DSLs and hierarchy of languages raising the level ofabstraction. It can decrease difficulty, reduce the number oferrors and vulnerability, and even allows non-programmers towrite smart contracts. Upon the provided base language severallayers of languages specific use cases could be constructed.For example, a rigorous language with limited features theremay be used for a simple ordinary money-transfer application,that is verifiable. Nevertheless, the problem of semantic andcorrectness of programs written in the base language arises,because these properties are determined by the language of thetarget platform. Also, there is a need to prove the correctnessof a translation between languages.

Due to the increased usage of smart contracts legal issues

72

figures prominently. At the time of writing the legal status ofsmart contracts is unclear in most jurisdictions. Because ofthe distributed nature of blockchains, unified inter-state legalstatus for smart contracts is highly desirable. Otherwise, thesmart contract should be consistent with the local state laws forany node that significantly complicates a development process.And there other many questions that must be solved. Howto handle a case when a participant of the transaction doesnot provide an identity? What about taxes in case of tradeoperations?

It is worth noting in the context of smart contracts aboutDAO. Right know it is unclear whether or not DAO canreplace traditional organization structure. The following ques-tions are still open and are actively discussed.

• Can an organization be successfully governed by smartcontracts and controlled via tokens of shareholders?(democracy form of voting)

• How is the legal status of such organization defined?• How can be vulnerabilities of DAO avoided in terms of

programming code?

VIII. CONCLUSION

In this paper, we have described the most popularblockchain networks and consensus algorithms. We did notset a goal to provide a detailed description in the limitedspace of the article. We just tried to give a general idea of thedescribed blockchain systems and an intuitive understandingof consensus algorithms with our observations and direct linksto corresponding publications.

REFERENCES

[1] S. Nakamoto, “Bitcoin: A peer-to-peer electronic cash system,”2008.

[2] G. Wood, “Ethereum: A secure decentralised generalisedtransaction ledger,” 2017. URL https://ethereum.github.io/yellowpaper/paper.pdf

[3] “After ethereum classic suffers 51% hack.” URLhttps://www.forbes.com/sites/ginaclarke/2019/01/09/after-ethereum-classic-suffers-51-hack-experts-consider-will-bitcoin-be-next/#3a80131ca56b

[4] Forbes, “Big blockchain: The 50 largest public companiesexploring blockchain.” URL https://www.forbes.com/sites/michaeldelcastillo/2018/07/03/big-blockchain-the-50-largest-public-companies-exploring-blockchain/#3018097d2b5b

[5] Z. Zheng, S. Xie, H.-N. Dai, and H. Wang, “Blockchainchallenges and opportunities: A survey,” Work Pap.–2016, 2016.

[6] G.-T. Nguyen and K. Kim, “A survey about consensus algo-rithms used in blockchain.” Journal of Information processingsystems, 2018.

[7] D. Yaga, P. Mell, N. Roby, and K. Scarfone, “Blockchaintechnology overview,” National Institute of Standards and Tech-nology, Tech. Rep., 2018.

[8] X. Li, P. Jiang, T. Chen, X. Luo, and Q. Wen, “A survey on thesecurity of blockchain systems,” Future Generation ComputerSystems, 2017.

Last access to links: 9.02.2019

[9] E. B. Hamida, K. L. Brousmiche, H. Levard, and E. Thea,“Blockchain for enterprise: overview, opportunities and chal-lenges,” in The Thirteenth International Conference on Wirelessand Mobile Communications (ICWMC 2017), 2017.

[10] L. S. Sankar, M. Sindhu, and M. Sethumadhavan, “Surveyof consensus protocols on blockchain applications,” in 20174th International Conference on Advanced Computing andCommunication Systems (ICACCS). IEEE, 2017, pp. 1–5.

[11] F. Tschorsch and B. Scheuermann, “Bitcoin and beyond: Atechnical survey on decentralized digital currencies,” IEEECommunications Surveys & Tutorials, 2016.

[12] C. Cachin and M. Vukolic, “Blockchain consensus protocols inthe wild,” arXiv preprint arXiv:1707.01873, 2017.

[13] “Storing bitcoins.” URL https://en.bitcoin.it/wiki/Storingbitcoins

[14] D. Johnson, A. Menezes, and S. A. Vanstone, “The elliptic curvedigital signature algorithm (ECDSA),” Int. J. Inf. Sec., 2001.

[15] S. Delgado-Segura, C. Pérez-Sola, G. Navarro-Arribas, andJ. Herrera-Joancomartı, “Analysis of the bitcoin utxo set,” inProceedings of the 5th Workshop on Bitcoin and BlockchainResearch Research (in Assocation with Financial Crypto 18),Lecture Notes in Computer Science, 2018.

[16] “Bitcoin script.” URL https://en.bitcoin.it/wiki/Script[17] “Bitcoin block reward halving countdown.” URL https:

//www.bitcoinblockhalf.com/[18] “Bitcoin difficulty.” URL https://en.bitcoin.it/wiki/Difficulty[19] “Bitcoin transcation chart.” URL https://www.blockchain.com/

en/charts/transactions-per-second[20] V. Buterin et al., “A next-generation smart contract and decen-

tralized application platform,” white paper, 2014.[21] Y. Guo and C. Liang, “Blockchain application and outlook in

the banking industry,” Financial Innovation, vol. 2, no. 1, p. 24,2016.

[22] M. Raikwar, S. Mazumdar, S. Ruj, S. S. Gupta, A. Chattopad-hyay, and K.-Y. Lam, “A blockchain framework for insuranceprocesses,” in New Technologies, Mobility and Security (NTMS),2018 9th IFIP International Conference on. IEEE, 2018, pp.1–4.

[23] C. Sitonio and A. Nucciarelli, “The impact of blockchain onthe music industry,” 07 2018.

[24] A. Spielman, “Blockchain: digitally rebuilding the real estateindustry,” Ph.D. dissertation, Massachusetts Institute of Tech-nology, 2016.

[25] M. Conoscenti, A. Vetro, and J. C. De Martin, “Blockchainfor the internet of things: A systematic literature review,” inComputer Systems and Applications (AICCSA), 2016 IEEE/ACS13th International Conference of. IEEE, 2016, pp. 1–6.

[26] X. Yue, H. Wang, D. Jin, M. Li, and W. Jiang, “Healthcaredata gateways: found healthcare intelligence on blockchain withnovel privacy risk control,” Journal of medical systems, vol. 40,no. 10, p. 218, 2016.

[27] D. M. Maslove, J. Klein, K. Brohman, and P. Martin, “Usingblockchain technology to manage clinical trials data: A proof-of-concept study,” JMIR medical informatics, vol. 6, no. 4, p.e11949, 2018.

[28] A. F. da Conceição, F. S. C. da Silva, V. Rocha, A. Locoro,and J. M. Barguil, “Eletronic health records using blockchaintechnology,” arXiv preprint arXiv:1804.10078, 2018.

[29] “Ethereum transcation chart.” URL https://bitinfocharts.com/comparison/ethereum-transactions.html

[30] “Ethereum ethash.” URL https://github.com/ethereum/wiki/wiki/Ethash

[31] “Casper protocol.” URL https://github.com/ethereum/research/blob/master/papers/casper-basics/casperbasics.pdf

[32] “Hyperledger consortium.” URL https://www.hyperledger.org/[33] “Hyperledger iroha glossary.” URL https://iroha.readthedocs.io/

en/latest/coreconcepts/glossary.html

73

[34] F. Muratov, A. Lebedev, N. Iushkevich, B. Nasrulin, andM. Takemiya, “Yac: Bft consensus algorithm for blockchain,”arXiv preprint arXiv:1809.00554, 2018.

[35] “Overview of iroha.” URL https://iroha.readthedocs.io/ru/latest/overview.html

[36] “Hyperledger iroha smart contract design.” URL https://github.com/hyperledger/iroha/issues/249

[37] “Hyperledger fabric.” URL https://hyperledger-fabric.readthedocs.io/en/release-1.3/

[38] G. Couteau, “Zero-knowledge proofs for secure computation.cryptography and security,” PSL Research University, 2017.

[39] “Micropayment channel.” URL https://bitcoin.org/en/developer-guide#micropayment-channel

[40] “Sidechains. how to scale and improve blockchains safely.”URL https://www.forbes.com/sites/forbestechcouncil/2018/11/27/sidechains-how-to-scale-and-improve-blockchains-safely/

[41] “Solutions to scalability. can off-chain payments scaleblockchain.” URL https://etherworld.co/2018/06/24/solutions-to-scalability-can-off-chain-payments-scale-blockchain/

[42] “Sharding: what it is and why so many blockchain protocolsrely on it.” URL https://www.computerworld.com/article/3336187/blockchain/sharding-what-it-is-and-why-so-many-blockchain-protocols-rely-on-it.html

[43] “The importance of blockchain interoperabil-ity.” URL https://medium.com/wanchain-foundation/the-importance-of-blockchain-interoperability-b6a0bbd06d11

[44] “Wanchain.” URL https://wanchain.org/[45] “Eos.” URL https://eos.io/[46] “Cosmos.” URL https://cosmos.network/[47] “Polkadot: vision for a heterogeneous multi-chain framework.”

URL https://polkadot.network/PolkaDotPaper.pdf[48] “Cosmos white papeer.” URL https://github.com/cosmos/

cosmos/blob/master/WHITEPAPER.md[49] “Tendermint core.” URL https://media.readthedocs.org/pdf/

tendermint/v0.21.0/tendermint.pdf[50] “Cosmos governance.” URL https://cosmos.network/docs/spec/

governance/[51] “A blockchain to connect all blockchains, cosmos is

officially live.” URL https://www.coindesk.com/a-blockchain-to-connect-all-blockchains-cosmos-is-now-officially-live

[52] M. Hearn, “Corda: A distributed ledger,” Corda Technical WhitePaper, 2016.

[53] “Coin market cup.” URL https://coinmarketcap.com/[54] “Xrp. the digital asset for payments.” URL https://ripple.com/

xrp/[55] D. Schwartz, N. Youngs, A. Britto et al., “The ripple protocol

consensus algorithm,” Ripple Labs Inc White Paper, vol. 5,2014.

[56] “rippled api reference.” URL https://developers.ripple.com/rippled-api.html

[57] “What is codius?” URL https://codius.org/docs/overview/what-is-codius

[58] “Horizon reference overview.” URL https://www.stellar.org/developers/reference/

[59] S. Lee, “Explaining directed acylic graph(dag), the real blockchain 3.0.” URLhttps://www.forbes.com/sites/shermanlee/2018/01/22/explaining-directed-acylic-graph-dag-the-real-blockchain-3-0

[60] “Meet the tangle. a quick introduction to the data structurebehind iota’s distributed ledger and protocol.” URL https://www.iota.org/research/meet-the-tangle

[61] E. Heilman, N. Narula, T. Dryja, and M. Virza, “Iota vulnera-bility report: Cryptanalysis of the curl hash function enablingpractical signature forgery attacks on the iota cryptocurrency,”2017.

[62] “Consensus on the tangle.” URL https://docs.iota.org/introduction/tangle/consensus

[63] I. Foundation, “Coordinator. part 1: The path tocoordicide.” URL https://blog.iota.org/coordinator-part-1-the-path-to-coordicide-ee4148a8db08

[64] G. Nguyen and K. Kim, “A survey about consensus algorithmsused in blockchain,” JIPS, vol. 14, no. 1, pp. 101–128, 2018.

[65] “Inefficiency proof of work,” 2015. URLhttps://motherboard.vice.com/enus/article/ae3p7e/bitcoin-is-unsustainable

[66] G. Karame, E. Androulaki, and S. Capkun, “Two bitcoins atthe price of one? double-spending attacks on fast payments inbitcoin.” IACR Cryptology ePrint Archive, vol. 2012, no. 248,2012.

[67] “A survey on security and privacy issues of bitcoin.” URLhttps://ieeexplore.ieee.org/document/8369416

[68] X. Li, P. Jiang, T. Chen, X. Luo, and Q. Wen, “A survey on thesecurity of blockchain systems,” Future Generation ComputerSystems, 2017.

[69] S. King and S. Nadal, “Ppcoin: Peer-to-peer crypto-currencywith proof-of-stake,” self-published paper, August, 2012.

[70] “On stake and consensus.” URL https://download.wpsoftware.net/bitcoin/pos.pdf

[71] Slimcoin, “A peer-to-peer crypto-currency with proof-of-burn,”2014.

[72] “Slimcoin.” URL http://slimco.in/about/[73] K. S. Myles Snider and T. Jain, “Delegated proof of stake:

Features and tradeoffs,” 2018. URL https://multicoin.capital/wp-content/uploads/2018/03/DPoS-Features-and-Tradeoffs.pdf

[74] Komodo, “advanced blockchain technology, focused onfreedom,” 2018. URL https://komodoplatform.com/wp-content/uploads/2018/06/Komodo-Whitepaper-June-3.pdf

[75] “Komodo.” URL https://komodoplatform.com[76] L. Lamport, R. E. Shostak, and M. C. Pease, “The byzantine

generals problem,” ACM Trans. Program. Lang. Syst., 1982.[77] M. Castro and B. Liskov, “Practical byzantine fault tolerance

and proactive recovery,” ACM Trans. Comput. Syst., vol. 20,no. 4, pp. 398–461, 2002.

[78] J. Innerbichler and V. Damjanovic-Behrendt, “Federated byzan-tine agreement to ensure trustworthiness of digital manufactur-ing platforms,” in Proceedings of the 1st Workshop on Cryp-tocurrencies and Blockchains for Distributed Systems, CRY-BLOCK@MobiSys 2018, Munich, Germany, June 15, 2018,2018, pp. 111–116.

[79] M. Castro and B. Liskov, “Practical byzantine fault tolerance,”in Proceedings of the Third USENIX Symposium on OperatingSystems Design and Implementation (OSDI), New Orleans,Louisiana, USA, February 22-25, 1999, 1999.

[80] V. B. Elli Androulaki, Artem Barger and other, “Hyper-ledger fabric: A distributed operating system for permissionedblockchains,” 2018.

[81] K. Zıle and R. Strazdin, a, “Blockchain use cases and theirfeasibility,” Applied Computer Systems, vol. 23, no. 1, pp. 12–20, 2018.

[82] “Visa.” URL https://usa.visa.com/run-your-business/small-business-tools/retail.html

[83] “50 million hack just showed dao human.”URL https://www.wired.com/2016/06/50-million-hack-just-showed-dao-human/

[84] “Cryptocurrency exchange founder’s death locks 140 millions.”URL https://www.bbc.com/news/world-us-canada-47123371

[85] “Greed coin.” URL https://www.gridcoin.us/[86] “Bitcoin mining pools.” URL https:

//www.buybitcoinworldwide.com/mining/pools/[87] “Mps.” URL https://www.jetbrains.com/mps/[88] “Xtext.” URL https://www.eclipse.org/Xtext/[89] “Meta edit+.” URL https://www.metacase.com/

74

NOTES