Теоретико-графовые методы в программировании Виктор Николаевич Касьянов Институт систем информатики СО РАН имени А.П. Ершова Email: [email protected] План выступления Графы и их применение Ершов – основоположник применения графов в программировании Визуализация информации на основе графовых моделей Работы ИСИ по поддержке применения графовых методов в программировании Ершов о графах Графы и их применение (1) Вершины Рёбра (связи) Матрица смежности 1 2 Списки смежности 1:2 2 : 1, 3 3:2 3 1 00 11 0 2 1 0 1 3 0 1 0 1 2 3 Изображение графа Графы и их применение (2) Графы являются естественным средством объяснения сложных ситуаций на интуитивном уровне Графы применимы для представления любой информации, которую можно промоделировать в виде объектов и связей между объектами Графы и их применение (3) Современное состояние программирования нельзя представить себе без графов и графовых алгоритмов Теория графов из академической дисциплины все более превращается в средство, владение которым становится решающим для успешного применения компьютеров во многих прикладных областях Ершов – основоположник (1) Пионерные работы А. П. Ершова, использующие графовые методы в программировании, по организации вычисления арифметических выражений (1958 г.) граф-схемной модели для императивных программ в виде операторных алгоритмов (1958–1962 гг.) полной системы эквивалентных преобразований для схем Янова (1963–1966 гг.) граф-схемной теории экономии памяти (1961–1966, 1972 гг.) Граф-схемная модель Предложена модель программы, которая стала основой такой известной модели, как стандартные схемы Установлена связь предложенного формализма с такими известными понятиями алгоритма, как частично-рекурсивные функции и нормальные алгоритмы Маркова Рассмотрены возможности операторных алгоритмов для представления программ и логических схем программ Полная система преобразований для схем Янова графовое представление упрощении аксиоматики преобразований (14 аксиом заменились на 6) методика разметки (эффективизация правила вывода, замена сложного алгоритма, лежащего вне аксиоматики, на четыре аксиомы, задающие стационарную разметку дуг управляющего графа логическими функциями) Граф-схемная теория экономии памяти Работа по сведению задачи распределения памяти для схем Лаврова к известной задаче раскраски графа (1962 ) Совместная работа с Кожухиным об оценках хроматического числа связных графов, ставшая основой разработанного ими эвристического алгоритма близкой к оптимальной раскраски графа (1962) Работа об операторных схемах над общей и распределенной памятью (1968) Работа по аксиоматике распределения памяти, в которой методика разметки использована для построения корректной и полной системы преобразований для допустимых распределений памяти (1972) Ершов – основоположник (2) Ершов А. П. «Введение в теоретическое программирование (беседы о методе)» (1977) – первая книга, посвященная применению графов в программировании. В книге рассмотрены две классические задачи теоретического программирования: задача экономии памяти в операторных схемах Лаврова и задача построения полной системы преобразований в схемах Янова. Их решения и развитые на этих решениях методы привели к созданию теоретического программирования как самостоятельной математической дисциплины. В книге, написанной в виде беседы с читателем, Ершов демонстрирует применение графовых методов к решению задач программирования в действии, начиная с элементарной постановки задачи и кончая полным решением проблемы во всей её сложности. Ершов – основоположник (3) Инструментальные программные системы, использующие и/или развивающие графовые методы в программировании: программирующая программа для БЭСМ (1955– 1957 гг.) и транслятор ППС для «Стрелы» (1957– 1959 гг.) реализации Альфа-языка для М20 «Альфасистема» (1960–1964 гг.) и для БЭСМ-6 «Алгибр» (1966 г.) и «Альфа-6» (1970–1974 гг.) Бета-проект (1970–1985 гг.) Система Альфа Система Альфа – первая в мире оптимизирующая система программирования, на практике доказавшая возможность создания трансляторов с приемлемой эффективностью рабочих программ для языков, более сложных, чем язык Фортран Впервые использована многопроходная схема трансляции с оптимизирующими преобразованиями промежуточных представлений программ Грандиозный 24-проходный прокатный стан, протягивающий транслируемую программу и перековывающий ее в эффективный объектный код через игольное ушко всего 4К слов памяти Система БЕТА (1) Язык 1 Язык 2 Язык N Язык 1 NxM Язык 2 Язык N Внутренний язык N+M ВС 1 ВС M ВС 1 ВС M Система БЕТА (2) БЕТА – первая оптимизирующая многоязыковая транслирующая система единый внутренний язык и универсальный оптимизатор этап (потокового) анализа и этап преобразований Визуализация информации на основе графовых моделей (1) Визуализация информации — это процесс преобразования больших и сложных видов абстрактной информации в интуитивно понятную визуальную форму. Универсальным средством такого представления структурированной информации являются графовые модели. Поэтому визуализация графовых моделей является ключевой компонентой во многих программных приложениях в науке и технике, а методы визуализации графов представляют собой теоретическую основу методов визуализации абстрактной информации. Визуализация информации на основе графовых моделей (2) Граф может рисоваться на плоскости или в трехмерном пространстве. Он может изображаться целиком, частично или иерархически, например, путем стягивания некоторых его подграфов в вершины, которые могут раскрываться по требованию. Вершины могут быть нарисованы в виде точек, кругов, прямоугольников или других геометрических фигур, или представлены неявно — через имена, которыми вершины помечены. Ребра - в виде отрезков прямых, ломаных линий или кривых. Информация, сопоставленная элементам графовой модели, может визуализироваться с использованием текстовых меток, расположенных внутри или рядом с его изображением, различными цветами или другими визуальными элементами, такими, как, например, толщина линий или размер прямоугольников. Визуализация информации на основе графовых моделей (3) Понятие качества изображения Рисование деревьев Методы построения изображений графов Визуализация больших графов Интерактивные изображения, метафоры и навигации Понятие качества изображения (1) Качество одного и того же изображения может по-разному оцениваться разными индивидуумами, а разные приложения могут требовать разные способы изображения графа Понятие качества изображения (2) Главный критерий оценки качества методов визуализации информации является адекватность изображения графовой модели заданному типу информации и характеру её использования, например, при визуализации географических карт или карт дорог нужно, чтобы расположение вершин и ребер соответствовали географическим реалиям Понятие качественного способа рисования графа формализуется с помощью таких понятий, как • изобразительное соглашение, • эстетический критерий и • ограничение Изобразительное соглашение ортогональное сетчатое полилинейное прямолинейное Эстетические критерии (1) Cпецифицируют такие свойства изображений, которые желательно применять в такой наибольшей степени, как только это возможно, чтобы повысить наглядность изображения минимизация пересечений, минимизация сгибов, минимизация области размещения, максимизация разрешения, минимизация общей длины ребер, минимизация длины ребра, унификация длин ребер, минимизация числа сгибов на ребре, унификация сгибов, максимальная симметричность, минимизация коэффициента сторон. Эстетические критерии (2) • Большинство из рассмотренных эстетических критериев, как задачи оптимизации, являются сложными для решения с вычислительной точки зрения (как правило, NP-трудными) • Критерии, как правило, противоречивы • Поэтому обычно при построении изображений используются различные эвристики и стратегии приближенных решений Ограничения Если соглашения и эвристики являются общими правилами и критериями, которые формулируются по отношению ко всему графу и его изображению, то ограничения относятся к отдельным подграфам и частям изображений центр, когда требуется разместить заданную вершину ближе к центру изображения, внешность, когда требуется разместить заданную вершину на внешней границе изображения, кластер, когда требуется разместить заданное подмножество вершин рядом друг с другом, последовательность слева–направо (сверху–вниз), когда требуется нарисовать заданный путь горизонтально слева–направо (соответственно сверху–вниз). Рисование деревьев (1) Корневые деревья часто используются для представления иерархий, таких как генеалогические деревья, организационные схемы или поисковые деревья. К ним часто применяются следующие дополнительные эстетические критерии: - вершины размещаются на горизонтальных линиях в соответствии с их уровнем (или, что то же самое, расстоянием до корня); - существует минимальное расстояние между любыми двумя соседними вершинами одного и того же уровня; - ширина изображения является как можно меньшей. Дополнительные соглашения: включения , опрокидывания a b d c e f Рисование деревьев (2) Рисование деревьев (3) Рисование деревьев (4) Методы укладки графов Трудности: - эстетические критерии часто противоречат друг другу, и, таким образом, поиски компромиссов неизбежны; -даже если эстетические критерии не конфликтуют, часто алгоритмически трудно удовлетворить всем им одновременно Основные методы: Покрывающее дерево Планаризация Поуровневое изображение Физические аналогии Потоковые методы Визуализация больших графов (1) Основные проблемы: - неприемлемая временная сложность, - ненаглядность (запутанность) получаемого изображения. Визуализация больших графов (2) Весьма существенной становится временная сложность алгоритмов. Возникает необходимость в разработке алгоритмов, сложность которых близка к линейной. Новый критерий качества для динамических и интерактивных алгоритмов, называемый предсказуемостью (или сохранением ментальной карты ). Этот критерий требует, чтобы два разных исполнения одного и того же алгоритма на одних и тех же или похожих данных давали похожий результат. Визуализация больших графов (3) Борьба с запутанностью 3 D визуализация Интерактивные методы с применением различных видов навигации Борьба с запутанностью (1) Выбор подходящего изображения ребер Борьба с запутанностью (2) Связывание ребер Борьба с запутанностью (3) Кластеризация ребер Борьба с запутанностью (4) Выборка (магическая линза: линии в линзе при 10% выборке) Борьба с запутанностью (5) Кластеризация (позволяет уменьшать количество деталей, показываемых одновременно) - структурная, если она использует только структурную информацию о графе, - содержательная, если она основывается на информации о содержательных свойствах элементов графа 3D укладки (1) 3D укладки (2) Интерактивные методы (1) Интерактивная визуализация превращает статическую демонстрацию визуального представления информации в непрерывный процесс взаимодействия пользователя с информацией через её визуальное отображение и доступные ему методы навигации. При этом помимо стандартных методов навигации, таких как открытие (и закрытие) новых окон, масштабирование, прокрутка или инкрементальный просмотр, широко используются специальные методы взаимодействия с графовой информацией, такие как фильтрация, выделение, деформация, кластеризация. Интерактивные методы (2) Интерактивные методы (3) Инкрементальный просмотр, когда в каждый момент демонстрируется только небольшая часть всего графа, а другие части графа демонстрируются по мере необходимости Интерактивные методы (4) Методы навигации «фокус+контекст» , которые позволяют пользователю фокусироваться на некоторых деталях без потери их контекста Интерактивные методы (5) Интерактивные методы (6) Обычно процесс создания интерактивной визуализации распадается на два последовательных этапа: 1) Отображении исходных данных на геометрическую плоскость в виде статического графового изображения 2) Собственно навигация, обеспечивающая пошаговое изменение изображения и позволяющая достичь той формы представления информации, которая нужна определенному пользователю в данный момент. Бен Шнайдерман сформулировал «мантру» интерактивной визуализации следующим образом: «Сначала общий план, потом масштабирование и фильтрация, затем детали по требованию» Работы ИСИ по поддержке графовых методов Энциклопедия алгоритмов на графах Толковый словарь по графам в информатике Системы визуализации графов и графовых моделей (HIGRES, VEGRAS, VisualGRAPH) Энциклопедия алгоритмов на графах (1) Касьянов В.Н., Евстигнеев В.А. «Графы в программировании: обработка, визуализация и применение», СПб.: БХВ-Петербург, 2003, 1104 С. Касьянов В.Н., Касьянова Е.В. «Визуализация графов и графовых моделей» , Новосибирск: Сибирское Научное Издательство, 2010, 123 С. Вики-система WEGA Энциклопедия алгоритмов на графах (2) Выделение класса базовых алгоритмов и его разделение на подклассы по типу графов, используемых в качестве модели: деревья, бесконтурные графы, сводимые графы Высокоуровневое описание алгоритмов Толковый словарь по графам в информатике Касьянов В.Н., Евстигнеев В.А. «Толковый словарь по теории графов в информатике и программировании», Новосибирск: Наука, 1999, 288 С. Касьянов В.Н., Евстигнеев В.А. «Словарь по графам в информатике, Новосибирск: Сибирское Научное Издательство, 2009, 300 С. Вики-словарь WikiGRAPP Ершов о графах (1) Графы обладают огромной, неисчерпаемой изобразительной силой, соразмерной масштабу задачи программирования Программисту о графах нужно много знать, при этом с большим запасом по отношению к любой конкретной задаче Ершов о графах (2) Программирование — это новый вид универсальной деятельности, при которой человек должен вложить в ЭВМ все, что видит, слышит, знает, и научить ее всему, что делает сам. Важнейшим свойством информационной модели или управляющей системы является ее структура, или говоря математическим языком, совокупность бинарных отношений на наборах элементарных единиц данных и действий. Эти структуры данных и структуры действий являются единственными ипостасями программ и обрабатываемой ими информации, в которых они могут существовать в воображении программиста во чреве компьютера. Вот почему, графы являются основной конструкцией для программиста. Спасибо за внимание