Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Typedef struct CVertex2_

Читайте также:
  1. A) Consider the diagram illustrating an approximate administrative structure of a University
  2. Active Horsetail Splay Structure in the Cenozoic Magmatic arc of Iran
  3. Analysing setting and plot structure of the text
  4. ANCIENT TERMS OF UKRAINIAN LAW: ETYMOLOGICAL RECONSTRUCTIONS AND SEMANTIC OBSERVATIONS
  5. Band structure of semiconductor crystals
  6. Basic curricula!- structure
  7. BODY STRUCTURE

{

CAdjVertex *AdjacentVerticesList_Head; // голова списка смежных вершин int i; // номер текущей вершины

} CVertex2;

CVertex2 vertices[NMax];

 

Т.о. в каждой вершине графа будет храниться вектор или список смежных вершин к данной вершине.

Имеем следующие времена выполнения интересующих нас операций

· перечисление всех ребер, инцидентных вершине i -------

· перечисление вершин, инцидентных ребру j -------

· перечисление всех вершин, смежных с вершиной i T=O(N)

· проверка смежности двух вершин T=O(N)

· проверка смежности двух ребер -------

Реберный список с двойными связями (РСДС) (для плоской укладки планарных графов)

Для плоской укладки планарных графов можно использовать более экономные способы их хранения. Плоская укладка планарных графов представляет собой множество точек на плоскости с отрезками, их соединяющими. Отрезки не пересекаются нигде, кроме вершин графа. Информацию о графе можно хранить в виде информации о каждом ребре графа, или в виде реберного узла. На языке С реберный узел может быть представлен следующей структурой

Typedef struct SEdge_

{

Int vertex0, vertex1;

Int edge0,edge1;

Int face0,face1;

}SEdge;

здесь vertex0, vertex1 – номера первой и второй вершины ребра. Порядок вершин задает ориентацию. edge0 – номер первого ребра (в массиве элементов Sedge), выходящего из вершины vertex0, взятого против часовой стрелки (при обходе ребер из вершины vertex0), edge1 – первое ребро, выходящее из вершины vertex1, взятое против часовой стрелки (при обходе ребер из вершины vertex1). face0 – номер грани, находящейся слева от направленного отрезка (vertex0, vertex1), face1 – номер грани, находящейся справа от направленного отрезка (vertex0, vertex1).

Вместо структуры можно использовать массив из шести целых чисел.

На следующем рисунке показан пример графа. Стрелками на ребрах указан порядок вершин в узлах РСДС, соответствующих ребрам. Стрелками между ребрами указаны ссылки на ребра из соответствующих узлов РСДС.

 

Для данного графа РСДС будет представлен следующим массивом улов:

{

{1,2, 5,2, 1,4},

{2,4, 1,7, 1,4},

{1,3, 1,4, 4,2},

{3,4, 6,5, 3,2},

{1,4, 3,2, 2,1},

{5,3, 7,3, 3,4},

{4,5, 4,6, 3,4}

}

Легко видеть, что РСДС позволяет за постоянное время находить следующее против часовой стрелки ребро в множестве ребер, инцидентных одной вершине. Также за постоянное время можно находить следующее ребро для данной грани.

Лекция 8

 

Структуры данных. Графы.


Дата добавления: 2015-10-30; просмотров: 102 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Алгоритмы и алгоритмические языки| Слияние двух деревьев

mybiblioteka.su - 2015-2024 год. (0.009 сек.)