Визуализация графов: left-right алгоритм распознавания...

53
Визуализация графов Computer Science клуб, март 2014 Александр Дайняк, ФИВТ МФТИ www.dainiak.com

Upload: alex-dainiak

Post on 02-Jul-2015

305 views

Category:

Education


14 download

TRANSCRIPT

Page 1: Визуализация графов: left-right алгоритм распознавания планарности

Визуализация графов

Computer Science клуб, март 2014

Александр Дайняк, ФИВТ МФТИ

www.dainiak.com

Page 2: Визуализация графов: left-right алгоритм распознавания планарности

DFS-дерево и обратные рѐбра

При поиске в глубину рёбра графа разбиваются на два типа:

• рёбра DFS-дерева (в «новые» вершины),

• обратные рёбра (в пройденные вершины).

Page 3: Визуализация графов: left-right алгоритм распознавания планарности

DFS-дерево и обратные рѐбра

При поиске в глубину рёбра графа разбиваются на два типа:

• рёбра DFS-дерева (в «новые» вершины),

• обратные рёбра (в пройденные вершины).

Page 4: Визуализация графов: left-right алгоритм распознавания планарности

DFS-дерево и обратные рѐбра

При поиске в глубину рёбра графа разбиваются на два типа:

• рёбра DFS-дерева (в «новые» вершины),

• обратные рёбра (в пройденные вершины).

Page 5: Визуализация графов: left-right алгоритм распознавания планарности

DFS-дерево и обратные рѐбра

При поиске в глубину рёбра графа разбиваются на два типа:

• рёбра DFS-дерева (в «новые» вершины),

• обратные рёбра (в пройденные вершины).

Page 6: Визуализация графов: left-right алгоритм распознавания планарности

DFS-дерево и обратные рѐбра

При поиске в глубину рёбра графа разбиваются на два типа:

• рёбра DFS-дерева (в «новые» вершины),

• обратные рёбра (в пройденные вершины).

Page 7: Визуализация графов: left-right алгоритм распознавания планарности

DFS-дерево и обратные рѐбра

При поиске в глубину рёбра графа разбиваются на два типа:

• рёбра DFS-дерева (в «новые» вершины),

• обратные рёбра (в пройденные вершины).

Page 8: Визуализация графов: left-right алгоритм распознавания планарности

DFS-дерево и обратные рѐбра

При поиске в глубину рёбра графа разбиваются на два типа:

• рёбра DFS-дерева (в «новые» вершины),

• обратные рёбра (в пройденные вершины).

Page 9: Визуализация графов: left-right алгоритм распознавания планарности

DFS-дерево и обратные рѐбра

При поиске в глубину рёбра графа разбиваются на два типа:

• рёбра DFS-дерева (в «новые» вершины),

• обратные рёбра (в пройденные вершины).

Page 10: Визуализация графов: left-right алгоритм распознавания планарности

DFS-дерево и обратные рѐбра

При поиске в глубину рёбра графа разбиваются на два типа:

• рёбра DFS-дерева (в «новые» вершины),

• обратные рёбра (в пройденные вершины).

Page 11: Визуализация графов: left-right алгоритм распознавания планарности

DFS-дерево и обратные рѐбра

При поиске в глубину рёбра графа разбиваются на два типа:

• рёбра DFS-дерева (в «новые» вершины),

• обратные рёбра (в пройденные вершины).

Page 12: Визуализация графов: left-right алгоритм распознавания планарности

DFS-дерево и обратные рѐбра

При поиске в глубину рёбра графа разбиваются на два типа:

• рёбра DFS-дерева (в «новые» вершины),

• обратные рёбра (в пройденные вершины).

Page 13: Визуализация графов: left-right алгоритм распознавания планарности

DFS-дерево и обратные рѐбра

При поиске в глубину рёбра графа разбиваются на два типа:

• рёбра DFS-дерева (в «новые» вершины),

• обратные рёбра (в пройденные вершины).

Page 14: Визуализация графов: left-right алгоритм распознавания планарности

DFS-дерево и обратные рѐбра

При поиске в глубину рёбра графа разбиваются на два типа:

• рёбра DFS-дерева (в «новые» вершины),

• обратные рёбра (в пройденные вершины).

Page 15: Визуализация графов: left-right алгоритм распознавания планарности

Фундаментальные циклы

Каждое обратное ребро вместе с путём по DFS-дереву образует фундаментальный цикл.

Page 16: Визуализация графов: left-right алгоритм распознавания планарности

Фундаментальные циклы

Каждое обратное ребро вместе с путём по DFS-дереву образует фундаментальный цикл.

Page 17: Визуализация графов: left-right алгоритм распознавания планарности

Фундаментальные циклы

Любая пара фундаментальных циклов либо не имеют общих рёбер, либо их пересечение — путь в DFS-дереве.

(Иначе противоречие с отсутствием циклов в дереве.)

Page 18: Визуализация графов: left-right алгоритм распознавания планарности

Фундаментальные циклы

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

• по часовой стрелке («вправо»)

Page 19: Визуализация графов: left-right алгоритм распознавания планарности

Фундаментальные циклы

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

• по часовой стрелке («вправо»)

• либо против часовой стрелки («влево»)

Page 20: Визуализация графов: left-right алгоритм распознавания планарности

Фундаментальные циклы и сторонырѐбер

Page 21: Визуализация графов: left-right алгоритм распознавания планарности

Точки возврата и нижние точки

Page 22: Визуализация графов: left-right алгоритм распознавания планарности

Точки возврата и нижние точки

Page 23: Визуализация графов: left-right алгоритм распознавания планарности

Развилки фундаментальных циклов

Развилка двух циклов, пересекающихся по рёбрам, — это тройка рёбер

• последнее общее ребро,

• и следующие за ним два ребра, относящиеся к различным циклам.

Page 24: Визуализация графов: left-right алгоритм распознавания планарности

Фундаментальные циклы в укладке планарного графа

• Два цикла, имеющие общие рёбра, ориентированы одинаково т. и т.т., когда один цикл лежит внутри другого.

Page 25: Визуализация графов: left-right алгоритм распознавания планарности

Фундаментальные циклы в укладке планарного графа

• Два цикла, имеющие общие рёбра, ориентированы одинаково т. и т.т., когда один цикл лежит внутри другого.

Page 26: Визуализация графов: left-right алгоритм распознавания планарности

Фундаментальные циклы в укладке планарного графа

• Два цикла, имеющие общие рёбра, ориентированы одинаково т. и т.т., когда один цикл лежит внутри другого.

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

Page 27: Визуализация графов: left-right алгоритм распознавания планарности

Основное свойство сторон рѐбер в планарном графе

Page 28: Визуализация графов: left-right алгоритм распознавания планарности

Основное свойство сторон рѐбер в планарном графе

Page 29: Визуализация графов: left-right алгоритм распознавания планарности

ЛП-разбиение

Page 30: Визуализация графов: left-right алгоритм распознавания планарности

ЛП-разбиение

Page 31: Визуализация графов: left-right алгоритм распознавания планарности

Приведѐнное ЛП-разбиение

Page 32: Визуализация графов: left-right алгоритм распознавания планарности

Приведѐнное ЛП-разбиение

Page 33: Визуализация графов: left-right алгоритм распознавания планарности

Приведѐнное ЛП-разбиение

Page 34: Визуализация графов: left-right алгоритм распознавания планарности

Приведѐнное ЛП-разбиение

Page 35: Визуализация графов: left-right алгоритм распознавания планарности

Приведѐнное ЛП-разбиение

Page 36: Визуализация графов: left-right алгоритм распознавания планарности

Приведѐнное ЛП-разбиение

Page 37: Визуализация графов: left-right алгоритм распознавания планарности

Приведѐнное ЛП-разбиение

Page 38: Визуализация графов: left-right алгоритм распознавания планарности

Продолжение ЛП-разбиения на рѐбра дерева

Page 39: Визуализация графов: left-right алгоритм распознавания планарности

Продолжение ЛП-разбиения на рѐбра дерева

Page 40: Визуализация графов: left-right алгоритм распознавания планарности

Как по ЛП-разбиению строить укладку

Page 41: Визуализация графов: left-right алгоритм распознавания планарности

Как по ЛП-разбиению строить укладку

Page 42: Визуализация графов: left-right алгоритм распознавания планарности

Как по ЛП-разбиению строить укладку

Полный порядок в вершине устроен так:

• сначала входящее ребро

• затем левые исходящие рёбра, окружённые своими левыми и правыми обратными рёбрами

• затем правые исходящие рёбра, окружённые своими левыми и правыми обратными рёбрами

Page 43: Визуализация графов: left-right алгоритм распознавания планарности

Конфликт двух правых рѐбер

Page 44: Визуализация графов: left-right алгоритм распознавания планарности

Конфликт двух правых рѐбер

Page 45: Визуализация графов: left-right алгоритм распознавания планарности

Конфликт двух правых рѐбер

Page 46: Визуализация графов: left-right алгоритм распознавания планарности

Конфликт двух правых рѐбер

Page 47: Визуализация графов: left-right алгоритм распознавания планарности

Конфликт двух правых рѐбер

Page 48: Визуализация графов: left-right алгоритм распознавания планарности

Конфликт двух правых рѐбер

Page 49: Визуализация графов: left-right алгоритм распознавания планарности

Конфликт двух правых рѐбер

Page 50: Визуализация графов: left-right алгоритм распознавания планарности

Конфликт разносторонних рѐбер

Page 51: Визуализация графов: left-right алгоритм распознавания планарности

Конфликт разносторонних рѐбер

Page 52: Визуализация графов: left-right алгоритм распознавания планарности

Конфликт разносторонних рѐбер

Page 53: Визуализация графов: left-right алгоритм распознавания планарности

Конфликт разносторонних рѐбер