Научная статья на тему 'Инструментальная среда параллельного решения систем булевых уравнений'

Инструментальная среда параллельного решения систем булевых уравнений Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
101
23
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
БУЛЕВО МОДЕЛИРОВАНИЕ / ПАРАЛЛЕЛЬНОЕ РЕШЕНИЕ / АВТОМАТИЗАЦИЯ ПРОГРАММИРОВАНИЯ.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Опарин Геннадий Анатольевич, Богданова Вера Геннадьевна, Макеева Надежда Геннадьевна

Рассматривается технология булева моделирования, принципы организации и архитектура интеллектуального солвера РЕБУС, предназначенного для параллельного решения систем булевых уравнений.

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Опарин Геннадий Анатольевич, Богданова Вера Геннадьевна, Макеева Надежда Геннадьевна

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

Текст научной работы на тему «Инструментальная среда параллельного решения систем булевых уравнений»

управления и информатики. - 2006. - № 1-2. -С. 28-38.

4. Малтугуева, Г.С. Алгоритм группового выбора при описании индивидуальных предпочтений в виде ранжировок / Г.С. Малтугуева, Ю.В. Котлов // Вестник Томского гос. ун-та. -2004. - № 9 (II). - С. 44-48.

5. Берман, А.Ф. Деградация механических систем / А.Ф. Берман. - Новосибирск: Наука, 1998.

6. Берман, А.Ф. Интеллектуальная система поддержки принятия решений при определении причин отказов и аварий в нефтехимической промышленности / А.Ф. Берман,

О.А. Николайчук, А.И. Павлов, А.Ю. Юрин // Автоматизация в промышленности. - 2006. -№ 6. - С. 15-17.

Опарин Г.А., Богданова В.Г., Макеева Н.Г.

УДК 519.685

ИНСТРУМЕНТАЛЬНАЯ СРЕДА ПАРАЛЛЕЛЬНОГО РЕШЕНИЯ СИСТЕМ

_______«-» л

БУЛЕВЫХ УРАВНЕНИИ

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

Работа выполнена при поддержке программы №1 фундаментальных исследований президиума РАН на 2009 год.

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

В статье рассматривается базовая технология моделирования [2] и проведения параллельных вычислений, используемая в инструментальном комплексе (ИК) РЕБУС, ориентированном на применении в фундаментальных и прикладных исследованиях при проведении вычислительных экспериментов в разнообразных предметных областях, где естественным образом возникают дискретные модели в виде систем булевых уравнений.

1. Постановка задачи. Формально задача решения булевых уравнений формулируется следующим образом: пусть X = (х1,...хп) -упорядоченное множество булевых переменных (х{ е В2 для всех / = 1, п; В2 ={0,1}). Задано

т булевых соотношений (система уравнений) вида

МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ В ЗАДАЧАХ ДИНАМИКИ И УПРАВЛЕНИЯ

f (^k )) = 0 =

(1)

где fi (i = 1,m) - произвольные булевы функции своих аргументов. Требуется найти одно, несколько или все решения системы (1) или установить ее несовместность.

Следует заметить, что первая NP-полная задача - задача "выполнимости КНФ" (задача булевой выполнимости или SAT задача) есть по существу задача распознавания совместности систем уравнений [3]

x? v... v x*™ = 1 ( i = 1.....m ), (2)

где переменная

x,lp = \ Р Р л Р = 1,k(i).

' [x,p пРи =1

Двойственная к (2) система уравнений вида (1) записывается следующим образом:

x. 1 л... л x

г1 гк (i)

ik (i) _

= 0 (i = 1,...,m ).

(3)

Известно, что любая система вида (1) может быть представлена одним эквивалентным уравне-

нием

f (xn) = U f (v.., x4 )= 0.

= 0. Поэтому

i=1

далее будем рассматривать в основном одно стандартное уравнение

/(^1,-, ) = 0. (4)

В рассматриваемой инструментальной среде алгоритмы решения булева уравнения (4), составляющие ее вычислительное ядро, ориентированы на часто встречающиеся в приложениях так называемые большие разреженные системы булевых уравнений, когда в (1) выполняется условие т >> п >> к(/) (символом " >> " обозначено отношение "много больше"). В частности, для многих практических задач к(/) принимает только два фиксированных значения: к (/) = 2 и к (/) = р (р > 2), причем бинарных ограничений в системе (1) много больше, чем р -арных. Примерами таких систем являются полученные с помощью базовой технологии моделирования ИК РЕБУС булевы модели для решения ряда классических дискретных задач (задача об п -ферзях, раскраска графа, покрытие конечного множества системой его подмножеств, ход шахматного коня, задача о голубях и клетках), а также булевы модели для решения двух практических задач (равномерная загрузка локомотивного депо железной дороги, оперативный план отправления локомотивных

бригад) [2, 4]. Алгоритмы решения систем булевых уравнений ИК РЕБУС разработаны на основе дискретного подхода и относятся к классу полных методов поиска с возвратом. Преимуществом первых двух алгоритмов является то, что они предназначены для решения уравнения (4), левая часть которого /(х1з х2,..., хп) представлена булевой

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

2. Технология автоматизации параллельных вычислений в ИК РЕБУС. Методологической основой автоматизации проведения вычислительных экспериментов в области параллельного решения дискретных задач является использование подхода, базирующегося на знаниях. В связи с этим вопросы представления, накопления, модификации и использования знаний занимают центральное место в технологии, используемой ИК РЕБУС.

Постановка задачи в виде системы ограничений привносит свою специфику в аппарат знаний. Эта специфика определяется следующими свойствами:

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

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

СГ

- разнообразие форм описания булевой модели (формулы алгебры логики, Б1МАС8 формат и др.);

- высокая размерность вектора булевых переменных;

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

Тесно связаны со спецификой предметной области требования к организации проведения вычислительного эксперимента, главными из которых являются:

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

- генерация программы-вычислителя булевой функции;

- наличие механизмов специфицирования составляющих программу-решатель модулей;

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

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

- необходимость проведения быстрых расчетов в диалоговом режиме и ресурсоемких в автономном режиме;

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

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

Технология параллельных вычислений в ИК РЕБУС включает четыре этапа обработки информации: моделирование, декомпозиция булевой модели, проведение параллельных вычислений и обработку результатов. Первый, второй и четвертый этапы выполняются на рабочей станции, на третьем этапе строится план решения задачи, генерируется задание для проведения параллельных вычислений, которое передается в систему управления заданиями (СУПЗ) на кластер. Вычисления проводятся в узлах кластера, после чего результаты передаются на рабочую станцию.

Конечной целью первого этапа является получение булевой модели, которая может быть представлена как в формате Б1МАС8, так и на языке содержательных формулировок (ЯСФОР) [2] или в виде подпрограммы вычисления булевой функции. На этом этапе работы поддерживается принцип ориентации на пользователей различной

квалификации. Учет квалификации пользователя осуществляется путем реализации различных режимов моделирования и разнообразия форматов представления булевой модели. На втором этапе производятся анализ и декомпозиция булевой модели. На третьем этапе проводится вычислительный эксперимент для выбранной модели с помощью подходящего для этой модели решателя согласно постановке задачи, указанной пользователем. Многообразие решателей с различными вычислительными характеристиками предусмотрено для поддержки принципа полноты функционального наполнения. Формат представления булевой модели является одним из условий выбора решателя. В качестве остальных условий могут быть заданы метод, алгоритм и вид постановки задачи. По этим условиям формируется запрос к базе знаний. Результатом запроса является список подходящих решателей, один из которых выбирается для выполнения. Результаты работы решателя подлежат постпроцессорной обработке на четвертом этапе, предусматривающем их анализ, визуализацию и сохранение в базе данных пользователя. Этот этап работы предназначен также для ввода, редактирования и обработки информации из базы знаний ИК РЕБУС. Возможность введения в базу знаний данных о новых содержательных формулировках, видах ограничений, решателях, вычислителях обеспечивает свойство расширяемости программного комплекса.

Технология построения булевых моделей обеспечивает простоту, ясность и выразительность интерфейса с пользователем и позволяет формализовать постановку задачи на содержательном уровне. Простой лаконичный язык ЯСФОР, предназначенный для декларативного описания булевых уравнений, обеспечивает возможность представления булевой модели в компактном виде наряду с эквивалентным представлением в международном формате Б1МАС8, принятым в качестве одного из выходных форматов ИК РЕБУС для совместимости с уже существующими программными средствами решения задач удовлетворения булевых ограничений (8АТ-решателей). Компактная запись булевой модели повышает эффективность ее переноса на вычислительные узлы.

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

МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ В ЗАДАЧАХ ДИНАМИКИ И УПРАВЛЕНИЯ

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

Для проведения вычислений в узлах кластера используются решатели - вычислительные модули ИК РЕБУС. Три метода решения булевых уравнений, лежащие в основе этих модулей, показали сравнительно высокую эффективность на ряде классических и практических дискретных задач. Специфика этих методов заключается в ориентации на решение больших разреженных систем булевых уравнений, а в качестве преимущества первых двух методов следует отметить возможность представления левой части булева уравнения в общем виде в отличие от существующих SAT-решателей задач удовлетворения булевых ограничений, требующих соответствующего представления в конъюнктивной нормальной форме.

Параллельный исполнитель - подсистема вычислительного эксперимента ИК РЕБУС отвечает за проведение вычислений на кластере. ИК РЕБУС допускает две схемы проведения параллельных вычислений:

- генерация параллельной программы, использующей библиотеку MPI с последующим сохранением, компиляцией и выполнением этой программы на кластере;

- интеграция с ИК DISCOMP [5].

Обе схемы требуют средства интерактивного взаимодействия с кластером. В первом случае это взаимодействие обеспечивает ИК РЕБУС, использующий штатные средства системы управления заданиями кластера и утилиты удаленного доступа.

Во втором случае взаимодействие с кластером осуществляется средствами доступа ИК РЕБУС к программному интерфейсу XML-RPC ИК DISCOMP. В этом случае перед проведением вычислительного эксперимента требуется обеспечить формирование в рабочей области пользователя на кластере области расчетных данных, содержащей спецификации объектов проблемной области (ПО) и входные данные. Затем средствами интерфейса XML-RPC производится запуск вычислительного процесса. Мониторинг выполнения этого процесса, выявление его завершения и считывание результатов вычислений из области расчетных данных кластера в ИК РЕБУС также отслеживаются при помощи средств доступа к XML-RPC сервису. В этом случае на верхнем уровне абстракции вычислительная модель [6] ИК РЕБУС может быть представлена в виде двудольного графа (P, O, Щ, где доля P содержит множество

параметров, доля O - множество операций ИК РЕБУС, а множество ребер E содержит направленные связи между параметрами и операциями. Списки параметров, операций и модулей хранятся в базе знаний ИК РЕБУС. В соответствии со спецификой решаемой задачи множество T допустимых типов параметров наряду с традиционными типами языков программирования дополнено специальным типом par - «параллельный список».

Интерпретация операции f : x ^ y , где x, y — параметры типа par , выполняется следующим образом: 1) в базе знаний осуществляется поиск всех вычислительных ресурсов (модуль + узел), реализующих операцию f ; 2) организуется параллельное применение i -го параллельного ресурса к i -му элементу списка x; 3) результат применения присваивается i -му элементу списка y.

Интеграция с ИК DISCOMP требует по сравнению с первым случаем предварительных затрат на описание ПО, но зато имеет ряд преимуществ:

- возможность управления процессом вычислений на уровне паспорта задания;

- наличие протокола, упрощающего обеспечение автоматизации удаленного доступа к СУПЗ кластера из ИК РЕБУС;

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

Архитектура ИК РЕБУС, рассматриваемая ниже, разрабатывалась с учетом обеспечения возможности интегрированной работы с кластером.

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

Архитектура ИК РЕБУС

Рис. 1.

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

Рассмотрим функциональные возможности тех компонентов ИК РЕБУС, которые отвечают за организацию параллельных вычислений: подсистемы расщепления модели, содержащей модули конвертирования, анализа и расщепления, подсистемы параллельного исполнителя, отвечающего за организацию интерактивного взаимодействия с кластером и подсистемы обработки результатов решения, содержащей модули постпроцессора, слияния и визуализации результатов работы.

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

- анализ структуры булевой модели;

- выбор тактики расщепления;

- формирование схемы расщепления;

- генерация паспортов параметров, операций ПО и схем решения задачи ;

- генерация паспорта задания для кластера;

- получение остаточной функции в узле в результате применения схемы расщепления к исходной функции;

- упрощение остаточной функции;

- параллельное решение полученных в результате расщепления подсистем булевых уравнений решателями вычислительного ядра ИК РЕБУС или внешними 8АТ-решателями, установленными в узлах кластера;

- слияние и визуализацию результатов решения;

- интерактивное взаимодействие с кластером.

Интерактивное взаимодействие ИК РЕБУС с кластером (рис. 2) как в случае генерации параллельной программы, так и в случае использования ИК Б^СОМР, требует, во-первых, предварительного сохранения в рабочей области пользователя либо текста параллельной программы, либо спецификаций параметров, операций и схемы реше-

МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ В ЗАДАЧАХ ДИНАМИКИ И УПРАВЛЕНИЯ

ния задачи в области расчетных данных для первого и второго случаев соответственно; во-вторых, формирования паспорта задания, содержащего перечень исполняемых программ, названия файлов с исходными данными и результатами работы, инструкции по выполнению программ, требования к ресурсам. Средства, поддерживающие эти функциональные требования, реализованы в параллельном исполнителе, являющемся компонентом системы проведения вычислительного эксперимента ИК РЕБУС.

Рис. 2. Схема проведения параллельных вычислений в ИК РЕБУС

4. Пример применения технологии булева моделирования ИК РЕБУС для решения конкретной прикладной задачи. Последнее десятилетие ознаменовалось широким внедрением вычислительной техники на железнодорожном транспорте и в локомотивном хозяйстве в частности. Наиболее важным для управления инфраструктурой локомотивного хозяйства является локомотивное депо, главной задачей которого является своевременная выдача локомотивов и локомотивных бригад под поезд [7]. От устойчивой работы локомотивного депо в значительной степени зависит устойчивая работа дороги в целом. Оперативное управление в эксплуатационном процессе локомотивного хозяйства на уровне депо начинается с составления графика оборота. Для этого используется информация о готовности мотор-вагонного подвижного состава, расписания движения поездов и информация об окне в поездном графике.

Рассмотрим следующую производственную (но несколько упрощенную) постановку задачи планирования профилактического ремонта в железнодорожном депо. В состав железнодорожного узла входят т электричек, каждая укомплектована к вагонами. Общее число п вагонов железнодорожного узла равно т х к . Каждый вагон по истечении определенного времени должен пройти профилактический ремонт в депо. Время отправки в ремонт зададим с помощью матрицы А , каждый элемент которой а. принимает значение из множества дискретных моментов времени 1,2,...,п . Это означает, что если . -ый вагон будет включен в состав , -ой электрички и а. = д , то значение д - это время отправки в ремонт . -ого вагона , -ой электрички. Требуется составить план распределения вагонов по электричкам так, чтобы депо было загружено равномерно (т.е. в каждый момент дискретного времени в ремонтное депо поступает ровно один вагон из какой-либо электрички).

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

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

электричкам в виде булевой матрицы X = ||л. || размерности т х п , где л. = 1, если . -ый вагон входит в , -ую электричку, л. = 0 в противном случае.

Тогда соответствующие постановке задачи булевы ограничения на элементы матрицы X имеют следующий вид:

- в каждой электричке должно быть ровно к вагонов, т.е. в строке матрицы X должно быть ровно к единиц:

и л,

Л л Л ... Л л. V

2 к+1

I

V

и л,1

Л л. Л ... Л л. = 0,

г2 Ы-к+1

где условия формирования кортежей индексов I и 11 имеют вид

I = 1 < ц < .2 < ... < 4+1 < п,

II =1 <. <ч <••• <К-к+1 <п;

- каждый вагон должен входить в состав только одной электрички, т.е. в каждом столбце матрицы X должна быть одна и только одна единица:

(п-1 п п

л ,Л л ,,V

П

У 1=1

= 0;

и ии

2=1 V . = ' = .+1

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

т.е. множество

Хр = {ху : ау = р} содержит одну и только одну единицу. Пусть гр - количество элементов в множестве X и пусть У - это упорядоченное каким-либо образом множество X . Тогда соответствующее булево уравнение будет

иметь вид

rp-1

и UU ypjvПy? =0-

p=1 i =1 j =i+1 i=1

Очевидно, что приведенные формулы позволяют получить булеву модель задачи в виде ДНФ или в двойственной ей КНФ, что позволяет применить для решения этой задачи не только решатели РЕБУС, но и любые известные SAT-решатели, ориентированные на формат DIMACS.

Заключение. В целом применение указанных подходов к решению поставленной задачи обеспечивает создание программного комплекса со следующими функциональными возможностями: построение булевой модели (переход от вербального описания задачи к формальному в виде булева уравнения), распараллеливание булевой модели с использованием метода расщепления, обеспечение интерактивного взаимодействия с кластером, параллельное решение полученных в результате расщепления остаточных булевых уравнений, слияние и визуализация результатов решения. Представленная в данной статье инструментальная среда разработана на основе принципов создания многоплатформенных приложений, обеспечивающих переносимость на уровне исходного кода и использование приложений, разработанных для операционных систем Windows, Unix-подобных, MAC OS X, в качестве модулей. Вычислительные эксперименты проводились на "горизонтальном" и "вертикальном" кластерах ИДСТУ СО РАН под управлением соответственно ОС Windows и Linux и показали эффективность рассматриваемого подхода. Дальнейшее направление исследований связано с анализом накопленных статистических данных с целью определения оптимального числа узлов кластера и наиболее

приемлемой тактики расщепления для конкретных практических дискретных задач [8].

БИБЛИОГРАФИЯ

1. http://www.intellektik.informatik.tu-darmstadt.de/SATLIB/benchm.html.

2. Опарин, Г. А. Ребус - интеллектуальный решатель задач в булевых ограничениях / Г.А. Опарин, В.Г. Богданова // Вестник ТГУ. Приложение. - 2006. - №18. - С. 243-247.

3. Горшков, С.П. Применение теории КР-полных задач для оценки сложности решения систем булевых уравнений / С.П. Горшков // Обозрение прикладной и промышленной математики, серия дискретной математики. - 1995. - Т. 2, вып.3. - С. 325-398.

4. Опарин, Г.А. РЕБУС - интеллектуальный решатель комбинаторных задач в булевых ограничениях / Г.А. Опарин, В.Г. Богданова // Вестник НГУ. Серия: Информационные технологии. - 2008. - Т. 6, вып. 1. - С. 60-68.

5. Васильев, С.Н. Интеллектуальные технологии и инструментальные средства создания вычислительной инфраструктуры в сети Интернет / С.Н. Васильев, Г.А. Опарин, А.Г. Феоктистов, И.А. Сидоров // Вычислительные технологии. Специальный выпуск. - 2006. - Т. 11. - С. 3444.

6. Опарин, Г.А. Решение булевых уравнений большой размерности в распределенной вычислительной среде / Г.А. Опарин, А.Г. Феоктистов, В.Г. Богданова, А.П. Новопашин // Распределенные вычисления и Грид-технологии в науке и образовании (Дубна, 29 июня-2 июля 2004 г.). Труды Междунар. конф. - Дубна: ОИЯИ, 2004. - С. 164-169.

7. Автоматизированная система управления локомотивным хозяйством АСУТ / Под ред. д.т.н., профессора И.К. Лакина. - М.: ОЦВ, 2002. - 516 с.

8. Данцин, Е.Я. Алгоритмика задачи выполнимости / Е.Я. Данцин // Вопросы кибернетики. Проблемы сокращения перебора. - М.: АН СССР, 1987. - С. 7-29.

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