Вычислительные технологии
Том 20, № 1, 2015
Метод граничных интервалов для визуализации полиэдральных множеств решений
И. А. ШАРАЯ
Институт вычислительных технологий СО РАН, Новосибирск, Россия e-mail: [email protected]
Предложен метод граничных интервалов для исследования и визуализации множества, которое описано системой линейных неравенств или представлено как объединение множеств решений конечного набора таких систем. Изложены основы метода для систем с двумя и тремя неизвестными.
Ключевые слова: граничный интервал, система линейных неравенств, политоп, многогранник, полиэдр, полиэдральное множество, визуализация.
Введение
Назначение метода. Поводом для создания метода граничных интервалов послужила потребность в визуализации различных множеств решений интервальных линейных систем уравнений. Характерная особенность всякого такого множества решений состоит в том, что в каждом ортанте пространства оно описывается системой линейных неравенств. В начале 2012 г. автору было известно несколько методов и программных продуктов для такой визуализации. Однако все они имели существенные недостатки: плохо обрабатывали или вовсе не обрабатывали тощие (строгое определение этого понятия дано на с. 77) и неограниченные множества решений, работали только с квадратными системами.
Попытки найти доступные и приемлемые программные продукты хотя бы для визуализации множеств решений систем линейных неравенств оказались безуспешными. Хотелось, задав прямоугольную матрицу и правую часть системы и больше ни о чем не беспокоясь, получать картинку множества решений, каким бы оно ни было. Для этих целей и был создан метод граничных интервалов.
Метод граничных интервалов — это метод исследования и визуализации полиэдральных множеств в евклидовых пространствах R2 и R3, основанный на вычислении и использовании специальной матрицы граничных интервалов для системы линейных неравенств.
Первое представление метода состоялось на Международной конференции "Алгебра и линейная оптимизация", посвящённой 100-летию со дня рождения С.Н. Черникова, в Екатеринбурге 14-18 мая 2012 г. Там были изложены идеи метода и продемонстрирована работа пакета lineq для визуализации множеств решений систем линейных неравенств с двумя и тремя неизвестными [1]. Далее, на 15-м Международном симпозиуме GAMM-IMACS по научным вычислениям, компьютерным арифметикам и доказательным численным методам — SCAN'2012, в Новосибирске 23-29 сентября 2012 г.
© ИВТ СО РАН, 2015
(см. http: //conf .nsc. ru/scan2012) были представлены идеи метода и результаты работы пакетов для визуализации так называемых множеств АЕ-решений интервальных систем линейных уравнений [2,3].
Теорию и приложения множеств AE-решений для интервальных систем уравнений читатель может найти в обзорной работе [4]. В контексте настоящей статьи важно, что множества AE-решений для интервальных линейных систем уравнений являются объединениями конечного числа полиэдральных множеств. Поэтому их можно визуа-лизовать с помощью подходов, которые обрабатывают системы линейных неравенств.
Существует немало методов визуализации множеств решений интервальных линейных систем уравнений и программ, реализующих эти методы. В первую очередь следует отметить программу plotlinsol из пакета INTLAB [5] интервального расширения МАТЬАВ'а, которое было создано и поддерживается З. Румпом в Техническом университете Гамбурга. Несколько подходов к визуализации множеств решений интервальных линейных систем уравнений разработаны и реализованы под руководством В. Кремера (Университет Вупперталя, Германия) в сотрудничестве с Е.Д. Поповой (Институт математики и информатики, Болгарская академия наук). Теоретические основы этих подходов изложены в работах [6-9] и реализованы в виде программ на языке Java и на интервальном расширении системы компьютерной математики Maple. На основе этих разработок Е.Д. Поповой в кооперации с компанией Wolfram Research были также реализованы в системе Mathematica отдельные версии программ визуализации множеств решений интервальных линейных систем уравнений, имеющие удобный веб-интерфейс.1
Недостатком всех перечисленных подходов и программ является плохая обработка неограниченных множеств решений, а также невозможность строить множества решений систем, у которых количество уравнений не совпадает с количеством неизвестных (равным двум или трём). Кроме того, за исключением программы plotlinsol из INTLAB^ все остальные плохо отрисовывают тощие множества решений. Наконец, программы З. Румпа и В. Кремера предназначены для визуализации только объединённого множества решений, т. е. лишь одного (хотя и самого популярного) из обширного семейства множеств AE-решений для интервальных линейных систем уравнений.
Несколько особняком среди программ визуализации стоит созданная автором программа AE-solset.ps [10], которая предназначена для отрисовки произвольных множеств AE-решений интервальных линейных 2х2-систем уравнений. Она успешно справляется с неограниченными и тощими множествами и, по-видимому, обладает наиболее универсальной портабельностью, так как реализована на языке векторной графики PostScript. С другой стороны, ограничения на точность представления данных в PostScript^ приводят к ограничениям на входные данные, при которых гарантируется вполне корректная работа этой программы.
Все перечисленные выше методы визуализации основанв1 на нахождении вершин пересечения множества AE-решений с каждым отдельно взятым ортантом пространства. Развиваемый нами метод граничных интервалов опирается на использование так на-звшаемвгх граничнвгх интервалов вместо вершин и свободен от ограничений прежних подходов.
Настоящая работа содержит первое подробное изложение метода граничных интервалов. Необходимые известные сведения о полиэдрах собраны во введении. В разделе 1
хЭти программы успешно работали в 2002-2012 годах на сервере Болгарской академии наук по адресу http://cose.math.bas.bg/webComputing, но в настоящее время не функционируют.
изложена теоретическая основа метода, а базовые приёмы отрисовки в пространствах R2 и R3 описаны соответственно в разделах 2 и 3.
Необходимые сведения о полиэдрах. Поскольку в геометрии, выпуклом анализе, кусочно-линейной топологии и в других разделах математики некоторые нужные нам термины используются в разном толковании, поясним, в каком смысле они употребляются в данной работе. Многие определения, приведённые ниже, совпадают с используемыми в [11]. Некоторые знакомые объекты выступают под новыми названиями. Например, то, что в [11] называется "грань, порождённая опорной гиперплоскостью", в нашей статье названо кратким термином "опора" ("support"). Причина такого переименования состоит в том, что термин "опора" более удобен для описания метода граничных интервалов: он лаконичен, точнее отражает геометрический смысл объекта и не противоречит использованию слова "грань" элементарной геометрией в R3.
Полиэдром в Rn (polys греч. — многий, hedra греч. — основание, грань) будем называть подмножество пространства Rn, которое можно представить как множество решений системы линейных неравенств вида Ax > b относительно неизвестного x, в которой A £ Rmxn, x £ Rn, b £ Rm, m, n E N. Предполагается, что элементы пространств Rm и Rn — это вектор-столбцы. Ограниченный полиэдр будем называть политопом. Заметим, что само пространство Rn — тоже полиэдр (например, как множество решений для неравенства (0 ... 0) x > -1), а пустое множество — политоп (так как пустое множество ограничено по определению и служит множеством решений, например, для системы неравенств (xi > 1)&(-x1 > 1)). Полиэдральным множеством мы будем называть объединение конечного числа полиэдров.
В русском научном языке есть термин "многогранник", означающий то же самое, что и "полиэдр". Мы не используем слово "многогранник" потому, что оно акцентирует внимание на представлении множества через его грани и не имеет двойственного термина, эквивалентного "политопу", который отражал бы "вершинное" представление множества (таким термином мог бы быть, к примеру, "многовершинник").
В пространстве Rn, рассматриваемом как топологическое, в связи с любым множеством П С Rn определяют внутренние и граничные точки (см., к примеру, [12]). Внутренние точки множества П — это те его точки, которые принадлежат П вместе с некоторой своей окрестностью. Граничные точки множества П — это точки, любая окрестность которых содержит как точки из П, так и точки, не принадлежащие П. Все внутренние точки образуют внутренность (внутреннюю область) множества П, а все граничные — его границу. Границу множества П будем обозначать дП. Внутренность и/или граница полиэдра может оказаться пустым множеством. Полиэдры с непустой внутренней областью будем называть телесными, а остальные — тощими. Такая терминология оправдана тем, что телесные полиэдры относятся к телесным множествам ("solid sets" или "bodily sets"), т. е. выпуклым множествам с непустой внутренней областью, а тощие полиэдры — к тощим множествам ("thin sets" или "meager sets"), т.е. множествам первой категории Бэра [12].
Полиэдр — выпуклое множество, т. е. для любых двух своих точек он содержит соединяющий эти точки отрезок прямой. Размерностью непустого полиэдра считается размерность его аффинной оболочки. Размерность пустого множества принимают равной -1. Размерность полиэдра H будем обозначать dim H. Полиэдры в Rn размерности n — телесные, а остальные, т. е. размерности меньше n, — тощие. Полиэдр — замкнутое множество, т. е. содержит все свои граничные точки.
Посредством Ф условимся обозначать полупространство в пространстве Rn, т. е. множество точек, определяемых одним нестрогим линейным неравенством. Полупространство Ф назовём опорным к замкнутому множеству П, если Ф содержит П, а граница полупространства дФ имеет с П хотя бы одну общую точку. При этом границу опорного полупространства будем называть опорной гиперплоскостью, а пересечение опорной гиперплоскости с множеством П — опорой (для множества П, полупространства Ф, гиперплоскости дФ). В приведённом определении допускается, что П целиком лежит в гиперплоскости дФ — в этом случае оба замкнутых полупространства с границей дФ являются опорными для П.
Всякая опора S полиэдра H представляет собой непустой полиэдр. Для тощего полиэдра H имеет место неравенство dim S < dim H, а для телесного — неравенство dim S < dim H — 1. Опоры размерности 0 называются вершинами полиэдра, размерности 1 — его рёбрами. Для полиэдра в пространстве R3 опору размерности 2 будем называть гранью.
Точка полиэдра H служит его вершиной тогда и только тогда, когда в H нельзя найти такого отрезка, для которого она внутренняя. Иными словами, вершины полиэдра — это его крайние точки. Политоп совпадает с выпуклой оболочкой множества своих вершин.
Каждое ребро имеет два конца, конечных или бесконечных. Конец, все координаты которого конечны, служит вершиной полиэдра решений. Про конец, у которого есть хотя бы одна координата или — то, будем говорить, что он "в бесконечности". Конец ребра в бесконечности не может быть вершиной.
Ортантом в Rn будем называть область знакопостоянства координат, взятую со своей границей, т.е. множество вида {x £ Rn | SjXj > 0, i = 1,...,n}, где вектор s состоит из 1 и —1. Ортанты в R2 называют также четвертями, квадрантами или координатными углами, а в R3 — октантами.
1. Основы метода граничных интервалов
1.1. Граничные неравенства и их опоры в Rn
Пусть задана система линейных неравенств
относительно неизвестного х. Обозначим множество её решений через Н, г-ю строку матрицы А через Аг:, а множество решений неравенства Аг:х > Ьг, записанного в г-й строке системы, через Нг.
Множество решений системы (1) получается из пересечения множеств решений отдельных неравенств Аг:х > Ьг, г = 1,..., т. Поэтому к его внутренним точкам относятся те точки Н, которые являются внутренними для множеств решений Нг всех неравенств системы, а к граничным — те точки Н, которые лежат на границе хотя бы одного из Нг. Запишем последнее утверждение формально и преобразуем:
Ax > b, A £ Rmxn, x £ Rn, b £ Rm, m, n £ N,
(1)
Таким образом, граница множества решений системы (1) состоит из вкладов Н П дН, которые вносятся отдельными неравенствами. Рассмотрим подробно, какими могут быть эти вклады.
Если строка состоит только из нулей, то вклад ¿-го неравенства в границу множества решений пуст. Действительно, для Ь > 0 неравенство (0... 0) х > Ь не имеет решений а для Ь < 0 ему удовлетворяют все точки пространства — в обеих ситуациях множество решений неравенства (0 ... 0) х > Ь лишено границы (т. е. дН = 0).
Если в строке А есть ненулевые элементы, то множество решений ¿-го неравенства представляет собой полупространство Н, границей дН которого служит гиперплоскость А:х = 6г. Поэтому вклад ¿-го неравенства в границу множества Н — это пересечение множества решений системы (1) с гиперплоскостью А:х = 6^, формально описываемое как { х | (Ах > 6) & (А:х = 6) }. Непустота пересечения означает при этом, что полупространство Н — опорное к Н.
Получается, что вклад ¿-го неравенства в границу множества решений не пуст тогда и только тогда, когда оно задаёт опорное полупространство к множеству решений. Зафиксируем эту связь в следующих определениях. Для системы (1) неравенство А:х > 6г, записанное в ¿-й строке, назовём граничным, если оно задаёт опорное полупространство к множеству решений Н. Если ¿-е неравенство граничное, то пересечение гиперплоскости х = 6^ с множеством Н будем называть опорой ¿-го неравенства и обозначать Б^. Если неравенство не граничное, то оно не имеет опоры.
Итак, в системе (1) мы выделили все те неравенства, которые вносят непустой вклад в границу множества решений, назвав их граничными, а вклад, вносимый граничным неравенством назвали его опорой. Обозначив множество индексов граничных неравенств как /5, из (2) получаем
дН = и (Н П дН) = и Б,
г€/ь г€/ь
т. е. граница множества решений Н состоит из опор граничных неравенств.
Каждое граничное неравенство задаёт полупространство, опорное к полиэдру решений, но не для всякого полупространства, опорного к полиэдру решений, в системе (1) найдётся граничное неравенство, задающее это полупространство. Например, система
Г х1 > 0,
неравенств < > 0 описывает положительный ортант, тот опирается на полупространство х1 + х2 > 0 началом координат, но в системе нет неравенств, задающих это полупространство. Между тем имеются такие опорные полупространства, которые всегда можно описать граничными неравенствами.
Утверждение 1. Пусть задана совместная система (1). Если для полупространства Ф, опорного к полиэдру её решений, опора Б имеет размерность п — 1, то в системе найдётся граничное неравенство, которое задаёт полупространство Ф. При этом Б будет опорой этого неравенства.
> Предположим, что в системе (1) нет неравенства, которое задаёт полупространство Ф.
Обозначим через х какую-нибудь относительно внутреннюю точку опоры Б, а через р — внешнюю нормаль к Ф (рис. 1, a). Рассмотрим пересечение множества решений Н каждого неравенства системы (1) с прямой х+ р£, где £ Е К. Точка х лежит на опоре Б и, следовательно, в полиэдре решений Н системы (1), а значит и в каждом Н. Поскольку
Рис. 1.
множество Нг решений неравенства Аг:х > Ьг непусто, оно представляет собой либо полупространство, содержащее точку X, либо всё пространство Кга. Значит, пересечение множества Нг с прямой Х+ р — это либо вся прямая, либо её луч, содержащий точку X.
Покажем, что, кроме X, в пересечении множества Нг с прямой X + р; имеется такая точка X + ртг, для которой тг > 0. Отсутствие такой точки означало бы, что Нг пересекает прямую X + по лучу с началом X и направлением, противоположным р. По предположению, Нг не может совпадать с Ф, а по условию утверждения Б имеет размерность п — 1. Следовательно, Б должно было бы содержать точки из дополнения к Нг (рис. 1, б). Но этого не может быть, поскольку Б лежит в полиэдре решений системы, а значит и в множестве решений Нг всякого её неравенства.
Поскольку точки X и X + ртг принадлежат выпуклому множеству Нг, весь отрезок с концами в этих точках лежит в Нг. Обозначим т = штг тг. Точка X + рт (рис. 1, в) принадлежит всем Нг, г = 1,...,т, и, следовательно, служит решением системы (1). С другой стороны, поскольку т > 0, она лежит в дополнении к опорному полупространству Ф и поэтому не может быть решением системы (1). Полученное противоречие доказывает, что предположение, сделанное в начале доказательства, ошибочно.
Как следствие, в системе (1) существует неравенство, которое задаёт опорное полупространство Ф. По определению, оно называется граничным и имеет ту же опору Б, что и полупространство Ф. о
Утверждение 2. Множество вершин полиэдра решений системы (1) равно объединению множеств вершин опор граничных неравенств.
> Сначала покажем, что каждая вершина полиэдра решений Н является вершиной для опоры некоторого граничного неравенства. Так как вершина — граничная точка, а дН = у ге/ь то всякая вершина V полиэдра Н принадлежит опоре какого-нибудь граничного неравенства. Известно, что точка полиэдра служит его вершиной тогда и только тогда, когда в полиэдре нет отрезка, для которого она внутренняя. Поскольку такого отрезка нет в Н, а содержится в Н, то такого отрезка нет и в полиэдре Значит, V — вершина опоры
А теперь покажем обратное, т. е. что вершина опоры граничного неравенства будет вершиной полиэдра решений. Пусть V — вершина опоры граничного неравенства с индексом г. Предположим, что V не является вершиной Н. Тогда в Н найдётся отрезок, внутри которого она лежит. Этот отрезок не может попасть целиком в опорную гиперплоскость А^ = Ьг, ведь тогда он бы принадлежал и V не могла быть вершиной
Но пересекать гиперплоскость А^:х = 6^ в единственной точке V отрезок тоже не может, потому что эта гиперплоскость опорная и весь полиэдр Н лежит по одну сторону от неё. Таким образом, предположение о том, что V не является вершиной Н, ошибочно. о
1.2. Граничный интервал в К2
1.2.1. Введение понятия "граничный интервал"
Понятие "граничного интервала" вводится для системы линейных неравенств вида
относительно двух неизвестных х1 и х2. Оно включает в себя три составляющих: индекс, опора и направление.
Индекс граничного интервала фиксирует связь интервала с неравенством из системы (3). Граничные интервалы определены только для граничных неравенств системы (3). Каждое граничное неравенство системы (3) порождает один граничный интервал. Индекс граничного интервала — это номер строки системы (3), в которой записано граничное неравенство, порождающее данный граничный интервал.
Опора представляет граничный интервал как множество точек плоскости. Опорой граничного интервала с индексом ¿ будем называть опору ¿-го неравенства системы (3), т.е. пересечение прямой А^:х = 6^ с множеством решений Н системы (3). И прямая, и множество Н выпуклы и замкнуты, поэтому опорой может служить только выпуклое и замкнутое подмножество прямой. А поскольку опора не бывает пустым множеством, опоры граничных интервалов делятся на четыре типа: точка, отрезок, луч и прямая.
а
Рис. 2. Типы опор граничного интервала: а — прямая, б — луч, в — отрезок, г — точка
Ах > 6, А Е Ктх2, х Е К2, 6 Е Кт, т Е Н,
(3)
На рис. 2 приведены примеры опор каждого типа для граничного интервала с индексом 1. Множество решений Н выделено штриховкой, а опора 61 показана как утолщённая часть прямой А^ = Ьь
Направление граничного интервала с индексом г задаёт такое движение по прямой = Ьг, при котором полуплоскость > Ьг остаётся справа.2 Множество решений Н системы (3) удовлетворяет неравенству > Ьг и, значит, целиком лежит в полуплоскости, задаваемой этим неравенством. Поэтому можно считать: когда мы движемся по прямой = Ьг в направлении граничного интервала с индексом г, множество решений Н тоже остаётся справа.3
Чтобы получить численное описание направления граничного интервала, обратимся к рис. 3. Для неравенства > Ьг вектор Ат = (Аг1,Аг2)т перпендикулярен прямой = Ьг и направлен внутрь полуплоскости решений неравенства, т. е. служит внутренней нормалью. Поворот этого вектора на 90° по часовой стрелке задаёт одно из двух возможных направлений на прямой Аг:X = Ьг. Другое направление (противоположное первому) получается поворотом внутренней нормали на 90° против часовой стрелки. Нам надо выбрать такое направление движения по прямой Аг: X = Ьг, при котором полуплоскость > Ьг остаётся справа. Оно соответствует повороту вектора Ат против часовой стрелки на 90°, т.е. вектору (—Аг2, Аг1)т.
Когда направление прямой = Ьг фиксировано, для опоры граничного интервала можно естественным образом определить понятия старт и финиш (рис. 4). Старт и финиш граничного интервала будем называть его концевыми точками, или концами.
Отметим, что в названии "граничный интервал" слово "граничный" указывает на связь с границей множества решений и граничными неравенствами системы (3), а термин "интервал" выбран из аналогии с интервалами расширенной числовой оси К = Е и {—сю, +оо}. Эти интервалы имеют вид [с, с] = { х Е Е | с < х < с, с < £ Е},
у них есть аналог старта — левый (или нижний) конец с, и аналог финиша — пра-
2Можно выбрать противоположное направление — важно лишь, чтобы для всех граничных неравенств направления были выбраны единообразно.
3Если множество Н целиком лежит на прямой А¿:х = Ь^, мы полагаем, что при движении по прямой А¿:х = Ь в любом направлении оно остаётся как справа, так и слева.
Направление —у д..х =
Индекс
Финиш
Рис. 4. Наглядное представление граничного интервала
вый (или верхний) конец а геометрическими образами, как у граничнвгх интервалов, являются точка, отрезок, луч или прямая.
1.2.2. Числовое представление граничного интервала
Чтобы использовать граничный интервал в вычислениях, надо все составляющие этого понятия выразить в числах.
Общий вид числового представления граничного интервала. Сначала обсудим, какие именно величины, в каком порядке и как будут описывать граничный интервал.
Договоримся, что в системе координат, ассоциированной с переменными х и х2, абсцисса и ордината могут принимать значения из расширенной числовой оси К. Тогда старт и финиш граничного интервала можно считать точками расширенной числовой плоскости К .
Используя координаты расширенной числовой плоскости, представим граничный интервал как упорядоченную пятерку чисел: два первых числа — абсцисса и ордината старта, затем в том же порядке координаты финиша и, наконец, пятое число — индекс граничного интервала:
( *_ * у *_ * у г ).
—2 —2
старт € К финиш € К индекс € N
Такая запись выражает граничный интервал в числах и удобна для метода граничных интервалов:
1. Индекс входит отдельным числом.
2. Опора описывается координатами пары концевых точек. (Неограниченную опору не всегда можно однозначно восстановить по координатам концевых точек. Но, во-первых, для метода граничных интервалов в таком восстановлении нет необходимости, а, во-вторых, для восстановления достаточно привлечь по индексу порождающее неравенство.)
3. Направление граничного интервала задано разделением концевых точек опоры на старт и финиш. (Если опора — точка, связь с направлением соответствующей прямой теряется, но в методе граничных интервалов направление опоры-точки не существенно.)
Заметим, что вся информация о граничном интервале может быть получена по его индексу и исходным данным (матрице А и вектору Ь) системы (3). Но нам важно было найти такое численное представление граничного интервала, с которым удобно работать в методе граничных интервалов.
Вычисление граничных интервалов. Теперь обсудим, как по матрице А и вектору Ь понять, порождает ли неравенство Аг:X > Ьг граничный интервал системы (3), и если порождает, то как найти координаты старта и финиша для этого интервала.
Мы уже знаем (см. раздел 1.1), что если Аг: = (0 0), то неравенство Аг:X > Ьг не может быть граничным и не порождает граничный интервал. Поэтому дальше сосредоточимся на рассмотрении случая Аг: = (0 0).
Введём на прямой Аг:X = Ьг внутреннюю систему координат, т. е. выберем начало координат, единичный вектор и внутреннюю переменную. Один из удобных вариантов этой конструкции выглядит так (рис. 5):
• В качестве начала О внутренней системы координат возьмём проекцию начала (0,0) внешней системы координат Ox1x2 на прямую = Ьг. В этом случае вектор 0) пропорционален нормали Ат и, следовательно, 0) = Ат£ для некоторого £ Е К. С другой стороны, 0) лежит на прямой = Ьг, поэтому значение £ можно определить из равенства Л:АгТ £ = Ьг.
а/А?! + А12 — 2-норма вектора (евклидова норма). Отсюда О = /ЦА^Щ.
• Направление на прямой Аг:X = Ьг мы договорились выбирать так, чтобы оно совпадало с направлением вектора (—Аг2,Аг1)Т. Поэтому уместно сам этот вектор (—Аг2,Аг1)Т взять в качестве единичного вектора (орта) внутренней системы координат.
• Внутреннюю координату обозначим у.
Зафиксировав таким образом внутреннюю систему координат, мы получили для прямой = Ьг параметрическую запись
Ьг
т^з А1 + (-Аг2,Аг1)ту, у еЖ.
(4)
Рис. 5. Выбор внутренней системы координат на прямой Аг:х = Ьг
Чтобы найти пересечение прямой (4) с множеством решений системы Ах > 6, выполним в этой системе замену
НАг:||2
Получим систему линейных неравенств с одним неизвестным у. Она легко решается. Множество её решений либо пусто, либо представляет собой интервал [у, у] расширенной числовой оси. Если множество решений пусто, то неравенство > 6^ — не граничное и не порождает граничного интервала. Если же множество решений не пусто, неравенство > 6 — граничное, оно порождает граничный интервал с индексом г, для которого у — координата старта, а у — координата финиша в вв1бранной нами внутренней системе координат прямой = 6^.
Остаётся записать старт и финиш граничного интервала в исходной внешней системе координат:
старт = и / 2 Ак + (-Аг2,Ац)у,
ЦЛ:|,2 к 11Л=1
финиш = м Л 1 Ак + (-Аъ2, Ац) у.
1.2.3. Связь рёбер и вершин полиэдра решений с опорами и концевыми точками граничных интервалов
Введённое выше понятие граничного интервала перекликается с некоторыми понятиями, хорошо знакомыми из геометрии, а именно: для системы (3) опоры и концевые точки граничных интервалов тесно связаны с рёбрами и вершинами полиэдра решений. Эту связь описывают утверждения 3-8.
Утверждение 3. Опорой граничного интервала могут быть только вершина или ребро полиэдра решений.
> Доказательство. Опора граничного интервала с индексом г определена как опора граничного неравенства > 6^ системы (3) и потому представляет собой пересечение прямой = 6г, опорной к полиэдру решений Н, с этим полиэдром. Это означает, что опора граничного интервала служит опорой для Н и имеет размерность не выше 1. о
Утверждение 4. Покоординатное совпадение старта и финиша граничного интервала означает, что его опора — вершина, а различие, что опора — ребро полиэдра решений.
> Доказательство. По утверждению 3 опорой граничного интервала может служить вершина или ребро полиэдра решений, третьего не дано. Поэтому достаточно доказать утверждение 4 только в одну сторону: если опора — вершина, то старт и финиш равны покоординатно, а если опора — ребро, то концевые точки граничного интервала различаются хотя бы одной координатой в К .
Пусть опора — это вершина. Значит, геометрический образ опоры — точка из К2. Очевидно, что старт и финиш с ней совпадают, в частности, покоординатно.
Когда опорой выступает ребро, то возможные геометрические образы опоры — отрезок, луч или прямая. Для опоры-отрезка старт и финиш — разные концы отрезка,
и потому различаются координатами. Для опоры-луча одна концевая точка имеет конечные координаты, а в координатах другой встречается +то или —то. Если опора — прямая, параллельная координатной оси, то старт и финиш опоры различаются в координате этой оси знаком при то. Если опора — прямая, не параллельная координатной оси, то старт и финиш опоры различаются по обеим координатам знаком при то. о
Утверждение 5. Пусть Н — полиэдр решений системы (3).
1. Всякое ребро 5 множества Н служит опорой хотя бы для одного граничного интервала.
2. Если Н имеет размерность 1, то его ребро служит опорой по крайней мере для двух граничных интервалов с противоположными направлениями.
> Доказательство.
1. Ребро полиэдра — это, по определению, опора 5 размерности 1 для некоторого опорного к полиэдру полупространства Ф. В системе неравенств (3) число неизвестных п равно 2, поэтому Ф — это полуплоскость, а размерность 5 равна п — 1. По утверждению 1 в системе (3) найдётся граничное неравенство, которое задаёт полуплоскость Ф и опирается на 5. Это неравенство, являясь граничным, порождает граничный интервал с ребром 5 как опорой и направлением, соответствующим такому движению по этому ребру, при котором полуплоскость Ф остаётся справа.
2. В случае, когда размерность полиэдра Н равна 1, он совпадает со своим единственным ребром 5. Это ребро служит опорой двух полуплоскостей Ф1 и Ф2, лежащих по разные стороны от 5. По утверждению 1 для каждой из этих полуплоскостей в системе (3) найдётся описывающее её граничное неравенство. Граничные интервалы, порождённые этими неравенствами, имеют ребро 5 опорой, но различаются направлением. о
В отличие от рёбер, вершины полиэдра решений системы (3) не обязаны быть опорами граничных интервалов. Например, в системе
X! > —1, —X! > —1, X2 > —1, —X2 > — 1
все четыре опоры граничных интервалов — рёбра (стороны квадрата).
Отметим, что всякое ребро, как и всякая вершина, может выступать опорой сразу для нескольких граничных интервалов. Примеры:
1. Единственное ребро в системе
Г Xl + X2 > 0, \ 2X1 + 2X2 > 0
служит опорой граничного интервала для обоих неравенств.
2. Рассмотрим систему
Xl > 0, —Xl > 0,
X2 > 0, — X2 > 0.
Её множество решений совпадает с началом координат, все неравенства в системе граничные, а вершина (0,0) служит опорой граничного интервала для каждого из них.
Подчеркнём, что совпадение опор не означает равенства граничных интервалов, поскольку граничные интервалы всегда различаются индексами, т. е. порядковыми номерами в системе (3) порождающих неравенств.
Очевидно, что граница полиэдра решений системы (3) совпадает с объединением всех его вершин и рёбер. Аналогичное утверждение имеет место для опор граничных интервалов.
Утверждение 6. Граница множества решений системы (3) состоит из опор граничных интервалов.
> Доказательство. В разделе 1.1 было обосновано, что у полиэдра решений системы линейных неравенств граница состоит из опор граничных неравенств, т. е. имеет место тождество
где Ib — все порядковые номера (индексы) граничных неравенств в системе (3), а Si — опора неравенства с индексом i. Учитывая, что индекс и опора граничного неравенства по определению служат индексом и опорой порождённого неравенством граничного интервала, можно считать, что в тождестве (5) /ь — множество индексов граничных интервалов, а Si — опора граничного интервала с индексом i. Следовательно, граница полиэдра H состоит из опор граничных интервалов. о
Мы рассмотрели связь вершин и рёбер с опорами граничных интервалов. Теперь поговорим о том, как вершины соотносятся с концевыми точками граничных интервалов.
Утверждение 7. Концевая точка граничного интервала служит вершиной множества решений системы (3) тогда и только тогда, когда обе её координаты конечны.
> Доказательство. По утверждению 3 опорой граничного интервала служит вершина или ребро полиэдра решений. Если опора граничного интервала — вершина, то обе концевые точки с ней совпадают, а у всякой вершины абсцисса и ордината конечны. Если опора граничного интервала — ребро, то концы граничного интервала — концы ребра. Конец ребра, обе координаты которого конечны, — это вершина полиэдра. Конец ребра, имеющий хотя бы одну бесконечную координату, не является вершиной. о
Утверждение 8. Всякая вершина множества решений системы (3) служит стартом какого-то граничного интервала и финишем какого-то граничного интервала.
> Доказательство. Положение вершины в полиэдре решений H зависит от его размерности (рис. 6), которая может принимать значения 2, 1 или 0.
Если dimH = 2 (рис. 6, а), в вершине сходятся два ребра. По утверждению 5 каждому из них соответствует по крайней мере один граничный интервал. Направление граничного интервала введено так, что при движении от старта к финишу множество H остаётся справа, поэтому для тех граничных интервалов, которые опираются на одно из рёбер, вершина служит финишем, а для тех, что опираются на другое, — стартом.
(5)
ieh
Рис. 6. Положение вершины Т в зависимости от размерности полиэдра Н: а — размерность 2, б — размерность 1, в — размерность 0
Если dimH = 1 (рис. 6, б), полиэдр H совпадает со своим единственным ребром. По утверждению 5 на это ребро опирается как минимум два граничных интервала с противоположным направлением. Для граничных интервалов с одним из направлений вершина служит финишем, а граничных интервалов с противоположным направлением — стартом.
Если dim H = 0 (рис. 6, в), то полиэдр — это точка. Она является и единственной вершиной, и границей полиэдра, и, по утверждению 6 объединением опор всех граничных интервалов. Поэтому для каждого граничного интервала она служит как стартом, так и финишем. <
1.3. Матрица граничных интервалов в М2
Все граничные интервалы системы (3) внесём как строки в матрицу
координаты стартов
координаты финишей
* * *
индексы
и назовём её матрицей граничных интервалов. Матрица граничных интервалов содержит в числовой форме информацию о множестве решений Н. В разделах 1.3.1-1.3.5 мы поясним, какая это информация и как её извлечь из исходных данных.
1.3.1. Как выделить подсистему граничных неравенств?
Между граничными интервалами и граничными неравенствами существует взаимнооднозначное соответствие: каждый граничный интервал порождается одним граничным неравенством и каждое граничное неравенство порождает ровно один граничный интервал. Индекс граничного интервала определяется как порядковый номер в системе (3) для порождающего этот интервал граничного неравенства, так что индексы всех граничных неравенств системы (3) перечислены в последнем пятом столбце матрицы граничных интервалов, и число строк матрицы граничных интервалов — это число граничных неравенств в системе (3).
1.3.2. Имеет ли полиэдр решений границу?
Опора не бывает пустым множеством, поэтому равенство дН = 0 в (5) означает отсутствие элементов в множестве А поскольку Д — это множество всех индексов, записанных в пятом столбце матрицы граничных интервалов, то оно не имеет элементов тогда и только тогда, когда матрица граничных интервалов не имеет строк. Таким образом, отсутствие границы у полиэдра решений Н равносильно отсутствию строк в матрице граничных интервалов.
Граница у полиэдра решений отсутствует только в двух случаях: 1) Н — пустое множество, 2) Н совпадает со всей плоскостью. При этом последний случай равносилен условию
А = 0, 6 < 0. (6)
Поэтому:
• Полиэдр решений пуст тогда и только тогда, когда матрица граничных интервалов пуста и нарушено условие (6). В частности, при А = 0 пустота матрицы граничных интервалов эквивалентна пустоте множества решений Н.
• Полиэдр решений совпадает со всей плоскостью, тогда и только тогда, когда матрица граничных интервалов пуста и выполнено условие (6).
1.3.3. Ограничен ли полиэдр решений?
Сначала рассмотрим ситуацию, когда матрица граничных интервалов пустая, что соответствует отсутствию у множества решений граничных точек. Из результатов предыдущего раздела 1.3.2 следует, что в этом случае ограниченность множества Н проверяется так: полиэдр решений неограничен (совпадает с плоскостью) при выполнении условия (6) и ограничен (совпадает с пустым множеством) при нарушении условия (6).
Теперь рассмотрим ситуацию, когда матрица граничных интервалов не пуста, т. е. множество Н имеет граничные точки. Если полиэдр решений, имеющий граничные точки, неограничен, то у него имеется ребро с концом в бесконечности, и в силу утверждения 7 такому ребру соответствует хотя бы один граничный интервал с концевой точкой +то или —то. Если же полиэдр, имеющий граничные точки, ограничен, то концы всех его граничных интервалов имеют конечные координаты. Поэтому для случая, когда матрица граничных интервалов не пуста, правило распознавания ограниченности множества решений таково: полиэдр решений неограничен, если в первых четырёх столбцах матрицы граничных интервалов есть элемент +то или —то, и ограничен при отсутствии таких элементов.
1.3.4• Как получить матрицу координат вершин?
Матрицу координат вершин полиэдра решений выделим из матрицы граничных интервалов следующим образом:
1. В силу утверждения 8 каждая вершина служит стартом какого-нибудь граничного интервала. Возьмём первые два столбца матрицы граничных интервалов, в которых
4
записаны координаты стартов .
4 Вместо первых двух столбцов можно взять третий и четвёртый, в которых записаны координаты финишей.
2. Удалим строки, содержащие +то или —то, т.е. все те строки, которые по утверждению 7 не соответствуют вершинам.
3. Вершина может служить стартом нескольких граничных интервалов. Чтобы избежать дублирования вершин, удалим из создаваемой матрицы повторы строк.
В результате в построенной матрице записаны все вершины полиэдра решений. Каждая строка представляет отдельную вершину упорядоченной парой её координат по типу (абсцисса, ордината). Число строк полученной матрицы равно числу вершин множества решений.
1.3.5. Как построить обход политопа решений?
Пусть множество решений системы (3) ограниченно и непусто. Тогда по матрице М граничных интервалов можно составить замкнутый обход Р политопа решений как последовательность вершин, двигаясь по которой от одной вершины к другой, мы пройдём по всем рёбрам границы (если таковые есть) и вернёмся в исходную точку.
Геометрия обхода. Для начала разберём геометрию такого обхода для всех размерностей политопа от 2 до 0 (рис. 7) и укажем, какую последовательность вершин мы хотим получить в каждом случае.
а. Граница двумерного политопа (рис. 7, а) представляет собой замкнутую неса-мопересекающуюся ломаную с конечным числом звеньев. Замкнутость означает, что, отправившись из произвольной вершины и двигаясь по звеньям ломаной, мы вернёмся в исходную вершину. Отсутствие самопересечений указывает на то, что при таком движении политоп будет всегда оставаться по одну сторону, выбранную на старте. Зафиксируем направление обхода по часовой стрелке, т. е. такое, при котором политоп остаётся справа. Последовательность вершин, соответствующая обходу, будет иметь вид (71; Т2; Тз;...; 7\}.
б. Одномерный политоп — отрезок (рис. 7, б). Его замкнутым обходом будем считать последовательность вершин вида (Т1; Т2; Т1}, т. е. движение по единственному ребру от произвольной вершины к противоположной и возвращение назад. В этом случае замкнутая ломаная обхода границы составлена последовательно из двух звеньев Т1 Т2 и Т2Т1. При движении по ребру в одном направлении одна из полуплоскостей, опирающихся на ребро, лежит справа, а при движении в противоположном направлении справа остаётся другая опирающаяся на ребро полуплоскость.
в. Нульмерный политоп — точка (рис. 7, в). Замкнутым обходом границы будем считать последовательность (Т1} из одного элемента — единственной вершины этого политопа. Такой обход не имеет звеньев (и ему не соответствует ломаная линия).
а
Т1
Рис. 7. Непустые политопы в М2: а — двумерный (телесный политоп), б — одномерный (отрезок), в — нульмерный (точка)
Возможность представления обхода граничными интервалами. Ясно, что обход, выбранный в каждом описанном выше случае, можно составить из граничных интервалов.
а. Для двумерного политопа звенья ломаной обхода — это рёбра множества решений. Каждое ребро по утверждению 5 служит опорой какого-то граничного интервала. Кроме того, движение по звену совпадает с направлением граничного интервала.
б. Одномерный политоп совпадает со своим единственным ребром. По утверждению 5 оно служит опорой по крайней мере двух граничных интервалов с противоположными направлениями. Один из них даёт движение от 71 к Т2, другой — обратно от 72 к 7\.
в. Граница нуль-мерного политопа — это одна точка. В силу утверждения 6 она совпадает с опорой каждого граничного интервала для системы, описывающей этот политоп.
Псевдокод алгоритма. Наша задача состоит в том, чтобы выделить из матрицы граничных интервалов необходимые для обхода граничные интервалы в нужном порядке и по ним представить обход как последовательность вершин политопа. На рис. 8 приведён псевдокод одного из возможных алгоритмов для решения этой задачи. Поясним псевдокод с привязкой к рис. 7.
На вход алгоритма подается матрица граничных интервалов М = (Мы). Поскольку множество решений Н непусто и ограниченно, матрица М непуста (см. раздел 1.3.2), т. е. имеет хотя бы одну строку. С другой стороны, как показано в разделе 1.3.1, число строк матрицы граничных интервалов равно числу граничных неравенств системы (3) и потому не превышает общего числа т неравенств этой системы. Из ограниченности множества решений также следует (см. раздел 1.3.3), что в М нет элементов +то или — то. Значит, в силу утверждения 7 все концевые точки граничных интервалов служат вершинами.
На выходе алгоритма мы хотим получить матрицу Р, у которой строки представляют последовательные вершины обхода и каждая строка есть пара координат соответствующей вершины.
Вершину 7\, записанную как старт в 1-й строке матрицы граничных интервалов, выберем началом обхода и внесём её координаты (Мц,М12) первой строкой в матрицу Р. Затем назначим Т1 рабочим стартом Тд, т.е. такой точкой, из которой хотим продолжить обход по годному для этого граничному интервалу.
Шаг алгоритма — это попытка найти граничный интервал, старт которого совпадает с рабочим стартом Тд, и определить по опоре этого интервала следующую вершину обхода Тд+1. Шаг алгоритма включает следующие четыре действия:
1. Сначала последовательно пересматриваем строки матрицы М, пока не встретим строку ], для которой старт имеет координаты рабочего старта Тд.
2. Потом обращаем внимание на финиш (Му3, М^) из этой строки, назвав его рабочим финишем.
3. Совпадение рабочего финиша с рабочим стартом означает (по утверждению 4), что опора граничного интервала из ]-й строки матрицы М является вершиной. Такой граничный интервал не даёт движения по границе к новой вершине Тд+1 и в построении обхода не нужен.
Отличие рабочего финиша от рабочего старта означает (по утверждению 4), что опора граничного интервала из ]-й строки матрицы М представляет собой ребро. В этом случае продолжаем обход по выделенному граничному интервалу, внося рабочий фи-
Вход: матрица граничных интервалов M = (Mki).
Выход: матрица P, строки которой — последовательные вершины обхода.
<начало обхода> i— (Mn,Mi2);
P i— <начало обхода>;
<рабочий старт> i— <начало обхода>;
DO WHILE <число строк в M> > 0
% Ищем номер j такой строки матрицы M, для которой % <рабочий старт> совпадает со стартом DO k = 1, <число строк в M>
IF (Mk1,Mk2) = <рабочий старт> j i— k; BREAK
ENDIF
ENDDO
<рабочий финиш> i— (Mj3,Mj4); IF <рабочий финиш> = <рабочий старт>
вносим <рабочий финиш> последней строкой в матрицу P;
IF <рабочий финиш> = <начало обхода> % замкнутый обход P построен; % конец работы RETURN
ELSE
% начинаем новое звено ломаной обхода % из конца предыдущего звена <рабочий старт> i— <рабочий финиш> ENDIF
ENDIF
удаляем j-ю строку из матрицы M
ENDDO
Рис. 8. Алгоритм, который строит замкнутый обход политопа решений
ниш Тд+1 очередной строкой в матрицу обхода Р. Если при этом рабочий финиш совпал с началом обхода Т1 , значит обход замкнулся и алгоритм выполнил свою работу. Если же рабочий финиш не совпал с Т1 , обход надо продолжить, сделав рабочий финиш новым рабочим стартом.
4. Граничный интервал из ^'-й строки матрицы М независимо от того, использовали мы его или нет, в дальнейшем построении обхода уже не потребуется. Удаляем ]-ю строку из матрицы М.
Шаги алгоритма, если он не завершится досрочно построением замкнутого обхода, будем повторять до тех пор, пока в матрице М остаются строки.
Обоснование алгоритма. Чтобы убедиться, что алгоритм, сделав конечное число шагов, правильно строит матрицу вершин обхода, достаточно разобраться в том, какие именно граничные интервалы составляют матрицу М.
Сначала рассмотрим случай, когда размерность политопа H равна 0 (рис. 7, в). Все граничные интервалы в матрице M имеют опору T. Она служит для них и стартом, и финишем. Поэтому на каждом шаге алгоритм будет выбирать и удалять первую строку из текущей матрицы граничных интервалов. В результате он сделает столько шагов, сколько строк во входной матрице граничных интервалов и, ничего не добавив к записанному в P началу обхода T1, завершит работу.
Теперь рассмотрим оставшиеся случаи, когда размерность политопа H равна 1 или 2 (см. рис. 7, а, б). Для всякой вершины Tq телесного политопа существует единственное ребро, по которому можно перейти к другой вершине, оставляя при этом политоп справа по движению. Обозначим эту следующую за Tq вершину как Tq+1. Мы знаем, что опоры граничных интервалов — это все рёбра и, возможно, некоторые вершины политопа (утверждения 3 и 5), и что граничные интервалы могут иметь одинаковые опоры. Таким образом, в матрице граничных интервалов M все граничные интервалы со стартом Tq имеют финиш Tq или Tq+1. При этом присутствие граничных интервалов с финишем Tq не обязательно, а вот интервал с финишем Tq+1 непременно найдётся. Зная это, нетрудно понять, что при обработке рабочего старта Tq алгоритм сделает на 1 больше шагов, чем граничных интервалов с опорой Tq записаны в исходной матрице граничных интервалов до первого вхождения граничного интервала с опорой на ребро TqT,+i. Кроме того, алгоритм правильно найдёт следующую вершину обхода Tq+1.
В целом алгоритм последовательно внесёт в матрицу P все вершины обхода, начав с вершины Ti = (Ми, M12) и закончив ею в результате совпадения очередного рабочего финиша Tq+1 с началом обхода. Поскольку на каждом шаге алгоритма мы всегда находим подходящую строку j и удаляем её, общее число совершенных алгоритмом шагов, включая последний незаконченный шаг, не превысит числа строк в исходной матрице граничных интервалов.
2. Основные приёмы отрисовки в R2
При разработке пакетов программ для визуализации полиэдральных множеств, заданных как объединение конечного числа множеств решений систем линейных неравенств, автор столкнулся с рядом вопросов. Основными из них были:
1) как выбрать брус отрисовки?
2) как нарисовать политоп?
3) как нарисовать неограниченный полиэдр?
Решение первых двух привело к появлению метода граничных интервалов. Дадим последовательно опыт решения каждого из выписанных вопросов в R2.
2.1. Выбор бруса отрисовки
Термин "брус" ("box"), взят из интервального анализа. Брус является геометрическим образом интервального вектора в т. е. представляет собой множество решений покомпонентного векторного неравенства z_ < z < ~z относительно неизвестного вектора л G К" для некоторых заданных z_,~z из К" таких, что с < Другими словами, брус —
это прямое произведение интервалов (отрезков) координатных осей. При этом допускается вырождение интервала в точку. Брусом отрисовки назовём диапазон координат (прямое произведение интервалов координатных осей), в котором будем рисовать.
При визуализации множества проблема выбора бруса отрисовки заключается в том, чтобы по рисунку можно было однозначно представить устройство этого множества. Так, если множество ограниченно, разумно целиком поместить его в брус отрисовки, а если неограниченно, то вне бруса должна остаться та его часть, которую легко вообразить по части из бруса.
Для полиэдральных множеств в М2 задача выбора бруса отрисовки разрешима. Причина в относительно простом устройстве границы этих множеств — почти во всех точках (за исключением конечного числа граничных точек) она прямолинейна. Здесь мы говорим, что граница прямолинейна в точке X, если найдётся такая окрестность этой точки, в которой граница выглядит как прямая линия, проходящая через X. Указанная особенность позволяет выбрать брус отрисовки так, что вне его граница либо отсутствует, либо всюду прямолинейна. При этом выбор бруса отрисовки сводится к поиску некоторых точек, число которых конечно и которые надо поместить в брус. Назовём эти точки "ориентирами".
Ориентиры. Для полиэдрального множества Н ориентирами будем называть такие точки из Н, присутствие которых в брусе отрисовки достаточно для того, чтобы рисунок множества Н давал недвусмысленную информацию о его строении. Желательно, чтобы число ориентиров было минимально.
Понятие "ориентир" — не строгое: для одного и того же подкласса полиэдральных множеств в зависимости от удобства программирования и описания, а также по каким-то другим соображениям каждый волен сам выбирать набор ориентиров. Опыт автора позволяет предложить некоторые рекомендации по выбору ориентиров, основанные на использовании матрицы граничных интервалов.
Очевидно, что в число ориентиров полиэдрального множества должны входить все те точки границы, в которых она непрямолинейна. Но в общем случае точками непрямолинейности границы обойтись нельзя, ведь нам надо рисовать и полиэдры, не имеющие таких точек (например, прямую, полупространство, полосу).
Рекомендуемый выбор ориентиров:
1. Полиэдр с вершинами. Это случай, когда в матрице граничных интервалов есть старт, обе координаты которого конечны. В качестве ориентиров идеально взять множество всех вершин полиэдра. Как получить матрицу координат вершин, изложено в разделе 1.3.4.
2. Полиэдр без вершин, но с границей. Это случай, когда матрица граничных интервалов непуста, но всякий старт в ней имеет бесконечную координату. К полиэдрам с границей, но без вершин относятся полуплоскость, полоса и прямая. В качестве ориентиров удобно взять проекции начала координат на граничные прямые. Для этого найдём все точки Xг = /НА^.Ц2, где индекс I пробегает номера граничных неравенств (они указаны в пятом столбце матрицы граничных интервалов). После исключения повторов число ориентиров будет равно 1 (для полуплоскости и прямой) или 2 (для полосы).
3. Полиэдр без границы. Случай, когда матрица граничных интервалов пуста. Полиэдры без границы — это пустое множество (при нарушении условия (6)) и всё пространство М2 (при выполнении условия (6)). Удобно принять соглашение, что пустое множество не имеет ориентиров, а ориентиром пространства М2 служит начало координат. Забегая вперёд, скажем, что при таком соглашении пустое множество будет
единственным полиэдральным множеством без ориентиров и его рисунок заменён на сообщение о пустоте визуализируемого множества, а всё пространство будет выглядеть как полностью закрашенный брус отрисовки.
4. Полиэдральное множество, пересечение которого с каждым из ортантов задано системой линейных неравенств. При таких условиях пересечение полиэдрального множества с отдельным ортантом либо пусто (см. случай 3), либо полиэдр с вершинами (см. случай 1). Для каждого ортанта найдём ориентиры пересечения и объединим их. В целом получим набор вершин всех полиэдров, заданных указанными системами линейных неравенств.
5. Произвольное полиэдральное множество. Это самый общий случай, когда мы знаем только матрицу граничных интервалов для каждого полиэдра, входящего в состав полиэдрального множества, и больше ничего. В этой ситуации выбор ориентиров будет поэтапным. Пусть всякий отдельный полиэдр Hk задан системой Akx > bk. Мы выполняем следующую последовательность действий:
Этап 1. Если среди полиэдров, составляющих множество, есть всё пространство R2, то ориентиром полиэдрального множества возьмём начало координат. А если нет, то перейдём к этапу 2.
Этап 2. Для каждого полиэдра Hk рассмотрим набор ориентиров, полученный по правилу для случаев 1-3. Если ориентир X не является внутренней точкой никакого другого полиэдра H1 (т. е. строгое в каждой строке неравенство A1 X > b1 не выполняется), добавим X в набор ориентиров полиэдрального множества. Рассмотрев все ориентиры всех полиэдров, перейдём к этапу 3.
Этап 3. Для всякой пары полиэдров Hk и H1 выполним следующие действия. Рассмотрим пересечение каждой неограниченной опоры граничного интервала полиэдра Hk с каждой неограниченной опорой граничного интервала полиэдра HК Точку пересечения можно найти так. Пусть i — индекс граничного интервала, имеющего бесконечную координату в каком-то из концов для полиэдра Hk, а j — аналогичный индекс для полиэдра H1. Вычислим точку X пересечения прямых Ak.x = bk и Aj.X = bj. При AkX > bk и A1 X > b1 она будет пересечением соответствующих опор, в противном случае опоры не пересекаются. Если найденная точка пересечения X не является внутренней точкой никакого другого полиэдра Hq, q ^ {k, l}, добавим её в набор ориентиров полиэдрального множества.
Интервальная оболочка ориентиров. После того, как уже найдены координаты (vi, v2) всех ориентиров v2,, ищем минимальный брус, содержащий все ориентиры. Он равен интервальной оболочке ориентиров, т. е.
Г min vi, max vH x Г min v2, max v2 1.
i i i i
I I — полиэдр
• — ориентир
...... — интервальная
оболочка ориентиров
— — брус отрисовки
Рис. 9.
Брус отрисовки. Сама интервальная оболочка ориентиров в качестве бруса отри-совки не годится, во-первых, потому что может оказаться точкой или отрезком, а в таких нетелесных брусах ничего не увидишь, во-вторых, в силу того что интервальная оболочка ориентиров не даёт представления о поведении множества на бесконечности. Например, на рис. 9 показаны два разных неограниченных полиэдра, которые имеют одинаковые вершины и не различимы по рисунку в интервальной оболочке ориентиров.
Поэтому брус отрисовки надо выбирать так, чтобы он был существенно больше интервальной оболочки ориентиров и содержал её в своей внутренней области.
2.2. Отрисовка политопов
Для визуализации политопов методом граничных интервалов удобны функции, которые рисуют политоп по матрице вершин его замкнутого обхода. Такие функции имеются в большинстве современных систем компьютерной математики. Например, в МАТЬАВ'е [13] это функция fill, а в аналогичной свободной системе компьютерной математики Scilab [14] — функция xfpoly. При использовании указанных функций можно менять цвет и прозрачность внутренней области политопа.
При необходимости вершины политопа можно нарисовать отдельной функцией, которая рисует набор точек. Например, в МАТЬАВ'е для этой цели можно использовать функцию scatter. Выделение вершин полезно для того, чтобы не потерять политоп-точку и чётко представить политоп-отрезок. В следующем разделе будет показано, что неограниченный полиэдр можно рисовать как политоп. При этом выделение вершин помогает различать такие тощие полиэдры как отрезок, луч и прямая.
2.3. Отрисовка неограниченных полиэдров
В школе на уроках геометрии мы рисуем прямые и лучи с той же легкостью, что отрезки, а углы столь же просто, как треугольники. Мы привыкли рисовать неограниченные множества как ограниченные, но с некоторыми отличиями. Например, начало луча и концы отрезка выделяем заметными точками. С неограниченными полиэдрами будем поступать так же: обрежем полиэдр до политопа, но нарисуем так, чтобы по картинке было ясно, что перед нами полиэдр.
Брус обрезки. Неограниченный полиэдр станем обрезать брусом, который назовём брусом обрезки. Выберем его таким образом, чтобы он содержал брус отрисовки в своей внутренней области. Например, сдвинем каждую сторону бруса отрисовки от центра на некоторую положительную величину (рис. 10).
о — ориентиры полиэдра • — ориентиры политопа — — брус отрисовки
- брус обрезки | | — политоп
Видимый рисунок
Рис. 10. Как происходит обрезка и рисование неограниченного полиэдра на примере полосы
Обрезка. Если неограниченный полиэдр был задан системой линейных неравенств А°х >6°, то его пересечение с брусом обрезки х [х2,х2] — это политоп, который
описывается системой неравенств АРх > 6°, < Х\ < Х\, х2 < х-2 < Х2, или в матричном виде
/ А0 \ / Ь0
1 0 1 0 1 0 > X 2-2 —Х\
V 0 - 1 / V ~Х2 /
Обозначим матрицу и правую часть новой системы соответственно А1 и Ь1.
Рисуем политоп вместо полиэдра. Вычислим матрицу граничных интервалов для системы А1 х > Ь1, построим по ней матрицу вершин обхода вокруг политопа решений и нарисуем политоп в брусе отрисовки, который был найден для неограниченного полиэдра.
Наглядное отличие неограниченных множеств от ограниченных. Коль скоро брус обрезки неограниченного полиэдра содержит брус отрисовки, то изображение неограниченного полиэдра выходит непосредственно на границу бруса отрисовки.
Ограниченный полиэдр содержится в интервальной оболочке своих ориентиров и, поскольку она лежит строго внутри бруса отрисовки, не может иметь точек на границе бруса отрисовки.
Итак, если изображённый на рисунке полиэдр имеет точки на границе бруса отрисовки — он неограничен, а если не имеет таких точек — то ограничен. Нетрудно понять, что аналогичное утверждение верно и для полиэдральных множеств.
3. Дополнительные сведения о полиэдрах и основные приёмы отрисовки в К3
В трёхмерном пространстве, как и в двумерном, основными вопросами, возникающими при компьютерной визуализации полиэдральных множеств, остаются выбор бруса от-рисовки, отрисовка политопов и отрисовка неограниченных полиэдров. Но прежде чем перейти к их обсуждению, приведём ещё некоторые сведения о полиэдрах в К3.
3.1. Дополнительные сведения о полиэдрах
Полиэдр в К3 описывается системой линейных неравенств
Ах > Ь, А е Ктх3, х е К3, Ь е Кт, т е N. (7)
Удаление нулевых строк из матрицы А. В системе (7) матрица А может иметь нулевые строки. При решении многих вопросов, относящихся к полиэдру решений, полезно эти строки системы сначала удалить, сделав соответствующие выводы, а потом, если вопрос ещё не снят, решать его для системы (7) без нулевых строк в А.
Последовательное удаление строк осуществляется так. Если = (0 0 0), Ь > 0, множество решений строки х > Ь и всей системы (7) пусто. На этом процесс удаления строк обрывается, так как мы знаем уже само множество решений и можем решить все
относящиеся к нему вопросы. Если А^ = (0 0 0), < 0, множеством решений строки А^х > 6г служит всё пространство К3. Такую строку просто удаляем.
Когда процесс удаления строк прошёл без обрыва и завершился, смотрим на то, как выглядит "очищенная" система. Если в ней не осталось строк, значит для исходной системы было выполнено условие (6) и её множество решений совпадает со всем пространством К3. Если же строки в очищенной системе остались, то перейдём к исследованию этой системы вида (7), но не имеющей нулевых строк в матрице А.
Вклад в границу отдельного неравенства. Пусть Н — множество решений системы (7) без нулевых строк в матрице А. Обозначим через Н вклад ¿-го неравенства в границу множества Н (см. раздел 1.1). Полиэдр Н^ представляет собой пересечение плоскости Ах = 6 с множеством решений Н, т.е. = (х € К3 | А^х = , Ах > 6}.
Множества играют особую роль в нашем методе для случая К3. С одной стороны, такие относящиеся к полиэдру решений Н вопросы, как проверка ограниченности, выбор ориентиров и даже отрисовка полиэдра Н, разлагаются в решение аналогичных вопросов для множеств . С другой стороны, для отдельного множества эти вопросы разрешимы с помощью матрицы граничных интервалов (см. раздел 1.3), ведь во внутренней системе координат плоскости А^х = 6^ множество Нi описывается системой вида (3). Остаётся только подобрать внутренние координаты плоскости А^х = 6i.
Выбор внутренней системы координат Оу1у2 плоскости А^ж = 6i заключается в следующем:
• В качестве начала О внутренней системы координат возьмём проекцию начала (0, 0, 0) исходной внешней системы координат Ох1Ж2Ж3 на плоскость А^ж = 6i, т. е. точку О = 6гА^Г/1|||2, где ||||2 = л/А^ + А22 + А23 — 2-норма (евклидова норма) вектор-строки А^.
• Единичным вектором е1, соответствующим внутренней координате у1, договоримся считать наиболее длинную ортогональную проекцию вектора Ат, повёрнутую на 90° (в любом направлении). Проекция вектора Ат на координатную плоскость = 0 имеет длину г=к |АЙ|2, поэтому она будет наиболее длинной для такого к, что |А^| =
шт(|Аа|, |АЙ|, |А*3|}.
Например, если к = 1, наиболее длинная проекция вектора Ат будет (0,А^,А^)т, а в качестве единичного вектора для координаты у1 годится вектор (0, А^, — А^)т или
(0, — ^3,^)Т.
• Единичный вектор е2, соответствующий внутренней координате у2, получим как векторное произведение нормали Ат к плоскости А^х = 6i на единичный вектор е1.
Во внутренних координатах плоскости А^х = 6i полиэдр описывается системой неравенств, имеющей вид А(О + е1у1 + е2у2) > 6 или
Аб2^^ > 6 — АО.
Если во внутренней системе координат плоскости А^х = 6i точка имеет координаты (у1,у2), то в исходной системе Ох1х2х3 её координаты будут (О + е1у1 + е2у2)т.
Ограничен ли полиэдр решений. Множество решений Н системы (7) без нулевых строк в матрице А не может совпадать с пространством К3. Поэтому полиэдр Н ограничен тогда и только тогда, когда ограничена его граница дН. В силу (2) граница дН состоит из вкладов, вносимых отдельными неравенствами, т. е. д Н = Ц Н,1. Это
Ав1
означает, что ограниченность границы дН равносильна одновременной ограниченности всех множеств Нг.
Проверку отдельного полиэдра Нг на ограниченность осуществляем так:
1) переходим во внутренние координаты плоскости Аг:х = Ьг;
2) вычисляем матрицу граничных интервалов и, как описано в разделе 1.3.3, исследуем множество Нг на ограниченность.
3.2. Выбор бруса отрисовки
Поскольку граница полиэдрального множества в К3 имеет конечное число точек, в окрестности которых она не похожа на плоскость, двугранный угол или прямую, задача выбора бруса отрисовки в К3 представляется разрешимой. Между тем, автору не известно правило выбора ориентиров для произвольного полиэдрального множества. Потому приведём рекомендации по выбору ориентиров только для двух случаев: (I) произвольный полиэдр и (II) полиэдральное множество, задаваемое в каждом ортанте системой линейных неравенств.
Ориентиры произвольного полиэдра. Удалим из системы (7) все строки г, для которых Аг: = (0 0 0). Если в процессе удаления выяснилось, что полиэдр решений пуст, полагаем, что у него нет ориентиров. Если стало ясно, что множество решений исходной системы совпадает с пространством К3, то в качестве ориентира возьмём начало координат. Если же мы получили систему (7) без нулевых строк в матрице А, то перейдём к поиску её нетривиальных ориентиров. С этой целью для каждого неравенства Аг:х > Ьг найдём ориентиры полиэдра решений Нг, а затем все найденные наборы ориентиров объединим. Ориентиры множества Нг будем искать в следующем порядке:
1) перейдём во внутренние координаты плоскости Аг:х = Ьг;
2) возьмём ориентиры, как в случае двух неизвестных;
3) переведём координаты ориентиров из внутренних в исходные.
Ориентиры полиэдрального множества, описанного в каждом ортанте как система линейных неравенств. Для каждого из октантов ориентиры полиэдра решений соответствующей системы линейных неравенств выберем, как указано выше для произвольного полиэдра. Затем все восемь полученных наборов ориентиров объединим.
Брус отрисовки. Аналогично случаю двух неизвестных, после отыскания ориентиров возьмём их интервальную оболочку и выберем брус отрисовки так, чтобы он был существенно больше интервальной оболочки и содержал её в своей внутренней области.
3.3. Отрисовка политопов
Обсудим, как нарисовать политоп решений для системы (7), в которой матрица А не имеет нулевых строк.
В двумерном случае при визуализации политопа достаточно показать его границу, а внутреннюю область можно раскрасить для усиления восприятия. В трёхмерном случае визуализация внутренней области оказывается вообще излишней, ведь в реальном пространстве, глядя на политоп, мы видим только его границу.
Из (2) мы знаем, что граница политопа решений состоит из вкладов И П дНг, вносимых отдельными неравенствами. Когда в системе (7) матрица А не имеет нулевых строк, вкладом г-го неравенства в границу политопа решений будет пересечение плоскости Аг:х = Ьг с И. Это пересечение выше было обозначено как Нг. Получается: для того чтобы нарисовать политоп Ив К3, достаточно нарисовать все политопы Нг.
Чтобы нарисовать политоп Н = ( х € К3 | А^х = 6i, Ах > 6 }:
1) перейдём во внутренние координаты плоскости А^х = 6i;
2) найдём обход политопа как в случае двух неизвестных;
3) переведём координаты вершин обхода из внутренних в исходные;
4) нарисуем политоп Н-1 функцией, которая строит "плоский" политоп в К3
по списку вершин обхода (например, в системе МАТ1АВ это функция ^113).
Если же при выполнении пункта 2 выяснится, что политоп Н,1 пуст, рисовать его (т. е. выполнять пункты рисования 2-4) не будем.
3.4. Отрисовка неограниченных полиэдров
Как и в двухмерном случае, неограниченный полиэдр обрежем брусом обрезки и будем рисовать в принципе как политоп. При этом постараемся внести в процессе рисования такие детали, которые помогут понять, что на картинке всё-таки не политоп, а неограниченный полиэдр.
Естественно, что брус обрезки должен содержать в своей внутренней области интервальную оболочку ориентиров. Но в отличие от двухмерного случая брус обрезки обязан лежать в брусе отрисовки. Тогда мы сможем увидеть грани, возникающие у полиэдра в процессе обрезки. Чтобы отличать их от реальных граней, т. е. тех, которые присущи самому полиэдру, выделим грани обрезки другим цветом. Разница в цвете реальных граней и граней обрезки — это первая деталь, которая поможет отличить неограниченный полиэдр от политопа. Её недостаток состоит в том, что она работает только для телесных полиэдров.
Другая деталь рисования, особенно полезная для тощих полиэдров, — выбор бруса обрезки равным брусу отрисовки. При таком выборе на границу бруса отрисовки выходят только неограниченные полиэдры, а политопы всегда лежат в его внутренней области. Вращая трёхмерную картинку, мы видим, выходит ли нарисованный полиэдр на границу бруса отрисовки, и по результату судим о его ограниченности.
Остаётся лишь добавить к сказанному, что описанные в настоящей статье алгоритмы визуализации множеств решений реализованы автором в виде свободно распространяемых пакетов программ lineq [1], 1п"ЬЫп1псК2 [15] и 1п"ЬЫп1псК3 [16]. Их англоязычные версии имеют названия lineq2, 1п"Ьт1пс2Б и 1п"Ьт1пс3Б соответственно и находятся на веб-странице автора Ь""р://ууу.пвс.ги/т"ег¥а1/вЬагауа.
Заключение
В работе изложены лишь основы метода граничных интервалов. У того, кто возьмётся реализовать этот метод, неизбежно возникнет масса вопросов, относящихся к алгоритмам и программированию. Решение таких вопросов зависит от опыта и предпочтений. Например, типичный вопрос при компьютерной реализации точного метода — как ослабить влияние неточности машинных вычислений. Если исходные данные (для полиэдров это матрица и правая часть системы линейных неравенств) допускают сильные вариации, а время счёта не принципиально, можно использовать символьные вычисления и рациональные арифметики. Если же надо получить картинку быстро при ограничении на диапазон исходных данных, можно обойтись приближёнными вычислениями, огрубляя в условных операторах сравнение неточно найденных величин. Варианты решений алгоритмических и программистских вопросов, найденные автором, можно посмотреть в готовых пакетах визуализации [1, 15, 16]. Исходные коды этих пакетов открыты.
Благодарности. Хочется поблагодарить Вальтера Кремера (Walter Krämer), Зенона Кульпу (Zenon Kulpa), Евгению Попову (Evgenija Popova) и Зигфрида Румпа (Siegfried Rump). Их средства и подходы к визуализации множеств решений интервальных систем линейных алгебраических уравнений оказали на меня сильное воздействие и способствовали созданию метода граничных интервалов. Также благодарю всех, кто консультировал меня по возможностям визуализации множества решений системы линейных неравенств, особенно Николая Юрьевича Золотых (Нижегородский университет).
Работа частично финансировалась Программой Правительства России по государственной поддержке ведущих научных школ, проект № НШ-6293.2012.9.
Список литературы / References
[1] Ш!арая И.А. lineq — пакет программ для визуализации множеств решений систем линейных неравенств. Версия для Matlab: Релиз 25.04.2012. Адрес доступа: http://www. nsc.ru/interval/sharaya/irash.html
Sharaya, I.A. lineq2 — a software package for visualization of the solution sets to systems of linear inequalities. Version for Matlab: Release 25.04.2012. Available at: http://www.nsc. ru/interval/sharaya/index.html#codes
[2] Sharaya, I.A. Boundary intervals and visualization of AE-solution sets for interval system of linear equations. 15th GAMM-IMACS International Symposium on Scientific Computing, Computer Arithmetics and Verified Numerics — SCAN'2012, September 23-29, 2012, Novosibirsk, Russia. Book of Abstracts. Institute of Computational Technologies, Novosibirsk, 2012. P. 166-167. Available at: http://conf.nsc.ru/files/conferences/scan2012/140000/ scan2012Abstracts.pdf
[3] Sharaya, I.A. Boundary intervals and visualization of AE-solution sets for interval system of linear equations [online presentation] // 15th GAMM-IMACS International Symposium on Scientific Computing, Computer Arithmetics and Verified Numerics — SCAN'2012, Novosibirsk, Russia, September 23-29, 2012. Available at: http://conf.nsc.ru/files/ conferences/scan2012/142985/Sharaya-scan2012.pdf
[4] Shary, S.P. A new technique in systems analysis under interval uncertainty and ambiguity // Reliable Computing. 2002. Vol. 8, No. 5. P. 321-419. Available at: http://www.ict.nsc.ru/ shary/Papers/ANewTech.pdf
[5] INTLAB — INTerval LABoratory, the Matlab toolbox for reliable computing. Available at: http://www.ti3.tu-harburg.de/rump/intlab/
[6] Popova, E., Kramer, W. Visualization of parametric solution sets. Preprint BUW-WRSWT 2006/10, Bergische Universitat Wuppertal, 2006. Available at: http://www2.math. uni-wuppert al.de/wrswt/preprints/prep_06_10-2.pdf
[7] Kramer, W. intpakX — an interval arithmetic package for Maple. Scientific Computing, Computer Arithmetic and Validated Numerics, 2006. Proceedings of SCAN 2006, 12th GAMM-IMACS International Symposium on Scientific Computing, Computer Arithmetic and Validated Numerics, Duisburg, Germany, September 26-29, 2006. IEEE Computer Society Press, 2007, page 27. DOI: 10.1109/SCAN.2006.29
[8] Krämer, W. Computing and visualizing solution sets of interval linear systems // Serdica J. of Comput. 2007. Vol. 1, No. 4. P. 455-468. Available at: http://serdica-comp.math.bas. bg/index.php/serdicaj computing/article/download/33/30
[9] Popova, E., Kramer, W. Visualizing parametric solution sets // BIT Numerical Mathematics. 2008. Vol. 48, iss. 1. P. 95-115. DOI: 10.1007/s10543-007-0159-3
[10] AE-solset.ps — программа на языке PostScript для визуализации множеств AE-ре-шений интервальных 2 х 2-систем линейных алгебраических уравнений. Адрес доступа: http://www.nsc.ru/interval/Programing/AE-solset.ps
AEsolset.ps — a PostScript program for visualization of AE-solution sets to interval linear 2x2-systems of equations. Available at: http://www.nsc.ru/interval/Programing/AEsolset.ps
[11] Емеличев В.А., Ковалёв М.М., Кравцов М.К. Многогранники, грани, оптимизация. M.: Наука, 1981.
Yemelichev, V.A., Kovalev, M.M., Kravtsov, M.M. Polytopes, Graphs, and Optimization. Translated by G.H. Lawden. Cambridge: Cambridge Univ. Press, 1984. 423 p.
[12] Келли Дж.Л. Общая топология. Изд. 2-е. Пер. с англ. М.: Наука, 1981. Kelley, John L. General Topology. Springer, 1975.
[13] Matlab — The language of technical computing. Available at: http://www.mathworks.com/ products/matlab
[14] Scilab — free and open source software for numerical computation. Available at: http://www. scilab.org
[15] Ш!арая И.А. IntLinIncR2 — пакет программ для визуализации множеств решений интервальных линейных систем отношений с двумя неизвестными. Версия для Matlab: Релиз 01.09.2014. Адрес доступа: http://www.nsc.ru/interval/Programing, http://interval. ict.nsc.ru/sharaya/irash.html
Sharaya, I.A. IntLinInc2D — a software package for visualization of the solution sets to interval linear systems of relations with two unknowns. Version for Matlab: Release 01.09.2014. Available at: http://www.nsc.ru/interval/Programing, http://www.nsc.ru/ interval/sharaya/index.html#codes
[16] ШШарая И.А. IntLinIncR3 — пакет программ для визуализации множеств решений интервальных линейных систем отношений с тремя неизвестными. Версия для Matlab: Релиз 01.09.2014. Адрес доступа: http://www.nsc.ru/interval/Programing, http://interval. ict.nsc.ru/sharaya/irash.html
Sharaya, I.A. IntLinInc3D — a software package for visualization of the solution sets to interval linear systems of relations with three unknowns. Version for Matlab: Release 01.09.2014. Available at: http://www.nsc.ru/interval/Programing,
Поступила в 'редакцию 30 декабря 2014 г.
Boundary intervals method for visualization of polyhedral solution sets
Sharaya, Irene A.
Institute of Computational Technologies SB RAS, Novosibirsk, 630090, Russia Corresponding author: Sharaya, Irene A., e-mail: [email protected]
A new method, called "boundary intervals method", is proposed for investigation and visualization of the sets determined by systems of linear algebraic inequalities or represented as the union of solution sets to a finite number of systems of linear inequalities.
Software that allows one "to visually see" various solution sets is helpful in decision making, in education, as well as for investigation of the solution sets and debugging
© ICT SB RAS, 2015
algorithms for their estimation. At present, there exist several visualization packages for the solution sets to linear systems of relations (inequalities and equations) that can only handle systems with no more than three relations and work unsatisfactorily with unbounded and thin solution sets. All these approaches rest upon computation and further use of vertices of the polyhedral sets. The new boundary intervals method we develop is based on using so-called boundary intervals instead of vertices, which enables us to overcome the limitations of the previous approaches.
The proposed method is useful, in particular, for visualization of AE-solution sets to interval linear relations systems that can consist of equations, inequalities or both. Such a possibility is based on the fact that the intersection of any AE-solution set with separate orthants of the entire space is a polyhedral set for which the determining systems of linear inequalities can be easily written out from the initial interval system of relations.
The paper describes basics of the boundary intervals method for systems with two and three unknown variables. Also, we present software packages lineq and IntLinlncXX implementing the boundary intervals method and designed for visualization of the solution sets to systems of linear relations, both interval and usual non-interval.
Keywords: boundary interval, system of linear inequalities, polytope, polyhedron, polyhedral set, visualization.
Acknowledgements. This research was supported by the President Grant for Governmental Support of the Leading Scientific Schools (grant No. 5007.2014.9).
Received December 30, 2014