close

Вход

Забыли?

вход по аккаунту

?

1559.Заметки по информатике и математике Вып 3

код для вставкиСкачать
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Министерство образования и науки Российской Федерации
Ярославский государственный университет им. П. Г. Демидова
Факультет информатики и вычислительной техники
Заметки
по информатике и математике
Сборник научных статей
Выпуск 3
Ярославль 2011
М. М. Алексеева, Е. А. Дашкова
1
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
УДК 51(091)
ББК В1я43+З 973.2я43
З 26
Рекомендовано
Редакционно-издательским советом университета
в качестве научного издания. План 2010/2011 учебного года
З 26
Заметки по информатике и математике : сб. науч. ст.
/ отв.
ред.
А. Н. Морозов ;
Яросл.
гос.
ун-т
им. П. Г. Демидова. – Ярославль : ЯрГУ, 2011. – Вып. 3.–
144 с.
В сборник включены научные статьи, представленные
студентами и аспирантами факультета ИВТ. Темы статей
касаются важных направлений развития математики, информатики и вычислительной техники.
УДК 51(091)
ББК В1я43+З 973.2я43
Редакционная коллегия:
В. А. Бондаренко
С. Д. Глызин
А. Н. Морозов (ответственный редактор)
П. Г. Парфёнов
В. А. Соколов
© Ярославский государственный университет им. П. Г. Демидова,
2011
2
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Метод проверки на модели (model-checking)
для определения корректности
сложных систем
М. М. Алексеева, Е. А. Дашкова
Аннотация
1B
Часто вопрос эффективности в рассматриваемых программных/аппаратных системах трактуется в терминах времени исполнения или энергозатратности, поэтому разрабатываются различные варианты алгоритмов. Во многих случаях первоначальные алгоритмы модифицируются для улучшения их эффективности в терминах энергоэффективности и затрат памяти, на которых не фокусируется первоначальный алгоритм. Для
всех этих модификаций критическим является то, что функциональность и корректность первоначального алгоритма должна сохраняться [1].
Многие системы все чаще применяют встроенные программные решения для
достижения гибкости и эффективности. Одним из множества подходов к достижению
корректности сложных систем является метод формальной верификации, который позволяет проверять желаемые поведенческие свойства этой системы. В настоящее время
данная методика носит название проверки на модели (model – checking). Ожидается,
что модель должна удовлетворять желаемым свойствам.
Верификация – анализ свойств всех возможных результатов программы через
формальное существование для присутствия требуемых свойств. Основной идеей верификации программ является формальное доказательство соответствия между программным языком и спецификацией проблемы.
Программа и спецификация описывают некоторые проблемы, используемые в
различных языках. Спецификация языков является чисто декларативной, человекоориентированной. Императивные языки программирования более направлены на исполнение на вычислительном устройстве, что менее естественно для человека. Таким
образом, техника проверки на модели – отличное средство отладки. С точки зрения
технологии программирования верификация позволяет получать лучшую стратегию
для отладки программ.
Ключевые слова: верификация, автоматное программирование, сложные системы.
I. Введение
2B
Корректность ICT систем (информационно-коммуникационных
систем) [2] – основание для их безопасности. Ошибки могут быть катастрофичными. Фатальные дефекты в контролирующем программном
обеспечении (ПО) очень опасны, и число дефектов растет экспоненциМ. М. Алексеева, Е. А. Дашкова
3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ально с числом встроенных компонентов системы. День за днем ICT
системы становятся комплексными.
ICT системы являются универсальными и их надежность – главная
точка в процессе проектирования
системы. Ключевым инструментом
для процесса проектирования является техника верификации (рис. 1).
Свойства, которые должны быть верифицированы, берутся из спецификации. Обычно существуют главные
свойства систем, которые должны
быть корректными, что означает
адекватную реакцию для любой команды. Аккуратное программирование систем часто приводит к открытию незавершенности, двусмысленности и непоследовательности в
системе неформальных спецификаций.
Рис. 1. Процесс верификации
II. Основная часть
3B
A. Метод проверки на модели (model-checking)
Метод проверки на модели (model-checking) [3] – один из различных методов верификации, позволяющий исследовать все возможные
состояния системы в грубом стиле. Модель системы обычно автоматически генерируется из описания модели, что точно определено в некотором соответствующем диалекте программирования или аппаратного
описания языков.
Свойства спецификации предписывают, как система поведет себя.
Все уместные состояния системы проверяют, удовлетворяют ли они желаемым свойствам или нет (рис. 2).
Модели систем описывают поведение систем в точном и недвусмысленном случае. Они главным образом выражаются через использование конечного автомата, состоящего из конечного множества состояний и множества переходов. Для улучшения качества модели имеет место симуляция, которая предшествует методу проверки на модели.
Симуляция может быть эффективно использована для избавления от категории простых ошибок моделирования, устранение которых перед
любой формой проверки помогает уменьшить стоимость и время исполнения, требуемые для верификации.
4
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Метод проверки на модели успешно применяется к нескольким типам ICT систем.
B. Автоматное программирование
Автоматное
программирование
может быть использовано в некоторых
типах программных систем [4]:
 системы переходов (компиляторы, архиваторы). Конечный автомат в
программировании традиционно используется в проектировании компиляторов. В этой ситуации компилятор понимается как некоторое вычислительное
свойство, которое имеет входящую и
исходящую строки;
 реактивные системы (телекоммуникационные системы и системы контроля и управления физическими устройствами). В этом случае автоматное
программирование решает проблему
логического программирования. АвтоРис. 2. Процесс метода проверки
на модели (model-checking)
мат – устройство, которое имеет несколько параллельных входных строк
(часто бинарных), на которые в реальном времени поступают сигналы из
окружающей среды. В процессе таких видов сигналов автомат формирует
значения для нескольких параллельных выходов.
Следовательно, полезность автоматно-ориентированного подхода
может быть охарактеризована как «сложное поведение». Для подобных
видов систем важно, что автоматно-ориентированный подход разделяет
описание логического поведения и семантику. Это дает возможность автоматом описывать сложное поведение ясно и понятно.
Системы переходов часто используются в информатике (семантических моделях для большого числа высокоуровневых формализмов для
параллельных систем, таких как алгебра процессов, сети Петри, диаграммы). Существует фундаментальная модель для моделирования аппаратного и программного обеспечения систем.
Обозначим систему переходов через TS. TS – кортеж (S, Act, →, I,
AP, L), где
 S – множество состояний,
 Act – множество действий,
 →S  Act  S – система отношений,
М. М. Алексеева, Е. А. Дашкова
5
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 I  S – множество начальных состояний,
 AP – множество атомарных предложений,
 L: S→ 2AP – функция маркировки.
TS назовем конечным, если S, Act и AP конечны.
Рассмотрим следующий пример (рис. 3). Система переходов на рисунке – схематическое проектирование автомата. Автомат может выдавать чай или кофе. Состояния помечены овалами, переходы – ребрами.
Начальное состояние помечается стрелкой без источника. Пространство
состояний S={pay, select, tea, coffee}. Множество начальных состояний
состоит только из одного состояния, то есть I={pay}. Действие insert_coin обозначает вставку монеты, в то время как автомат получает
чай или кофе, обозначая доставку чая или кофе как get_tea, get_coffee.
Act= {insert_coin, get_tea, get_coffee,}.
Автомат представляется в двух расположениях – начало (start) и
выбор (select). Заметим, что после вставки монеты автомат недетерминировано выбирает, что именно выдать – кофе или чай.
Рис. 3. Система переходов
III. Результаты
4B
Авторы экспериментально применили метод проверки на модели
(model-checking). Дипломная работа авторов была посвящена верификации модифицированного транспортного уровня WTP (Wireless Transaction Protocol) протокола WAP (Wireless Access Protocol).
A. Системное моделирование. Симулятор сети NS2
Симуляция широко используется в моделировании систем для приложений, начиная от инженерных исследований, бизнес-анализа, планирования производства и научных экспериментов в области биологии.
Симулятор сети Network Simulator (версия 2), широко известный
как NS2, является событийно-управляемым инструментом моделирования, весьма полезным при изучении динамического характера коммуникационных сетей. Он предоставляет пользователям способ задания та6
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ких сетевых протоколов и моделирования их поведения, позволяет создавать различные виды трафика: от простейших, подчиняющихся пуассоновскому закону, до самоподобных. Несомненным достоинством данного симулятора для случая беспроводной сети является его возможность при помощи генератора сценариев определить передвижение
узлов. Также стоит отметить встроенную возможность анимации результатов проведения различных сценариев. Полная и упрощенная версии NS2 содержат средство анимации результатов моделирования nam
(Network Animator) реализованное на Tcl/Tk, и только полная версия
NS2 содержит программное средство Xgraph, позволяющее графически
отображать результаты моделирования, что существенно упрощает работу по визуализации результатов (не требуется установка дополнительных программных приложений специально для обеспечения наглядности работы).
Работа в NS2 предполагает два этапа. Первым шагом является построение модели с использованием программирования на C++, вторым –
использование языка OTCL (Object-oriented Tool Command Language)
для анализа модели и моделирования условий работы сети, что позволяет включить программный код на С++ в среду NS2. Таким образом,
NS2 – наиболее удобное средство для моделирования протоколов и поведения сети.
B. Предложенная модель
Уровень WTP (Wireless Transaction Protocol) стека протокола WAP
отвечает за надежную доставку сообщений. Maximum Transfer Unit
(MTU) – максимальный размер пакета в сети. Если имеется сообщение
бόльшего размера, чем MTU, тогда WTP фрагментирует это сообщение.
Механизм управления потоком в случае фрагментированных сообщений
осуществляется отправкой фрагментов в группах. Для каждой группы
пакетов требуется только одно подтверждение. Последний пакет каждой
группы содержит специальный флаг, который указывает на конец группы, и получатель знает, когда нужно отправить подтверждение. Размер
каждой группы зависит от характеристик связи и памяти устройства.
Необходимо избегать дополнительной отправки пакетов и потери данных. Получатель отправляет «негативное» подтверждение (NAKnegative acknowledgment), если конечный пакет группы получен, в то
время как промежуточные пакеты отсутствуют. Эта операция повторяется до тех пор, пока вся группа не будет получена и не отправится «позитивное» подтверждение (ACK- positive acknowledgment). Если время
ожидания подтверждения истекло, только последний пакет группы посылается повторно, и отправитель знает, какие пакеты были утрачены.
М. М. Алексеева, Е. А. Дашкова
7
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Wireless Transaction Protocol пытается свести к минимуму количество
ненужных повторов передачи пакетов.
В модели используются три параметра:
 ts – это временной интервал между последовательно отправляемыми пакетами одной группы, которые отправляются от отправителя
(SENDER) к получателю (RECEIVER);
 tr – интервал между последовательно принимаемыми пакетами
одной группы, которые принимаются получателем (RECEIVER);
 Pam – число пакетов в группе.
В модели имеется два типа подтверждений – «позитивное» (ACK) и
«негативное» (NAK). Когда получатель отправляет подтверждение, он
передает tr с помощью этого подтверждения. Отправитель вычисляет
отношение ts/tr. В зависимости от результата этого отношения имеется
несколько ситуаций для анализа и дальнейших действий:
 идеальные условия сети;
 параметры могут быть модифицированы увеличением Pam,
уменьшением ts и таймаута (timeout);
 имеется недостаточно данных, чтобы принять решение, как изменить параметры (условия сети соответствуют установленным параметрам);
 сеть переполнена, все параметры могут быть модифицированы
уменьшением Pam, увеличением ts и таймаута (timeout).
IV. Заключение
5B
В 1968 г. теория программирования пережила кризис разработки
программного обеспечения. Основным симптомом этого кризиса являлась неспособность разработчиками обеспечить главную особенность
программного обеспечения – ее корректность. Кризис методов разработки программного обеспечения показал, что автоматный подход способен справиться с этой проблемой, то есть со сложным поведением при
проектировании системы. Этот подход – ответ на самые актуальные
проблемы развития отрасли программного обеспечения. Прогнозы показывают [5], что область применения автоматного программирования будет расширена, и эта технология будет развиваться.
Благодарности
Авторы благодарят декана факультета информатики и вычислительной техники Ярославского государственного университета им.
П. Г. Демидова П. Г. Парфенова за интерес и поддержку данного проекта и научного руководителя «Центра инновационного программирования» профессора В. А. Соколова за ценные советы.
8
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 Литература
93B
1. Кузьмин Е. В. Введение в теорию математических процессов и структур.
Ярославль : ЯрГУ, 2003. 139 с.
2. Поликарпова Н. И., Шалыто А. А. Автоматное программирование. СПб. :
Питер, 2009. 176 c.:ил.
3. Anikeev M. et al. Automated Correctness Proof of Algorithm Variants in Elliptic Curve Cryptography // Modeling and Analysis of Information Systems. 2010.
Vol. 17/ № 3. P. 7–16.
4. Baier C., Katoen J.-P. Principles of Model Checking. London: The MIT Press,
2008. 975 с.
Рынок кредитования малого и среднего
бизнеса в Ярославской области
О. А. Алексеева
Начавшийся в 2008 г. мировой финансовый кризис нанес сильный
удар по экономике России. Банковская отрасль понесла крупные потери.
Начались крупные сокращения, приостановилась инвестиционная деятельность, почти прекратилась выдача кредитов. В кризисные годы банки сделали ставку на привлечение денежных средств и на некредитные
операции.
К началу 2010 г. ситуация начала улучшаться. Анализируя данные
ЦБ РФ, можно сказать, что с апреля 2010 г. начался рост кредитования.
В настоящее время банкам важно как можно быстрее выйти на докризисный уровень. Наиболее перспективный сегмент – малый и средний
бизнес (МСБ). По оценке рейтингового агентства «Эксперт РА», рынок
кредитования МСБ в 2010 г. вырос более чем на 20% (корпоративное
кредитование и кредитование физических лиц в этот период выросло
1
лишь на 10% и 14% соответственно) .
На диаграмме (рис. 1) видно, что в 2010 г. объем кредитов, предоставленных банками малому и среднему бизнесу, оказался примерно на
50% больше, чем в 2009 г.
Многие банки увеличили портфели кредитов МСБ в разы, сделав
этот сегмент приоритетным. Условия стали мягче, ставки – ниже. Соот0F
1
Данные Банка России. URL: http //www.cbr.ru. Показатели рассчитываются
по статистическим данным, представленным в Бюллетене банковской статистики. Региональное приложение.
О. А. Алексеева
9
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ветственно, повысился спрос со стороны заемщиков, поскольку МСБ
традиционно нуждается в заемных средствах. Рост рынка продолжается,
даже несмотря на увеличение доли просроченной задолженности. В течение всего 2010 г. она неуклонно росла.
Столь неутешительная статистика может объясняться тем, что на
динамику просроченной задолженности большое влияние оказывают
долгосрочные кредиты, выданные в докризисный период. В настоящее
время более популярны кредиты, выдаваемые на небольшой срок/ Они
слабо влияют на общую динамику просроченной задолженности. В целом, по оценке экспертов, решение данной проблемы можно ожидать не
раньше 2012 г.
Сегодня можно наблюдать ожесточенную борьбу банков за клиентов. Все кредитные организации заявляют о снижении ставок и комиссий, смягчении требований к заемщикам. Но ставки – не единственное
средство в борьбе за клиента. МСБ – мобильный бизнес. Здесь важна
скорость и технологичность обслуживания. Отсюда – новый акцент –
сервис. Когда различия в предлагаемых процентных ставках незначительны, клиент будет выбирать банк, предлагающий наиболее комфортные условия обслуживания.
В 2010 г. объем кредитов, предоставленных МСБ, на 60% [2] превысил показатели 2009 г. Такой рост обеспечили в основном крупные
банки, предложившие клиентам недорогие, «коробочные» ссуды. Этот
всплеск активности можно объяснить тем, что значительно возросло
число заявок на кредиты со стороны МСБ. В 2010 г. их было на 34%
больше, чем в 2009 [2]. Но ситуацию омрачает то, что «хороших» заем10
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
щиков все еще не хватает. В результате конкуренция на рынке постоянно усиливается. Можно отметить две характерные модели поведения.
Первая, характерная для крупных банков, – предложение недорогих,
«коробочных» кредитов. Эта стратегия отлично показала себя в прошлом
году: такие портфели росли в среднем на 40%. Вторая модель, используемая средними и малыми банками, – индивидуальный подход к каждому
заемщику – показала более скромные результаты – 20% роста [2].
Наряду с оптимизацией продуктовых линеек, одной из общих тенденций рынка стало снижение процентных ставок. Эта ситуация угрожает финансовой устойчивости небольших банков. Они вынуждены обслуживать уже имеющихся клиентов либо наращивать портфель за счет
рискованных заемщиков. В сложившейся ситуации банкам необходимо
диверсифицировать свою деятельность, выходя в разные регионы либо
переориентируясь на другие сегменты бизнеса.
В 2011 г. продолжаются тенденции прошлого года. Интерес банков
к МСБ не ослабевает. Более того, этот сегмент остается одним из приоритетных. Это объясняется тем, что доля МСБ в экономике невелика и
должна увеличиться. В МСБ также существуют проблемы с обеспечением и теневой характер, что с развитием экономики должно уменьшиться. Поэтому МСБ и его кредитование должны стать одним из главных направлений банковской отрасли и государства. По прогнозам
«Эксперт РА» в текущем году портфель кредитов МСБ вырастет на 22–
27%, причем ряд банков планируют прирост на 35–45% [3]. Таким образом, кредитование МСБ по темпам будет опережать остальные сектора.
О. А. Алексеева
11
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 Список использованной литературы
94B
1. Центральный банк Российской Федерации. URL: http://cbr.ru
2. Шохина Е. Кредиты вопреки налогам // Expert Online. 2011. URL:
http://expert.ru/2011/06/10/kredityi-vopreki-nalogam/.
3. Картуесов А., Доронкин М. Кредитные фабрики наступают // Эксперт.
2011. № 21 (755). URL: http://expert.ru/expert/2011/21/kreditnyie-fabriki-nastupayut/.
Моделирование процесса
распараллеливания при помощи
асинхронных клеточных автоматов
Д. В. Барабанова
Введение
6B
В последнее время разразился настоящий бум исследований, посвященных клеточным автоматам и их использованию для решения различных прикладных задач [2]. Столь широкое применение в различных сферах человеческой жизни и в науке теория клеточных автоматов приобрела
за счет того, что она основана на моделировании сложных систем, состоящих из простых подсистем, результатом коллективного функционирования которых является сложное поведение всей системы в целом [1].
Модели клеточных автоматов явным образом сводят макроскопические
явления к точно определенным микроскопическим процессам.
Объектом исследования данной статьи является алгоритм, при помощи которого задачи на решетке клеточного автомата максимально
быстро и эффективно распараллеливаются. Под задачами имеются в виду однородные простые однотипные задания.
Клеточные автоматы
7B
Идея клеточных автоматов появилась в конце сороковых годов
ХХ века. Она была задумана и сформулирована Джоном фон Нейманом
и Конрадом Цусе независимо друг от друга. В 1970 г. Джон Конвей описал ныне широко известный двумерный клеточный автомат, названный
«Игра жизни»[1]. Клеточные автоматы имеют две особенности: локальные изменения, приводящие к глобальным последствиям, и свойственный этим автоматам параллелизм.
12
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Клеточные автоматы разделяются на синхронные, асинхронные,
подвижные, неподвижные и другие [3]. В работе используются асинхронные клеточные автоматы, отличительной особенностью которых
является то, что клетки переходят в новое состояние в случайном порядке. При этом новое состояние клетки тут же может использоваться ее
соседями как входное.
Спецификация
8B
Условие задачи
У нас есть клеточный автомат размера NxN. Первоначально в одну
или несколько клеток помещается число M задач (количество неких абстрактных однотипных заданий, которые должны распараллелиться во
время работы). Далее мы выбираем стратегию, по которой будут распараллеливаться наши задачи (равномерная, больше в центре, меньше в
центре и умная стратегия). В ходе последовательных срабатываний алгоритм распределяет все M заданий по клеткам сети. За конечное число
шагов задания должны быть распределены более-менее равномерно или
полностью выполниться. На примере многих опытов нужно составить
статистику и проанализировать её. После анализа подвести итог и выбрать оптимальную стратегию, при которой задачи будут распределяться максимально быстро и эффективно.
Для решения поставленной задачи нужно разработать подробную
спецификацию: входные и выходные параметры, стратегии поведения
клеточного автомата.
Входные параметры:
1) задается размер клеточного автомата (ширина и высота),
2) задается количество распределяемых заданий,
3) задается количество клеток, в которых будут находиться распределяемые задания,
4) задается условие остановки алгоритма,
5) выбирается стратегия, по которой будет работать автомат,
6) определяется стратегия выбора текущей клетки для распределения (случайно или по порядку).
Выходные параметры:
1) количество шагов, за которые автомат достиг условия остановки,
2) время выполнения,
3) разница между максимальным количеством задач в какой-то
клетке и минимальным.
Курсором показываем на клетку (или несколько клеток), с которой
начинается распараллеливание задач. Они сразу принимают другой цвет
(темно-красный), все остальное поле черное. Клетки, с которых будет
Д. В. Барабанова
13
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
начинаться распараллеливание, могут быть прописаны раньше (координатами), чтобы получить более точные показатели при работе автомата.
Есть клетки, которые не участвуют в распределении задач, они указываются курсором в начале выполнения автомата. Такой клеткой может стать любая, при условии, что в ней нет еще ни одного задания (так
сказать, заблокированная клетка). Она отображается на интерфейсе синим цветом. Текущую клетку будем обозначать зеленым цветом.
Наша решетка представляет собой замкнутое поле. Это сделано для
того, чтобы убрать краевые эффекты и везде сделать равные условия.
Условие остановки операции: можно высчитать по формуле: это определенное число Х, и, когда наступает момент
max–min = Х,
где max – это максимальное число задач в какой-то клетке, min – соответственно минимальное, алгоритм останавливается и подсчитывается
время. При выполнении заданий условие остановки, когда на решетке
больше не останется ни одной задачи.
Программа написана на языке Java.
Стратегии
В работе рассматривается моделирование при помощи клеточных
автоматов процесса распараллеливания в grid сетях. Каждая клетка –
процессор, её «цвет» – текущее состояние (количество заданий); один
шаг клеточного автомата моделирует распределение заданий между соседними процессорами.
Наша цель – найти и исследовать эффективные стратегии распараллеливания. У нас имеется 9 клеток – сама клетка и 8 ее непосредственных соседей, включая диагональные клетки (рис. 1).
Рис. 1. Схематическое изображение клетки и ее окрестности
Определенное количество задач, которые нужно распределить, поступают в 9-ю ячейку. И как дальше поведет себя наш автомат, мы определяем с помощью стратегий.
1. Стратегия «Поровну»
14
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Все задачи из ячеек 1–9 складываются (окрестность 9-й ячейки),
плюс то количество задач, которые поступили в 9-ю ячейку, и делятся
на 9 (на количество ячеек). Таким образом, мы получаем среднее арифметическое число задач, по этой стратегии во всех ячейках должно оказаться то же самое число задач.
2. Стратегия «Больше в центре»
Все задачи из ячеек 1–9 складываются (окрестность 9-й ячейки),
плюс то количество задач, которые поступили в 9-ю ячейку. Мы получаем какое-то определенное число задач: если переводить на проценты,
то это 100%. Затем мы определяем, сколько задач содержится в 1%.
Далее в 1–8 ячейках должно оказаться 11% задач, а в 9 – 12%. Но не
всегда в наших клетках получится предполагаемый процент задач, поскольку у нас есть заблокированные клетки. И если в окрестность нашей
распределяемой клетки попадет такая заблокированная клетка, то тот процент, который мы наметили, не получится, но в любом случае по этой
стратегии всегда в клетках 1-8 будут находиться фиксированные 11%.
3. Стратегия «Меньше в центре»
Высчитываем так же, как в предыдущей стратегии, только в
1-8 ячейках должно оказаться 11,5% задач, а в 9 – 8%. Если попадаются
блокированные клетки, процент меняется, но в центре всегда 8%.
4. «Умная стратегия»
В самом начале мы указываем минимальный и максимальный процент распределения задач.
Алгоритм работы:
1) вычитается разница в числе задач между текущей клеткой и каждым из её соседей,
2) вычисляется максимальная из этих разниц (разница высчитывается по модулю),
3) вычисляется некоторое число k по формуле:
k = sum/(max*count),
где sum – сумма всех разниц, max – максимальная из разниц, count – количество незаблокированных ячеек.
4) получается k, равное от 0 до 1 в зависимости от того, насколько
равномерно распределены задачи на данном участке, считается процент
по формуле
min + (max – min)*k,
где min – минимальный процент, max – максимальный процент.
Д. В. Барабанова
15
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Статистика и анализ
9B
Чтобы опыты, проведенные по проверке работы алгоритма, были
максимально точными, для каждой из стратегий сделано по 10 опытов.
В конце был посчитан средний результат. В исследованиях проверяется,
как ведет себя каждая стратегия без выполнения задач и с выполнением.
Если задачи на решетке клеточного автомата не выполняются, то проще
оценить, с какой скоростью каждая стратегия распараллеливает их.
Во время распределения задач по 8 соседним клеткам в конечном результате во всех 9 клетках выполнится по одной задаче.
При проведении опытов стратегии «Поровну» (1), «Меньше в центре» (2), «Больше в центре» (3) показывали приблизительно одинаковые
результаты. Небольшое преимущество имела 1-я стратегия. Это заводило в тупик исследование, поэтому был разработан новый алгоритм, позволяющий совместить только лучшее из разных стратегий и получить
более эффективный результат.
Анализируя опыты, можно выявить некоторые закономерности, и
вывести плюсы и минусы каждой стратегии.
Плюсы и минусы стратегий:
1. Поровну: Всегда справлялась с поставленной задачей, причем в короткое время. Однако хотелось подобрать более эффективную стратегию
2. Больше в центре: Плюс этой стратегии в том, что с поставленными перед ней задачами всегда справлялась, но тратила много времени
на их выполнение, что являлось огромным недостатком
3. Меньше в центре: При маленьком условии остановки не справлялась с заданием, а иногда и зависала. Зато вначале выполнения быстрее всех распараллеливала задания
Из плюсов и минусов каждой стратегии был сделан вывод, согласно
которому в начале выполнения работы выгоднее большое количество
заданий распределять по соседним клеткам (как в 3-й стратегии), а
дальше в зависимости от разницы заданий между центральной клеткой
и каждым из её соседей высчитывать нужный процент распределения.
Так появилась «Умная стратегия»(4).
Выводы по проделанной работе:
а) стратегия «Больше в центре» работает эффективнее при стратегии выбора клетки по порядку,
b) стратегия «Меньше в центре» быстро работает только на начальном этапе,
16
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
с) стратегия «Поровну» ведет себя стабильнее всех, не имеет особых преимуществ в одних опытах и не является лучше в других опытах,
d) чем равномернее распределяются задачи на решетке клеточного
автомата, тем меньшее влияние оказывает каждый следующий шаг,
e) изменение размера решетки прямо пропорционально изменению
количества шагов клеточного автомата до остановки,
f) при большом количестве задач разница между стратегиями значительно уменьшается.
По проведенным опытам доказано, что лучшей является «Умная
стратегия». Она наиболее выгодная, эффективная и оптимальная из всех
стратегий и во всех опытах имеет значительное преимущество.
Заключение
10B
Тема «Моделирование процесса распараллеливания при помощи
асинхронных клеточных автоматов» актуальна в связи с возросшим интересом к моделированию сложных систем, состоящих из асинхронно
взаимодействующих процессов.
Итоги проделанной работы:
1. В результате исследования удалось разработать новый алгоритм,
который сочетает в себе несколько стратегий.
2. Написана программа, позволяющая визуализировать работу
асинхронного клеточного автомата.
3. Проведен ряд опытов, выведена их статистика, выявлены зависимости, плюсы и минусы каждой стратегии.
4. Опытно продемонстрировано, как работают стратегии без выполнения задач и с выполнением.
5. Найдена достаточно эффективная, быстрая и выгодная стратегия
распараллеливания.
Актуальность поиска и создания новых алгоритмов с использованием клеточных автоматов и, в частности, асинхронных определяется тем,
что, несмотря на быстрое развитие средств вычислительной техники,
еще нет таких компьютеров, способных решать огромное количество
задач в одиночку. Клеточные автоматы являются по определению параллельными структурами и поэтому используются для решения таких
проблем. Использование клеточных автоматов и интерес к ним говорит
о том, что клеточные автоматы, по-видимому, нашли устойчивое и постоянное применение во всех сферах человеческой жизни.
 Литература
95B
1. Астафьев Г. Б., Короновский А.А., Храмов А. Е. Клеточные автоматы:
учеб.-метод. пособие. Саратов, 2003. С. 24.
Д. В. Барабанова
17
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
2. Наумов Л., Шалыто А. Клеточные автоматы: Реализация и эксперименты
// Мир ПК. 2003. № 8. С. 64–71.
3. Калгин К. В. Параллельная реализация асинхронных клеточноавтоматных алгоритмов // Научно-технический вестник. 2008. № 54. С. 108–113.
Планирование пути робота
в среде с динамическими и стационарными
препятствиями с помощью нейронной сети
волнового распространения
О. В. Белякова
В реальной жизни часто бывает необходимость скоординировать
движение нескольких объектов. Такая задача может возникнуть в случае, когда надо развести траектории самолетов в небе, организовать
безопасное движение корабля в условиях дрейфующих льдов или когда
нужно скоординировать движение роботов, выполняющих одну общую
задачу, например исследование местности в зоне чрезвычайной ситуации. Часто окружающая среда, где перемещаются подобные автономные
объекты, может изменяться с течением времени. Возникает задача планирования пути. На первый взгляд может показаться, что эта задача актуальна только для военных или спасателей. Но механизмы планирования путей также используются в медицинских технологиях (в инвалидных креслах) и в сельском хозяйстве (колесные роботы).
Для более строгой формулировки задачи, потребуются следующие
понятия:
Рабочее пространство – это подмножество двумерного физического пространства, в котором осуществляется процесс планирования;
Робот – точечный объект в рабочем пространстве, для которого задано начальное и конечное положение;
Цель – точка в рабочем пространстве, которую роботу необходимо
достичь в результате планирования; Цель может быть динамическим
объектом;
Препятствия – позиции в рабочем пространстве, которые являются
запрещенными, т. е. не преодолимыми для робота. Они могут быть стационарными и динамическими;
Такт – шаг по времени. За один такт происходит передвижение
всех динамических объектов;
18
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Путь – траектория передвижения робота в рабочем пространстве.
Путь является безопасным, если не приводит к коллизиям.
Формулировка задачи планирования пути:
Пусть в рабочем пространстве находится робот, для которого заданы начальное и целевое положения и имеются различного рода препятствия. В этих условиях для робота необходимо найти безопасный путь
от начальной позиции до цели и провести робота по нему.
Прежде чем приступать к работе я ознакомилась с уже существующими решениями данной задачи. Все модели можно разделить по типу
представления – нейронная сеть и алгебраическое представление – и по
типу окружающей среды – стационарная и динамическая. Больший интерес вызывают модели, предназначенные для работы в динамической
среде, т. к. она более приближена к реальным условиям жизни. По представлению модели с использованием нейронных сетей вычислительно
более просты, эффективны и результативны, чем модели с алгебраическим представлением. Кроме того, в последние несколько лет мы наблюдаем повышенный интерес к нейронным сетям, которые используются в самых различных областях, начиная от бизнеса и заканчивая физикой. Это обусловлено их простотой в использовании и богатыми
возможностями, они привлекательны с интуитивной точки зрения.
Для решения задачи мною была использована нейронная сеть относительно нового типа – нейронная сеть распространения динамических
волн. Сеть используется для планирования пути в режиме реального
времени в стационарной и динамической средах. С её помощью над рабочим пространством формируется числовое, динамически обновляющееся потенциальное поле, элементы которого мы называем динамическими потенциалами расстояний, т. е. по этим значениям мы будем судить о близости робота к цели. Автором этого подхода является
Д. В. Лебедев (неопубликованная работа).
С каждой позицией рабочего пространства отождествляется нейрон
поля волновой сети. Нейроны сети расположены в регулярной дискретной решетке. Каждый нейрон i связан с его набором соседей
si = {i1,….,i4}, для которых принимается произвольная и фиксированная
нумерация. Все вместе они образуют окрестность нейрона. Поле сети,
таким образом, состоит из набора перекрывающихся соседств.
Модель можно рассматривать как динамическую систему с дискретным временем. Активность нейрона i в каждый момент времени t
зависит от текущей активности его соседей (вектор X(t) = (Xi1 (t),…, Xi4
(t)). Будем считать нейрон активным, если х(t) > 0, и неактивным в противном случае. Каждый нейрон имеет внешний вход оi, который может
принимать значения -1, 1, 0 в зависимости от того, что он соответствует
О. В. Белякова
19
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
препятствию, цели или ни то ни другое соответственно. Кроме того,
нейрон в поле сети может находиться под влиянием тормозящих импульсов от нейронов-препятствий.
Рис. 1. Архитектура сети
Рис. 2. Модель нейрона
Первоначально значения активности всех нейронов и все веса связей полагаем равными нулю. Обозначим i*(t) индекс нейрона-цели в момент времени t. Все нейроны можно разделать на 3 группы. Три типа
нейронов по динамике определяются формулами:
1) если это нейрон- цель (i=i*(t)), то
(1)
2) если прямые соседи нейрона-цели
(2)
3) для всех других нейронов
(3)
На каждом такте перед обновлением уровня активности нейрона i
сообщающиеся связям веса определяются в соответствии с правилом:
(4)
20
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Здесь jk – символ Кронекера, и упомянутые выше условия для нейрона k следующие:
а) нейрон с номером k не соответствует препятствию,
б) xk(t)> 0, т. е. это часть активности волнового фронта и несет в себе какую-то информацию об изменениях в рабочей области,
в) xk(t) ≠ xk(t-1), т. е. он несет новую информацию,
г) если для нейрона i (xi(t) + xi(t-1))> 0, то для нейрона k должно выполняться xk(t)< xi(t), то есть его расположение ближе к цели, чем текущее положение робота.
Проще говоря, нейрон опрашивает соседей в порядке с принятой
фиксированной нумерацией, и выбирает из них первого, для которого
выполнены условия.
Было проведено исследование данной модели. В частности, были
сформулированы и доказаны следующие утверждения:
Утверждение 1. Пусть в момент времени t активность нейронов i и
j (j –сосед нейрона i, нейрон 3 типа) стала такой, что j стал первым
(в соответствии с заранее принятой нумерацией) соседом нейрона i, для
которого выполнены условия:
 хj(t) ≠ хj(t-1)
 хj(t)>0
 хi (t)>0, причем хj(t)< хi (t)
 oj≠-1; (не является препятствием)
 если хi (t) + хi (t-1)> 0, то хj(t)< хi (t)
Тогда, в следующий момент времени t + 1 после пересчета весов,
вес wij будет указывать направление возрастания функции потенциала
(вес wij направлен от нейрона j к нейрону i).
Следствие: В условиях утверждения 1 перемещение из i-ой позиции в j эквивалентно перемещению в направлении положения цели, в
которой значение потенциала соответствует глобальному минимуму поля потенциалов.
Утверждение 2. В стационарных условиях длина пути к цели является оптимальной в метрике L1.
Это утверждение было доказано, основываясь на трех следующих.
Утверждение 4. Если неактивный нейрон i стал активным в момент
времени k, а нейрон j в момент времени m, причем m>k, то для любого
t>m справедливо: хj(t)>хi(t).
Утверждение 5. Пусть нейрон i относится к нейронам 3 типа, в момент времени tk его уровень активности равен хk >0 и планирование путей происходит в стационарной среде. Тогда в момент времени tk + k его
уровень активности примет значение tk + k.
О. В. Белякова
21
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Утверждение 6. Пусть нейрон i не является ни нейроном-целью, ни
его соседом. В момент времени tk>1 он стал активным. Тогда его активность в этот момент времени становится равной 2tk -1;
Изначально все нейроны неактивны. Нейрон, соответствующий цели, получает в начальный момент времени единичное положительное
значение на внешнем входе и является источником распространения
нейронной активности в поле сети. Нейроны, соответствующие стационарным препятствиям, имеют отрицательное единичное значение на
внешнем входе. Аналогично, если в момент времени t нейрон ассоциирован с динамическим препятствием, то его внешнему входу также в
этот момент времени присваивается отрицательное единичное значение.
Если препятствие уходит, то значение на внешнем входе снова равно
нулю. На каждом такте перед обновлением уровня активности происходит пересчет весов, согласно описанным выше правилам.
В случае задачи планирования пути для нескольких роботов их независимые перемещения рассматриваются в совокупности и тогда относительно друг друга роботы представляют динамические препятствия.
Поэтому, не ограничивая общности, приведем схему решения для планирования пути одного робота.
Введем на решетке систему координат, выбрав начало координат в
одном из узлов и направив оси по ребрам, проходящим через этот узел.
Тем самым каждому узлу решетки можно поставить в соответствие её
целочисленные координаты (p,q).
Таким образом, формально правило перехода в позицию (pj, qj), ассоциированную с нейроном j, из текущей позиции (pi, qi), ассоциированную с нейроном i, можно записать так:
(pi qi )→(pj qj): {wij>0 || oj=1}.
Стоит отметить, что, благодаря фиксированной нумерации, пути
будут состоять из прямых линий.
В динамических условиях быстрое перестроение потенциального
поля возможно благодаря тому, что активные нейроны могут временно
стать неактивными. Это ключевое свойство заключается в условии г)
правила пересчета весов. Таким образом, неактивный нейрон может начать распространение тормозной волны. Робот ждет какое-то время, пока до его месторасположения не дойдет новая волна активности. Неактивные нейроны снова станут активными, когда до них дойдет «свежий»
волновой фронт. Перемещения робота на каждом шаге являются безопасными.
Таким образом, в ходе работы автором разработана модель нейронной сети, использующая идеи волнового алгоритма. Эта сеть способна
22
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
генерировать динамические потенциалы расстояний. В результате исследования было доказано, что эта модель генерирует оптимальные в
смысле общей длины пути робота в стационарной среде и оптимальные
(или близкие к оптимальным) в том же смысле в динамической.
Использование нейронной сети для решения задачи достаточно эффективно.
1. Правила обновления нейронной активности и пересчета весов с
точки зрения вычисления очень эффективны и просты.
2. Проблема предотвращения локальных минимумов в этой модели
решается тоже достаточно просто, причем никакой перепланировки с
нуля не требуется, так как потенциальное поле адаптируется к изменениям в окружающей среде динамично и быстро.
3. Не требуется предварительной информации о среде.
 Литература
1. Белякова О. В. Планирование пути робота в среде с динамическими и
стационарными препятствиями с помощью нейронной сети волнового распространения: магистерская диссертация. Ярославль: ЯрГУ, 2011. 32 c.
2. Ritter H., Steil J.J. The dynamic wave expansion neural network model for robot motion planning in time-varying environments, 2005. University of Bielefeld, Faculty of Technology, Neuroinformatics Group, P. O.-Box 10 01 31, 33501 Bielefeld,
Germany, 2005.
Нейронные сети
с вероятностной функцией активации
в задачах распознавания изображений
И. А. Суслова, Ю. В. Богомолов
Нейронные сети представляют собой перспективную вычислительную технологию. Благодаря возможности работы с «зашумленными»
данными, система является достаточно гибкой. Приложения нейронных
сетей охватывают самые разнообразные области интересов: распознавание образов, обработка зашумленных данных, дополнение образов, ассоциативный поиск, классификация, оптимизация, прогноз, сегментация
данных, распознавание речи.
Необычайно высокий интерес к нейронным сетям, проявляемый специалистами из разных областей деятельности, объясняется прежде всего
очень широким диапазоном решаемых с их помощью задач. [1, с. 29]
И. А. Суслова, Ю. В. Богомолов
23
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
В настоящей статье рассматривается задача распознавания растрового изображения на основе конечного набора эталонов, подвергающихся зашумлению. К рассмотрению был представлен вопрос об улучшении
качества распознавания изображения с помощью персептрона на основе
нейрона МакКаллока-Питтса, активационная функция которого модифицируется.
Задача распознавания изображения основывается на задаче классификации, при которой необходимо отнести имеющиеся статические образцы к определенным классам. Возможно несколько способов представления данных. Наиболее распространенным является способ, при
котором образец представляется вектором. Компоненты этого вектора
представляют собой различные характеристики образца, которые влияют на принятие решения о том, к какому классу можно отнести данный
образец. Классификатор относит объект к одному из классов.
За эталоны изображений были взяты цифры почтового индекса.
Каждая из цифр представлена в матричном виде размером 4*7, составленной из 0 и 1 (единицей обозначается закрашенная область)(рис.1).
Таким образом, получили 10 классов: С0, С1, С2, …, С9.
Рис. 1. Эталоны цифр
Задача классификации объекта ставится следующим образом: известно некоторое конечное множество объектов (обучающее множество), про
каждый из которых известно, какому классу он принадлежит. Требуется
построить алгоритм, который по любому входному объекту, не обязательно принадлежащему обучающему множеству, решает, какому классу этот
объект принадлежит. Немаловажно, чтобы алгоритм был устойчивым, т. е.
при незначительных отклонениях от обучающего множества класс не
должен меняться.
Для решения задачи распознавания применяется нейросетевой подход, заключающийся в построении программной реализации искусственной нейронной сети – однослойного персептрона. Персептрон состоит из десяти нейронов, каждый соответственно отвечает за свой класс.
24
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Полное описание модели персептрона приведено в [2]. Здесь отметим
основные детали реализации.
Однослойные персептроны содержат один слой искусственных
нейронов между входом и выходом, соединенных с помощью весовых
коэффициентов. На вход персептрона поступает только двоичный сигнал. Элемент умножает каждый вход на вес и суммирует взвешенные
входы. Если эта сумма больше заданного порогового значения, выход
равен единице, в противном случае – нулю.
Формальный нейрон содержит массив весов синапсов, порог активации, при достижении которого нелинейный преобразователь – в качестве
его выступает жесткая пороговая функция – возвращает 1 (иначе 0), что
внутри нейронной сети будет означать соответствие той или иной цифре.
Использование «жесткой ступеньки» объясняется наиболее быстрым процессом обучения, так как нейроны с такой нелинейностью требуют малых вычислительных затрат.
Нейронные сети не программируются в привычном смысле этого
слова, они обучаются. Возможность обучения – одно из главных преимуществ нейронных сетей перед традиционными алгоритмами. Технически обучение заключается в нахождении коэффициентов связей между нейронами. В процессе обучения нейронная сеть способна выявлять
сложные зависимости между входными данными и выходными.
Персептрон обучают, подавая множество образов по одному на его
вход и подстраивая веса до тех пор, пока для всех образов не будет достигнут требуемый выход. Алгоритм одного цикла обучения персептрона
следующий (количество циклов обучения задается пользователем):
а) присвоить синаптическим весам w1, w2, …, wN некоторые начальные значения;
б) подать входной образ и вычислить выходное значение. Если оно
правильное (результат работы алгоритма соответствует классу распознаваемого объекта), то переходим к шагу г). Иначе к шагу в);
в) применяя дельта-правило, вычислить новые значения синаптических весов;
г) перейти к следующему по порядку образу, если возможно. Повторить шаги б)-г).
Таким образом, логика обучения персептрона следующая: если сигнал персептрона при некотором образе верен, то ничего корректировать
не надо, если нет – производится корректировка весов.
В данной статье рассмотрена модификация стандартной модели
нейрона. Основная идея модификации модели заключается в замене детерминированной активационной функции на дискретную случайную
функцию особого вида. Под дискретной случайной функцией будем поИ. А. Суслова, Ю. В. Богомолов
25
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
нимать семейство случайных величин, индексированное некоторым вещественным параметром t (в данной работе в роли параметра t рассматривается взвешенная сумма входных сигналов). Будем говорить о дискретной случайной функции, если ее значения являются дискретными
случайными величинами.
Исходную активационную функцию – так называемую жесткую
ступеньку – заменим ступенькой с линейной частью, т. е. порог активации представим в виде интервала (х1, х2). Значение ver активационной
функции на этом интервале равняется частному разности результата
суммирущего блока nec и значения левой границы интервала и разности
значений правой и левой границ интервала.
P
nec  x1
,
x 2  x1
где nec – результат суммирующего блока, P – значение вероятности.
Далее предлагается заменить линейный участок активационной
функции на бернуллиевскую случайную величину. Для этого рассмотрим случайную величину q, равномерно распределенную на [0;1], с которой сравним ранее полученное значение P. Если q < P, то на выход
OUT функции активации поступает 1, иначе 0.
1, q  P,
OUT *  
0, q  P,
где q – случайная величина, равномерно распределенная на [0,1],
OUT* – значение функции активации.
В результате замены функция активации выглядит следующим образом:
0, nec  x1 ,

OUT  OUT *, x1  nec  x 2 ,
1, nec  x ,
2

где nec – результат суммирующего блока (взвешенная сумма входных
сигналов),
OUT* – описанное выше значение результат функции активации на
(x1, x2),
OUT – значение функции активации.
Таким образом, функция активации следующая: при крайних значениях параметра x (вне указанного интервала) значение случайной
функции – это константа (0 или 1), а при некоторых особых значениях
26
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
(попадающих в интервал (x1, x2)) – бернуллиевская случайная величина
(то есть принимающая 0 или 1 с какими-то вероятностями).
Предложенная модифицированная модель нейрона была реализована программно. На основе построенной программной модели была организована серия вычислительных экспериментов, при этом в качестве
параметров используются положительное количество циклов и уровень
зашумленности.
В ходе тестирования были накоплены данные, выдаваемые персептроном, при разных значениях параметров, от которых зависит вероятность выходного значения функции активации.
Для сравнения качества распознавания невероятностной модели
персептрона и модели с вероятностной функцией активации был построить график зависимости качества распознавания от уровня шума
при разных значениях параметров сети. Качество распознавания в данной работе определяется как отношение количества распознанных образов к количеству циклов обучения. Для построения графика были использованы данные тестирования при заданных 10000 циклов обучения
и уровнях шума: 1; 0,1; 0,01; 0,001.
Анализ результатов вычислительного эксперимента показал, что в
большинстве случаев нейронная сеть с вероятностной функцией активации превосходит исходную модель формального нейрона по качеству
И. А. Суслова, Ю. В. Богомолов
27
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
распознавания при разных уровнях шума. Наиболее четко это просматривается при значениях уровня шума из окрестности 0,1.
Таким образом, была исследована зависимость качества распознавания от уровня шума при разных значениях параметров сети. Выявлено, что в большинстве случаев вероятностная модель нейронной сети
превышает по качеству распознавания классическую модель. Полученные результаты позволяют говорить о перспективности рассмотренного
подхода к модификации модели формального нейрона и дают основания
для применения данного подхода к модификации других моделей искусственных нейронных сетей
 Литература
96B
1. Рычагов М. Н. Нейронные сети: многослойный персептрон и сети Хопфилда // Вестник Челябинского государственного университета. 2003. № 1(1).
201 с.
2. Заенцев И. В. Нейронные сети: основные модели: учеб. пособие к курсу
«Нейронные сети». Воронеж, 1999. 76 с.
3. Уоссермен Ф. Нейрокомпьютерная техника: Теория и практика. М., 1992.
184 с.
Решение задачи о клике на языке rpC
с помощью библиотеки RPM
Е. А. Бойцов, В. В. Васильчиков
Введение
В данной работе описывается алгоритм решения задачи «О нахождении максимальной клике в неориентированном графе», построенный в
соответствии с концепцией рекурсивно-параллельного программирования, а также результаты его тестирования с использованием текущей
версии библиотеки RPM.
В последнее время интерес к разработке параллельных алгоритмов
и средств поддержки параллельных вычислений снова возрос, и причины этого достаточно очевидны. Технология построения процессоров
достигла некоторой критической точки, в которой уже крайне тяжело
или практически невозможно увеличить производительность одного
процессора. Поэтому при решении особо трудоемких вычислительных
28
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
задач все чаще применяются различные многопроцессорные и многомашинные конфигурации.
Сегодня мы являемся свидетелями того, что дальнейшее увеличение вычислительных мощностей даже отдельно взятого компьютера
достигается уже не путем увеличения тактовой частоты, а путем создания многоядерных процессоров, способных одновременно решать несколько задач без ущерба каждой из них. Однако чтобы полностью задействовать все преимущества многоядерных архитектур, требуется выработать принципиально новый подход к разработке программного
обеспечения. Как известно, большинство современных приложений используют последовательные алгоритмы решения задач. Обусловлено это
как историческими причинами (многоядерные процессоры появились
лишь относительно недавно, а до тех пор параллельность лишь эмулировалась средствами операционных систем), так и характером человеческого мышления (как известно, человек мыслит последовательно).
Существует много различных подходов к построению параллельных алгоритмов и распределенных вычислительных систем. В данной
работе мы будем придерживаться концепции рекурсивно-параллельного
(РП-) программирования [1], которая позволяет путем особой организации алгоритма решения задачи почти полностью автоматизировать распараллеливание работы и балансировку загрузки отдельных элементов
вычислительной системы.
Основная идея данного подхода состоит в следующем: решение исходной задачи строится в виде набора рекурсивных процедур, которые
«дробят» работу на все более и более мелкие части до тех пор, пока вычислительная емкость каждой из таких частей не станет достаточной для
того, чтобы перейти к последовательному этапу решения на «листе» рекурсии. В простейшем случае мы получаем вычислительный процесс, сначала «разворачивающийся» до некоторой ширины, а затем снова «сворачивающийся» в точку (рис. 1). Схема синхронизации в этом случае предельно проста: параллельный процесс не может быть завершен ранее, чем
будут завершены вычисления во всех порожденных им процессах.
Для программирования РП-вычислительных процессов в [1] был
предложен язык rpС, представляющий собой несколько ограниченный
язык C, дополненный несколькими специальными конструкциями. Эти
ограничения в основном связаны с особенностями совместного использования памяти параллельными ветвями программы. Помимо операторов, для порождения параллельных вычислительных процессов (активаций рекурсивно-параллельных процедур), язык rpC содержит ряд
средств, обеспечивающих обмен данными между узлами вычислительЕ. А. Бойцов, В. В. Васильчиков
29
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ной сети, а также средства синхронизации параллельных процессов в
рамках всей системы в целом (замки синхронизации).
Рис. 1. Типичный вид простого РП-вычислительного процесса
Задача о клике и алгоритм ее решения
Приведем пример разработки рекурсивно-параллельного алгоритма
для решения задачи о максимальной клике неориентированного графа.
Напомним, что кликой называется любой полный подграф (т. е. такой
подграф, в котором каждая вершина соединена с каждой).
Как известно, задача о клике относится к так называемым NPполным задачам, для которых на данный момент неизвестно алгоритма
решения с полиномиальной трудоемкостью. Так как более быстрого варианта нахождения решения нет, то остается лишь один способ – перебор, безусловно, не полный, а оптимизированный. Одним из лучших на
сегодняшний день алгоритмов для решения задачи о клике считается алгоритм Брона-Кербоша (вариант метода ветвей и границ) [4], сложность
которого в худшем случае имеет порядок O(3n/3) [5].
Данный алгоритм оперирует тремя множествами вершин графа:
1. Множество compsub – множество, содержащее на каждом шаге
рекурсии полный подграф для данного шага. Строится рекурсивно.
2. Множество candidates – множество вершин, которые могут увеличить compsub.
3. Множество not – множество вершин, которые уже использовались для расширения compsub на предыдущих шагах алгоритма.
Алгоритм является рекурсивной процедурой, применяемой к этим
трем множествам.
30
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ПРОЦЕДУРА bron_kerbosh (candidates, not):
ПОКА candidates НЕ пусто И not НЕ содержит вершины, СОЕДИНЕННОЙ
СО ВСЕМИ вершинами из candidates,
ВЫПОЛНЯТЬ:
1 Выбираем вершину v из candidates и добавляем её в compsub
2 Формируем new_candidates и new_not, удаляя из candidates и not вершины, не СОЕДИНЕННЫЕ с v
3 ЕСЛИ new_candidates и new_not пусты
4 ТО compsub – клика
5 ИНАЧЕ рекурсивно вызываем bron_kerbosh(new_candidates, new_not)
6 Удаляем v из compsub и candidates и помещаем в not
Как мы видим, алгоритм уже является рекурсивной процедурой,
однако в данной формулировке он лишен параллелизма. В соответствии
с концепцией рекурсивно-параллельного программирования, вычисления следует организовать таким образом, чтобы создать в системе некоторый запас работы, которую можно перераспределять между элементами вычислительной системы, тем самым балансируя загрузку. Простейший способ осуществить это на практике – это начать «дробить»
работу, отложив все вычисления на «листья» рекурсии. Переформулируем алгоритм следующим образом:
ПРОЦЕДУРА bron_kerbosh (candidates, not):
0 ЕСЛИ not содержит вершину, СОЕДИНЕННУЮ СО ВСЕМИ вершинами
из
candidates
ТО завершить процедуру
1 ЕСЛИ new_candidates и new_not пусты
ТО compsub – клика
ИНАЧЕ
2 Выбираем первую вершину v из candidates и добавляем её в compsub
3 Формируем new_candidates и new_not, удаляя из candidates и not вершины, не СОЕДИНЕННЫЕ с v
4 Рекурсивно вызываем bron_kerbosh(new_candidates, new_not)
5 Удаляем v из compsub и candidates и помещаем в not
6 Рекурсивно вызываем bron_kerbosh(candidates, not)
Е. А. Бойцов, В. В. Васильчиков
31
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
На очередном шаге алгоритма мы либо берём вершину в клику, либо помещаем её в множество not, таким образом образуя две ветви рекурсии (вторая ветвь, очевидно, «тяжелее», т. к. занимается менее «продуктивной» работой). В описанном варианте алгоритма ветвление производится до максимально возможного предела, однако из-за
трудозатрат на порождение, передачу и активизацию параллельных ветвей такой подход неэффективен и алгоритм требует модификации, которая состоит в следующем:
1. Ветвление необходимо осуществлять лишь до некоторого критического размера множества candidates, после чего следует переходить к
оригинальной последовательной версии алгоритма, иначе на некотором
этапе вычислений процессорные модули (ПМ) начнут обмениваться активациями небольшой вычислительной ёмкости, передача которых по
коммутационной сети и накладные расходы на вызов превысят их собственную вычислительную емкость.
2. Нам потребуется завести специальную переменную, хранящую
размер максимальной из найденных клик (и некоторую структуру данных, хранящую описание этой клики). Если на каком-то этапе суммарный размер множеств compsub и candidates становится меньше значения
данной переменной, то данная ветвь является заведомо бесперспективной и вычисления на ней должны быть прекращены.
Остановившись на данном варианте решения, перейдем к его технической реализации. Если условиться хранить граф в виде матрицы
смежности, а максимальную клику в виде списка номеров входящих в
нее вершин, то получим две общие структуры данных и одну общую переменную:
1. Матрица смежности графа. Заполняется пользователем и используется только для чтения.
2. Наибольшая клика. Заполняется по ходу работы программы, может многократно изменяться по мере обнаружения клик большего размера.
3. Размер наибольшей клики. Характер использования такой же, как
и у только что описанной структуры.
В языке rpC для хранения общих данных может использоваться статическая и распределенная память. Статическая память – это фактически
локальная память процессорного модуля, имеющая возможность синхронизации со статической памятью на других ПМ системы (т. е. на каждом
ПМ имеется собственная копия всех данных). Содержимое распределенной памяти распределено по всей системе с заданным коэффициентом
вертикального расслоения. Доступ к ней осуществляется с помощью специальных операций, выполняющихся на фоне основных вычислений и
32
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
требующих синхронизации. Доступ к содержимому статической памяти
осуществляется быстрее, однако за это приходится платить увеличенным
потреблением оперативной памяти на каждом ПМ системы в отдельности.
В нашем случае были приняты следующие решения:
 На каждом ПМ системы разумно хранить собственную копию
матрицы смежности графа, пожертвовав одним копированием данных
при старте вычислений, но сэкономив многократно больше на скорости
доступа к элементам матрицы (а это одна из основных операций алгоритма).
 Максимальную клику и ее размер имеет смысл хранить в разделяемой памяти, при этом синхронизируя доступ на запись с помощью
механизма замков.
Как уже отмечалось выше, бессмысленно дробить работу до тех
пор, пока это только возможно, поэтому программу организуем в виде
двух основных процедур: рекурсивно-параллельной процедуры, обеспечивающей разделение работы, а также обычной функции языка С, реализующей последовательную версию алгоритма Брона-Кербоша. Теперь
опишем общий вид двух основных процедур, а также главной функции
программы – main():
int main( int argc, char* argv[], char* envp[] )
{
//Ввод данных, заполнение матрицы смежности графа
Obj_CopyTo_Set( AllPm, МатрицаСмежности ); //копирование матрицы смежности
G_Alloc( РекорднаяКлика ); //выделение сегмента РОП под рекорд
Wait();//ожидание завершения копирования и выделения памяти
//Подготовка параметров
P_Call( bron_kerbosh, аргументы); //вызов основной процедуры
Wait();//синхронизация
//обработка результатов
}
В функции main() происходит ввод исходных данных задачи, инициализация и копирование глобальных структур данных, а также вызов
основной процедуры программы для запуска вычислений. Здесь используются такие специфичные для языка rpC операторы, как G_Alloc (выделение сегмента распределенной памяти), Obj_CopyTo_Set (копироваЕ. А. Бойцов, В. В. Васильчиков
33
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ние статических данных на другие ПМ) и Wait (ожидание завершения
всех параллельных операций, запущенных активацией).
RPMFunc( bron_kerbosh, bron_kerbosh_args args )
{
//Если размер задачи достаточно мал, переходим к последовательному этапу
return bron_kerbosh_seq( args );
//Добавить первого кандидата в compsub
if( Ветка перспективная )
P_Call( bron_kerbosh, параметры ); //первая ветка
//Добавить первого кандидата в not
if( Ветка перспективная )
P_Call( bron_kerbosh, параметры ); //вторая ветка
Wait(); //синхронизируемся с потомками
}
Основная рекурсивно-параллельная процедура алгоритма работает
следующим образом:
 Если размер задачи за счет предыдущих шагов стал достаточно
мал, то вызывается последовательная версия алгоритма Брона-Кербоша
(функция bron_kerbosh_seq), которая завершает вычисления на данном
листе рекурсии.
 Иначе первая вершина-кандидат добавляется в множество
compsub и, если полученная комбинация характеристик множеств
compsub, not и candidates представляет интерес (т. е. суммарный размер
множеств compsub и candidates больше максимальной из найденных на
данный момент клик и в множестве not нет вершины, смежной со всеми
вершинами из candidates), порождается первая ветвь рекурсии.
Первая вершина добавляется в множество not, производится аналогичное исследование, и, в случае успеха, порождается вторая ветвь рекурсии.
Как мы видим, цель основной процедуры – это разделение первоначальной задачи на множество более мелких подзадач, распределяя которые по модулям можно динамически балансировать нагрузку в системе.
Неописанной осталась лишь функция bron_kerbosh_seq, реализующая
последовательный алгоритм Брона-Кербоша, впрочем, особого интереса
ее код не представляет, за исключением способа обновления глобального
34
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
рекорда (состава наибольшей из найденных клик графа и его размера).
Как уже упоминалось выше, эти структуры данных являются разделяемыми в рамках всей системы ресурсами, а потому доступ к ним на запись должен быть синхронизирован:
Lock( 0 ); //вход в критическую секцию
Obj_CopyTo_Set( размер рекорда ); //копирование размера рекорда
Store_1( вершины клики ); //сохранение состава рекорда
Wait(); //ожидание завершения доступа в память
Unlock( 0 ); //выход из критической секции
Приведенный участок кода достаточно типичен для программ на
языке rpC, которым требуется синхронизация обращений к разделяемым
данным. Здесь следует иметь в виду, что системный вызов Lock() сопряжен с изрядными затратами (требуется передача данных по сети и, возможно, ожидание), поэтому следует проектировать алгоритмы таким образом, чтобы минимизировать количество его использований. В случае
рассматриваемой задачи о клике, разумны будут следующие оптимизирующие действия:
 Заведение на каждом ПМ системы дополнительной переменной,
хранящей рекорд, найденный именно на данном ПМ. С помощью такой
переменной можно уменьшить число запросов на захват замка с того
ПМ, на котором была найдена наибольшая на данный момент клика.
 Получение перед запуском основных вычислений некоторого приближенного решения задачи при помощи достаточно быстрого алгоритма
(например, можно попытаться найти достаточно большую клику среди «соседей» одной из вершин с наибольшим количеством инцидентных ребер).
Данный шаг позволит отсечь больше ветвей после запуска основных вычислений, а также резко снизит количество обращений за захватом замка
синхронизации при нахождении клик небольшого размера.
Тестирование
Одной из целей разработки данного параллельного алгоритма и его
программной реализации было тестирование новой версии библиотеки
поддержки параллельного режима выполнения rpC-программ. Программа, реализующая алгоритм, основанный на методе ветвей и границ, идеально подходила для этой цели. Ее основные достоинства:
 Существенная разница в трудоемкости параллельных ветвей программы. На этом примере мы могли проверить качество работы алгоритма динамической балансировки загрузки ПМ.
Е. А. Бойцов, В. В. Васильчиков
35
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 Необходимость использования статической и распределенной памяти, а также синхронизации с использованием глобальных замков, что
позволило протестировать соответствующие механизмы.
 Использование глобальной переменной, хранящей текущий рекорд, в сочетании с одновременным выполнением многих веток алгоритма и их досрочным завершением (в случае бесперспективности) могло привести к ускорению, превышающему количество задействованных
процессорных модулей (гиперлинейное ускорение). Эксперимент позволил в ряде случаев зафиксировать этот интересный эффект.
Для тестирования использовалась локальная сеть, состоящая из
различного числа компьютеров. Исходные данные представляли собой
случайные графы из достаточно большого числа вершин с различной
плотностью.
В качестве иллюстрации ниже на графике представлена зависимость времени работы программы при поиске максимальной клики в
случайном графе из 90 вершин плотностью 0.9 (см. рис. 2). Поскольку
абсолютное время работы программы не является принципиально важным и зависит от многих факторов, на графике время приведено в условных единицах. В данном эксперименте на каждом из компьютеров
запускалось по два экземпляра программы (это одна из новых возможностей библиотеки).
Результаты тестирования при запуске двух экземпляров программы
на каждом компьютере
4000
3500
3000
Время
2500
2000
1500
1000
500
0
1
2
3
4
5
6
Число компьютеров
Рис. 2. Зависимость времени работы от количества компьютеров
Также в результате тестирования получил экспериментальное подтверждение интуитивно понятный факт, что наилучшие результаты достигаются в том случае, если на одном компьютере запускается количество копий программы, равное количеству ядер его процессора.
36
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 Литература
97B
1. Васильчиков В. В. Средства параллельного программирования для вычислительных систем с динамической балансировкой загрузки. Ярославль : ЯрГУ, 2001.
2. Васильчиков В. В., Силантьев А. О. Средства поддержки параллельного
выполнения рекурсивно-параллельных программ для платформы win32
// Актуальные проблемы естественных и гуманитарных наук на пороге XXI века:
Информатика: сб. материалов Всерос. науч. конф., посвящ. 200-летию Яросл.
гос. ун-та им. П. Г. Демидова. Ярославль : ЯрГУ, 2003.
3. Библиотека параллельного исполнения rpC-программ для Win32
/ Васильчиков В. В., Шубин А. В. // Моделирование и анализ информационных
систем. Ярославль, 2008. Т. 15.
4. Bron C., Kerbosh J. Algorithm 457 – Finding all cliques of an undirected
graph: Comm. of ACM, 16. N. Y., 1973. P. 575–577.
5. Tomita E., Tanaka A., Takahashi H. The worst-case time complexity for generating all maximal cliques and computational experiments // Theoretical Computer
Science. 2006, Vol 363, Issue 1. P. 28–42.
Программные средства для построения
и визуализации графа трассы
для RPC-программ
В. В. Васильчиков, А. Г. Седов
Введение
1B
Интегрированная среда рекурсивно-параллельного (РП-) программирования RpmShell [1] предполагает возможность исполнения программы, написанной на языке rpC в нескольких режимах. Один из них – режим построения графа трассы порождаемого параллельного вычислительного процесса. Он является основой для дальнейшего исследования
параллельных свойств алгоритма и реализующей его программы путем
имитационного моделирования. В процессе моделирования выполнения
РП-программы на заданной конфигурации вычислительной системы
можно вычислить различные характеристики, например потенциальный
параллелизм, собрать статистические данные, позволяющие выявить узкие места алгоритма, причины недостаточно эффективного выполнения
и многое другое. Достоинством подхода, основанного на построении
графа трассы, является то, что он содержит всю информацию, необходимую для проведения имитационного моделирования, и, будучи однаВ. В. Васильчиков, А. Г. Седов
37
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
жды построенным, пригоден для исследования поведения программы на
самых различных конфигурациях рекурсивно-параллельной вычислительной системы.
В DOS-версии среды RpmShell [1] вся перечисленная функциональность, относящаяся к работе с графом трассы, уже была реализована. В
комплекс входила библиотека для его построения, программа визуализации графа, две программы имитационного моделирования с визуализаторами статистики, а также программа для анализа собранной статистической информации и оценки на ее основе степени влияния тех или
иных недостатков программы на снижение ее производительности.
В процессе создания Win32-версии интегрированной среды РПпрограммирования основное внимание было уделено самой важной ее
составляющей – библиотеки поддержки параллельного режима исполнения rpC-программы. Однако возможность графически представить
структуру параллельного вычислительного процесса, а также провести
процесс имитационного моделирования и программного анализа полученной статистический информации осталась достаточно привлекательной. Было решено реализовать эти возможности заново, опираясь на современные технологии.
Библиотека построения графа трассы
12B
Первым этапом работы по реализации возможностей имитационного моделирования РП-вычислительных процессов и стала разработка
библиотеки построения графа трассы, а также программывизуализатора. Для того чтобы обеспечить совместимость с уже существующими средствами работы с графом (ранее созданные программы
имитационного моделирования), а также для удобства тестирования было решено сохранить прежний его формат (бинарный файл). Прежде
чем описывать результаты этой работы, рассмотрим основные особенности РП-вычислительного процесса и некоторые термины, принятые у
разработчиков.
РП-программа представляет собой иерархическое множество процедур двух типов (параллельные и последовательные), допускающих
рекурсивный вызов.
Вычислительный процесс, протекающий в вычислительной системе,
поддерживающей РП-стиль программирования, является иерархическим
параллельным процессом. Компоненты этого процесса есть активации
процедур, а также некоторые системные функции. Активацией мы будем
называть вызов параллельной процедуры с конкретными значениями параметров. Любая компонента, соответствующая активации процедуры, в
38
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
свою очередь, может быть иерархическим параллельным процессом. Существует несколько типов компонент параллельного процесса:
 активации параллельных пользовательских процедур,
 последовательные активации параллельных пользовательских
процедур,
 параллельные операторы доступа в разделяемую общую память,
 операторы копирования данных,
 синхронизирующий оператор Wait(),
 некоторые другие параллельные операторы.
Активация процедуры является параллельной, если ее вызов осуществляется посредством специального оператора порождения параллельного процесса. После вызова параллельной процедуры вычисления в родительской процедуре продолжаются без приостановки до точки синхронизации (оператора Wait()).
Возврат из дочерней параллельной процедуры в родительскую процедуру осуществляется в точку синхронизации. Вычисления в дочерних
процедурах и родительской процедуре могут выполняться параллельно,
возможно, на разных процессорных модулях (ПМ). В точке синхронизации происходит ожидание завершения всех дочерних параллельных
процессов, запущенных до момента попадания в данную точку родительской процедуры. К ним относятся не только вызовы параллельных
процедур, но и другие параллельные процессы, например работа с общей памятью.
Иерархическая модель параллельных вычислений регламентирует
взаимодействие процессов (активаций процедур) следующим образом:
 каждая активация имеет связь по управлению только с родительской
и дочерними активациями, при этом завершить свое выполнение активация может только в том случае, если завершили выполнение все порожденные ею параллельные процессы (в том числе дочерние активации);
 родительская активация при порождении дочерней может передать ей через блок параметров некоторые исходные данные, а после завершения дочерней активации получить от нее возвращаемые параметры через тот же блок.
Теперь мы можем перейти к описанию основных элементов графа
трассы. Граф трассы – это ориентированный граф, множество вершин
которого представляет собой множество событий системы, вызванных
выполнением специальных операторов языка rpC, а множество рёбер –
отношение частичного линейного порядка между ними.
В ходе выполнения RPM программы возможны следующие основные типы событий:
В. В. Васильчиков, А. Г. Седов
39
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 выполнение операций для работы с памятью: выделение, освобождение, запись, чтение.
 линейный участок (lk) – объединение всех прочих вычислений,
происходящих внутри активации.
 ветвление (fork) – специальный элемент графа, позволяющий задать
точку, где порождается один или несколько параллельных процессов.
 синхронизация (wait) – вызов оператора Wait().
Отношением линейного порядка < на множестве событий назовём
наименьшее отношение, удовлетворяющее следующим условиям:
1) Если a и b – два разных события одной и той же активации A
и событие a происходит раньше события b, то a < b.
2) Если c – это событие вызова процедуры в параллельном режиме,
а d – это взаимосвязанное с ним событие старта активации, то c < d.
3) Если r – это событие завершения активации, а w это соответствующее ему событие синхронизации, то r < w.
4) Отношение < обладает свойством транзитивности.
Если для событий a и b отношение < не определено, назовём их параллельными и обозначим как a||b. Отметим здесь, что понятие параллельных (точнее, потенциально параллельных) процессов важно и при
анализе программы на возможную некорректность работы с общедоступной памятью (некорректным будет обращение к одним и тем же элементам со стороны потенциально параллельных процессов, за исключением случая, когда это только операции чтения).
В файле графа трассы вместе со сведениями о связях между вершинами для каждого типа событий сохраняется специфическая информация,
необходимая для последующего моделирования выполнения программы.
Например, для линейного участка вычислений сохраняется время его выполнения в тактах процессора, а для события доступа к памяти сохраняется количество читаемых/записываемых элементов, их размер.
Построение графа трассы происходит в ходе выполнения программы,
вершина за вершиной. Как только в системе происходит интересующее
нас событие, создаётся новая вершина и передаётся построителю графа,
который решает, какие связи с ней установить. Этот механизм будет описан далее, а мы для начала рассмотрим, в каких случаях и каким образом
создаётся новая вершина и как происходит сбор информации.
В основе разработанной версии библиотеки лежит обмен сообщениями. Вызов любой функции из библиотеки поддержки данного режима работы вызывает отправку сообщения с арифметического процессора
на управляющий процессор [1]. Большинство типов вершин графа соответствует вызовам этих функций. Сообщение содержит в себе всю необходимую информацию. Например, вызов функции резервирования
40
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
общей памяти означает отправку с арифметического процессора соответствующего сообщения с информацией о количестве элементов, их
размере, коэффициенте вертикального расслоения и т. п. Память под сообщение выделяется источником и отчищается приёмником.
С учётом этих соглашений было принято решение организовать
сбор информации следующим образом: в цикле обработки сообщений
управляющего процессора перед самой отправкой их на выполнение перехватывать сообщения интересующих нас типов и создавать на их основе новые вершины для графа. Далее сообщение обрабатывается
управляющим процессором, происходит вызов соответствующей библиотечной функции и т. д.
В потоке арифметического процессора происходит отсечка времени
(для определения длительности участков вычислений) при создании
вершин графа, соответствующих линейным участкам вычислений, а
также в начале и конце каждой активации. Время выполнения участков
программы измеряется в тактах процессора. Они считываются при помощи ассемблерной функции rtdsc в две переменные типа long.
Теперь рассмотрим то, как построитель графа работает с поступающими к нему в процессе построения вершинами. Основным классом
библиотеки построения графа трассы является класс GraphBuilder. Его
объект создаётся перед вызовом главной активации программы. Далее,
каждый раз, когда требуется добавить о выполнении новую информацию, происходит вызов соответствующей функции данного класса
(AddVerticle()).
Класс GraphBuilder оперирует списком незамкнутых вершин и списком вершин, готовых к записи в файл. Вершину мы будем называть незамкнутой, если у неё ещё могут появиться новые сыновья. В списке незамкнутых вершин в любой момент времени находится по одной вершине
из каждой выполняемой активации, причём номер соответствующей активации известен для каждой вершины. Таким образом, список незамкнутых
вершин представляет собой своеобразный срез по всем выполняющимся в
данный момент активациям.
Алгоритм работы со списком таков: для каждой новой вершины,
добавляемой в него, ищется её предшественник из той же активации.
Если такого предшественника не найдено, значит, эта вершина должна
быть началом новой активации и она просто добавляется в конец списка. Перед этим находится предшествующая вершина родительской активации и прописывается в качестве ее родителя. Если же предшественник в текущей активации найден, у него окончательно оформляются все
связи и он удаляется из списка. Если этот предшественник является
вершиной типа Wait, вместе с ним окончательно оформляются и удаляВ. В. Васильчиков, А. Г. Седов
41
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ются из списка вершины всех параллельных процессов, запущенных в
текущей активации до него.
Вершины, удаляемые из списка незамкнутых, заносятся в список
готовых к записи вершин. При этом, если удаляемая вершина имеет более одного сына, создаётся необходимое количество вершин-развилок
(FLK) в соответствии с форматом графа [1]. В итоге к моменту завершения работы программы полностью формируется список вершин со связями между ними. После завершения работы главной активации вызывается функция finalize_trace(), выполняющая заключительные действия
по записи графа трассы в файл.
Программа визуализации графа трассы
13B
Для удобства визуального исследования структуры вычислительного процесса, порождаемого РП-программой, желательно иметь программу, которая отображала бы граф трассы на экране. В предыдущей
версии среды RpmShell такая программа была, однако при работе в
Windows не слишком удобно было бы использовать программу с устаревшим и ограниченным графическим интерфейсом. Поэтому была разработана новая версия визуализатора РП-трассы.
Кроме более удобного представления информации на экране, у этой
программы есть еще несколько удобных нововведений, например оперативный вывод информации по любой вершине в виде всплывающей
подсказки, возможности частично и полностью сворачивать и разворачивать участки трассы, поиск синхронизирующих операторов.
Однако основной новой возможностью можно считать отсутствие
привязки к жестко заданному формату бинарного графа трассы, что позволяет добавлять новые типы вершин и изменять параметры старых без
переписывания кода визуализатора. Для этого в дополнение к бинарному файлу графа трассы используется специальный xml-файл описания
формата. В нём описываются все типы вершин, размер и порядок следования полей в каждой них, а также даны описания их предназначения.
Визуализатор использует это описание как при чтении трассы, так и при
выводе информации о выделенной вершине. Для разработки модуля визуализации использовалась библиотека. Qt, которая предоставляет
удобный инструментарий как для создания графических приложений,
так и для работы с xml.
Окно программы визуализации состоит из двух частей (рис.1): в одной строится собственно граф трассы, в другой отображается информация
о выбранной вершине. Информация о вершине также отображается в виде
подсказки при наведении на неё курсора. Вершину можно выбрать кликом
мышки. По вершинам также можно передвигаться при помощи стрелок на
42
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
клавиатуре. Стрелка влево вызывает переход на предшествующую вершину, стрелка вправо – на следующую. Стрелки вверх и вниз позволяют переместиться в параллельный процесс. Поскольку граф, как правило, не
помещается в один экран, в модуле визуализации реализована возможность сворачивать или разворачивать отдельные участки, представляющие
собой разветвления графа. Также реализована возможность разворачивать
и сворачивать вершины графа рекурсивно, так что развертывание вершины влечёт за собой развертывание всех "вложенных" в неё вершин. По
умолчанию граф полностью свёрнут.
Рис. 1. Окно модуля визуализации
Наконец, правой кнопкой мыши можно вызвать контекстное меню.
В зависимости от типа вершины, оно содержит различные команды перехода. Например, для вершин типа fork можно быстро перейти к соответствующему им оператору синхронизации. Справа расположена панель параметров выделенной вершины. На ней отображается описание
типа вершины, её побайтовое смещение в файле и поля.
Тестирование
14B
Заключительным этапом работы стала отладка и тестирование библиотеки. Для этого была написана rpc-программа, решающая тестовую
задачу. Программа должна была протестировать разнообразные по своей структуре и размеру графы трассы, зависящие от входных данных. В
ходе выполнения программы, должны были вызваться операции работы
В. В. Васильчиков, А. Г. Седов
43
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
с памятью для проверки точности сохраняемой в различных вершинах
информации. В качестве такой задачи было выбрано решение уравнения
теплопроводности методом конечных разностей.
Уравнение теплопроводности на прямоугольнике
0
,
0
имеет вид
,
(1)
Здесь
,0
0,
– начальное условие,
,
,
– граничные условия,
,
0,
– функция источника.
В соответствии с методом конечных разностей отрезки 0,
/ ,
/
разбиваются на N и N1 частей соответственно
Производные заменяются разностными соотношениями:
,
,
,
,
,
,
.
(2)
,
и
и
.
(3)
После замены получаем формулы:
,
,
,
,
,
(4)
,
И, наконец,
,
,
,
1
,
, .
(5)
Значения , (0
), , и
) известны нам из
, (0
начальных условий и должны подаваться на вход программы. , выможно вычислять слой за
числяются на ходу. Поэтому значения ,
слоем. На выход должен подаваться массив , .
Итак, задача сводится к тому, что по введённым массивам
,
) последовательно требуется вычис(0
), , и
, (0
1, 2, 3, … .
лить значения , при
Поскольку должно быть достаточно большим числом, мы не будем выводить значения массива при всех значениях , а ограничимся для
контроля только несколькими ключевыми точками. Пусть выводится
44
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
только каждая i-ая строка (число будет задаваться как один из параметров программы).
При явном решении нельзя вычислить значение
1 слоя, пока не
вычислено значение слоя . Таким образом, единственным способом распараллелить работу остаётся разделение вычисления k-ой строки массива
между разными активациями. Получается следующий алгоритм работы:
 В общей памяти выделяются два массива длины – в одном хранится предыдущая строка, а во второй будет записана следующая строка. Первый массив заполняется согласно начальным условиям – массивом из значений.
 В цикле по i от 1 до N1 происходит параллельное вычисление k-ой
строки. Вычисленная строка сохраняется в общей памяти. Первый и последний элемент изменяются согласно краевым условиям. Если номер
строки делится на k, строка выводится в файл. На следующей итерации
вычисленная строка становится уже исходными данными.
Для тестирования библиотеки и программы-визуализатора нам
было необходимо иметь набор примеров РП-программы с разным количеством активаций и разной глубиной рекурсии. Для этой цели в
программу решения уравнения теплопроводности мы заложили ряд
параметров, от которых эти ключевые значения и зависят. Этими параметрами являются branching – количество участков, на которые следует поделить выделенный под ответственность активации фрагмент
массива, и minsize – размер участка вычислений, по достижении которого деление требуется остановить.
В качестве входных параметров активации ей передаются индексы
начала и конца фрагмента массива, которые ей надо вычислить. Если
длина фрагмента превышает minsize, активация разбивает его и делает
несколько рекурсивно-параллельных вызовов. Иначе она берёт из памяти нужный ей фрагмент предыдущего массива и вычисляет следующий
слой по ранее описанной нами формуле.
Участок кода, отвечающий за считывание необходимого фрагмента
данных, вычисление следующего слоя и запись в общую память на rpC
выглядит примерно так:
if(end – begin > minimalPoints)
{
//Выделение массива параметров для рекурсивных вызовов
struct LayerParams* paramArray =
new struct LayerParams[branching];
for(int i = 0; i< branching;i++)
{
В. В. Васильчиков, А. Г. Седов
45
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
// Заполнение i-го блока параметров
P_Call(NextLayer,&paramArray[i]); // Вызов
}
Wait();
delete[] paramArray;
}
else
{
Load_1(fArray,&fArrayHandle,begin,end-begin);
Load_1(prevArray,&prevArrayHandle,begin-1,end-begin+2);
Wait();
for(int i=0;i<end-begin;i++)
{
// Собственно вычисления
nextArray[i] = (prevArray[i-1+1]+prevArray[i+1+1]2*prevArray[i+1])*(tau/(h*h)) + prevArray[i+1];
}
Store_1(nextArray,&nextArrayHandle,begin,end-begin);
Wait();
}
Рис. 2. Структура вычислительного процесса и структура графа трассы
при значениях branching = 3, N = 16200, minsize = 2000
46
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
На рисунке 2 представлена структура вычислительного процесса и
структура графа трассы при значениях branching = 3 и minsize = 2000.
Процесс тестирования на примере упомянутой программы, а также
ряда других, написанных специально для проверки тех или иных функций библиотеки, позволил сделать вывод о корректности ее работы и
пригодности построенного графа трассы для дальнейшего исследования
посредством имитационного моделирования.
 Литература
98B
1. Васильчиков В. В. Средства параллельного программирования для вычислительных систем с динамической балансировкой загрузки. Ярославль : ЯрГУ, 2001.
Композиционные сети активных ресурсов
Е. С. Дайнеко
Введение
15B
Сети активных ресурсов (АР-сети) [2] – новый формализм моделей
распределенных систем. Формализм был построен как синтаксическое
обобщение сетей Петри [1], в котором убрано разделение компонентов
системы на активные и пассивные (переходы и позиции).
Структура АР-сетей отличается от структуры сетей Петри. Сеть активных ресурсов – это два ориентированных псевдографа на общем
множестве вершин, тогда как сеть Петри – это двудольный ориентированный псевдограф. При этом они определяют один и тот же класс
систем [2].
Целью работы было исследование возможностей построения композиционных сетей активных ресурсов на основе алгебры сетей
В. Е. Котова [1].
Результаты проделанной работы:
16B
1. Рассмотрен класс композиционных АР-сетей, использующий тот
же набор операций, что и в алгебре сетей Петри (наложение, разметка,
слияние, итерация, присоединение, исключение). При этом выбран другой способ построения элементарных сетей, позволяющий упростить
синтаксис за счет избавления от символа неограниченного множества .
2. Доказаны свойства алгебраических операций над композиционными сетями. В основном они оказались те же, что и в случае сетей
Е. С. Дайнеко
47
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Петри, однако есть и различия: в частности, итерация наложения строится через наложение итераций присоединений по более сложной формуле (для данного свойства предложена схема доказательства).
3. Показано, что композиционные АР-сети обладают расслоенной
формулой, то есть могут быть представлены как наложение нескольких
примитивных сетей без наложений. Эта расслоенная формула может использоваться как стандартный вид композиционной АР-сети.
Основные определения
АР-сети
17B
Сеть активных ресурсов имеет достаточно простое математическое
определение – это ориентированный псевдограф с двумя типами дуг.
Определение 1. Сетью активных ресурсов (АР-сетью) назовём набор AR = (V,I,O), где
 V – конечное множество вершин (ресурсов);
 I : V × V →> Nat – множество потребляющих дуг;
 O : V × V →> Nat – множество производящих дуг.
Графически вершины сети изображаются кружками, потребляющие
дуги – пунктирными стрелками, производящие дуги – непрерывными
стрелками.
Определение 2. Пусть i = (v1,v2) – потребляющая дуга. Тогда дуга
i называется входной для вершины v2 и потребляющей для вершины v1.
Ресурс в вершине v1 – потребляемый по дуге i, ресурс в вершине v2 –
потребляющий по дуге i.
Определение 3. Пусть o = (v1,v2) – производящая дуга. Тогда дуга
o называется выходной для вершины v1 и производящей для вершины v2.
Ресурс в вершине v1 – производящий по дуге o, ресурс в вершине v2 –
производимый по дуге o.
Определение 4. Размеченной сетью активных ресурсов назовём пару (AR,M0), где AR = (V,I,O) – сеть активных ресурсов, M0 : V →> Nat –
начальная разметка.
На рисунках разметка изображается при помощи соответствующего
количества фишек в вершинах.
Определение 5. Ресурс v  V активен при разметке M, если
 M(v) > 0 (узел v непустой);
 ω  V M(ω) ≥ I(ω, v) (в потребляемых узлах содержится достаточное количество фишек).
Активный при разметке M ресурс v может сработать, порождая
при этом новую разметку М', где
M'( ) =def M(v) − I( , v) + O(v, ).
48
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Класс элементарных сетей
18B
Определение 6. Элементарная потребляющая сеть А поделена
на два вида потребляющая и бесконечно-потребляющая сети (рис. 1)
Рис. 1. а) Потребляющая сеть А, где h(A)={v1}, l(A)={v2};
б) Бесконечно-потребляющая сеть, где h(A)={v1}, l(A)=Ø)
Определение 7. Элементарная производящая сеть поделена на
два вида – производящая сеть и бесконечно-производящая сеть.
:
Рис. 2. а) Производящая сеть А, где h(A)={v1}, l(A)={v2};
б) бесконечно-производящая сеть, где h(A)=Ø, l(A)={v2})
За счет расширенного класса элементарных сетей мы получили
возможность не использовать элемент ω, который используется Котовым для разметки мест сети и который обозначает «неограниченное
число фишек» в данном месте, так как у нас есть две сети – бесконечнопотребляющая и бесконечно-производящая, а они несут в себе ту же
функцию, что и ω.
Операции над сетями
19B
Пусть h (A) обозначает множество головных мест сети А, а l (А) –
множество ее хвостовых мест.
Определение 8. Операция наложения " , " – с помощью этой операции одну сеть накладываем на другую.
А3=(А1,А2)=(V1 V2,I1 I2,O1 O2,M0)
M0 (v) =
h (А) = h (А1) h(А2), l (А) = l (А1) l(А2).
Определение 9. Операция разметки "n( )": Сеть A' = n(A) совпадает как граф с сетью A, но имеет другую начальную разметку M0’, а
именно:
M`0 (v) =
Е. С. Дайнеко
.
49
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Определение 10. Операция слияния: Места, возникающие в результате слияния, представляют собой не символы, а множества символов. Операция слияния мест состоит, в свою очередь, из двух подопераций: формирования слитых мест и замены сливаемых мест слитыми.
Определение 11. Операция итерации "*": Эта операция сливает
множество головных и множество хвостовых мест сети и применима к
сети А, если множества головных и хвостовых мест не пересекаются: А'
= *(А) = (А, h(А),l(А)), где h(А) l(А) = .
Определение 12. Операция присоединения '' ; ": Об этой операции уже упоминалось при присоединении элементарных сетей. Эта операция соединяет две сети в одну, сливая множество хвостовых мест первой сети с множеством головных мест второй сети: А = (А1 ; А2 )=
(А1,А2), l(А1), h(А2)).
Определение 13. Операция исключения "[]": Эта операция объединяет две сети: А1 и А2 в одну сеть А = (А1[]A2), сливая соответственно
их головные и хвостовые места. Головные места сети А образованы
местами, в которые вошли при слиянии мест головные места сетей А1 и
А2; аналогично назначаются хвостовые места сети А.
А=(А1[]A 2)= (Z, h(A1), h (A2)), где Z= ((А1[]A2), l(A1), l (A2))
Правила и свойства операций над сетями активных ресурсов
20B
Для алгебраических сетей Петри Котов вывел правила коммутативности операций наложения и исключения, ассоциативности бинарных
операций, дистрибутивности операций, рефлексивности операции наложения, вывел свойства операции разметки.
Формально было доказано что следующие правила и свойства справедливы и корректны для сетей активных ресурсов.
(1) Коммутативность операций наложения и исключения:
П1. (А, В) =(В,А).
П2. (А [] В) = (В [] А).
(2) Ассоциативность бинарных операций:
П3. ((А, В),С) = (А, (В,C)).
П4. ((А; В); С) = (A;(B;C)).
П5. ((A[] В)[] С) = (A [](B[] С)).
(3) Дистрибутивность операций:
П6. (А, В);С=(А; С), (В; С).
П7. А; (В, С) = (A; В), (A; С).
П8. (А, В) [] С= (A [] С), (B [] С).
(4)Итерация наложения и исключения
П9. *(А, В) =*А, *В, *(А; В), *(В; А), * (А;А;В;В), *(В;В;А;А)
50
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Правило П9 было дополнено в силу того, что не корректно работало
для представленной системы элементарных сетей, а так как доказательство этого правила потребовало рассмотрения большого количества вариантов, в работе представлена схема доказательства данного правила.
П10. *(А [] B) =*А [] *В = *A [] В=А [] *B =(*A; *В).
При доказательстве П10 была выявлена не корректность работы
этого правила для рассматриваемой системы элементарных сетей активных ресурсов. В связи с этим в работе представлен контрпример.
(5) Рефлексивность операции наложения:
П11. (А, А) =А
(6) Свойства операции разметки:
П12. n1(п2А) =n2 (n1A) = (n1+n2)А.
П13. n(*А.) =*(nА).
П14. n(A,B) = (nА,nВ).
П15. n(A;B) = (nА; В).
П16. n(A[]B)= (n1A[]n2B), где n1+n2 =n.
Расслоенная формула сетей активных ресурсов
21B
Определение 9. Формулу А из класса всех формул регулярных сетей назовем расслоенной формулой, если она имеет вид (А1, А2, …, Аn),
n ≥2, где Аj – формулы. Формулу А назовем стандартно расслоенной,
если Аj – формулы не содержащие операции наложения «,». Последние
будем называть примитивными формулами, а задаваемые ими сети –
также примитивными.
Для сетей Петри Котов доказал следующую теорему:
Теорема 1. «Класс формул регулярных сетей и его подклассы –
класс расслоенных и класс стандартно расслоенных формул – тождественны в том смысле, что для любой формулы существуют тождественные ей расслоенная и стандартно расслоенная формулы».
Формально было доказано, что теорема также верна и для сетей активных ресурсов.
Доказательство:
Так же, как и в сетях Петри, если А – примитивная формула (в нашем случае элементарная сеть), то она тривиально преобразуется в расслоенную с помощью П11: А = (А, А). Если А – не примитивная или
расслоенная формула, существует ее подформула, которая не является
ни примитивной, ни расслоенной и имеет вид
((B,C);D),
(B;(C,D)),
((B,C)[] D),
(B[] (C,D)),
*(B,C),
n(B,C).
Е. С. Дайнеко
51
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Применяя подходящее из преобразований П6, П7, П8, П9, П14, эту
формулу можно трансформировать соответственно к одной из следующих форм:
(B;D,C;D),
(B;C, B;D),
(B[]D ,C[]D),
(B[]C, B[]D),
(*B, *C, *(B,C), *(C,B) * (B;B;C;C), *(C;C;B;B)), (nB,nC).
Заключение
2B
В работе представлен новый способ построения сетей активных ресурсов при помощи формул. Мы убедились, что при построении сети
активных ресурсов получается более простой синтаксис, структура вершин отличается от структуры вершин сетей Петри (один тип вершин),
что существенно упрощает работу с сетями и применение к ним алгебраических операций. Так как мы расширили класс элементарных сетей и
сделали его более общим и простым, то целью работы было доказать,
что и для такого класса элементарных сетей алгебра сетей справедлива
со всеми правилами и свойствами. Формально удалось доказать, что
правила и свойства справедливы для сетей активных ресурсов. Также
доказано, что при использовании правил и свойств сетей активных ресурсов можно любую формулу преобразовать в тождественную расслоенную формулу, которая не является ни примитивной, ни расслоенной.
Формально доказано, что при проведении процесса преобразования будут получены расслоенная формула, примитивная или стандартно расслоенная формулы, из которых можно будет получить расслоенную или
стандартно примитивную формулу, тождественную исходной формуле.
 Литература
9B
1. Котов В. Е. Сети Петри. М. : Наука, 1984. 157 с.
2. Башкин В. А. Сети активных ресурсов // МАИС. Ярославль : ЯрГУ, 2006.
7 с.
3. Ломазова И. А. Сети Петри и анализ поведенческих свойств распределенных систем. Ярославль : ЯрГУ, 2002. 162 с.
4. Питерсон Дж. Сети Петри и моделирование систем. М. : Мир, 1984. 263с.
5. Petri Nets World. URL: http://www.informatik.uni-hamburg.de/TGI/PetriNets/
52
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Разработка мультиагентного алгоритма
перемещения по плоскости без столкновений
Е. В. Демкин
Введение
23B
Клеточные автоматы являются дискретными динамическими системами, поведение которых полностью определяется в терминах локальных зависимостей. Используя свойства клеточных автоматов, можно моделировать события, происходящие в реальном мире.
При разработке мультиагентного алгоритма перемещения по плоскости без столкновений используются основы теории клеточных автоматов, что позволяет достигать серьезных результатов. Различные алгоритмы перемещения объектов на плоскости широко используются в современном мире. Эти алгоритмы могут быть применены при
конструировании роботов, что сейчас широко используется, при конструировании различных беспилотных средств передвижения, в морской
навигации и даже в авианавигации, а также в других областях.
Существует необходимость в создании надежного мультиагентного
алгоритма перемещения объектов по плоскости, такого что в случае ситуации конфликта столкновения объектов невозможны и все объекты
смогут перемещаться в своем «генеральном направлении» после разрешения конфликта. Разработка данного алгоритма сможет существенно
расширить использование автономного перемещения объектов, перемещения, основанного только на наборе правил, соблюдаемых компьютером. Стоит отметить, что данный алгоритм может иметь очень широкое
применение в различных областях для моделирования перемещения по
плоскости без столкновений объектов с постоянной скоростью.
Целью работы является разработка мультиагентного алгоритма перемещения по плоскости отдельного объекта, такого что столкновения
невозможны и все объекты рано или поздно вылетят с поля, каждый в
своём «генеральном» направлении.
Результаты проделанной работы:
24B
1. Изучен алгоритм, разработанный доцентом факультета электротехники и вычислительной техники Университета Ховарда (США)
Чарльзом Кимом. Показано, что этот алгоритм не является надёжным.
Е. В. Демкин
53
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
2. Разработан мультиагентный алгоритм перемещения по плоскости
отдельного объекта, удовлетворяющий заданным свойствам.
3. Представлена схема доказательства правильности и надежности
данного алгоритма.
Мультиагентный алгоритма перемещения по плоскости
без столкновений
25B
Анализ алгоритма Чарльза Кима
26B
Алгоритм, представленный Чарльзом Кимом, не является «надёжным» алгоритмом.
Объекты перемещаются последовательно из клетки в клетку, по
приоритетам. Объект, имеющий наивысший приоритет (например,
меньший порядковый номер) перемещается в первую очередь. Клетка,
занятая объектом, имеет статус "1", свободная – статус "0". Объект может переместиться только в клетку со статусом "0".
Автор предлагает пользоваться правилами-приоритетами при возникновении ситуации конфликта, представленными на рис. 1.
Рис. 1. Приоритеты перемещения при моделировании
При возникновении ситуации конфликта первый приоритет для перемещения – это направление по прямой, второй и третий приоритет –
45° налево или направо, четвертый и пятый приоритет – 90° налево или
направо. Существует множество очевидных ситуаций, в которых алгоритм не находит выход из ситуации конфликта.
На рис. 2 конфликт возникает на третьем шаге – объекту с приоритетом 6 перекрыты все траектории передвижения. Ситуация конфликта
неразрешима.
Рис. 2. Неразрешимая ситуация конфликта
Поэтому применение данного алгоритма как отдельного алгоритма
или части другого, более сложного, алгоритма не представляется воз54
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
можным. Существует необходимость в разработке нового «надежного»
алгоритма.
Описание предметной области (ограничения алгоритма):
27B
1. Конечное двумерное поле, состоящее из квадратных «клеток».
2. Конечное число объектов, занимающих каждый по одной клетке.
Каждый объект имеет уникальный номер.
3. Дискретное время, общее для всех объектов (такты/ходы/шаги).
4. Каждый объект движется в одном из 8 направлений с постоянной
скоростью (одна клетка за один шаг). Объект может повернуть один раз
за один шаг (на 45 или 90 градусов). Останавливаться объекты не могут.
5. Соседними считаются объекты, расстояние между которыми не
более 4 клеток. Объект видит всех своих соседей и знает их номер, координату (т. е. клетку) и направление движения. Каждый объект может
сигнализировать своим соседям о том, в каком направлении он будет
двигаться в следующий отрезок времени (на следующем шаге). Других
способов взаимодействия объектов нет.
6. Число объектов существенно меньше числа клеток поля, начальное расстояние между объектами не меньше двух клеток (нет непосредственных соседей). Начальное направление движения объекта назовем
«генеральным».
Задача: Придумать алгоритм поведения отдельного объекта, такой
что:
1. Столкновения невозможны.
2. Все объекты рано или поздно вылетят с поля, каждый в своём
«генеральном» направлении.
Алгоритм (общие принципы)
28B
Основная идея – разделить поле на «квадраты» 2 на 2 (рис. 3) и
обеспечить невозможность одновременного нахождения в одном квадрате более одного объекта.
Объект может находиться в «своем» квадрате сколь угодно долго
(«крутиться» по 4 клеткам квадрата по часовой или против часовой
стрелки, на каждом следующем шаге поворачивая, соответственно, направо или налево), тем самым достигается возможность «задержки»
объекта на одном месте в случае возникновения сложных конфликтных
ситуаций между квадратами. Чтобы избежать случая попадания объекта
«носом в угол квадрата» (откуда он был бы вынужден вылетать в соседний квадрат) (рис. 4 а), мы запрещаем проход по диагонали через центр
квадрата (ставим там «столб») (рис. 5). Если не запретить проход по
Е. В. Демкин
55
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
диагонали через центр квадрата, то могут возникнуть неразрешимые
конфликты (рис. 4 б).
а)
б)
Рис. 3.
«Квадрат»
2 на 2
Рис. 4 а) Вынужденный вылет в соседний
квадрат, б) неразрешимый конфликт после
прохода через центр квадрата по диагонали
Рис. 5. «Квадрат»
2 на 2 со «столбом» в центре
Таким образом, в случае возникновения объекта в квадрате «хвостом из угла» он должен следующим шагом повернуть на 45 градусов
влево или вправо (выбирается направление, наиболее близкое «генеральному»; если оба одинаково близки, то случайным образом (рис. 6)),
что дает возможность объекту маневрировать внутри квадрата, если все
направления движения недоступны (рис. 7).
Рис. 6. Возникновение объекта в квадрате «хвостом из угла», поворот на
45 градусов влево и вправо
Рис. 7. Избежание конфликта
Объект выбирает собственное направление движения и сигнализирует о нем соседям только после того, как то же самое сделали все соседи с меньшими номерами. Соседний квадрат считается «занятым» для
нашего объекта, если в нём на следующем шаге не будет объектов с
меньшими номерами, а на нынешнем шаге
нет объектов с большими номерами или в
этот квадрат не будет запрещен для передвижения. Перемещение объекта из текущего квадрата в соседний происходит в том
случае, если:
1. Целевой квадрат достижим (объект Рис. 8. Перемещение объекта
может переместиться туда на следующем
из текущего квадрата в сошаге) и не занят.
седний. Приоритеты
2. Заняты все квадраты справа от целе-
56
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
вого вплоть до того квадрата (включительно), куда бы попадал наш объект в случае перемещения по своему «генеральному» направлению
(рис. 8).
Если возможны несколько способов попадания объекта в соседний
квадрат (по разным направлениям), то выбирается оптимальное, наиболее близкое «генеральному» направлению движения объекта.
Схема доказательства алгоритма.
Для того чтобы доказать, что алгоритм работает верно, необходимо
доказать, что, во-первых, столкновения невозможны, во-вторых, все
объекты рано или поздно вылетят с поля, каждый в своём «генеральном» направлении.
Теорема 1. Столкновения объектов невозможны.
Доказательство
Поскольку объект может находиться в квадрате сколь угодно долго
(вплоть до освобождения соседнего) и в каждом квадрате находится не
более одного объекта, столкновения объектов исключены.
Теорема 2. Все объекты рано или поздно вылетят с поля, каждый в
своём «генеральном» направлении.
Доказательство
Рассмотрим ситуацию, когда траектории движения объектов сходятся в одной точке, точке А (рис. 9 а). Когда объекты не смогут перемещаться по своему «генеральному» направлению, они будут перемещаться по второстепенным направлениям (рис. 8), то есть будет происходить «обход» точки A слева по кругу (рис. 9 б). Постепенно объекты
будут отделяться от «общей массы» (рис. 9 в, г, д, е), т. к. по начальному
ограничению алгоритма количество объектов значительно меньше клеток в поле и рано или поздно найдётся свободная для перемещения
клетка. Объекты начнут расходиться, начиная с внешнего слоя и заканчивая внутренним, постепенно занимая направление, максимально
близкое к «генеральному». Ситуация конфликта будет разрешена.
Рис. 9. Схождение траекторий в одной точке
Сравнение с алгоритмом Чарльза Кима
29B
Разработанный алгоритм позволяет избегать всех ситуаций конфликта. Достижение этой цели обусловлено выполнением двух условий:
Е. В. Демкин
57
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
1) столлкновени
ия объекттов невоззможны (тт. к. в одн
ном квад
драте мож
жет находитьься толькко один объект);
о
2 все объ
2)
ъекты ран
но или пооздно выл
летят с
поля, каждый в своём «генеральном» направле
н
нии. Этоот алгори
итм не
являеттся «бысттрым» аллгоритмом по сраввнению с предстаавленным
м зарубежны
ыми разрработчикаами, избеежание некоторы
н
ых ситуац
ций конф
фликта
потреб
бует вып
полнения большогго количеества шаггов, но аллгоритм являетя
ся «наадёжным»», что в данном
д
сллучае знаачительноо важнее.
П
Представл
ленный ниже
н
при
имер (рисс. 10) де-монсттрирует работу двуух алгори
итмов в одной
о
си-туации
и. Алгорритм Чаррльза Ки
има не позволяет
п
т
решитть даннуую ситуац
цию кон
нфликта, разрабо-танны
ый мною
ю алгори
итм поззволяет избежатьь
Рисс. 10. Действие
столкн
новения.
в ситууации конф
фликта
О
Очевидно
, что по алгоритм
му Чарлььза Кимаа
для об
бъекта в данной ситуации
с
выхода нет –все возможн
ные траекктории
(прямоо, 45° вллево, 45° вправо, 90° влевво и 90° вправо) перекрытты. На
следую
ющем шааге произзойдёт стоолкновен
ние.
П
Проследим
м работу нашего алгоритм
а
ма (рис. 11):
1)) т. к. объ
ъект возн
никает «ххвостом из угла»» квадратта (3,3), то
т следующим шагом
м он повоорачиваетт на 45° вправо;
в
2)) делает шаг внуттри квадррата (3,3) в стороону «генеральногго» направлеения (кваадрат (4,44));
3)) на следуующем шаге
ш
смоттрит, сво
ободен ли
и квадратт (4,4) на «генеральноом» напрравлении.. Квадратт занят. Смотрит,
С
свободен
н или нетт квадрат (3,4) с перввым приооритетом
м. Квадраат занят. Делает
Д
ш
шаг внутр
ри своего кввадрата;
4)) на следуующем шаге
ш
объеект смотр
рит, свобооден ли кквадрат (4
4,4) на
«генерральном направле
н
ении», даалее квадр
рат (3,4) с первым
м приори
итетом.
Оба квадрата
к
з
заняты.
С
Смотрит,
, свободеен или неет квадраат (2,4) со
с вторым приоритет
п
том. Он занят.
з
См
мотрит, свободен
с
или нет квадрат (2,3) с
третьи
им приорритетом. Он
О свобооден – пер
реходит в него;
5)) следующ
щим шаггом объеккт пытаеттся «обой
йти преп
пятствие слева»
для вы
ыхода наа траекторрию в нааправлени
ии «генеррального» направвления,
поверн
нув напрраво на 90°
9 в кввадрат (2,4). Квад
драт заняят. Делаеет шаг
внутри
и своего квадратаа (2,3) в направлен
нии движения;
6)) смотритт, освобоодился ли
и квадратт (2,4), в который
й он хоттел повернутть на преедыдущем
м шаге. Квадрат
К
занят.
з
Деелает шагг-поворотт вправо на 45°,
4 перееходит в свободны
с
ый квадраат (1,4), располож
р
женный сл
лева от
квадраата (2,4).. Дальшее выходи
ит на трааекторию
ю в напраавлении «генеральноого».
58
З
Заметки
по инфоррматикее и матем
матике. В
Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рис. 11. Иллюстрация работы алгоритма
Заключение
30B
В работе представлен новый мультиагентный алгоритм перемещения по плоскости без столкновений. Данный алгоритм позволяет избежать столкновения объектов при перемещении на плоскости и гарантирует то, что каждый объект сможет перемещаться в своем «генеральном» направлении. Представлена схема доказательства данного
алгоритма. В дальнейшем разработанный алгоритм может быть использован в системах, контролирующих перемещение объектов на плоскости, что в современном мире, безусловно, является востребованным и
необходимым.
 Литература
10B
1. Тоффоли Т., Марголус Н. Машины клеточных автоматов / перевод с англ.
П. А. Власова, Н. В. Барабанова; под ред. Б. В. Баталова. М. : МИР, 1991. 281 с.
2. Бандман О.Л. Клеточно-автоматные модели пространственной динамики
// Системная информатика. 2006. № 10. С. 59–113.
3. Kim С., Abubaker K., Obah O. Cellular Automata Modeling of En Route and
Arrival Self-Spacing for Autonomous Aircraft // Proc. of the 50th Annual Meeting of
Air Traffic Controllers Association. 2005. August 11. P. 127–134.
4. Поникаров М.В. Использование игр клеточных автоматов для синхронизации в распределенных системах // Бизнес информатика. 2008. № 3(05). С. 31–35.
5. Интернет университет информационных технологий. URL: http:
//www.intuit.ru/department/se/pinform/9/3.html
6. heory.org-An idea and experiment collective. URL: http://theory.org
/software/ant/
7. WorldLingo.
URL:
http://www.worldlingo.com
/ma/enwiki/ru
/Traffic_Collision_Avoidance_System
8. Марьин Н. П. Аviahumanfactor. URL: http://www.aviahumanfactor.ru
/attach/maryin2-2007.pdf
9. Войнич Б. и др. Техносфера. Рекламно-издательский центр. URL:
http://www.electronics.ru/journal/2000/4
Е. В. Демкин
59
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
О повороте черно-белых изображений,
построенных на основе
прямоугольной решетки
М. Л. Елизарова, П. Г. Парфенов
В настоящей заметке изучается вопрос о закономерностях изменения типа фрагментов и характеристического набора коэффициентов
цифрового изображения, построенного на основе прямоугольной решетки, при повороте по методу ближайшего соседа. Под цифровым чернобелым изображением, построенным на основе прямоугольной решетки,
будем понимать изображение, для которого аналогами пикселей являются элементы некоторой прямоугольной решетки. Такого рода изображения рассматривались, например, в работах [1, 2, 3]. Через a i , j будем
обозначать как сам элемент, так и значение его цветности. Изображение
можно представить в виде матрицы A  ( ai , j ) размера m  n , у которой
элементы могут принимать значения либо 0, либо 1, то есть либо белый
пиксель, либо черный.
Под черно-белым фрагментом S размера 2 2 будем понимать любую подматрицу матрицы A вида
 ai, j
S  
 ai 1, j
a i , j 1 

a i 1, j 1 
Всего существует 16 различных фрагментов такого типа:
S0
S1
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11
S12
S13
S14
S15
Набор неотрицательных целых чисел k i , i  0,1,....,15, , задающих количество фрагментов каждого типа в изображении А, будем называть характеристическим набором коэффициентов изображения A , построенных по системе фрагментов размера 2 2 .
60
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
x, x  R \ Z ,
y  g ( x)  
1, x  Z .
Введем обозначение
Тогда изменение фрагмента при повороте на угол кратный π/2 задается изменением типа фрагмента через изменение индекса с помощью
приведенной ниже формулы, где i – номер фрагмента до поворота, j –
номер фрагмента после поворота, k div4 – остаток от деления k на 4.
Соответственно, изменение характеристического набора коэффициентов
описывается тем же соотношением для индексов k i  k j .
0, для i  0,

 g  i  k div4   4, для 1  i  4,

 
4


 g  i  4  k div4   4  4, для 5  i  8,

 
4

j
 g  i  8  k div4   2  8, для 9  i  10,

 
2


 g  i  10  k div4   4  10, для 11  i  14,

 
4


15, для i  15.
На рисунках 1–4 приведены типичные результаты экспериментов,
проведенных с помощью программы, реализующей поворот по методу
ближайшего соседа для изображений, построенных на основе прямоугольной решетки.
Проведенные эксперименты позволяют сделать вывод, что если при
повороте фрагмента на S i на угол        k ,    k  получаем фраг
4
2
4
2 
мент, то тип этого фрагмента задается индексом j в соответствии с указанным выше соотношением. Незаштрихованные сектора означают, что
преобразованный фрагмент не являются фрагментом.
 Литература
10B
1. Шашкин Ю. А. Эйлерова характеристика: Популярные лекции по математике. Вып. 58. М. : Наука, 1984. 96 с.
2. Парфенов П. Г. Топологические алгоритмы обработки цифровых изображений. Ярославль : ЯрГУ, 2008. 26 с.
3. Прэтт У. Цифровая обработка изображений. М. : Мир, 1982. Кн. 2. 478 с.
М. Л. Елизарова, П. Г. Парфенов
61
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рис. 1. Исходный фрагмент
Рис. 2. Зависимость перехода
из фрагмента во фрагмент
Рис. 3. Расположение исходного
фрагмента (сдвиг на 2 единицы вправо
от центра)
Рис. 4. Зависимость перехода
из фрагмента во фрагмент
Изучение температурных процессов
при помощи расширенной
тригонометрической системы
З. В. Журавлев
Погода оказывает огромное влияние на жизнь людей. Научные исследования погоды длятся уже более 100 лет. Очень актуальной является задача разработки и обоснования новых способов анализа температурных данных. В последнее время всё чаще стали вспоминать «народные приметы», приводить исторические температурные рекорды и т. п.,
62
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
т. е. обращаться к статистическим данным. К этому подталкивает гипотеза о «глобальном потеплении», связанном с парниковым эффектом на
планете. Парниковый эффект – повышение температуры нижних слоёв
атмосферы планеты по сравнению с эффективной температурой, то есть
температурой теплового излучения планеты, наблюдаемого из космоса.
Одно из ключевых направлений данной статьи – разработка методов
выявления тенденций потепления или похолодания в температурных
процессах.
Средством изучения таких процессов, как температура окружающей среды, служат временные ряды. Временным рядом называют последовательность значений какой-либо величины , фиксируемой в разные моменты времени (обычно временной ряд содержит значения через
равные промежутки времени). Временной ряд позволяет получить информацию о том, как изменялся исследуемый процесс, а также спрогнозировать его дальнейшее поведение путем выявления регулярных компонент и отсеивания случайных. В таком временном ряде, как температурные значения, очевидно, есть и случайная составляющая,
возникающая, например, из-за погрешностей измерения, и систематическая составляющая, соответствующая основным закономерностям
(тенденциям).
При исследовании графиков различных функций, широко применяется метод среднеквадратичных приближений. Для функций, определённых на сплошных множествах, он позволяет сгладить график, для
дискретных данных, таких как временные ряды, – отфильтровать случайные «наслоения».
Общая идея метода заключается в следующем. Пусть
g0 ( x), g1 ( x),..., g n ( x) – система линейно независимых функций (обычно
гладких), их линейная комбинация будет иметь вид
g(x,a)= a0 g0 ( x)  a1 g1 ( x)  ...  an gn ( x) ,
где а = ( a0 , a1 ,..., an ) – набор коэффициентов при соответствующих функциях.
Для непрерывно или дискретно заданной функции f(x) ищем приближающий элемент g(x,a) такой, чтобы норма среднеквадратичного его
отклонения от функции f(x) была минимальной:
|| f  g ( x, a) || 
 min ,
где
,
,
З. В. Журавлев
/
или
63
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
∑
,
,
.
Из условия минимальности отклонения получаем систему линейных уравнений, из которой находим вектор а = ( a0 , a1 ,..., an ), т. е. наилучший приближающий элемент. Среднеквадратичные приближения можно применить и для анализа температурного режима.
Следующий важный этап исследования – это выбор подходящей
системы линейно независимых функций, удовлетворяющей характеристикам данного временного ряда. Рассматривая график изменений температуры за год, видим сходство с графиком синуса,
т. е. внутригодовое изменение температуры очень напоминает один период синусоиды (возможно смещенной). Также мы допускаем наличие
линейной составляющей во временном ряде (эффекта потепления или
похолодания в поведении среднегодовых температур), или, проще говоря, тренда.
Поэтому предлагается использовать для анализа и исследования
расширенную тригонометрическую систему 1, , cos , sin , …,
cos , sin . В ней к части классической тригонометрической системы
добавлена функция x. Такая система функций представляется удачной
для изучения временных рядов, в которых наряду с циклическими колебаниями есть линейная тенденция. Линейные комбинации функций из
расширенной тригонометрической системы позволяют как выявить направление тренда (два первых слагаемых), так и уловить периодические
составляющие:
g ( x,a,b)  a  b x  a cos x  b sin x ... a cos nx  b sin nx .
0
64
0
1
1
n
n
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Для исследования температурного процесса были найдены статистические данные о температуре за 47 лет по городу Москве. (Даны
средние температурные показатели за сутки.)
Начало временного интервала соответствует 1949 году, а конец
1995 году. Всего 17166 дней.
Значение n (наибольшая предполагаемая частота колебаний в данных) взято равным 47.
Разработана программа, которая строит необходимые среднеквадратичные приближения для температурных графиков расширенной тригонометрической системой.
Получаемый коэффициент a0 отражает среднее значение температуры на протяжении участка исследования; коэффициент b0 показывает наличие тренда (похолодание или потепление): если b0 > 0 –эффект
потепления, если b0 < 0 – эффект похолодания, если b0 =0 – систематическая тенденция отсутствует.
Чтобы понять, какая информация заключена в других коэффициентах, рассмотрим парную составляющую из получаемой суммы:
ak cos kx  bk sin kx  ak2  bk2 (
ak
a b
2
k
2
k
cos kx 
bk
a b
2
k
2
k
sin kx)  ak2  bk2 sin( kx  k )
,
то есть величина ak2  bk2 характеризует значимость соответствующей
периодической составляющей в температурах.
Таким образом, обработка временного ряда может дать нам много
интересных фактов: с какой частотой циклы вносят больший вклад в
график температуры. При k=47 должен получиться самый большой коэффициент, так как это годовые циклы, явно присутствующие в температурных данных.
Результаты:
31B
средняя температура a0  4 , наличие тенденции b0  0,5 , периодические
составляющие:
a12  b12  1,541 ,
2
a21
 b212  0,8 ,
2
a 47
 b472  13,6 .
Среднее
значение «корней» – 0,374, минимальное значение:
a  b  0, 03 . Любопытно, что получилось достаточно большое значение
при k=1. Из этого можно сделать вывод о том, что на протяжении всего
участка исследования играло немалую роль одно колебание большого пе2
13
2
13
З. В. Журавлев
65
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
риода. Обратим внимание на составляющую с индексом k=21 – это еще
один пример значимого цикла длины большей, чем год. А самое интересное то, что тренд получился убывающим, это значит, что на протяжении участка исследования наблюдался эффект похолодания. Среднеквадратичное приближение расширенной тригонометрической системой дает
нам возможность изучить различные аспекты в поведении температуры.
В ходе работы с помощью метода среднеквадратических приближений расширенной тригонометрической системы был изучен график
изменения температуры за длительный период, в котором были выделены основные показатели: «средний» уровень температуры, тенденция
изменения температуры и ее тип, циклы различной периодичности. Из
всего сказанного можно сделать вывод о том, что метод приближения
расширенной тригонометрической системой интересен для исследования температуры.
В заключение хочу выразить благодарность своему научному руководителю доценту кафедры дискретного анализа А. Н. Морозову за
внимание к работе.
 Литература
102B
1. Ильин В. А., Позняк Э. Г. Линейная алгебра. М. : Наука, Физматлит,
1999. 296 с.
2. Кудрявцев Л. Д. Математический анализ. Т. 2. М. : Высшая школа, 1973.
306 с.
Разработка сетевой архитектуры
для редактора диаграмм связей HiveMind
О. В. Кандауров
Введение
32B
Диаграммы связей – способ изображения процесса общего системного мышления с помощью схем. Диаграмма связей реализуется в виде
древовидной схемы, на которой изображены слова, идеи, задачи или
другие понятия, связанные ветвями, отходящими от центрального понятия или идеи. Диаграммы связей успешно применяются для генерации
идей, конспектирования докладов, написания планов статей, составления презентаций и так далее.
66
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Зачастую построение диаграмм связей требует участия группы людей. В данной ситуации возникает несколько проблем. Во-первых, людям, участвующим в данном процессе, необходимо собраться вместе,
чтобы начать совместную работу. Во-вторых, необходимо предоставить
всем участникам процесса равноценный доступ к диаграмме связей.
Приведённые выше проблемы могут быть решены благодаря возможностям современных мобильных устройств. Мобильные устройства портативны, что позволяет всегда держать их при себе. Идея заключается в том,
чтобы предоставить людям равные возможности по внесению своего
вклада в создание диаграмм, используя мобильное устройство или персональный компьютер. Главной целью проекта HiveMind [1] является разработка редактора диаграмм связей, удовлетворяющего следующим требованиям: кросс-платформенность, богатая функциональность, поддержка
функций совместного редактирования.
В общем виде процесс совместного редактирования диаграмм должен выглядеть следующим образом. Пользователь открывает доступ к
своей диаграмме связей. Другой пользователь подключается к диаграмме связей, автоматически получает её актуальную копию и оба пользователя начинают совместное редактирование диаграммы. Количество
пользователей, участвующих в процессе совместного редактирования,
потенциально не ограничено.
Постановка задачи
3B
Задача заключается в том, чтобы реализовать возможность совместного редактирования диаграмм связей в проекте HiveMind.
Существует множество способов установить сетевое взаимодействие между приложениями. В настоящее время доступно огромное количество подобных технологий и встаёт задача о выборе наиболее подходящей. Приложение HiveMind нацелено на использование на мобильных и настольных платформах. Данные типы платформ различаются
способом соединения с сетью Интернет и набором библиотек, доступных для использования. Необходимо произвести анализ способов соединения с сетью Интернет и выбрать соответствующую технологию
промежуточного слоя.
Важным шагом является разработка сетевой архитектуры. Cетевая
подсистема должна быть построена на основе существующего приложения, имеющего большую кодовую базу (более 10000 строк кода), богатую
функциональность и наличие множества архитектурных решений. Сетевая
подсистема должна удовлетворять следующим требованиям:
 реализацию в виде отдельных модулей, слабо связанных с существующим приложением;
О. В. Кандауров
67
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 гибкую архитектуру, возможность добавления новых типов передаваемых данных;
 потенциально неограниченное количество участников;
 наличие механизма обнаружения потери соединения и переподключения;
 минимальные задержки при передачи данных.
Выбор протокола промежуточного слоя (middleware)
34B
Проект HiveMind поддерживает мобильные устройства и настольные компьютеры, имеющие различный способ подключения к сети Интернет. Как правило, настольные компьютеры имеют проводное соединение (Ethernet, ADSL), а мобильные устройства беспроводное (Wi-Fi,
WiMax, 3G). Проводное соединение имеет следующие особенности:
широкий канал интернет-соединения, стабильность. Особенности беспроводного соединения: узкий канал интернет-соединения, высокая мобильность, низкая стабильность, задержки при передачи данных. Пользователи как настольных, так и мобильных систем могут быть соединены с сетью Интернет через NAT, файервол или прокси-сервер, не имея
возможности установить прямое соединение, что часто встречается, например, в корпоративных сетях.
В соответствии с концепцией сетевого взаимодействия, мы имеем
клиент-серверную архитектуру. Для удобства пользователей необходимо, чтобы клиентская и серверная части могли быть созданы в любой
момент времени и на любом устройстве. Взаимодействие должно выглядеть следующим образом: пользователь запускает сервер, другие
участники подсоединяются к нему и начинают редактирование. Каждое
изменение, сделанное участником, отправляется на сервер, который рассылает это изменение всем другим участникам.
В результате анализа возможных способов взаимодействия и особенностей подключения был сформирован список требований к технологии промежуточного слоя:
 взаимодействие должно быть основано на клиент-серверной модели;
 не должно быть сложностей в создании сервера;
 сервер должен иметь возможность уведомления всех участников
взаимодействия;
 технология должна успешно функционировать в условиях медленного, ненадежного соединения с сетью Интернет, за NAT, проксисервером или файерволом.
68
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Протокол XMPP c расширением публикации/подписки (XEP-0060)
полностью удовлетворяет вышеназванным требованиям и позволяет избежать многих сложностей, связанных с реализацией клиент-серверной
архитектуры.
Архитектура сетевой подсистемы
35B
Расширение протокола XMPP XEP-0060 [2] использует шаблон
проектирования “публикация/подписка (publish-subscribe)”, являющийся
более общим относительно шаблона “наблюдатель (observer)”. Идея
данного шаблона состоит в следующем: объект подписывается на обновления от другого объекта и становится его подписчиком. После того
как подписчик публикует информацию, уведомление о данном событии
пересылается всем подписчикам. В общем случае взаимодействие между подписчиками контролируется сервером, который получает запрос на
публикацию и производит рассылку уведомлений всем подписчикам.
Сервер может поддерживать подписку на различные сущности. В
терминах расширения XEP-0060 данные сущности называются узлами
(nodes). Каждый подобный узел имеет собственный список подписчиков. Узлы также могут хранить историю всех уведомлений и обеспечивать другие сервисы, определённые стандартом. Данные, получаемые
сервером и пересылаемые на него, называются элементами (items). Описанная система организации данных может быть ассоциирована с организацией файловой системы, где узлы представляют директории, а элементы являются файлами.
В терминах расширения XMPP публикации/подписки процесс
взаимодействия может быть представлен следующим образом. Пользователь создаёт сервер с единственным узлом для обмена и хранения сообщений. Другие участники подписываются на обновления от созданного узла. Когда один из публикующих делает изменения, они пересылаются на сервер, который уведомляет всех подписчиков о произошедшем
событии. Учитывая характер взаимодействия между сервером и подписчикам, была начата разработка сетевой архитектуры приложения.
Приложение HiveMind имеет возможности отмены и повтора ранее
отмененных действий. Данная функциональность реализована на основе
QUndoStack, который хранит всю историю выполненных команд. Каждое изменение на диаграмме связей атомарно. Когда пользователь осуществляет изменение, создаётся QUndoCommand. В QUndoCommand
хранится информация для выполнения команды и для её отмены. Таким
образом, использование QUndoStack позволяет перемещаться по истории изменений. Для каждого типа данных команд были созданы функции сериализации и десериализации в XML. Изменения, сделанные на
О. В. Кандауров
69
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
карте, отправляются на сервис в виде XML-сообщений и не сохраняются в стеке команд. Команды добавляются в стек только если они пришли
как уведомления от сервера, поэтому подписчик должен ждать ответа от
сервера для того, чтобы увидеть выполненные изменения.
Для того чтобы управлять асинхронным взаимодействием, был реализован класс NetworkController. Все команды поступают в сетевой контроллер. Если сетевое взаимодействие неактивно, команда добавляется
в стек команд. В противном случае данная команда будет сериализована
и отправлена на сервис. Уведомления, пришедшие от сервиса, десериализуются в команды, добавляются в стек команд и выполняются.
Данные команды содержат в себе информацию лишь об изменившейся части диаграммы. Подобное условие необходимо для того, чтобы
уменьшить объём пересылаемых данных, который в противном случае
будет чрезмерно большим. Необходимо чтобы все участники имели
одинаковые копии диаграмм, иначе команда, являющаяся корректной с
точки зрения одного участника, не будет являться таковой для другого.
Поэтому встаёт вопрос о распространении исходной диаграммы и её
синхронизации между всеми участниками в процессе взаимодействия.
Проблема распространения диаграммы была решена следующим
образом: первый элемент в узле должен содержать в себе сериализованную диаграмму связей. Все остальные элементы содержат в себе
сериализованные команды изменений. В момент, когда человек становится подписчиком, ему пересылаются все элементы, содержащиеся в
узле, включая диаграмму и совершенные ранее изменения.
Синхронизация диаграммы связей между всеми участниками представляет более сложную проблему. Фактически речь идёт о проблеме
целостности диаграммы связей на сервере, то есть о контроле поступающих изменений. При поступлении некорректного изменения сервер
должен его отбросить или провести слияние, если возможно. К примеру,
из-за задержек в соединении пользователь может изменить узел, который к этому времени уже был удалён одним из участников. В таком
случае сервер отсылает пользователю уведомление об ошибке и отбрасывает некорректное изменение.
Подписчик может запросить все данные или часть данных, хранящихся в узле, в любой момент времени. Данная возможность используется для синхронизации локальной копии диаграммы с копией на сервере. К примеру, если изменение было отклонено сервером, то подписчик
производит синхронизацию своей диаграммы с её версией на сервере.
Сервер не нуждается в дополнительных способах синхронизации диаграммы, поскольку все изменения локальны и всегда являются актуальными.
70
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Реализация сетевой подсистемы
36B
Сетевая подсистема приложения была реализована с помощью сетевого фреймворка Twisted и библиотеки Wokkel. Wokkel является надстройкой над Twisted, добавляющей фреймворку дополнительную функциональность. В частности Wokkel предоставляет средства для более
удобной реализации расширений XMPP (XEP). Реализация расширения
публикации/подписки в Wokkel не содержит бизнес-логики. Это значит,
что он отвечает лишь за приём, генерацию и отправку сообщений в соответствии со спецификацией XEP-0060. Wokkel реагирует на события, относящиеся к публикации/подписке, делает разбор пришедших сообщений
и вызывает соответствующие обработчики. Расширение публикации/подписки является одним из самых больших и сложных стандартов
XMPP. Для упрощения реализации данного стандарта было принято решение использовать библиотеку Idavoll. Данная библиотека реализована
на базе Wokkel и реализует функциональность XEP-0060, необходимую
для приложения.
Класс Node является абстрактным классом и представляют собой узел
в терминах XEP-0060. Существуют два типа узлов: LeafNode и
CollectionNode. LeafNode может содержать только элементы, когда как
CollectionNode может содержать лишь другие узлы. LeafNode хранит элементы в виде простого списка, но это не является подходящим решением
для приложения HiveMind. Необходимо проверять приходящие изменения
на корректность. Для этого был создан класс Changeset, хранящий в себе
информацию о самом изменении, его типе, времени создания и авторе
данного изменения. Также создан специальный класс – контейнер
СhangesetStack, хранящий экземпляры класса Changeset и отвечающий за
корректность и согласованность изменений, находящихся в нём.
HivemindNode унаследован от LeafNode и, в отличие от него, хранит изменения в ChangesetStack.
Класс BackendService содержит реализацию бизнес-логики XEP-0060.
В нем содержится логика для работы с подписчиками, проверка прав доступа и т. д. Он связан отношением композиции с классом Storage, отвечающим за управление узлами (создание, удаление, конфигурирование).
Класс HivemindNode создаётся классом Storage и содержит в себе методы
для добавления данных, изменения конфигурации узла, списка подписчиков и их ролей. PubSubService является классом библиотеки Wokkel, отвечающим за разбор пришедших сообщений и вызов соответствующих обработчиков. Если он содержит в себе экземпляр класса
PubSubResourceFromBackend, то, помимо вызова своих обработчиков,
осуществляется передача уже разобранных сообщений в подходящие методы класса PubSubResourceFromBackend. Этот класс отражает дополниО. В. Кандауров
71
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
тельный уровень абстракции, что позволяет делать архитектуру более гибкой. PubSubResourceFromBackend обязательно содержит экземпляр класса
BackendService, которому он делегирует реализацию бизнес-логики.
На стороне клиента взаимодействие управляется классом
HivemindClient. После установления соединения с сервером XMPP он запрашивает все элементы у сервиса HiveMind, отвечает за обработку приходящих элементов и уведомляет NetworkController о поступивших изменениях.
Механизм проверки наличия соединения осуществляется посредством XMPP Ping. Класс Pinger ответствен за отсылку пинг-сообщений и
приём ответов. Проверка осуществляется следующим образом: данный
класс непрерывно отсылает пинг-сообщения на XMPP сервер, к которому
подключен пользователь; если достигнуто определенное количество пингсообщений, оставшихся без ответа, то соединение рассматривается как потерянное. Pinger уведомляет NetworkController о состоянии соединения с
XMPP сервером. Пользователь может увидеть статус соединения с подписчиками в диалоге редактирования прав доступа.
Похожий механизм используется для проверки статуса подписчиков.
Каждый подписчик имеет свой экземпляр класса Pinger, который отвечает
за отсылку пинг-сообщений именно ему. На клиентской стороне реализован обработчик, который отвечает на приходящие пинг сообщения от сервера приложения. Подписчиков может быть очень много, поэтому был
создан класс PingManager, отвечающий за управление экземплярами класса Pinger. Он создаёт и удаляет экземпляры класса Pinger, а также запускает или останавливает отправку пинг-сообщений до адресата.
Заключение
37B
В работе показана архитектура сетевой подсистемы, основанная на
протоколе XMPP, позволяющая выполнять совместное редактирования
диаграмм связей. Архитектура была успешно реализована в приложении
HiveMind. В настоящий момент HiveMind позволяет выполнять совместное редактирование диаграмм связей на различных платформах, в том
числе Maemo, MeeGo, GNU/Linux, Windows.
Приложение HiveMind может быть загружено со страницы проекта
[1]. Результаты работы опубликованы в трудах 9-й международной конференции программы открытых инноваций FRUCT [3].
Разработанная сетевая подсистема оперирует в терминах абстрактных команд, что делает её слабо связанной с предметной областью приложения. Поэтому становится возможным применение разработанной
архитектуры в других приложениях, связанных с совместным редактированием документов.
72
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 Литература
103B
1. HiveMind –
Cross-platform
Collaborative
Mind
Map
Editor.
URL: http://yar.fruct.org/projects/hivemind.
2. Millard P., Saint-Andre P., Meijer R. XEP-0060: Publish-Subscribe specification URL: http://xmpp.org/extensions/xep-0060.html
3. Vasilev A., Kandaurov O., Kulikov A., Paramonov I. HiveMind Collaborative
Mind Map Editor: Architecture and Implementation of Network Subsystem
// Proceedings of the 9th Conference of Open Innovations Community FRUCT. Хельсинки, 2011. P. 217–222.
Исследование скользящих средних
К. В. Кислова, А. Н. Морозов
Временным рядом называют последовательность значений
c1 , c2 , c i ,  какой-либо величины X , фиксируемой в моменты времени
t1 , t 2 , t i , . Обработка и анализ временных рядов – типичная задача из
многих областей науки и техники, таких как радиоэлектроника, геофизика, астрономия, медицина и других. Один из старейших и наиболее
распространенных инструментов для обработки временных рядов –
скользящие средние. Они позволяют выделить тренд, т. е. очистить от
случайностей основную составляющую в движении временного ряда.
Наиболее важными среди скользящих средних считаются два вида: SMA
(простое скользящее среднее) и EMA (экспоненциальное скользящее
среднее).
Простое скользящее среднее вычисляется путем сложения и усреднения данных на определенном участке времени:
SMA n (i ) 
сi n1  ...  ci 1  сi
,
n
где ci n1 , ...., ci 1 , ci – рассматриваемые значения временного ряда,
(1)
n
–
количество отсчетов, за которые рассчитывается среднее значение (период усреднения).
С точки зрения цифровой обработки сигнала SMA – линейный
цифровой фильтр с конечной импульсной характеристикой. Для этого
фильтра веса последних n членов временного ряда постоянны и равны
1/n, остальные члены ряда имеют нулевой вес.
К. В. Кислова, А. Н. Морозов
73
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Экспоненциальное скользящее среднее (EMA) определяется рекуррентной формулой:
EMAs (i)  (1  s)  EMAs (i  1)  s  ci ,
(2)
где EMAs (i) – текущее значение EMA, EMAs (i  1) – предыдущее значение
EMA, ci – последнее рассматриваемое значение данных,
s
– параметр от
0 до 1, определяющий степень сглаживания.
Раскрыв рекуррентное соотношение для EMAs (i), получаем формулу
EMAs (i)  ...  s  (1  s)n  cin  ...  s  (1  s)  ci1  s  ci .
С точки зрения цифровой обработки сигнала EMA – линейный цифровой фильтр с бесконечной импульсной характеристикой. Для этого
фильтра веса всех членов временного ряда не равны 0 и убывают: каждый следующий вес получается умножением предыдущего на (1  s ) .
У экспоненциального скользящего среднего есть два больших преимущества перед простым скользящим средним. Во-первых, оно представляет более весомыми последние данные. Это важно для изучения
временных рядов, в которых отслеживаются и локальные тенденции,
например для рыночных цен, демографических данных, медицинских
показаний и т. д. Во-вторых, EMA в отличие от SMA не скачет из-за
сбрасывания старых данных: они исчезают постепенно.
Однако для корректного вычисления EMA необходимо брать бесконечное количество отсчетов. В реальных же условиях у нас всегда есть
конечное число данных за определенный временной интервал. Рассмотрим модификацию экспоненциального скользящего среднего, связанную с использованием ограниченного количества данных.
Идея модификации заключается в следующем. Усечем формулу
EMA на n-м слагаемом и учтем ключевые положения, заложенные в способе вычисления весов экспоненциальной скользящей средней:
1) веса уменьшаются при удалении данных от текущего момента
времени в прошлое;
2) веса составляют геометрическую прогрессию;
3) сумма весов равна 1.
В результате вычислений приходим к формуле
74
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
s  (1  s)n1
s  (1  s)
s
UMAn,s (i) 
 cin1   
 ci1 
 ci 
n
n
1  (1  s)
1  (1  s)
1  (1  s)n
n1
s

 (1  s)k  cik ,
n 
1  (1  s) k 0
где s – параметр от 0 до 1, n – период усреднения.
(3)
Значения UMA могут быть выражены через два значения соответствующей экспоненциальной скользящей средней.
Обозначим вектор, составленный из коэффициентов EMAs (i), как
n1
n
n1
Ei  ..., 1  s  s, 1  s  s, 1  s  s, ..., s  1  s, s;
вектор из коэффициентов EMAs (i  n), Ein  ..., s  1  s, s, 0, ..., 0, 0 ;
вектор
из
значений
временного
ряда –
сi  ..., ci n1 , ci n , ci n1 , ..., ci 1 , ci  .
Скалярное произведение векторов Ei и ci даёт
E , c   ...  1  s
i
i
n
 s  ci n  1  s
n1
 s  cin1  ...  1  s  s  ci 1  s  ci  EMAs (i);
векторов Ei n и ci –
E
i n

, ci  ...  1  s  s  cin1  s  ci n  0  ci n1  ...  0  ci 1  0  ci  EMAs (i  n).
Видим, что




1
1
n
n 1
 E i , c i  1  s   E i  n , c i 
 1  s   s  c i  n 1  ...
n
n
1  1  s 
1  1  s 

1
1  1  s 
n
 1  s   s  ci 1 
1
1  1  s 
n
 s  c i  UMAn , s (i ).
С другой стороны,
1
n

EMA
i


s
 EMAs (i  n)  
(
)
(1
)

s
1  (1  s ) n
1
(1  s ) n

 EMAs (i ) 
 EMAs (i  n) 
n
1  (1  s ) n
1  1  s 
 (1  t )  EMAs (i  n)  t  EMAs (i),
К. В. Кислова, А. Н. Морозов
75
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
где
t
1
.
n
s


1 (1 )
Получается
UMAn,s (i)  (1  t )  EMAs (i  n)  t  EMAs (i), t 
1
.
n
1  (1  s)
(4)
Замечание
38B
Пусть даны два различных числа y0 и y1 . Формула (1  t )  y0  t  y1
при изменении t от 0 до 1 «перебирает» все значения от y0 (при t = 0) до
y1 (при t = 1). Это так называемая интерполяционная формула.
При t < 0 или t > 1 формула осуществляет экстраполяцию
соответственно «влево» (за y0 ) или «вправо» (за y1 ).

1

Таким образом  поскольку t 
 1 выходит, что UMAn , s (i ) даёт
1  (1  s ) n


прогнозное значение для EMA (по EMAs (i  n) и EMAs (i) ).
Значения EMA имеют рекурентную зависимость, значит, усеченное
скользящее среднее сохраняет одно из главных преимуществ
экспоненциального скользящего среднего – может быть вычислено
рекуррентно (посредством EMA).
Из (3) легко выводится (или при помощи формулы (4)) и
рекуррентная зависимость для значений UMA:
s
s  (1  s )n
UMAn, s (i )  (1  s)  UMAn , s (i  1) 
 сi 
 сin
1  (1  s) n
1  (1  s) n
или
UMAn , s (i )  (1  s )  UMAn, s (i  1)  s   (1  t )  сin  t  сi  .
(5)
Как уже отмечалось, формула (2) не соответствует условию убывания весов, когда применяется к конечному числу данных. Рассмотрим,
какова будет преемственность в выражениях для UMA, если с появлением очередного члена временного ряда «ширина окна» будет увеличиваться на 1. Пусть имеются данные c1 , c2 , c n , тогда по формуле (3)
может быть найдено первое значение UMAn,s :
s  (1  s)n1
s  (1  s)
s
UMAn,s (n) 

c




c

 cn .
1
n1
1  (1  s)n
1  (1  s)n
1  (1  s)n
76
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
c1 , c2 , c
Пусть данных стало
UMAn1,s :
n1
, тогда можно вычислить
s  (1  s)n
s  (1  s)
s
UMAn1,s (n  1) 

c




c

 cn1.
n
1
1  (1  s)n1
1  (1  s)n1
1  (1  s)n1
Несложно увидеть, что справедливо соотношение
1  s   1  (1  s)n
s


 cn1.
UMAn1,s (n  1) 
UMA
n
s
,
1  (1  s ) n1
1  (1  s ) n1
По-другому,


UMAn1,s (n  1)  (1  n1 )  UMAn ,s (n)  n1  cn1 , где n1 
s
.
1  (1  s ) n1
(6)
Рассмотрим другие свойства введённого скользящего среднего
UMAn, s относительно SMAn и EMAs . Их доказательства можно найти в статье [1].
Далее будем считать, что SMA (n ) , EMA (s ) , UMA ( n; s ) – это векторы,
составленные из коэффициентов соответствующих скользящих средних.
Обозначим p k (n; s) 
s  (1  s ) k 1
.
1  (1  s ) n
1. lim UMA( n; s )  EMA( s ).
n 
Более точно, последовательность векторов, составленных из коэффициентов UMAn ,s (i) , сходится к вектору, составленному из коэффициентов EMAs (i) в каждом пространстве l p , 1  p   . По поводу определений см., например, [2].
2. lim UMA( n; s )  SMA( n ) .
s  0
Т. е. вектор  p1 (n; s), p2 (n; s), , pn (n; s) , составленный из коэффициентов UMAn ,s (i) , стремится при s  0 к вектору  1 , 1 ,  , 1 , составленному
n n
n
из коэффициентов SMAn (i) .
3. Для любых
p1 (n; s ) 
n  2,
0  s 1
справедливо
s
1

1  (1  s ) n n

s  (1  s) n1 1 
 отсюда, pn (n; s) 
 .
1  (1  s) n n 

К. В. Кислова, А. Н. Морозов
77
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Т. е. при любом n  2 и любом 0  s  1 последние данные для значения UMAn,s (i) будут более значимы, чем последние данные для значения
SMAn (i) и, наоборот, самые ранние данные в UMAn , s (i) будут иметь меньший вес, чем самые ранние данные в SMAn (i) . UMAn,s (i) лучше, чем
SMAn (i) реагирует на изменения в тенденциях данных.
4. При любом
s
1) p1 ( s ) 
n  2:
1  (1  s ) n
2)
s  (1  s) n 1
p n ( s) 
1  (1  s) n
возрастает на интервале (0;1);
убывает на интервале (0;1);
3) grad UMAn,s (i) возрастает по s на ( 0;1) .
Эти свойства показывают, что, варьируя значения параметров n и s
в UMAn,s (i ), можно получить целую шкалу важных видов скользящих
средних.
В предельных по s случаях вектор UMA ( n; s ) совпадает (при s = 1) с
0;  ; 0; 1) , т. е. линия, выдаваемая таким скользящим средним,
вектором (

n
полностью повторяет график временного ряда и (при s = 0) с вектором
1
1 1
 ; ;...;  ,
n
n n
т. е. UMAn;0  SMA(n) .
 Литература
104B
1. Кислова К. В. О модификации экспоненциальной скользящей средней
для исследования ценовых графиков // Заметки по информатике и математике.
Ярославль : ЯрГУ, 2010. Вып. 2.
2. Колмогоров А. Н., Фомин С. В. Элементы теории функций и функционального анализа. 7-е изд. М. : Физматлит, 2006. 572 с.
3. Анализ временных рядов. URL: http://www.statsoft.ru/home/textbook/ modules/sttimser.html
78
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Программа-конструктор
для численных исследований сетей
из обобщенных нейронных элементов
Е. В. Коновалов, Н. С. Борисова, С. В. Диева
В настоящее время существует несколько типов нейронных сетей,
соответствующих используемым типам элементов. Одним из них являются сети из нейронов, в которых динамика каждого элемента описывается дифференциальным уравнением или системой из них. Такие сети
функционируют в реальном времени и по своему функционированию
наиболее приближены к биологическим нейронам. Поэтому задачи, которые ставятся перед подобными сетями, носят, как правило, не прикладной, а фундаментальный характер. В первую очередь речь идет о
хранении и воспроизведении информации в динамическом виде, как это
происходит в человеческом мозге.
Относительно способов представления и хранения информации в
мозге существует два подхода: частотный и фазово-частотный. Частотный предполагает, что поведение нейрона определяет частота его импульса, фазовые отношения не учитываются. Фазово-частотный подход
предполагает, что множество нейронов может согласованно функционировать не только во времени, но и в пространстве. Фазово-частотный
подход является весьма перспективным для понимания процессов, лежащих в основе памяти и мышления [1].
Принципиальная сложность биологически правдоподобных нейросетевых моделей накладывает ограничения на аналитические исследования крупных нейронных сетей. Поэтому в современных нейросетевых
науках значительная часть исследований направлена на программные и
аппаратные реализации. Такой подход позволяет изучить возможности
предлагаемых нейронных моделей без трудоемких математических выкладок, зачастую просто невозможных. С другой стороны, построение
работоспособной нейронной сети или нейрокомпьютера, способных решать задачи по динамическому хранению информации, само по себе является значительным результатом.
В настоящей статье предлагается методика компьютерных исследований обобщенных нейронных элементов (далее – ОНЭ). Данная нейронная модель впервые предложена в [2]. Модель ОНЭ сохраняет биологический смысл и имеет достоинства моделей, созданных ранее. ИсЕ. В. Коновалов, Н. С. Борисова, С. В. Диева
79
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
пользование сетей ОНЭ выглядит перспективным, модель проста в реализации и носит универсальный характер. В частности, ОНЭ может
быть пейсмейкером (автогенератором) или детектором (пороговым нейроном) в зависимости от параметров.
В данной статье рассмотрены нейросети на основе модели ОНЭ, динамика которых описывается дифференциальными уравнениями. Сети
такого типа позволяют наиболее полно учитывать многие детали функционирования реального нейрона, однако анализ их динамики обычно
сопряжен с трудностями. Такие феноменологические модели, которые
допускают не только компьютерное, но и аналитическое исследование
при сохранении биологического смысла вызывают существенный интерес.
Полное описание модели обобщенного нейронного элемента приведено в [2]. Здесь отметим основные моменты.
Модель ОНЭ задаётся набором следующих параметров:
■ p – пороговое значение мембранного потенциала;
■ r – равновесное значение мембранного потенциала;
■ α – скоростной параметр;
■ TR – продолжительность периода рефрактерности (невосприимчивости к внешнему воздействию);
■ n – количество входов (синапсов);
■ q1,q2,…,qn – величины синаптических весов;
■ Tm – продолжительность периода синаптического воздействия
(время жизни медиаторов), Tm<TR.
Положительные величины p, r, α, Tm и TR не меняются с течением
времени. Число входов n (n=1,2,…) для каждого ОНЭ фиксировано, но,
вообще говоря, может быть неодинаковым для разных элементов в зависимости от архитектуры конкретной нейронной сети. Входы каждого
элемента характеризуются величинами q1,q2,…,qn , где n – число входов
данного элемента. Синаптические веса qi (i=1,2,…,n) определяют эффективность воздействия данного элемента на связанные с ним. Если qi >0,
то воздействие через синапс считается возбудительным, если qi <0, то –
тормозным.
Внутреннее состояние ОНЭ в момент времени t задаётся следующими функциями:
■ u(t) – функция зависимости мембранного потенциала от момента
времени t;
■ s(t) – состояние элемента;
■ σ(t) – мгновенный выходной импульс единичной амплитуды;
Функция s(t) принимает следующие значения:
80
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ОНЭ может, в зависимости от первоначальных параметров, быть
как нейроном-пейсмейкером (в случае, когда r>p), так и нейрономдетектором (в обратном случае).
Для построения и исследования кольцевых структур из ОНЭ была
разработана программа-конструктор, способная визуально строить нейронные сети произвольной структуры из обобщённых нейронных элементов с произвольными параметрами.
Наиболее естественным способом программной реализации нейронной сети стала бы разработка параллельного алгоритма. Однако в ходе
проведённых теоретических исследований математической модели обобщённого нейронного элемента было установлено, что сети, основанные на
данной модели, допускают и последовательную реализацию их поведения.
Этот вывод основан на том факте, что при отсутствии новых внешних воздействий функция мембранного потенциала обобщённого нейронного
элемента является известной заранее. Кроме того, известны ее правила изменения, а значит, её значение может быть вычислено в произвольный
момент времени t . Это позволяет найти момент времени t 0 начала спайка
данного элемента. Так как число элементов в сети конечно, то среди всех
найденных величин t0 существует наименьшая t min и в течение данного
времени ни один элемент сети не испытывает новых внешних воздействий. Следовательно, становится возможным пересчёт состояния сети от
текущего момента времени t до момента t  t min , после чего процесс повторяется. Таким образом, циклически осуществляя шаги, равные по величине времени, в течение которого сеть не претерпевает качественных изменений состояния входящих в неё элементов, оказывается возможным
осуществление моделирования поведения модели нейронной сети в течение сколь угодно долгого промежутка времени.
Алгоритм работы программы
1. Для всех нейронов сети в момент времени t 0 вызывается метод
timeToEvent, определяющий время, оставшееся до импульса данного
элемента при условии отсутствия внешних воздействий:
n

p
r
qi




i 1
  ln 
n
 u (t )  r  q

i
 0
i 1







 ,
Е. В. Коновалов, Н. С. Борисова, С. В. Диева
81
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
где n – количество элементов сети, воздействующих на данный элемент.
2. Из полученных значений находится минимум: t min  min   , где
1 i  N
N – общее число элементов сети. Величина t min – это и есть то время, за
которое будет пересчитано значение сети на текущей итерации. Момент
t 0  t min может быть временем выхода элемента из рефрактерности, генерации импульса или прекращения воздействия.
3. Для всех элементов сети вызывается метод killTime, и в качестве
параметра ему передаётся значение t min , при этом не происходит отправки медиаторов с ОНЭ, у которых происходит спайк, так как это может
исказить результаты расчётов на тех элементах, на которых должно быть
осуществлено воздействие. Пересчитываются, в зависимости от типа события, параметры у всех ОНЭ сети, в т. ч. мембранный потенциал:
n


u(t0  t min )  r   qi  exp(t min )u(t0 )  r   qi ,
i 1
i 1


n
где n – количество элементов сети, воздействующих на данный элемент.
4. Элементы, у которых произошёл спайк, помечаются как находящиеся в рефрактерном состоянии на время TR . Происходит рассылка медиаторов на соседей данных элементов. Элементам, которые из рефрактерного состояния переходят в состояние восприимчивости, присваивается значение функции u(t), равное 0. У элементов, воздействие одного
или нескольких медиаторов на которые завершилось, пересчитывается
сумма весов
n
q .
i 1
i
5. Для наглядного представления происходит визуальная пауза, а
затем следует графическая отрисовка событий каждого элемента. На
этом переход сети от состояния, соответствующего времени t 0 к состоянию, соответствующему времени t 0  t min закончен, а потому все
вышеперечисленные шаги можно повторить заново. Таким образом,
данный алгоритм способен работать сколь угодно долго и посредством
его можно получить состояние сети в любой момент времени.
В ходе моделирования разработанное приложение позволяет отображать динамику изменения основных параметров (рис. 1) любого количества нейронов, входящих в сеть, а также изменять эти параметры в
соответствии с требованиями конкретной задачи по ходу решения. Возможность построения графиков рассогласований между выбранными
парами нейронов позволяет наглядно показать схождение системы к
82
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
стабильному состоянию или отсутствие такого состояния (рис. 2). Кроме того, в программе присутствует возможность сохранения и загрузки
построенных схем нейронных сетей, а также возможность добавления к
ним комментариев, упрощающих восприятие сохранённой схемы.
Рис. 1. Динамика изменения основных параметров нейронов
Рис. 2. График рассогласований между выбранной парой нейронов
Е. В. Коновалов, Н. С. Борисова, С. В. Диева
83
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
С помощью данной программы были проведены численные исследования кольцевых структур из ОНЭ. Они позволили подтвердить имеющиеся теоретические результаты, содержащиеся в [2] и [3], а именно
существование в кольцевых структурах устойчивого колебательного
режима с рассогласованиями между импульсами, которые можно задавать заранее. Таким образом, кольцевые структуры ОНЭ способны хранить и воспроизводить информацию в динамическом виде.
 Литература
105B
1. Борисюк Г. Н. и др. Модели динамики нейронной активности при обработке информации мозгом – итоги «десятилетия» // УФН. 2002. Т. 172, № 10.
С. 1189–1214.
2. Майоров В. В., Коновалов Е. В. Обобщенный нейронный автомат в задаче распространения волны возбуждения по нейронной сети // Нейрокомпьютеры: Разработка, применение. М.: Радиотехника. 2007. № 7. С. 3–8.
3. Коновалов Е. В. Устойчивый колебательный режим в нейронной сети
обобщенных нейронных автоматов-детекторов // Моделирование и анализ информационных систем. Ярославль : ЯрГУ. 2007. Т. 14, № 2. С. 30–35.
Итерационный алгоритм
реконструкции изображения
в электроимпедансной томографии
В. Д. Копылов
Введение
39B
Электроимпедансная томография (ЭИТ) – это метод исследования
распределения электрической проводимости внутри объекта с помощью
измерения напряжения между точками на поверхности объекта, возникающего при пропускании через объект электрического тока. В статье
рассматривается применение ЭИТ для диагностики патологий молочной
железы с использованием электроимпедансного маммографа МЭИК.
Маммограф МЭИК
40B
Маммограф электроимпедансный компьютерный (МЭИК) был разработан российской компанией СИМ-техника и начал использоваться в
2003 году (рис. 1). Прибор имеет матрицу из 256 измерительных электродов и отдельный референтный электрод. Каждый из электродов мат84
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
рицы по очереди выступает источником тока, который собирается всегда на референтном электроде, а на оставшихся электродах матрицы
производится измерение напряжения. Таким образом, после серии измерений мы располагаем разностью потенциалов между каждой парой
электродов матрицы.
Рис. 1. Общий вид прибора
Математическая модель
41B
Для анализа данных, получаемых с прибора, используется следующая
математическая модель: исследуемая область имеет форму квадратного
цилиндра, ограниченного сверху плоскостью, в которой находится матрица измерительных электродов. Референтный электрод считается бесконечно удаленным вниз. На выходе нужно получить распределение проводимости в семи горизонтальных сечениях, первое расположено на расстоянии 4 мм от поверхности, а следующие – через каждые 7 мм вглубь.
Метод обратного проецирования
42B
Сейчас результаты измерений обрабатываются методом обратного
проецирования. Этот метод основан на эвристике: изменение проводимости в элементарном объеме влияет на измерения, проводимые вдоль
эквипотенциальной линии, рассчитанной для однородного распределения проводимости.
Рассмотрим этот принцип на примере, изображенном на рис. 2.
Электрод – источник тока – находится в центре. Если бы объект имел
однородную электропроводность, то в используемой модели эквипотенциальные линии имели бы форму концентрических сфер с центром в
источнике тока. Строим такую сферу, проходящую через неоднородность. Она пересекает плоскость измерительных электродов по окружВ. Д. Копылов
85
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
ности. Согласно эвристике, измерения на электродах, попавших на окружность, будут учитывать неоднородность, а показания других электродов – нет. Несмотря на отсутствие строгого математического обоснования корректности метода обратного проецирования, он выдает приемлемые результаты, но во многих случаях изображения, полученные
этим методом, требуют улучшения: удаления шумов, проявления мелких деталей и т. д. Для этого автором был разработан итерационный алгоритм.
Итерационный алгоритм
43B
Прежде всего введем понятия прямой и обратной задач. Прямая задача электроимпедансной томографии – это восстановление поверхностных потенциалов, по известному распределению проводимости.
Соответственно, обратная задача – это нахождение проводимости, располагая сведениями о потенциале на границе. Основной задачей, которая обсуждается в статье и решается на практике, является именно обратная.
Описанный выше алгоритм решения обратной задачи проецирует
отличия между измеренными потенциалами и значениями, рассчитанными для однородного распределения, вдоль эквипотенциальных линий.
Этот же принцип можно применить для проецирования ошибки между
результатами измерения и решения прямой задачи.
Рис. 2. Принцип метода обратного проецирования
Обозначим решение прямой задачи, которое переводит некое распределение проводимости σ в разность потенциалов на измерительных
электродах φ, через F, а решение обратной – через G:
86
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
F    
G    
или
F
 

G
 

Тогда итерационный алгоритм можно описать следующим образом.
1. Получаем с прибора результаты измерений φbase.
2. Решаем обратную задачу на измеренных данных, получаем первое приближение распределения проводимости:

G


 mоdel
0
base
.
3. Решаем прямую задачу, моделируем показания электродов:
F

 mоdel 
0
0
mоdel
.
4. Вычисляем ошибку между результатами измерения и данными,
полученными на предыдущем шаге:

0
error

base

0
mоdel
.
5. Для найденной ошибки решаем обратную задачу, находим распределение проводимости, соответствующее ошибке:

0
G

 error .
0
error
6. Улучшаем имеющееся распределение, вычитая из него распределение, полученное на предыдущем шаге:

1
  mоdel  k  error .
0
mоdel
0
7. Проверяем критерий останова и, если нужно, переходим к пункту 3.
Общий вид алгоритма описывается рекуррентным соотношением:


0
mоdel
i
mоdel
G
 
base
  mоdel  k  G
i 1

base
F
  , при i  0
.
i 1
mоdel
Главное отличие этого итерационного алгоритма от методов, которые используются в двумерной ЭИТ, – линейное увеличение сложности
по сравнению с методом обратного проецирования. При этом визуально
заметное улучшение изображения достигается уже на первой итерации.
Тестирование
4B
За время использования прибора МЭИК была собрана коллекция
наборов данных, соответствующих различным патологиям:
В. Д. Копылов
87
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 Киста;
 Рак;
 Рубцы.
Поскольку при измерении на человеке сложно узнать, как должно
было выглядеть распределение проводимости, была проведена серия
тестов с использованием ванн с соляным раствором, в который помещались разные предметы: монеты, шарики, ферритовый сердечник.
На рисунках 3–6 изображены результаты метода обратного проецирования (сверху) и итерационного алгоритма (снизу). Оба метода выдают по 7 сечений распределения проводимости исследуемой области,
глубина сечений возрастает слева направо.
В результате тестирования итерационного алгоритма на модельных
и реальных данных были сделаны следующие выводы:
 Итерационный алгоритм решения обратной задачи улучшает результаты, полученные методом обратного проецирования, убирая шумы
и проявляя незаметные до этого детали;
Рис. 3. Столбик монет
Рис. 4. Металлическая трубка
88
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рис. 5. Молочная железа в норме
Рис. 6. Рак молочной железы
 Метод неплохо локализует небольшие и однородные вдоль оси Z
неоднородности с проводимостью, отличающейся в 2–3 раза от проводимости окружающей однородной среды. При этом метод правильно
оценивает знак отклонения величины проводимости у неоднородности;
 Чувствительность метода убывает с глубиной. Для неоднородностей размерами от 1 до 2 отсчетов локализация идеальная в первых
двух сечениях и удовлетворительная в 3-м сечении. В 4-м сечении присутствует «тень» объекта, в 5-м и 6-м сечениях нельзя говорить о корректной локализации неоднородности;
 С увеличением отклонения величины проводимости неоднородности от проводимости окружающей ее однородной среды наблюдается
рост контрастности реконструированного изображения.
Таким образом, итерационный метод при некоторых ограничениях
позволяет восстанавливать общую структуру объемного распределения
проводимости среды, хотя качество (контраст) получаемого изображения оказывается приемлемым только с точки зрения обнаружения неоднородностей, расположенных недалеко от поверхности. При увеличении
глубины залегания неоднородности разрешение метода резко падает.
В. Д. Копылов
89
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 Литература
106B
1. Корженевский А. В и др. Электроимпедансная томографическая система
для трехмерной визуализации тканей молочной железы // Биомедицинские технологии и радиоэлектроника. 2003. № 8.
2. Мячин М. Л. Обзорный отчет по результатам выполнения работ по проекту «Разработка программного модуля для решения обратной задачи электроимпедансной томографии». Ярославль, 2007.
3. Мячин М. Л. Применение метода обратных проекций к трехмерной обратной задаче ЭИТ. Ярославль, 2007.
4. Just A., Hahn G., Dudekevych T., Frerichs I., Hellige G. Application of a
SIRT based image reconstruction algorithm to EIT data. Göttingen, Germany: Department of Anaesthesiological Research, University of Göttingen, 2011.
Система обучения программированию
на языке REFAL
C. В. Котельников
Данная работа представляет собой программную систему обучения
языку логического программирования REFAL (в объеме REFAL-2). Целью работы является разработка программной системы обучения языку
REFAL, позволяющей предоставлять изучаемый материал, контролировать его освоение как в части понимания материала, так и в части его
практического использования.
В качестве системы обучения, отвечающей поставленным целям, была разработанна программная система, реализующая стратегию поэтапного обучения, которая не только организует активное изучение материала,
но и контролирует, а также направлет процесс обучения. Обучение представленно тремя последовательными этапами: на первом этапе происходит
изучение теоретического материала и тестирование его усвоения, второй
этап обучения представлен выполнением упражнений, требующих осмысленного понимания материала, и последний этап, являющийся основным,
представлен применением полученных знаний и навыков на практике.
Рассмотрим подробнее каждый из этапов обучения.
На первом этапе обучения студенту предоставляется теоретический материал и после его изучения студент переходит к стадии тестирования понятий материала. При этом случайным образом выбираются
вопросы теста с закрытыми вариантами ответа, для решения которых
требуется указать все правильные ответы. В случае правильного ответа
90
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
на вопрос теста количество вопросов теста уменьшается и студент получает возможность вернуться к изучению теории или перейти к ответу
на следующий вопрос, а в случае неправильного ответа количество вопросов в тесте увеличивается и студент отсылается к той части теоретического материала, на основе которой был составлен вопрос. При превышении предельного количества ошибок сеанс обучения заканчивается
без сохранения прогресса обучения. При правильных ответах на все
предлагаемые вопросы теста теоретической части обучения происходит
переход к следующему этапу обучения – этапу выполнения упражнений,
требующих осмысленного понимания материала.
Изучение теоретического материала и
тестирование его усвоения.
Упражнения требующие осмысленного понимания материала.
Применение полученных знаний и навыков на практике.
Рис. 1. Стратегия поэтапного обучения
На этом этапе обучения также случайным образом студенту предоставляется ряд заданий. Выполнение каждого из таких заданий состоит в
написании в окне редактора некоторой части кода, проверяющей осмысленное понимание материала. На данный момент задания этого этапа обучения представлены написанием отдельных, синтаксически и семантически правильных, функций на языке REFAL. При неправильном решении
задания студенту указывается ошибка и он вновь отсылается к теоретическому материалу, как и на предыдущем этапе обучения. Число упражнений на этом этапе также растет в случае неправильных ответов и при превышении порога неправильных ответов сессия завершается. Только после
правильных ответов на все предлагаемые упражнения студент может перейти к главному этапу обучения – выполнению задач, позволяющих применить полученные знания и навыки на практике.
Последний этап обучения представлен этапом обучения разработке
программ на языке REFAL и является основной целью данной обучаюC. В. Котельников
91
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
щей системы. На этапе обучения разработке программ в качестве заданий предлагается писать программы на REFAL по условиям, сформулированным в заданиях. Помимо кода программы, предоставляется возможность написания набора тестов к программе с возможностью их пошагового выполнения. Тесты представляют собой набор ожидаемых
результатов выполнения программы для заданных входных значений.
Пошаговое выполнение программы является очень важной частью обучения, позволяющей наглядно проследить, как происходит выполнение
REFAL-программы и совпадает ли оно с ожидаемым. Данная работа дает возможность применить студенту на практике приобретенные в процессе обучения знания и навыки. Помимо пользовательских тестов, существует «полный» набор тестов, прикрепленных к задаче, не отображаемых интерфейсом, по результату выполнения которых система
определяет правильность написанного пользователем программного кода; в случае неправильного выполнения система сообщает об этом и
предоставляет обучаемому пошагово выполнить этот тест.
Настройка системы обучения должна производиться при помощи
выбора значений ее параметров во время опытной эксплуатации. К таким параметрам относятся: исходное количество заданий на каждом
этапе обучения; количество заданий, на которые уменьшается или возрастает количество предлагаемых заданий при правильных и неправильных решениях соответственно; предельное допустимое количество
ошибок на каждом из этапов обучения и т. д.
"Представление"
Модуль отображающий структуры
данных программы в БД
"Контроллеры"
Сеть
клиент
"Интерпретатор
REFAL"
Рис. 2. Настройка системы обучения
Система реализована на базе платформы Java EE с использованием
ORM баз данных, а также различных сторонних библиотек.
92
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Заметим, что в связи с отсутствием подходящих сторонних программных продуктов, производящих пошаговую интерпретацию программ REFAL, интерпретатор и синтаксический и семантический анализаторы написаны в рамках данной программной системы.
Заключение. Все поставленные во введении цели достигнуты. На
данный момент интерпретатор работает только с основными конструкциями языка REFAL-2 и задания второй и третьей частей обучения требуют доработок, но с нового учебного года система будет использована
в учебном процессе.
 Литература
107B
1. Базисный Рефал и его реализация на вычислительных машинах. М.:
ЦНИПИАСС, 1977. 258 с.
2. Климов А. В., Романенко С. А. Система программирования Рефал-2 для
EC ЭВМ. Описание входного языка. М.: ИПМ им. М. В. Келдыша АН СССР,
1987. 52 с.
3. Романенко С. А. Реализация Рефала-2. М.: ИПМ им. М. В. Келдыша АН
СССР, 1977. 191 с.
4. Турчин В. Ф. Феномен науки: кибернетический подход к эволюции. М.:
ЭТС, 2000. 368 с.
Разработка архитектуры UI
в кроссплатформенном приложении
HiveMind
А. В. Куликов
Введение
45B
Пользовательский интерфейс приложения играет одну из важнейших ролей в успешности проекта: именно он создает первое впечатление о программном продукте, от его продуманности зависит то, насколько удобно будет пользоваться программой. Основными задачами
при проектировании UI являются прежде всего достижение максимальной эффективности и производительности при работе с программой и
эстетическое удовлетворение пользователя. В настоящий момент любая
библиотека, ориентированная на разработку приложений с UI, может
предоставить инструменты для построения таких интерфейсов.
А. В. Куликов
93
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Самыми известными кроссплатформенными библиотеками являются
Swing для Java и Qt для C++ [1]. Эти библиотеки предоставляют возможность применять системный стиль оформления к визуальным элементам
приложения автоматически, а также предоставляют разработчику высокоуровневый интерфейс для создания элементов UI и обработки пользовательских событий (события мыши, клавиатуры, сенсорного дисплея). Но
даже с применением этих библиотек необходимо писать код, в той или
иной степени учитывающий особенности целевой платформы. Это накладывает определённые трудности на разработку UI в случае, если приложение ориентировано на мобильные и настольные системы.
HiveMind – это редактор диаграмм связей, поддерживающий совместную работу над диаграммой. HiveMind может использоваться как на
мобильных платформах MeeGo/Maemo, так и на персональном компьютере. Приложение позволяет выполнять добавление, удаление, перенос
узлов, редактирование и форматирование текста узла. Дополнительные
возможности включают в себя изменение формы, толщины и цвета соединительных линий, добавление пиктограмм к узлам диаграммы, текстовые подписи для каждого из узлов, отмену и повтор ранее отменённых действий, поиск текста на карте.
Постановка задачи
46B
Задача разработки пользовательского интерфейса приложения
HiveMind заключается в построении масштабируемой архитектуры UI,
которая позволяет реализовать эргономичный интерфейс на всех целевых платформах. Данная задача разбивается на следующие подзадачи:
1. Разделение атрибутов элементов на группы, чтобы интерфейс
диалогов редактирования не был перегружен управляющими элементами на любой из платформ;
2. Проектирование и реализация механизма, позволяющего изменять только компоновку диалога для различных платформ, при этом
бизнес-логика на разных платформах должна оставаться неизменной для
диалогов одного типа;
3. Проектирование диалогов для редактирования атрибутов;
4. Реализация контекстного меню, из которого будут вызываться
все диалоги для редактирования элементов диаграммы связей.
Разработка эргономичного интерфейса кроссплатформенного приложения требует тщательной подготовки, в которую входят обязательный
анализ целевых платформ, а также разработка специальных методов по
минимизации дублирования кода. Хорошая архитектура приложения играет существенную роль в реализации и поддержке кода приложения, определяет границы его масштабируемости.
94
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
47B
Архитектура классов-диалогов
Одним из важнейших элементов пользовательского интерфейса являются диалоговые окна. В связи с тем что приложение является кроссплатформенным и ввиду специфики некоторых платформ, необходимо
подстраивать пользовательский интерфейс диалогов под каждую платформу при неизменной бизнес-логике. Для реализации такого решения
необходимо выделить бизнес-логику диалога в отдельный класс, что
даст следующие преимущества: бизнес-логика содержится в одном месте и при необходимости меняется сразу для всего семейства диалогов,
упрощается реализация диалогов для конкретной платформы. Необходимо только расположить управляющие элементы на форме в соответствии со стандартами оформления приложений для конкретной платформы. Такой подход при разработке архитектуры диалоговых окон дает возможность легкой адаптации практически под любую платформу с
графическим интерфейсом, что позволяет значительно расширить аудиторию потенциальных пользователей, не переписывая исходный код
приложения, а лишь добавляя новый код, связанный с реализацией отображения элементов на диалогах.
Для минимизации работ по разработке диалоговых окон, а также для
унификации пользовательского интерфейса необходимо выделить общие
элементы диалоговых окон в один класс. Рассмотрим необходимые компоненты и функции, которые присутствуют во всех диалоговых окнах.
Прежде всего все диалоговые окна должны содержать в себе кнопки для
принятия и отмены изменений. Второе важное сходство всех диалоговых
окон – это одинаковая обработка событий нажатия пользователем на
кнопки «OK» и «Отмена».
Реализация функционала, отвечающая за первичную инициализацию
диалога, должна находиться только в одном классе, что дает возможность
централизованно управлять базовыми свойствами диалогов (такими, как
модальность и размер окна), а также задавать положение кнопок «OK» и
«Отмена». Ещё одним важным свойством диалогового окна является поддержка интернационализации. Интернационализация – это процесс создания приложения, которое будет удобным в использовании людьми из других стран, отличных от той, в которой оно разрабатывалось. В процесс интернационализации входит перевод текста всех сообщений на другие
языки и поддержка различных способов отображения текста. Интернационализация должна быть реализована на уровне всего приложения. В
связи с особенностями классов PyQt, интернационализация диалогов приложения была выделена в отдельный класс.
Поскольку выбранный вариант архитектуры диалогов предполагает
реализацию большого количества однотипных классов диалогов, было
А. В. Куликов
95
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
решено реализовать единый интерфейс создания конкретного экземпляра диалога в зависимости от текущей платформы. Для этих целей был
применен шаблон проектирования Factory Method [2].
При применении данного шаблона проектирования разработчику
больше нет необходимости думать о том, диалог какого типа нужно создать из заданного семейства, когда приложение работает в той или иной
операционной системе. Для того чтобы фабрика диалогов создавала
диалоги, разработанные под конкретную платформу, необходимо знать,
на какой платформе работает приложение. Это можно выяснить двумя
способами: задать специальные настройки для приложения на этапе
сборки пакета/инсталлятора или определить тип системы по системным
переменным.
Минусы первого подхода в том, что приложение будет работать
только на той платформе, для которой был сделать пакет/инсталлятор.
Второй подход дает возможность собирать единый пакет/инсталлятор
для всех платформ. Минусы второго подхода в том, что приложение будет требовать больше системной памяти, так как оно будет содержать
платформозависимый код, предназначенный для всех платформ. При
использовании первого подхода можно не загружать ненужный платформозависимый код, что положительно скажется на производительности приложения и требованиях к ресурсам. В силу невысокой производительности мобильных устройств был выбран первый подход: перед
сборкой пакета/инсталлятора для конкретной платформы запускается
специальный скрипт, который удаляет платформозависимый код приложения, что позволяет повысить производительность и уменьшить
объем оперативной памяти, занимаемой приложением. В результате был
реализован модуль, который содержит в себе набор функций, управляющих созданием определенного семейства диалогов.
Общую UML-диаграмму, классов, которая содержит иерархию
классов диалогов и модуль фабрики диалогов, можно видеть на рис. 1.
Вместо знака # необходимо вставить название необходимого семейства диалогов (например, EditNode или EditEdge).
SearchTrMixin – класс, управляющий интернационализацией диалогов. Он реализует метод tr(), который отвечает за перевод текстовых
строк в названиях команд приложения.
CommonDialog – базовый класс диалогов, содержащий в себе кнопки «OK» и «Отмена». Класс описывает виртуальный метод accept(), который предназначен для принятия изменений диалогового окна.
Abstract#Dialog – это абстрактный класс семейства диалогов. Данный класс реализует бизнес-логику семейства диалогов.
96
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рис. 1. Иерархия классов UI
Maemo#Dialog (Desktop#Dialog) – конечная реализация диалога для
мобильной платформы Maemo (для настольной платформы).
Модуль gui_factory – модуль, содержащий фабричные методы для
создания диалогов.
Класс MaemoDialogMixin является «Примесью» (примесь – элемент
языка программирования (обычно класс или модуль), реализующий какое-либо чётко выделенное поведение. Используется для уточнения поведения других классов, не предназначен для порождения самостоятельно используемых объектов). Данный класс содержит код для активизации дополнительных атрибутов диалогов, при работе приложения
на платформе Maemo.
AbstractMainWindow – класс, реализующий общую функциональность главного окна.
Классы DesktopMainWindow и MaemoMainWindow осуществляют
надстройку над абстрактным классом окна: инициализируют меню и
панели инструментов.
MainView – класс, реализующий логику отображения диаграммы
связей в окне.
Классы DesktopMainView и MaemoMainView реализуют надстройку
над абстрактным классом MainView.
Разработка контекстного меню
48B
Вторым важнейшим компонентом пользовательского интерфейса
является контекстное меню. Вид контекстного меню приложения завиА. В. Куликов
97
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
сит от конкретной операционной системы. Набор команд в контекстном
меню также зависит от операционной системы, в которой выполняется
приложение. В нашем случае контекстное меню должно содержать команды для открытия диалогов редактирования атрибутов, команды
вставки и удаления узлов, а также команды перемещения узлов. Рассмотрим основной перечень команд, определённых для узлов: добавить
подчинённый узел; добавить смежный узел выше текущего; добавить
смежный узел ниже текущего; свернуть поддерево; переместить узел;
удалить узел; изменить узел; изменить стиль ребра; изменить метку ребра; выбрать пиктограммы; редактировать ссылку; перейти по ссылке.
В силу особенностей мобильных устройств (например, Nokia N900),
таких как маленький размер экрана и ориентированность платформы на
ввод данных с помощью пальцев и стилуса, невозможно одновременно
показать большое количество команд в контекстном меню (на платформе Maemo в контекстном меню можно отобразить только 6 пунктов на
экране). В связи с этим было решено оставить минимальный набор команд, который позволяет не потерять эффективность работы с диаграммой связей: добавить подчинённый узел; свернуть поддерево; переместить узел; удалить узел; изменить узел; изменить стиль ребра; изменить
метку ребра; выбрать пиктограммы; перейти по ссылке.
Такие действия, как «Добавить смежный узел выше текущего» и
«Добавить смежный узел ниже текущего», можно заменить последовательностью из двух действий – «Добавить подчинённый узел» и «Переместить узел».
В основе реализации контекстного меню для настольных платформ
лежит класс QMenu, который позволяет создать полноценное контекстное меню с минимальным объемом кода. Для платформы Maemo
контекстное меню, которое реализует класс Qmenu, выглядит очень
громоздко и не позволяет отображать более шести пунктов меню. В связи с этим было решено организовать анимированное меню в виде круглых кнопок, располагающихся по дуге. Ввиду особенностей мобильного
устройства (небольшие физические размеры экрана и ориентированность платформы на ввод данных с помощью пальцев и стилуса) были
выбраны достаточно большие размеры кнопок, чтобы обеспечить удобное управление пальцами стилус. Для реализации анимированного меню
был применен Qt Animation Framework, который содержит все необходимые инструменты для реализации качественной анимации с минимальными затратами. Вид контекстного меню на различных платформах
представлен на рис. 2 и 3.
98
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рис. 2. Внешний вид на платформе
GNU/Linux
Рис. 3. Внешний вид на платформе
Maemo
Заключение
49B
При разработке основных архитектурных принципов интерфейса
приложения HiveMind были решены задачи, касающиеся группировки
атрибутов и разработки иерархии классов диалогов. Также в ходе разработки был найден путь, который позволяет быстро и легко дополнять
приложение новыми диалогами, а также при необходимости легко мигрировать на новую платформу. Применение шаблона проектирования
Factory Method позволило реализовать интерфейс для создания необходимых экземпляров классов диалогов в зависимости от типа платформы.
В ходе разработки пользовательского интерфейса возникла необходимость в специализированном контекстном меню, которое позволяет
быстро и удобно вызывать нужные команды при работе с диаграммой
связей. В итоге на платформе Maemo было выбрано анимированное меню, которое состоит из основного и дополнительного подменю, вызываемых одинарным и двойным щелчком соответственно. Благодаря тому
что библиотека Qt поддерживает изменение стиля оформления визуальных компонентов, разработчику не нужно задумываться о стиле оформления визуальных компонентов на каждой платформе: библиотека Qt
автоматически применит стиль отображения визуальных компонентов в
зависимости от стиля оформления системы.
Результаты данной работы были воплощены в приложении HiveMind,
которое было успешно представлено на 8-й и 9-й международных конференциях программы открытых инноваций FRUCT. Соответствующие статьи опубликованы в сборниках трудов конференций [3, 4].
 Литература
108B
1. Бланшет Ж. Саммерфилд М. Qt 4. Программирование GUI на С++. М.:
КУДИЦ-Пресс, 2007. 648 с.
А. В. Куликов
99
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
2. Гамма Э. и др. Приемы объектно-ориентированного проектирования:
Паттерны проектирования. Питер, 2007. 366 c.
3. Vasilev A. et al. Proceedings of the 8th Conference of Open Innovations
Framework FRUCT. Lappeenranta, Finland, 2010/ P. 219–224.
4. Vasilev A. et al. Proceedings of the 9th Conference of Open Innovations
Community FRUCT. Petrozavodsk, 2011. P. 217–222.
Исследование режимов функционирования
сети диффузионно связанных
нейронных клеточных автоматов
С. Ю. Нестеренко
Зоны контакта нейронов называются синапсами. В зависимости от
способа проведения сигналов синапсы делятся на те, которые реализуют
химическое взаимодействие, и на те, которые реализуют электрическое
взаимодействие.
Химическое взаимодействие происходит под влиянием выброса химических посредников – медиаторов. Медиаторы усиливают или ослабляют проводимость мембраны нейрона. Взаимодействие, носящее электрический характер, определяется соприкосновением мембран соседних
нейронов. Вследствие градиента потенциалов возникают межмембранные токи. Модель электрического синапса с биологическими обоснованиями приведена в [1].
Нейроны, взаимодействующие посредством электрических синапсов, описываются системой уравнений с разностной диффузией. Подобные сети, составленные из импульсных нейронов получили всестороннее обсуждение в [1] и [2]. Результаты моделирования электрически
связанных нейронов согласуются с общепринятыми биологическими
представлениями о надежности – и это понятно, из-за прямого контакта
мембран нейронов взаимодействие менее подвержено случайным флуктуациям и практически отсутствует инертность при передаче сигнала.
В работе рассматриваются сети одинаковых нейронов с однородными
связями, взаимодействие которых носит электрический характер. В качестве элемента сети выбрана модель нейронного элемента, предложенная
в [3]. Модель при определенном выборе параметров реализует различные
типы нейронов. Речь идет о нейронах-детекторах и нейронахавтогенераторах.
100
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рассмотрим систему дифференциальных уравнений, описывающую
взаимодействие двух диффузионно связанных нейронов:
При исследовании системы необходимо рассмотреть несколько
случаев, определенных различными начальными условиями. Ниже
представлены решения системы, которые используются в дальнейшем
для анализа:
Пусть
и
– ближайшие к началу наблюдения времена возникновения спайков первого и второго нейронных элементов соответственно.
рассогласование времён спайков. РассмотОбозначим через
рим некоторые (в зависимости от начальных условий) из возможных ситуаций функционирования системы двух диффузионно связанных нейронных элементов и получим для каждого случая итерационную зависимость рассогласования времен генерации спайков на следующем шаге от
. Пусть во всех случаях
рассогласования на предыдущем, то есть
начальное состояние системы задаётся ситуацией генерации импульса
во время рефрактерности элеменнейронного элемента с потенциалом
та с потенциалом . Нулевой момент времени приурочим к началу гене.
рации импульса вторым нейроном, то есть
1. Рассмотрим два случая, для которых параметр d мал:
Для случая 1а:
С. Ю. Нестеренко
101
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Для случая 1б:
Рис. 1. а).
Рис. 1. б).
2. Рассмотрим два случая, для которых мембранные потенциалы
отличаются как минимум в d раз:
102
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рис. 2. а).
Рис. 2. б)
Для случая 2а:
При
существует предельная точка соответствующей последовательности.
Для случая 2 б:
.
Естественным образом здесь возникают два случая: в первом слуреализуется процесс схождения
к предельной
чае при
точке, но из биологических соображений выбор такого значения пара-
С. Ю. Нестеренко
103
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
метра не оправдан, поэтому, видимо, реализуется второй случай, где
.
Результаты работы могут представлять интерес для исследования
кратковременного хранения информации о внешнем воздействии. Кроме того, модель можно использовать в приложениях, где рассматривается элементарное взаимовлияние элементов системы, например химические реакции, социальные отношения.
 Литература
109B
1. Кащенко С. А., Майоров В. В. Модели волновой памяти. М.: Либроком,
2009. 288 с.
2. Мячин М. Л. Исследование автоколебательных режимов в сетях импульсных нейронов: дис. … канд. физ.-мат. наук. Ярославль, 2009. 190 с.
3. Коновалов Е. В. Исследование и управление режимами самоорганизации в сетях обобщенных нейронных автоматов: дис. … канд. физ.-мат.
наук. Ярославль, 2008. 156 с.
Некоторые методы нахождения
самодополнительных графов
М. Л. Никитин
Графом называется пара (V,E), где V – множество вершин, а E –
множество ребер, причем элементами множества E являются неупорядоченные пары вершин.
Дополнением (дополнительным графом) к графу G = (V, E) называется граф G , у которого множество вершин то же, что у G, а множество ребер является дополнением множества E до множества всех неупорядоченных пар вершин. Иначе говоря, две различные вершины смежны в
графе G тогда и только тогда, когда они не смежны в графе G (рис. 1).
Граф, изоморфный своему дополнению, называется самодополнительным. Приведем пример самодополнительного графа порядка 4
(рис. 2). Невооруженным глазом видно, что дополнение графа изоморфно самому графу.
Полный граф порядка 8 содержит 28 ребер. Значит, самодополнительный содержит половину – 14 ребер. Векторы степеней данного графа будут иметь такой вид:
( x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 )
104
.
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рис. 2
Рис. 1.
Очевидно, что верршина таакого граафа не моожет бытть изолированО
ной, т.
т е. не см
межной ни
и с одной
й другой вершиноой. Значи
ит исходя из дополни
ительногоо графа, степень
с
у вершин
ны также не можеет быть равна
р
и
7. Из этого
э
слеедует, чтоо
1  deg vi  6.
Сумма валлентностей верши
С
ин такого
о графа всегда
в
раввна 28, то
о есть,
взяв вектор
в
саамодополлнительноого графаа и сумм
мировав ччисла в строке,
с
должн
но обязаттельно поолучитьсяя 28. Это объясняется коли
ичеством
м ребер
в такоом графе (14)
(
и тем
м, что реб
бро соеди
иняет двее разные вершины
ы:
x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 = 28.
Будем упоорядочивать верш
шины по возрастан
в
нию вален
нтностей
й в вект есть, например
н
р, векторр степеней (1, 6, 6,
6 5, 2, 5,, 1, 2) бу
удет не
торе, то
что ин
ное, как (1, 1, 2, 2, 5, 5, 6,
6 6). Таккже мы сразу
с
вид
дим, что вектор
в
должеен иметь определёённую си
имметрич
чность: поосколькуу у нас x1  x2 
x3  x4  x5  x6  x7  x8 , то для дополнит
д
тельного графа буудет x1 = x1 , x2 =
x2 … и так далее, то есть в векторе
в
дополнит
д
тельного графа сттепени
ин сохран
нятся. Прри этом x1  7  x7 , x2  7  x 6 ,… x8  7  x1 . В частноч
верши
x4  x5 . Из этого следует, чт
сти, x4  x5  7 , значит,
з
то x4  x5 .
x1  x2  x3  x4 < x5  x6  x7  x8
Перечисли
П
им все воозможные векторы
ы степен
ней такихх графов. Их не
так мн
ного:
1. (1, 1, 1, 1, 6, 6, 6,, 6)
2. (1, 1, 1, 2, 5, 6, 6,, 6)
3. (1, 1, 1, 3, 4, 6, 6,, 6)
М. Л. Ни
икитин
4. (1, 1, 2, 2, 5, 5, 6, 6)
5. (1, 1, 2, 3, 4, 5, 6, 6)
6. (1, 1, 3, 3, 4, 44, 6, 6)
105
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
7. (1, 2, 2, 2, 5, 5, 5, 6)
8. (1, 2, 2, 3, 4, 5, 5, 6)
9. (1, 2, 3, 3, 4, 4, 5, 6)
10. (1, 3, 3, 3, 4, 4, 4, 6)
11. (2, 2, 2, 2, 5, 5, 5, 5)
12. (2, 2, 2, 3, 4, 5, 5, 5)
13. (2, 2, 3, 3, 4, 4, 5, 5)
14. (2, 3, 3, 3, 4, 4, 4, 5)
15. (3, 3, 3, 3, 4, 4, 4, 4)
Теорема
В самодополнительном графе количество вершин с максимальной и
минимальной степенью должно быть одинаково. При этом должно быть
более одной вершины с минимальной степенью и более одной – с максимальной. Количество вершин предмаксимальной степени должно
быть равно количеству вершин предминимальной степени и также быть
больше 1 (или равным нулю). И так по всем степеням вершин.
Доказательство
Если имеется только одна пара вершин
(min, max), то, в силу самодополнительности
данная пара вершин при изоморфизме самодополнительности отобразится сама на себя.
При этом если данная пара образовывала ребро в исходном графе, то и в двойственном
графе она образует ребро, что противоречит
определению дополнительности.
Исходя из леммы, графы с векторами
№ 7, 8, 9, 10 и 14 не могут быть самодополни- Рис. 3. Самодополнительтельными. Кроме того, графа с тремя висячиный граф
ми вершинами порядка 8 не существует. В
этом можно убедиться, проведя несложные рассуждения. Если у исходного графа три висячих вершины, значит, в дополнительном графе будет, как минимум, 3 вершины со степенью 6, а это в любом случае минимум 15 ребер. Но мы помним, что в самодополнительных графах на
восьми вершинах ребер должно быть ровно 14.
Значит, вектора № 1, 2, 3 нам тоже не подходят.
Лемма 1
В наборе степеней самодополнительного графа по левую и по правую стороны от середины должно быть не менее двух вершин с одинаковой степенью с каждой стороны. Например:
(2, 2, 3, 3, 4, 4, 5, 5)
Доказательство.
106
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рассмотрим графы, имеющие векторы степеней, аналогичные номерам 5 и 12 – (1, 1, 2, 3, 4, 5, 6, 6) и (2, 2, 2, 3, 4, 5, 5, 5). Здесь в каждом
случае мы видим одну вершину степени 3 и одну степени 4. При переходе к дополнительному графу эта пара вершин отобразится на себя, то
есть если вершины были смежными, они станут несмежными и, наоборот, если между ними не было ребра, оно появится. А это означает, что
исходный и дополнительный графы не будут изоморфными. Соответственно, такого самодополнительного графа не существует. Поэтому вектора № 5 и 12 мы тоже вычеркиваем.
Лемма 2
Самодополнительных графов с вектором степеней (1, 1, 2, 2, 5, 5, 6,
6) не существует.
Доказательство
Предположим, что существует граф с таким вектором степеней. Тогда рассмотрим его подграф без висячих вершин – граф на шести вершинах с вектором степеней (2, 2, 5, 5, 5, 5). Дополнение такого графа
будет иметь вектор (0, 0, 0, 0, 3, 3), но это невозможно, а значит, такого
графа не существует. Но не существует также и графа, содержащего такой подграф.
Из 15 возможных векторов степеней вычеркнуты 11. Остались 4:
■ (1, 1, 3, 3, 4, 4, 6, 6)
■ (2, 2, 2, 2, 5, 5, 5, 5)
■ (2, 2, 3, 3, 4, 4, 5, 5)
■ (3, 3, 3, 3, 4, 4, 4, 4)
Если полный перебор графов на восьми вершинах давал
14
C 28

28!
28!

 40116600
14!*28  14! 14!*14!
различных вариантов фигур, то благодаря этим размышлениям, удалось
существенно сузить круг возможных типов самодополнительных графов.
Хотя перечисленные леммы и утверждения были доказаны для графов восьмого порядка, их утверждения являются вполне общими и могут послужить основой для поиска самодвойственных графов других
порядков. Такая работа уже для графов девятого порядка примерно в
три раза объёмнее.
М. Л. Никитин
107
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 Литература
10B
1. Емеличев В. А. и др. Лекции по теории графов. М.: Наука, 1990. 385 с.
2. Харари Ф. Теория графов. М.: Мир, 1973. 301 с.
3. Харари Ф., Палмер Е. Перечисление графов. М.: Мир, 1977. 326 с.
О повороте черно-белого изображения,
построенного на основе
гексагональной решетки
П.Г. Парфенов, Д. С. Харламова
В данной работе исследуется поведение фрагментов черно-белого
изображения, построенного на основе гексагональной решетки, при их
повороте по методу ближайшего соседа. Этот метод заключается в том,
что у закрашенных пикселей исходного изображения берутся их центры
и в декартовой системе поворачиваются на заданный угол, а затем закрашиваются пиксели, центры которых лежат наиболее близко к перенесенным точкам. Подходы к цифровым изображениям на гексагональной решетке рассматривались в работах [1, 2, 3, 4, 5].
В соответствии с подходом в работе [5] под цифровым изображением, построенным на основе гексагональной решетки, понимается изображение, для которого аналогами пикселей являются шестиугольные
элементы некоторой гексагональной решетки. В матричном представлении через a ij обозначается как сам этот элемент, так и значение его цветности. В свою очередь, цветность может принимать значения либо 0, либо 1, то есть черно-белое изображение.
Под гексагональным фрагментом G размером 2x2 изображения
А понимается совокупность четырех примыкающих пикселей:
G0
G1
G2
G3
G4
G5
G6
G7
К0
К1
К2
К3
К4
К5
К6
К7
G8
G9
108
G 10
G 11
G 12
G 13
G 14
Заметки по информатике и математике. Вып. 3
G 15
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
К8
К9
К10
К11
К12
К13
К14
К15
Всего существует 16 различных типов фрагментов, обозначенных
символами Gi , i = 0,…,15 и расположенных в первой строке таблицы. Во
второй строке представлен геометрический аналог соответствующего
типа, а третья строка указывает число фрагментов типа Gi, i = 0, …, 15,
таких что Gi  A . Этот набор неотрицательных целых чисел Кi , i = 0, …,
15 будем называть характеристическим набором коэффициентов изображения А, построенным по системе фрагментов Gi , i = 0, …, 15.
К сожалению, этот применявшийся ранее набор фрагментов имеет
серьезный недостаток: даже при углах поворота, кратных 2 , фрагмен3
ты не сохраняют свою форму, а в некоторых случаях распадаются на несвязные компоненты. В связи с этим предлагается в качестве гексагонального фрагмента g изображения А рассмотреть совокупность
трех примыкающих пикселей, которые изображены в таблице ниже:
g0
g1
g2
g3
g4
g5
g6
g7
К0
К1
К2
К3
К4
К5
К6
К7
g8
g9
g 10
g 11
g 12
g 13
g14
g 15
К8
К9
К10
К11
К12
К13
К14
К15
Ясно, что предлагаемые трехпиксельные фрагменты остаются
фрагментами при поворотах на углы, кратные 2 . Кроме этого, полно3
ценность этого набора подтверждает и следующая теорема.
П.Г. Парфенов, Д. С. Харламова
109
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Теорема. Для любого изображения А, построенного на основе гексагональной решетки, существует функция F ( g i ) , определенная на трехпиксельных гексагональных фрагментах, такая что
 ( A)   F ( g i ) .
gi  A
Доказательство. Положим для удобства F ( g i )   i , i  0,1,...,15. Применим сформулированное выше соотношение к изображениям, порожденным трехпиксельными гексагональными фрагментами, что даст следующую систему:
0  8 1


 1   2   3   9   10   11  1


 1   2  2 3   4  2 9   10   11   14  1

2 1   2   3   5   9  2 10   11   12  1

.

2

2

2








1










2
3
7
9
10
11
12
13
14
 1

 1  2 2   3   6   9   10  2 11   13  1

  1   2   3   4   5   6  2 9  2 10  2 11   15  1


Общим решением этой системы будет параметрическое семейство
функций F ( g i ) :
 0  F ( g 0 )  0;   F ( g )  a;   F ( g )  b;  3  F ( g 3 )  c;   F ( g )  d ;
1
1
2
2
4
4
 5  F ( g 5 )  e;  6  F ( g 6 )  f ;  7  F ( g 7 )  1  a  b  c  f  d  e;  8  F ( g8 )  0;
 9  F ( g 9 )  g;  10  F ( g10 )  h;   F ( g )  1  a  b  c  g  h;
11
11
 12  F ( g12 )  a  e  h;  13  F ( g13 )  1  a  c  f  g  h;
 14  F ( g14 )  c  d  g ;  15  F ( g15 )  1  a  b  c  d  e  f ,
где a, b, c, d, e, f, g, h – произвольные действительные параметры.
Получив значения функции F на трехпиксельных фрагментах, можно
легко, пользуясь аддитивностью эйлеровой характеристики, продолжить
предлагаемую формулу на множество всех изображений. В общем виде
она представлена ниже:
110
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 ( A)  ak1  bk 2  ck3  dkk 4  ek5  fkk 6  (1  a  b  c  f  d  e)k 7  ggk9  hk10 
 (1  a  b  c  g  h)k11  (a  e  h)k12  (1  a  c  f  g  h)k13  (c  d  g )k14 
 (1  a  b  c  d  e  f )k15 .
Теорема доказанаа.
Т
О
Обозначи
им через gi () реззультат поворота
п
фрагмен
нта gi на угол
у
.
Для пооворотовв на углы,, кратныее 2 , вер
рны следуующие сооотношен
ния:
3
gi (2k / 3)  gi ; k  Z ; i  0, 7, 8, 155;
gi (2 / 3  2n)  gi1; n  Z ; i  1, 2, 4, 5, 9, 10, 12, 13;
gi (2 / 3  2n)  gi  2 ; n  Z ; i  3,6,11,14.
gi (4 / 3  2n)  gi  2 ; n  Z ; i  1, 4, 9, 12;
gi (4 / 3  2n)  gi1; n  Z ; i  2, 3, 5, 6, 100, 11, 13, 14;
gi (2n)  gi ; n  Z ; i  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 144, 15.
Для реаллизации поворото
Д
п
в на произвольны
ый угол п
по метод
ду ближайшеего сосед
да была создана программ
ма. Нижее приведеены неко
оторые
характтерные реезультаты
ы экспери
иментов с помощьью этой п
программ
мы.
В
Возьмем
два фраггмента g44 и g6 и будем
б
враащать их с интервалом в
5° на разном
р
раасстоянии от центтра:
Рис. 1.. Фрагментт g4
Рисс. 2. Фрагм
мент g6
Характер изменени
Х
и
ия фрагмеентов преедставим
м в виде д
диаграмм:
И диаграамм видн
Из
но, что иззменениее фрагмен
нта зависсит от то
ого, на
каком
м расстоян
нии от цеентра он был
б выбр
ран. При этом на оодном и том
т же
расстооянии раззные фраагменты ведут
в
себ
бя одинакково. В н
незаштри
ихованных об
бластях преобразо
п
ованный фрагмен
нт не являяется фраагментом.
П.Г. Паррфенов, Д.
Д С. Харламова
111
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рис. 3. Пооворот фраагмента g44
Рис. 4. Пооворот фраагмента g66
 Литера
атура
1B
1.. Golay M.
M J.E. Hexaagonal patttern transfformation // IEEE T
Trans. Com
mputers.
1969. Vol.
V 18, № 8. P. 733––740.
2.. Прэтт У. Цифроваяя обработкка изображ
жений. М.: Мир, 19882. Кн. 2. 478
4 с.
3.. Preston K. Featuree extractioon by Go
olay patteern transfo
formation // IEEE
Trans.C
Computers. 1971. Vool. 20, № 9.. P. 1007–1
1014.
4.. Парфенов П. Г., Завьялова
З
Л. М. Об эйлеровоой характееристике изобраи
жений,, построеенных наа основе гексагон
нальной и треугоольной решеток
р
// Модеелировани
ие и анали
из информ
мационны
ых систем. Вып. 2. Я
Ярославльь, 1994.
С. 21–228.
5.. Парфенов П. Г., Каплий
К
И. А. О хараактеристи
ическом нааборе коэф
ффициентов черно-беллых цифрровых изоображений
й, построеенных на основе гексагог
ие и анал
лиз инфоррмационны
ых систем
м. Ярональноой решеткки // Модеелировани
славль: ЯрГУ, 20007. Т. 14,, № 2. С. 40–43.
4
112
З
Заметки
по инфоррматикее и матем
матике. В
Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Реализация метауровня схемы классов
Динамической информационной модели
(DIM)
Е. А. Смирнова
Описанный в [1] язык объектно-динамических запросов ODQL для
динамической информационной модели DIM, концепции которой приведены в [2], обладает полнотой – любая группа объектов DIM (вместе с
любыми их свойствами) может быть выделена ODQL-запросом (см. [3]).
В [4] описана организация выполнения запросов, при которой трудоемкость оптимальна. Но время выполнения запросов зависит от организации хранения данных и манипулирования ими, а также от выбора платформы реализации. При этом должны быть учтены вопросы динамического изменения данных. Рассмотрим организацию метауровня,
который отвечает за хранение данных об объектах, их значениях, связях
классов и объектов.
Метауровень представляет собой реляционную базу данных с набором таблиц, содержащих в себе все нужные значения. В таблицах метауровня мы как объекты будем представлять информацию о классах.
Поскольку параметры каждого класса могут меняться, то информацию о
параметрах классов мы также будем представлять в других таблицах,
связывая их с таблицей классов реляционными связями. Объекты каждого класса будем держать в отдельных таблицах, связывая их с классами таблицы классов. Подобным образом поступим и со значениями параметров объектов, помещая их в отдельные таблицы, связанные с соответствующими таблицами параметров и объектов реляционными
связями. Отметим, что каждый класс, параметр, объект имеет свой уникальный идентификатор (IdClass, IdParamter) для установления упомянутых связей между таблицами, а также двумя атрибутами – Дата рождения и Дата смерти, – определяющими период жизни соответствующего данного (при изменении класса, параметра, объекта их объектные
идентификаторы также изменяются).
Разобьем большую схему организации метауровня на три подсхемы
и поясним каждую.
На рис. 1 представлена схема, которая показывает взаимодействия
между классами, такие как наследование, включение.
Е. А. Смирнова
113
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рис. 1. Схема взаимодействия между классами.
Таблица Class классов объектов определяется для каждого класса:
 Объектный идентификатор класса;
 Имя класса через поле NameClass;
 Его родительские и дочерние классы (через таблицы
ClassInheritance наследования – граф наследования с дугами типа
TypeGroup);
 Классы, которые включены, и классы, в которые включен данный
класс (через таблицу ClassInclusion – граф включения классов);
 Классы взаимодействия (через таблицу ClassInteraction);
 Поле LevelInheritance определяет уровень класса в графе наследования, представляемого таблицей ClassInheritance:
0 – класс является изолированной вершиной графа наследования;
1 – класс является корневым в наследовании;
2 – класс является ни корневым, ни висячим в графе наследования;
3 – класс является висячим в наследовании.
 Поле тип класса TypeClass, которое может принимать следующие
значения:
0 – класс объектов, не являющихся связями других объектов;
1 – класс объектов, являющихся связями в отношении включения
других объектов;
2 – класс объектов, являющихся связями во взаимодействии других
объектов.
114
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 список помеченных объектов хранится в поле MarkList ;
связи данного класса, хранятся в поле RelRef, представляющий собой объект типа Map, в котором содержатся ключ – идентификатор связанного класса и значение – виды связей;
 Параметры класса (через таблицу Parameter, т. к. все имена параметров уникальны и прикреплены к какому-то классу и через таблицу
GroupParam) (см. рис. 3);
 Объекты класса (через таблицу Obj_IdClass) (см. рис. 2);
 История класса (через таблицу ClassHistory).
Отметим, что связи класса с другими классами можно получать как
через таблицы связи классов ClassInheritance, ClassInclusion,
ClassInteraction, ClassHistory (основной способ хранения информации о
связях класса), так и через поле RelRef (дополнительный способ, ускоряющий получение этой информации). Для того чтобы дублирование информации в поле RelRef не привело к коллизиям, перед каждым изменением какой-либо связи в одной из перечисленных четырех таблиц информация в поле RelRef помечается как недействительная, а после
изменения обновляется. Такой режим ведет к сохранению целостности
базы данных.
Таблица ClassInheritance описывает связи классов по наследованию
(родительский – дочерний) и представляет ориентированный граф с определенными компонентами для каждого типа классов. При этом родительский и дочерние классы определяются через IdParnetClass и
IdChildClass, а тип группы TypeGroup определяет тип параметра дочернего класса.
Таблица ClassInclusion описывает связи включения классов (включающий – включаемый). Параметр IdInclusionClass определяет идентификатор класса связи между включающим классом IdIncludingClass и
включенным классом IdIncludedClass (если IdInclusionClass=0, то определяется простое включение объектов включаемого класса в объекты
включающего класса). Параметр TypeInclusion определяет тип отношения между включающим и включаемым классом:
0 – многие ко многим; 1 – многие к одному;
2 – один ко многим; 3 – один ко одному.
Таблица ClassInteraction описывает классы взаимодействия, определяющие взаимодействие потока объектов класса IdWhat от объекта
класса IdFrom к объекту класса IdTo.
Таблица ClassHistory описывает динамические связи классов соответственно (предшественники – наследники), определяет время преобразования и представляет собой ациклические ориентированные графы.
Е. А. Смирнова
115
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рассмотрим теперь организацию хранения данных об объектах, их
связях. Схема представлена на рис. 2.
Таблица Obj_IdClass объектов класса определяет для каждого объекта:
 идентификатор объекта IdObject;
 поле Mark для пометки объекта, участвующего в выборке, если
стоит значение 0 или null – объект не помечен, он не участвует в выборке, если 1, то объект помечен;
 NextIdObject – объектный идентификатор следующего объекта в
списке помеченных объектов; через это поле осуществляется альтернативная организация списка, которое обеспечивается внешним индексом
по этому полю на ту же таблицу;
 префикс IdClass из названия таблицы является идентификатором
класса, объекты которого добавлены в данную таблицу, связь включения между объектами определяется в таблицах ObjInclusion_IdIncluding_IdIncluded_IdInclusion и ObjInclusion_IdIncluding_IdIncluded, где
вместо IdIncluding, IdIncluded, IdInclusion находятся идентификаторы
классов включающего, включения, связи включения;
Рис. 2. Схема взаимодействия объектов
 связь наследования между объектами определяется в таблицах
ObjInheritance_IdParent_IdChild, где вместо IdParent, IdChild находятся
идентификаторы классов;
116
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
 параметры объекта (через таблицу GroupParam и Parameters)(см.
рис. 3);
 связанные через таблицу ObjInteraction_IdF_IdT_IdW_IdH взаимодействия объекты, где IdF, IdT, IdW, IdH – идентификаторы объектов,
имеющих соответственно роли Откуда, Что, Куда, Как ).
Для описания отношения включения объектов используется одна из
таблиц
ObjInclusion_IdIncluding_IdIncluded_IdInclusion
или
ObjInclusion_IdIncluding_IdIncluded. Они представляют ациклический
ориентированный граф с навешанными на дуги параметрами вхождения
включаемого объекта во включающий. Параметр IdIncludingObject задает включающий объект класса IdIncluding из названия таблицы. Параметр IdIncludedObject задает включаемый объект класса IdIncluded из
названия таблицы. Параметр IdInclusionObject задает объект связи между включающим и включенным объектами класса IdInclusion из названия таблицы.
Таблица ObjInheritance_IdParent_IdChild, где IdParent и IdChild
идентификаторы классов, для каждого объекта IdChildObject (дочерний
объект) класса IdChild из названия таблицы задает объект IdParentObject
(родительский объект) класса IdParent из названия таблицы.
Таблица ObjHistory описывает динамические связи объектов соответственно (предшественники – наследники), определяет время преобразования и представляет ациклические ориентированные графы.
Таблица ObjInteraction_IdF_IdT_IdW_IdH описывает взаимодействия
объектов, представляет ориентированный граф с навешанными на дуги из
объектов IdFrom (Откуда) в объект IdTo (Куда) потоками (объектов IdWhat
(Что)), определенными параметрами объекта IdInteraction (Как).
Последней частью схемы является описание параметров. Параметры – это значения полей у созданных объектов. Схема хранения и взаимодействия их с классами и объектами представлена на рис. 3.
Таблица Parameters определяет параметры объектов и для каждого
параметра:
 объектный идентификатор IdParameter;
 его имя;
 тип (через таблицу Types);
 значение каждого параметра IdParameter каждого объекта IdObject
через таблицы с именами типа Val_IdParameter, где вместо IdParameter
находится идентификатор параметра;
Е. А. Смирнова
117
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рис. 3. Схема хранения данных о параметрах
 список значений динамического параметра IdParameter в определенный момент времени DateTime для каждого объекта IdObject через
таблицы с именами типа ValTime_IdParameter, где вместо IdParameter
находится идентификатор параметра.
Таблица Parameters связана с таблицей Class через таблицу
GroupParam, которая определяет тип группы и связь между классом и
параметром.
Каждый класс может содержать 3 группы параметров с именами:
MIPO – Main Identification Parameters of Objects – TypeGroup = 0;
MNPO – Main Nonidentification Parameters of Objects – TypeGroup = 1;
APO – Addinional Parameters of Objects – TypeGroup = 2.
Эти группы параметров определяют спецификацию объектов класса. При этом параметры из списка MIPO являются идентификационными (любые 2 объекта класса не должны иметь одинаковый набор этих
значений); параметры из списка MNPO являются другими обязательными параметрами объектов класса, а параметры из списка APO необязательные для того или иного объекта класса. Обязательным является наличие хотя бы одной из групп параметров MIPO или MNPO.
Используя такой способ хранения данных, можно хранить не только объекты и классы, но и связи между ними соответственно. Такая
схема позволяет изменять связи между сущностями, вносить изменения
в структуру базы данных, заменять старые объекты новыми, сохраняя
118
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
при этом старые. Применение такой схемы облегчает работу с базой
данных, особенно при внесении существенных изменений в структуру
хранения данных.
 Литература
12B
1. Рублев В. С. Язык объектных запросов динамической информационной
модели DIM // Моделирование и анализ информационных систем. Ярославль:
ЯрГУ, 2010. Т. 17, № 3. С. 144–161.
2. Писаренко Д. С., Рублев В. С. Объектная СУБД Динамическая информационная модель DIM и ее основные концепции // Там же. 2009. Т. 16, № 1. С. 62–91.
3. Рублев В. С. Запросная полнота языка ODQL динамической информационной модели DIM // Ярославский педагогический вестник. Серия «Физикоматематические и естественные науки». Вып. 1. Ярославль, 2011.
4. Рублев В. С. Организация выполнения объектных запросов в динамической информационной модели DIM // Моделирование и анализ информационных
систем. Ярославль: ЯрГУ, 2011. Т. 18, № 2.
Этапы венчурного финансирования
О. Ю. Сухопаров
Ключевые слова: венчурные фонды, инвестиционный риск, эффективность
венчурного финансирования.
Венчурное финансирование – это долгосрочные (5–7 лет) рискованные инвестиции частного капитала в активы малых высокотехнологичных перспективных компаний или хорошо уже зарекомендовавших
себя венчурных предприятий. Эти фирмы ориентированы на разработку
и производство наукоёмких продуктов с целью получения прибыли от
прироста стоимости вложенных средств [1].
Весь период вложенный в компанию капитал неликвиден. Реальная
величина прибыли становится известной только после выхода предприятия на фондовый рынок, когда инвесторы получают доход за счет продажи своего пакета акций. Например, в России одним небольшим научным коллективом, благодаря инвестициям (всего несколько тысяч долларов), был создан лекарственный препарат «Тимоген», оказавшийся
мощным иммунным стимулятором. Интерес к нему проявили сразу несколько стран. Только сама лицензия на его производство была продана
в США за несколько миллионов долларов. Такую рентабельность – несколько тысяч процентов – не способен дать ни один промышленный
О. Ю. Сухопаров
119
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
проект. Подобную высокую прибыльность может обеспечить только
венчурный бизнес.
В целях минимизации риска венчурные капиталисты, как правило,
распределяют свои средства между несколькими проектами и в то же
время несколько инвесторов могут поддерживать один проект. Для этого же применяется поэтапное выделение ресурсов в виде небольших
порций (траншей) или, как принято говорить среди венчурных бизнесменов, через "капельницу". Каждая последующая стадия развития предприятия финансируется в зависимости от успеха предыдущей. В связи с
этим выделяются следующие этапы финансирования.
Первым этапом большинства новых проектов является достартовое
финансирование (seed). В этот момент предпринимателю требуется финансовая поддержка для проведения работ по теоретическому и практическому обоснованию коммерческой значимости своей идеи. Он сам
или небольшой коллектив под его руководством осуществляет предварительные исследования и разработки, оценивает потенциальный рынок
для новой продукции, готовит бизнес-план деятельности будущей фирмы Этап достартового финансирования может длиться от нескольких
месяцев до одного года и в среднем требует капиталовложений в размере до 300 тыс. долларов. Это наиболее рискованные инвестиции, поскольку достоверная информация, позволяющая определить жизнеспособность предлагаемого проекта, практически отсутствует. Согласно
одной из оценок, в конце рассматриваемого этапа отбрасывается около
70% новых идей. В то же время принятые идеи приносят инвесторам,
вошедшим в дело на этапе достартового финансирования, высокую прибыль – по разным оценкам от 50 до 75 % годовых [2].
Если первый этап завершается успешно, наступает этап стартового
финансирования (start up), на котором практически завершается работа
по организации новой фирмы и подбору ее основных сотрудников. Близятся к окончанию разработка и испытание прототипа нового продукта,
технологии или вида услуг, а также проводится изучение потребностей
рынка. В некоторых случаях бывают необходимы расходы на проведение дополнительных исследований и разработок. Этап стартового финансирования занимает от полугода до нескольких лет и обычно обходится инвесторам в сумму от 1 до 3 млн. долларов. Из-за высокой степени риска часто практикуются совместные капиталовложения
нескольких инвесторов.
Третий этап – начального расширения (early expansion) – связан с
переходом инновационной фирмы к практической деятельности по выпуску нового вида продукции или коммерческому освоению нового вида услуг. В это время фирма нуждается в рекламе, укреплении своей ре120
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
путации у потребителей, преодолении конкуренции, создании сети сбыта товарной продукции, организации и совершенствовании управления
производством. Прибыли от реализации продукции еще не обеспечивают на этом этапе необходимых финансовых возможностей для дальнейшего роста, уплаты текущих расходов и создания оборотных фондов.
В то же время имеющиеся активы фирмы не служат надежной гарантией
для получения кредитов от коммерческих банков. Таким образом, предприниматели снова вынуждены прибегать к услугам инвесторов рискового капитала. Этап начального расширения может занять несколько лет
и требует для обеспечения нормальной деятельности новой фирмы нескольких миллионов долларов. Поэтому в финансировании нововведений здесь обычно принимают участие несколько венчурных фондов.
Если этап начального расширения завершается успешно, за ним
следует четвертый период – быстрого расширения (rapid growth),- на котором новой фирме необходимы значительные средства для увеличения
производственных мощностей, оборотного капитала, улучшения системы сбыта, а также для совершенствования выпускаемой продукции. Готовятся условия для выпуска акций новой фирмы на рынок ценных бумаг. Подготовительный этап (mezzanine) может потребовать до трех месяцев и расходов на уровне 300 тыс. долларов и более.
Конечной целью инвесторов является наступление пятого этапа –
ликвидности (liquidity stage), т. е. продажи акций фирмы какой-либо заинтересованной крупной компании или их первичное размещение на
фондовом рынке. Для облегчения продажи акций новых фирм, еще не
имеющих прочной репутации у широкого круга потенциальных покупателей, в США сложился внебиржевой рынок ценных бумаг.
Важным вопросом является оценка эффективности деятельности
компаний. Можно ее рассчитывать на каждом из выделенных этапов путем сопоставления затрат и валового дохода. Но такой традицилнный
метод не всегда применим к венчурному бизнесу, ибо прибыль получается, как правило, в конце деятельности. Поэтому целесообразно использовать агрегатный метод, в том числе метод «хоккейной клюшки».
Такой подход позволяет дать комплексную оценку окупаемости инвестиций. При этом используется следующее уравнение:
 первоначальные   ожидаемый 



 инвестиции
  рост
  доля собственности инвестора,
 прибыль после 

   сравнимая Р\\Е 
 уплаты налога 
О. Ю. Сухопаров
121
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
где Р\\Е есть мультипликатор «цена акции\\доход компании» для расчета рыночной стоимости молодой компании к концу прогнозируемого
периода [3].
В России опыта венчурного финансирования пока недостаточно.
Основной организацией, которая занимается этим делом, является Российская венчурная компания(РВК), созданная еще в 2004 году. Она целиком принадлежит государству и призвана оказывать поддержку инновационно-технологическим компаниям, том числе и созданным в высших учебных заведениях. Всего был проинвестирован 31 проект. При
участии РВК были созданы в России десять венчурных фондов .Однако,
как показывает опыт, РВК во многом не справляется со своими задачами. Как показала проверка Счетной Палаты РФ в 2009–2010 гг., основная часть финансовых средств РВК не инвестирована в венчурные проекты или инновационные компании, а размещена на депозитах в банках.
За указанный период в венчурные проекты было всего инвестировано
5,45 млрд. руб. из уставного капитала РВК, а остальные средства – более
25 млрд. руб. оказались на банковских вкладах (4).
Таким образом, венчурное финансирование является высокорискованным, поэтому осуществляется поэтапно. Отсутствие понятных и
эффективных механизмов взаимодействия между венчурными фондами
и учёным сообществом – это одна из важных проблем для инновационного развития экономики.
В заключение выражаю благодарность профессору В. М. Мелиховскому за помощь в подготовке статьи.
 Литература
13B
1.Заставнюк О. Ф. Венчурный капитал: проблемы и противоречия: монография. Ярославль; ЯФ АТиСО, 2010. 256 c.
2. URL: http://www.bishelp.ru/gde_dengi/vench/obshee/osobennosti.php
3. URL: http://www.cfin.ru
4. URL: http//en.wikipedia.org
122
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Специфика разработки веб-сервисов
в облаке на примере Google App Engine
С. В. Талов
Введение
50B
В настоящее время огромное распространение получает сервис-ориентированная архитектура (SOA). Все больше вычислений происходит
на сервере и все меньше на компьютере. Примеры такой архитектуры
можно встретить, начиная с простых виджетов на рабочем столе и заканчивая сложными банковскими системами.
Серверы должны обрабатывать огромный поток информации. Один
сервер зачастую не способен обработать такой объем данных, в связи с
чем встает вопрос работы такой системы на кластере. К счастью сейчас
существует огромное множество облачных сервисов, которые позволяют гораздо меньше беспокоиться о том, как приложение будет справляться с большими нагрузками.
Цели и задачи исследования
51B
 Разработать веб-сервис и разместить его в облаке Google App Engine
 Оптимизировать работу приложения, учитывая специфику облака
Веб-сервисы
52B
Веб-служба, веб-сервис (англ. web service) – программная система,
идентифицируемая строкой URI, чьи общедоступные интерфейсы определены на языке XML. Описание этой программной системы может
быть найдено другими программными системами, которые могут взаимодействовать с ней согласно этому описанию посредством сообщений,
основанных на XML и передаваемых с помощью интернет-протоколов.
Веб-служба является единицей модульности при использовании сервисориентированной архитектуры приложения [1].
На сегодняшний день в качестве формата для передачи сообщений
все чаще используются JSON, поскольку он более компактен по сравнению с XML и, соответственно, генерирует меньший трафик.
Наибольшее распространение сейчас имеют протоколы SOAP и
REST. Разработанное приложение работает по технологии REST.
С. В. Талов
123
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
REST (сокр. англ. Representational State Transfer, «передача состояния представления») – подход к архитектуре сетевых протоколов, обеспечивающих доступ к информационным ресурсам. Был описан и популяризован в 2000 году Ройем Филдингом (Roy Fielding), одним из создателей протокола HTTP. Самой известной системой, построенной в
значительной степени по архитектуре REST, является современная Всемирная паутина [2].
Облачные вычисления
53B
Сегодня под облачными вычислениями обычно понимают возможность получения необходимых вычислительных мощностей по запросу из
сети, причем пользователю не важны детали реализации этого механизма
и он получает из этого «облака» все необходимое. Ярким примером могут
служить поисковые системы, интерфейс которых очень прост, но в то же
время они предоставляют пользователям огромные вычислительные ресурсы для поиска нужной информации. Сегодня крупные вычислительные
центры не только позволяют хранить и обрабатывать внутри себя определенные данные, но и дают возможности для создания собственных виртуальных дата-центров, позволяя молодым компаниям не тратить силы на
создание всей инфраструктуры с нуля [3].
С понятием облачных вычислений часто связывают такие сервиспредоставляющие технологии, как:
 «Инфраструктура как сервис» («Infrastructure as a Service» или
«IaaS»)
 «Платформа как сервис» («Plaatform as a Service», «PaaS»)
 «Программное обеспечение как сервис» («Software as a Service»
или «SaaS»).
Один из представителей облачных сервисов, работающий по технологии PaaS, является Google App Engine.
Google App Engine
54B
Платформа Google App Engine позволяет запускать приложения,
используя инфраструктуру компании Google (серверы, коммуникации,
технологии). Приложения, которые используют для своей работы App
Engine, очень просто создавать, поддерживать и масштабировать при
резком увеличении на них нагрузки. Для работы с App Engine нет необходимости знать, как нужно управлять сервером. Достаточно просто загрузить код приложения, и оно сразу станет доступным пользователям.
Google App Engine поддерживает приложения, написанные на нескольких языках программирования. Благодаря среде выполнения Java
App Engine можно создавать приложения с помощью стандартных тех124
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
нологий Java, в том числе JVM, сервлетов Java и языка программирования Java или другого языка, использующего интерпретатор или компилятор на JVM, например JavaScript или Ruby. Кроме того, App Engine
предоставляет специальную среду выполнения Python, которая включает быстрый интерпретатор и стандартную библиотеку Python [4].
Google App Engine позволяет легко создавать приложения, надежно
работающие даже при большой нагрузке и с большими объемами данных. App Engine включает следующие функции:
 динамическую работу в Интернете с полной поддержкой основных веб-технологий;
 постоянное хранилище с запросами, сортировкой и транзакциями;
 автоматическое масштабирование и регулировку нагрузки;
 API для аутентификации пользователей и отправку электронной
почты с помощью аккаунтов Google;
 полнофункциональную локальную среду разработки, имитирующую Google App Engine на вашем компьютере.
 запланированные задачи для отслеживания событий в определенное время или через регулярные интервалы.
Квоты
5B
Каждый ресурс App Engine оценивается в соответствии с одним или
двумя видами квот: оплачиваемой или фиксированной.
Оплачиваемые квоты – это максимальное ограничение на объем ресурсов, установленное администратором приложения, чтобы предотвратить превышение бюджета. Каждое приложение бесплатно получает
часть оплачиваемой квоты. Можно увеличить оплачиваемые квоты для
приложения, включив ведение счета и установив дневной бюджет, а затем распределив квоты. Оплачиваются только фактически используемые приложением ресурсы и только тот их объем, который выходит за
пределы бесплатной квоты.
После включения ведения счета для приложения можно установить
дневной бюджет и распределить квоты с помощью консоли администратора.
Фиксированные квоты – это максимальное ограничение на объем
ресурсов, установленное App Engine, чтобы обеспечить целостность
системы. Эти ресурсы описывают границы архитектуры, при этом все
приложения должны работать с соблюдением одних и тех же ограничений. Таким образом, другое приложение, потребляющее слишком
много ресурсов, не влияет на производительность запущенного приложения.
С. В. Талов
125
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
56B
Веб-сервис для просмотра сериалов
Разработанное приложение представляет собой веб-сервис, который
позволяет получить ссылки на видео. Прикладным применением данного сервиса стал просмотр сериалов. Обращение к веб-сервису происходит по протоколу HTTP, обмен происходит с помощью JSON.
В соответствии с RESTful архитектурой каждый предусмотренный
URL веб-сервиса представляет собой ресурс. Приложение написано на
языке Java и размещается в облаке Google App Engine. Одной из важнейших задач в процессе разработки приложения стала оптимизация
скорости его работы. Специфика облака заключается в том, что оплата
происходит только за фактически потребленные ресурсы и, соответственно, чтобы сэкономить финансовые затраты, а также не быть заблокированным, нужно эффективно использовать предоставленные средства.
Оптимизация задач по расписанию
57B
Одной из функций веб-сервиса является автоматический поиск новых серий путем чтения информационных потоков, таких как Twitter и
RSS, запуск задач на поиск происходит по расписанию. Задача поиска
на внешнем ресурсе не является трудоемкой, но занимает продолжительное время.
Квоты Google App Engine не позволяют одному запросу выполняться более 30 секунд, и, если таких запросов будет много, приложение
будет заблокировано как неэффективное. Чтобы обойти ограничения,
задачи по расписанию были разбиты на группы и в рамках одной группы обновляются только сериалы, принадлежащие к этой группе.
Это позволило сократить время выполнения одного запроса, а также, благодаря тому, что задачи можно разнести во времени, позволило
значительно повысить эффективность приложения.
Кеширование
58B
Одним из наиболее эффективных способов экономии ресурсов является кеширование.
Кэш или кеш (англ. cache, от фр. cacher – «прятать»; произносится –
«кэш») – промежуточный буфер с быстрым доступом, содержащий информацию, которая может быть запрошена с наибольшей вероятностью.
Доступ к данным в кэше идёт быстрее, чем выборка исходных данных
из базы, и быстрее внешней (жёсткий диск или твердотельный накопитель) памяти, за счёт чего уменьшается среднее время доступа и увеличивается общая производительность компьютерной системы.
126
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
В разработанном приложении кеширование работает по технологии
Memcache от Googgle App Engine. Данные в кеше организованы как
хранилище «ключ-значение». Поскольку в соответствии с RESTful архитектурой каждый URI сервиса представляет собой ресурс, а кешировать нужно только GET запросы, ключом для хранения данных в кеше
был выбран URI. Использование кеша позволило значительно сэкономить ресурсы. Для того чтобы показать это графически, были разработаны специальные тесты.
Для тестов было заведено отдельное приложение, умеющее забивать базу различными случайными данными и считывать их различными способами. Запросы воспроизводились примерно в одно время с интервалом в несколько секунд, результаты записывались с помощью
AppStats. После этого из статистики выбирались средние результаты
Прямой доступ к хранилищу
Первый тест на выборку одной записи из базы данных без использования кеширования:
Время доступа к базе данных: 8 мс.
Процессорное время: 13 мс.
Реальное время выполнения: 10 мс.
Второй тест на выборку 1000 записей из базы данных без использования кеширования:
Время доступа к базе данных: 9179 мс.
Процессорное время: 856 мс.
Реальное время выполнения: 440 мс.
Использование memcache
Третий тест на выборку одной записи из базы данных с использованием memcache:
С. В. Талов
127
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Время доступа к базе данных: 0 мс.
Процессорное время: 10 мс.
Реальное время выполнения: 6 мс.
Получение записи происходит почти в 2 раза быстрее и требует в 2
раза меньше времени процессора.
Четвертый тест на выборку 1000 записей из базы данных с использованием memcache:
Время доступа к базе данных: 0 мс.
Процессорное время: 658 мс.
Реальное время выполнения: 293 мс.
Происходит получение записей в 1,5 раза быстрее и огромная экономия на доступе к базе данных.
Также существует способ хранения данных в локальной памяти инстанса, что позволяет выполнять запросы с еще более значительным
преимуществом, но данный способ обладает рядом недостатков:
 Памяти в интансе всего около 50 Мб, после исчерпания лимита
инстанс автоматически уничтожается
 У каждого интстанса своя память и кеш, соотвтественно, тоже
Таким образом, потребуются дополнительные ресурсы для синхронизации кешей между инстансами, а также для контроля над потребляемой памятью.
Заключение
59B
В ходе работы были сделаны выводы о том, что в облаке можно
размещать высокопроизводительные приложения, способные обрабаты128
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
вать огромное количество запросов. Для размещения приложения в облаке практически необходимо проводить работу по его оптимизации.
Необходимо учитывать специфику конкретного облака, для того чтобы
наиболее полно использовать его возможности. Работа по оптимизации
занимает гораздо меньше времени, чем содержание собственного кластера, а также требует гораздо меньших денежных затрат.
 Литература
14B
1. URL: http://ru.wikipedia.org/wiki/Веб-служба
2. URL: http://ru.wikipedia.org/wiki/REST.
3. Клементьев И. П., Устинов В. А. Введение в Облачные вычисления +
исходники.Екатеринбург: УГУ, 2007. 233 с.
4. URL:
http://code.google.com/intl/ru/appengine/docs/whatisgoogleappengine.
html
Оптимальная интерполяция
элементов цветового пространства
Л. Г. Тюрина
Введение
60B
Компьютерные технологии играют всё более важную роль во многих областях человеческой жизни. Обработка изображений – интенсивно развивающаяся научная область, которая находит все более широкое
применение в различных информационных технических системах – связи, телевидения и т. п. Благодаря новым технологиям, появилась возможность улучшить выразительность экранного пространства и сам
подход к его художественному решению. И здесь особая роль принадлежит цветовому решению.
Одной из задач, связанной с обработкой цветных изображений, является построение последовательности переходных цветов между двумя
заданными. Будем рассматривать цветовые пространства, которые сейчас широко применяются в компьютерном видео.
Пусть даны два цвета: начальный C 0 и конечный C1 . Существует
бесконечное количество наборов переходных цветов между начальным
C 0 и конечным C1 (рис. 1).
Математически это можно описать как построение семейства ( Ct ),
0  t  1.
Л. Г. Тюрина
129
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
С0
С1/2
С1
Рис. 1. Интерполяция цветов
Задача: Требуется найти алгоритм, подбирающий удачный набор
цветов, в котором первый совпадает с начальным цветом, а последний –
с конечным.
Интерполяция объектов в линейном пространстве
61B
При работе с последовательностью взаимосвязанных объектов важной задачей являются построения переходных объектов такого вида между двумя заданными. С точки зрения математики речь идёт об интерполяции.
Рассмотрим простейшую ситуацию. Построим переходные векторы
( OMt ) между двумя заданными на плоскости ( OM0 ,OM1 ), как показано на
рис.. 2.
Рис. 2. Интерполяция векторов
Опишем векторы OMt ,
0  t  1.


OMt  OM1  M o M  OM0  t  M 0 M1  OM0  t  OM1  OM0  1  t   OM0  tOM1
(если t  0 , то OM  OM0 ; если t  1 , то OM  OM 1 )
Аналогично можно поступать, например, с функциями или с матрицами. Набор переходных функций между двумя заданными можно
описать в виде :
f t  x   1  t   f 0 x   t  f1  x  , где 0  t  1 .
Такая схема может быть применена в любом линейном пространстве, т. е. на любом множестве объектов, для которых определены операции сложения и умножения на число.
при
130
0  t  1;
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
62B
Оптимальность интерполяции
Метод Gt  1  t   G0  t  G1 , где 0  t  1 , не всегда является оптимальным, например, с точки зрения наглядности. Очевидно, при таком
алгоритме переходный вектор может получиться меньшего размера, чем
начальный и конечный одновременно (рис. 3).
Рис. 3.
Если на пространстве объектов определена метрика, то можно сказать, что этот метод интерполяции отражает кратчайший путь из начального заданного элемента данного пространства в конечный:
 G0 ; Gt    Gt ; G1    G0 ; G1  .
Ситуацию можно заметно улучшить, если использовать формулу:
Gt   t   Go   t   G1 ,
 0   1,
 0   0
где  t ,  t  – непрерывные на [0,1] функции и 
.
 1  0,  1  1
При такой формуле может быть решена задача «оптимальности величины» интерполяционного объекта:
d Gt   1  t   d Go   t  d (G1 ) ,
где d G – протяженность (диаметр) элемента G.
Рассмотрим случай с векторами. Пусть  
OM 1
OM 0
,
0  t 1, 
– угол
между OM0 и OM1 , будем строить переходные векторы по формуле
OMt   t * OM0   t * OM1 так, чтобы выполнялось условие «оптимальности величины». Тогда
Л. Г. Тюрина
131
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
sin  1  t 

 t    * t  1  t * sin 


  t    * t  1  t  * sin t


sin 
.
Докажем, что α и β определяются именно так.
Известны координаты векторов OM 1  x1 ; y1  ,
OM0  x0 ; y0  .
С помощью аффинных преобразований из вектора OM 0 можно получить вектор OM1 , т. е. повернуть вектора на угол φ и изменить размер на
коэффициент k.Тогда справедливо равенство
 x    cos   sin    x0    cos x0
     
OM1   1   
 y1    sin   cos   y0    sin  x0

OM 1
OM 0

2
2
2
2
x1  y1
x0  y 0
  sin   y0 

 cos  y0  ,
При линейно интерполяции: OMt  1  t * OM0  t * OM1
(1)
2
2
Длины векторов равны: OM 0  x0 2  y0 2 , OM1  x1  y1 ,
(2)
 x0 
 x    t x0
x 
OM t   t    t       t    1   
 yt 
 y1   t  y 0
 y0 
 t x1 

 t  y1 
Длина вектора OM1 равна: OM t   t x0   t x1 2   t  y0   t  y1 2 .
2
Так как x1  k x0 cos  y0 sin  , y1  k x0 sin   y0 cos  , тогда


OM t   t   k t cos   2   2 t   sin 2   x0  y0
2
2
2
2
.
(3)
Сопоставляя (1), (2), (3), получим
 2 t   2   t    t   cos   2  2 t   1  t   12 .
Рассмотрим случай:
 0
и   0.
Координаты вектора OMt  xt ; yt  можно описать преобразованием
 xt 
 cos t  sin t   x0 
   
OM t     ht ,    
 sin t cos t   y0  ,
 yt 
где ht ,    1    1  t длина вектора OMt
132
Заметки по информатике и математике. Вып. 3
(4)
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
С другой стороны, используя формулы α и β, а также параметры,
связывающие OM 0 и OM1 , φ и α, имеем
 xt 
 x0 
 x      cos x0
OM t      t       t  1   
 y1    sin x0
 yt 
 y0 
  sin y0


   cos  y0  .
(5)
Приравняем (4) и (5), где ht ,    1    1  t :
   cos   x0   sin   y0  ht ,    cos t  x0  ht ,  sin t  y0

 sin   x0     cos   y0  ht ,    sin t  x0  ht ,  cos t  y0 .
Получаем
sin  1  t 

 t    * t  1  t  * sin 


  t    * t  1  t  * sin t

sin 

,
что и требовалось доказать.
В итоге можем получить движение по окружности или более сложной траектории (рис. 4).
Рис. 4. Оптимальная интерполяция векторов
Исследование интерполяционных цветов
63B
В векторной модели RGB каждому цвету соответствует строго определенный вектор (r,g,b). Пусть начальному цвету соответствует вектор
OM0  r0 , g0 , b0  , а конечному OM 1  r1 , g1 , b1  (рис. 5). В данном случае величина вектора соответствует яркости цвета. С помощью оптимальной относительно величины векторов интерполяции найдем координаты OMt .
Л. Г. Тюрина
133
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Рис. 5. Векторная модель цветов
Пусть заданные векторы OM 0 и OM1 неколлинеарны, тогда через
них можно провести единственную плоскость и задачу интерполяции
решать в этой плоскости, т. е. можно перейти от трехмерного представления к двумерному. Более того, формула построения интерполяционных векторов OMt   t * OM0   t * OM1 подразумевает, что действия
происходят в плоскости, определяемой векторами OM 0 и OM1 (рис. 6).
Рис. 6. Векторный подход
В таком случае координаты векторов OMt можно найти с помощью
указанной формулы и найденных выше функций
sin  1  t 

 t    * t  1  t  * sin 


  t    * t  1  t  * sin t


sin 
.
134
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Заключение
64B
В работе изучается вопрос о построении последовательности переходных цветов по двум заданным при помощи разных видов интерполяции. Рассмотрены два алгоритма, отвечающие нашей задаче: линейная
интерполяция и интерполяция «оптимальная относительно величины».
Программные исследования показали, что во многих случаях оптимальная интерполяция дает неплохие результаты с точки зрения восприятия
(плавности перехода цвета), но в некоторых экспериментах при линейной интерполяции последовательность переходных цветов получается
лучше, чем при оптимальной.
Это связанно с выбранной векторной системой RGB для реализации
алгоритмов, в которой базисные цвета равноправны, в то время как в реальной жизни их значение существенно различается. Улучшить результаты можно при использовании другой цветовой модели.
В заключение выражаю благодарность своему научному руководителю доценту кафедры дискретного анализа А. Н. Морозову за помощь
в подготовке статьи.
 Список использованной литературы
15B
1. Цифровая обработка телевизионных и компьютерных изображений / под
ред. Ю. Б. Зубарева, В. П. Дворковича. M., 1997. 216 с.
2. Джадд Д., Выпецки Г. Цвет в науке и технике: пер. на рус. яз. М.: Мир,
1978. 296 с.
О формальной верификации моделей
систем, написанных на языке SystemC
А. А. Шипин
Ключевые слова: SystemC, формальная верификация, LLVM, PinaVM, Promela,
Spin, темпоральная логика.
Введение
65B
Иногда для решения определенных задач для системы бывает удобно создать и исследовать ее математическую модель. Одним из таких
исследований может быть формальная верификация модели, то есть
проверка ее на выполнимость заданных свойств.
Метод верификации модели применяется к системам с конечным
числом состояний и может быть автоматизирован. Обычно процедура
А. А. Шипин
135
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
верификации заключается в исчерпывающем обходе пространства состояний системы, для того чтобы выяснить, выполняется ли набор требований корректности системы. Перед проведением верификации формулируются свойства, которыми должна обладать проектируемая система.
Обычно для аппаратуры и программного обеспечения спецификация задается на языке темпоральной логики.
Для описания модели существуют различные языки, которые, как
правило, ориентированы на какой-либо вид систем. Рассматриваемый в
этой работе язык – SystemC – ориентирован на системы на кристалле, но
в нем можно описывать и другие системы. SystemC – это библиотека
C++, позволяющая создавать модели и производить имитационное моделирование.
Основной задачей работы является исследование возможности формальной верификации моделей систем, написанных на языке SystemC
(SystemC-моделей); в частности интересует верификация однокомпонентных моделей – моделей, состоящих из одного модуля.
Основная часть
6B
Модель на языке SystemC – это набор компонентов (модулей) и соединений между ними. Модуль в SystemC – это объект с набором функциональных возможностей, определенным поведением и структурой,
позволяющей иерархически соединить этот модуль с другими модулями. С помощью таких независимых компонентов можно построить иерархическую структуру модели. Поведение компонентов определено запрограммированными процессами.
К основным расширениям SystemC, отсутствующим в C++, относятся: понятие модельного времени; возможности описания параллельно выполняющихся вычислений; дополнительные типы данных, отражающие специфику проектирования аппаратуры.
В библиотеку включено ядро моделирования событий, что, в свою
очередь, позволяет получить исполняемую модель устройства. Событие – это нечто, происходящее в определенное время. У события нет никакого значения и продолжительности, оно либо произошло, либо еще
нет. Процессы могут реагировать на события, но для этого в списке чувствительности процесса должно быть явно указано событие, к которому
он будет чувствителен.
Процесс в SystemC – это некоторая функция (или метод) модуля,
запускаемая в ядре симуляции SystemC по расписанию. С помощью
процессов достигается описание параллельного поведения элементов
модели. Для связи между модулями используются каналы. Каналы соединяются с модулями через порты. Методы, с помощью которых про136
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
исходит связь между модулями, описаны в классе, называемом интерфейс. Эти три понятия лежат в основе связи.
Язык применяется для построения транзакционных и поведенческих моделей.
Симулятор SystemC имеет 3 главные фазы работы: разработку, выполнение и постобработку. Фаза разработки – это выполнение всех операторов до метода sc_start(). На этом этапе происходит инициализация
структур данных и настройка различных параметров имитационного
моделирования. Далее с помощью функции sc_start() вызывается основная фаза – фаза выполнения. Она передает управление ядру симуляции
(имитационного моделирования) SystemC, которое управляет работой
всех процессов и создает иллюзию параллельности их выполнения. Постобработка связана с удалением всех созданных структур данных, освобождением памяти и завершением этапа моделирования.
SystemC-модели могут верифицироваться разными способами. Существуют как инструменты, предусмотренные библиотекой, так и сторонние способы. Обычно SystemC-модели верифицируются с помощью
тестирования. Проверяемая модель выполняется в рамках заранее подготовленных сценариев. Тестирование сопровождается созданием контролируемой среды модели, обеспечивающей получение результатов ее
работы и измерение различных характеристик, а также оценкой этих результатов и характеристик. Для верификации SystemC-моделей предусмотрена специальная библиотека SCV. С помощью SCV случайным
образом генерируются тесты, которые используются средой в качестве
входных данных.
Лучшие формальные верификаторы SystemC на данный момент переводят код на SystemC с помощью предварительных обработчиков.
Они формализуют семантику языка так, чтобы можно было использовать полученный код как входную информацию для формальных верификаторов. Для рассмотрения был выбран наиболее развитой предварительный обработчик – PinaVM. PinaVM лучше всех показал себя при
прохождении тестовых заданий. PinaVM, тем не менее, не обладает
полным охватом языка. Он не поддерживает модели, построенные на
уровне транзакций. Разработчики предлагают в проекте различные постобработчики для обработки результатов, в частности постобработчик
для перевода кода на язык Promela. Были исследованы и проверены на
примерах его возможности.
Подмножеством языка, которое мы выделили, является однокомпонентная модель, в которой отсутствуют такие особенности языка
SystemC, как порты, каналы, прием пакетов. В подмножество языка
А. А. Шипин
137
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
включены специфичные типы данных, события, некоторые виды портов,
процессы.
Рис. 1. Последовательность действий
Исходными данными в этой последовательности выступает проект
модели системы, написанный на языке SystemC. С помощью LLVM по
исходным данным строится единый файл, который переводится в байткод LLVM с помощью предварительного обработчика llvm-g++ и компоновщика llvm-link. LLVM – это универсальная система анализа, трансформации и оптимизации программ. В основе LLVM лежит промежуточное представление кода, над которым можно производить различные
операции. Из этого представления генерируется оптимизированный машинный код для целого ряда платформ как статически, так и динамически (JIT-компиляция). Затем этот байткод принимается инструментом
PinaVM, который строит новое промежуточное представление, основанное на промежуточном представлении LLVM.
138
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Это новое представление с помощью представленных в проекте постобработчиков PinaVM переводит в формальный язык Promela. Язык
Promela – Си-подобный абстрактный язык спецификации алгоритмов. Абстрагирование направлено на то, чтобы с помощью минимальных выразительных средств (параллельные процессы и коммуникация с помощью каналов, простейшие типы данных с конечным числом возможных значений
и простые управляющие структуры) строить такие абстрактные модели
реальных параллельных и распределенных систем, которые легко представляются формальной моделью с конечным числом состояний. Таким
образом, Promela является не языком реализации систем (языком программирования), но языком описания моделей распределенных систем.
Полученная модель на языке Promela принимается верификатором
Spin. Также в Spin задается проверяемое свойство LTL. LTL (логика линейного времени) – одна из наиболее популярных темпоральных логик
для спецификации и верификации свойств программных и аппаратных
систем. Свойство LTL выполняется, если все пути исполнения модели
исследуемой системы из начального состояния удовлетворяют этому
свойству. Далее, результат выполнения верификатором формальной верификации и имитационного моделирования может быть проанализирован.
Вовсе не обязательно использовать предварительный обработчик,
чтобы производить формальную верификацию SystemC-моделей. Существуют проекты, которые позволяют производить его непосредственно
на коде модели с некоторыми ручными модификациями и с помощью
обычного компилятора C++.
Так как SystemC – это библиотека для языка C++, то можно использовать средства, разработанные для анализа кода на C++. Одним из таких средств является метод CMC – это метод верификации модели, который создает пространство состояний данной системы посредством
прямого исполнения реализации системы (на языке С/С++). СМС генерирует достижимый граф состояний системы путем запуска различных
переходов в системе. Для того чтобы производить обход графа состояний, необходимо уметь сохранять состояния модели и возвращаться к
ним. Чтобы выполнять эти действия, необходимо уметь их выполнять со
всеми составными частями состояния модели. Для того чтобы отлавливать общие для всех программ ошибки (такие как утечка памяти, обращение к указателю на уже освобожденную память и так далее) CMC
рассматривает различные поведения системы, включающие, в том числе, эти самые ошибки. Обнаружение ошибок осуществляется специальными алгоритмами проверки компонентов состояния системы. В работе
А. А. Шипин
139
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
представлено концептуальное описание применения метода CMC для
формальной верификации систем, написанных на языке SystemC.
Заключение
67B
Не существует инструментов, которые могли бы верифицировать
любую SystemC-модель. В зависимости от применяемого метода на инструмент накладываются те или иные ограничения. Со временем задача
формальной верификации SystemC-моделей будет решена, что позволит
усовершенствовать создание безошибочно выполняемых систем. Не
стоит также забывать, что применение формальной верификации распространяется на более широкий класс задач, чем только поиск ошибок.
В процессе работы была проведена проверка работоспособности
выбранного подхода тестовыми примерами. В результате работы был
найден подход, успешно справляющийся с верификацией однокомпонентных систем, а также рассмотрен ряд альтернативных вариантов верификации. Был предложен новый подход верификации на основе метода CMC.
 Литература
16B
1. Black D. C., Donovan J. SystemC: from the ground up. Kluwer Academic
Publishers, 2004. 263 c.
2. Кларк Э. М., Грамберг О., Пелед Д. Верификация моделей программ. М.:
МЦНМО, 2002. 416 с.
3. Marquet K., Moy M. PinaVM: a SystemC Front-End Based on an Executable
Intermediate Representation. International Conference on Embedded Software International Conference on Embedded Software, 2010. 10 с.
4. Marquet K., Moy M., Karkare B. A theoretical and Experimental Review of
SystemC Front-ends. Verimag Research Report, 2010. 14 с.
5. Шошмина И. С. Введение в язык Promela и систему комплексной верификации Spin. СПб., 2009. 66 с.
6. Musuvathi M. et al. CMC: A Pragmatic Approach to Model Checking Real
Code. Stanford University, 2002. 14 с.
7. Обзор LLVM. URL: http://habrahabr.ru/blogs/programming/47878/
140
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
0B
Содержание
Метод проверки на модели (model-checking) для определения
корректности сложных систем U
U
М. М. Алексеева, Е. А. Дашкова ........................................................ 3 U
U
Рынок кредитования малого и среднего бизнеса
в Ярославской области U
U
О. А. Алексеева ................................................................................... 9 U
U
Моделирование процесса распараллеливания
при помощи асинхронных клеточных автоматов U
U
Д. В. Барабанова .............................................................................. 12 U
U
Планирование пути робота в среде с динамическими
и стационарными препятствиями с помощью
нейронной сети волнового распространения U
U
О. В. Белякова ................................................................................... 18 U
U
Нейронные сети с вероятностной функцией активации
в задачах распознавания изображений U
U
И. А. Суслова, Ю. В. Богомолов ...................................................... 23 U
U
Решение задачи о клике на языке rpC
с помощью библиотеки RPM U
U
Е. А. Бойцов, В. В. Васильчиков....................................................... 28 U
U
Программные средства для построения
и визуализации графа трассы для RPC-программ U
U
В. В. Васильчиков, А. Г. Седов......................................................... 37 U
U
Композиционные сети активных ресурсов U
U
Е. С. Дайнеко .................................................................................... 47 U
U
Разработка мультиагентного алгоритма перемещения
по плоскости без столкновений U
U
Е. В. Демкин ...................................................................................... 53 U
U
141
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
О повороте черно-белых изображений, построенных
на основе прямоугольной решетки U
U
М. Л. Елизарова, П. Г. Парфенов .................................................... 60 U
U
Изучение температурных процессов при помощи
расширенной тригонометрической системы U
U
З. В. Журавлев................................................................................... 62 U
U
Разработка сетевой архитектуры для редактора
диаграмм связей HiveMind U
U
О. В. Кандауров ................................................................................ 66 U
U
Исследование скользящих средних U
U
К. В. Кислова, А. Н. Морозов ........................................................... 73 U
U
Программа-конструктор для численных исследований сетей
из обобщенных нейронных элементов U
U
Е. В. Коновалов, Н. С. Борисова, С. В. Диева................................. 79 U
U
Итерационный алгоритм реконструкции изображения
в электроимпедансной томографии U
U
В. Д. Копылов.................................................................................... 84 U
U
Система обучения программированию на языке REFAL U
U
C. В. Котельников ............................................................................ 90 U
U
Разработка архитектуры UI в кроссплатформенном
приложении HiveMind U
U
А. В. Куликов ..................................................................................... 93 U
U
Исследование режимов функционирования сети диффузионно
связанных нейронных клеточных автоматов U
U
С. Ю. Нестеренко .......................................................................... 100 U
U
Некоторые методы нахождения самодополнительных графов U
U
М. Л. Никитин ................................................................................ 104 U
142
U
Заметки по информатике и математике. Вып. 3
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
О повороте черно-белого изображения, построенного
на основе гексагональной решетки U
U
П.Г. Парфенов, Д. С. Харламова................................................... 108 U
U
Реализация метауровня схемы классов Динамической
информационной модели (DIM) U
U
Е. А. Смирнова................................................................................ 113 U
U
Этапы венчурного финансирования U
U
О. Ю. Сухопаров............................................................................. 119 U
U
Специфика разработки веб-сервисов в облаке на примере
Google App Engine U
U
С. В. Талов....................................................................................... 123 U
U
Оптимальная интерполяция элементов цветового
пространства U
U
Л. Г. Тюрина ................................................................................... 129 U
U
О формальной верификации моделей систем,
написанных на языке SystemC U
U
А. А. Шипин .................................................................................... 135 U
U
143
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Научное издание
Заметки
по информатике и математике
Выпуск 3
Сборник научных статей
Редактор, корректор Л. Н. Селиванова
Верстка И. Н. Иванова
Подписано в печать 29.11.2011. Формат 60х84/16.
Бум. офсетная. Гарнитура "Times New Roman".
Усл. печ. л. 8,37. Уч.-изд. л. 7,92.
Тираж 50 экз. Заказ
Оригинал-макет подготовлен
в редакционно-издательском отделе
Ярославского государственного университета им. П. Г. Демидова.
Отпечатано на ризографе.
Ярославский государственный университет.
150000 Ярославль, ул. Советская, 14.
144
Заметки по информатике и математике. Вып. 3
Документ
Категория
Без категории
Просмотров
61
Размер файла
3 944 Кб
Теги
информатика, 1559, вып, математика, заметка
1/--страниц
Пожаловаться на содержимое документа