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

Списки смежности

Читайте также:
  1. I.Способы задания графов. Степени вершин, матрицы инцидентности и смежности.
  2. VII. Тюремные списки
  3. Законы смежности и повторяемости Давида Гартли. Мозговые вибрации как физиологическая основа появления идей у человека.
  4. Использование матриц смежности.
  5. Матрица смежности
  6. Матрицы смежности и инцидентности
  7. Примерные списки литературы для чтения детям

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

<номер начальной вершины>: <номера смежных вершин>

Пример: (рис. графов см. выше)

1) a: b c

b: c d f

c: d f

d: f

2) a: b 1 c 10

b: a 1 c 2 d 10

c: a 10 d 3

d: b 10 c 3

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

Type refnode=^node;

refarc=^arc;

node= record {список вершин}

id:integer; {номер вершины}

infnode:integer; {вес}

next:refnode; {указатель на следующую вершину в списке}

arclist:refarc {указатель на список дуг}

end;

arc= record {список дуг определенной вершины}

infarc:integer; {вес}

next:refarc; {указатель на следующую дугу, исходящую из данной вершины}

adj [1]:refnode {указатель на вершину, в которую ведет данная дуга}

end;

В универсальном динамическом представлении используется линейный список. Для любой вершины можно хранить ее вес.

Например, для графа следующего вида

типы данных для представления графов:

Type refnode=^node;

refarc=^arc;

node= record {список вершин}

id:integer; {номер вершины}

infnode:integer; {вес}

next:refnode; {указатель на следующую вершину в списке}

arclist:refarc {указатель на список дуг}

end;

arc= record {список дуг определенной вершины}

infarc:integer; {вес}

next:refarc; {указатель на следующую дугу, исходящую из данной вершины}

adj:refnode {указатель на вершину, в которую ведет данная дуга}

end;

получим следующее представление:

 

Задание. Нарисовать списковое представление графа (см. задание 2 раздела «Матрица инцидентности».

Рассмотрим основные процедуры работы с графами.


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


Читайте в этой же книге: Способы представления графов в памяти | Обход (поиск) в ширину | Задача нахождения кратчайшего пути. Алгоритм Дейкстры | Топологическая сортировка | Каркас. Алгоритм Прима | Программа поиска всевозможных путей в графе | Программа поиска минимального пути в графе между заданными вершинами |
<== предыдущая страница | следующая страница ==>
Матрица смежности| Просмотр графа

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