2. Представление графа списком инцидентности. Алгоритм обхода графа в глубину
2. Представление графа списком инцидентности. Алгоритм обхода графа в глубину
Для реализации графа в виде списка инцидентности можно использовать следующий тип:
Type List = ^S;
S = record;
inf : Byte;
next : List;
end;
Тогда граф задается следующим образом:
Var Gr : array[1..n] of List;
Теперь обратимся к процедуре обхода графа. Это вспомогательный алгоритм, который позволяет просмотреть все вершины графа, проанализировать все информационные поля. Если рассматривать обход графа в глубину, то существуют два типа алгоритмов: рекурсивный и нерекурсивный.
При рекурсивном алгоритме обхода графа в глубину мы берем произвольную вершину и, отыскиваем произвольную непросмотренную (новую) вершину v, смежную с ней. Затем принимаем вершину v за неновую и отыскиваем любую смежную с ней новую вершину. Если же у какой-либо вершины нет более новых непросмотренных вершин, то полагаем эту вершину использованной и возвращаемся на уровень выше в ту вершину, из которой попали в нашу использованную вершину. Обход продолжается таким образом до тех пор, пока в графе не останется новых непросмотренных вершин.
На языке Pascal процедура обхода в глубину будет выглядеть следующим образом:
Procedure Obhod(gr : Graph; k : Byte);
Var g : Graph; l : List;
Begin
nov[k] := false;
g := gr;
While g^.inf <> k do
g := g^.next;
l := g^.smeg;
While l <> nil do begin
If nov[l^.inf] then Obhod(gr, l^.inf);
l := l^.next;
End;
End;
Примечание
В данной процедуре при описании типа Graph имелось в виду описание графа списком списков. Массив nov[i] – специальный массив, i-ый элемент которого равен True, если i-ая вершина не просмотрена, и False – в противном случае.
Также часто используется нерекурсивный алгоритм обхода. В этом случае рекурсия заменяется на стек. Как только вершина просмотрена, она помещается в стек, а использованной она становится, когда больше нет новых вершин, смежных с ней.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Другие варианты обхода ограничений
Другие варианты обхода ограничений В этом разделе я подскажу вам другие варианты обхода ограничений файлообменных сервисов.Первый из них заключается в использовании ресурса filepost.ru. Бесплатно скачивать файлы не получится, но вот сэкономить на покупке премиум-аккаунта
17.8 Различия между новостями и рассылочным списком
17.8 Различия между новостями и рассылочным списком Приложения для сетевых новостей более эффективны, чем рассылочные списки. Новости хранятся на центральном сервере и доступны для многих пользователей. Несколько пользователей могут одновременно читать новости из
Связь таблицы Access 2007 со списком SharePoint
Связь таблицы Access 2007 со списком SharePoint В предыдущих двух упражнениях вы копировали данные так, что отдельные копии этих данных хранились и в базе данных Access 2007, и на узле SharePoint. Однако синхронизация этих двух наборов данных не выполнялась. Если вы не хотите хранить две
1. Понятие графа. Способы представления графа
1. Понятие графа. Способы представления графа Граф – пара G = (V,E), где V – множество объектов произвольной природы, называемых вершинами, а Е – семейство пар ei = (vil, vi2), vijOV, называемых ребрами. В общем случае множество V и (или) семейство Е могут содержать бесконечное число
3. Представление графа списком списков. Алгоритм обхода графа в ширину
3. Представление графа списком списков. Алгоритм обхода графа в ширину Граф можно определить с помощью списка списков следующим образом: Type List = ^Tlist; Tlist = record inf : Byte; next : List; end; Graph = ^TGpaph; TGpaph = record inf : Byte; smeg : List; next : Graph; end; При обходе графа в ширину мы выбираем произвольную
Параметры обхода и облета
Параметры обхода и облета Чтобы управлять установками параметров обхода и облета, следует использовать диалоговое окно Walk and Fly (рис. 20.5), которое загружается из падающего меню View ? Walk and Fly ? Walk and Fly Settings… или щелчком на пиктограмме Walk and Fly Settings… на плавающей панели
9.4.1. Реализация графа в виде матрицы смежности
9.4.1. Реализация графа в виде матрицы смежности Нижеприведенный пример основан на двух предыдущих. В листинге 9.3 неориентированный граф реализован в виде матрицы смежности с помощью класса ZArray (см. раздел 8.1.26). Это нужно для того, чтобы новые элементы по умолчанию получали
Работа со списком задач
Работа со списком задач Как уже отмечалось выше, по умолчанию список задач проекта отображается в левой части окна (см. рис. 8.1). Для выполнения операций со списком задач в программе Project 2007 предназначены команды меню Проект.Чтобы отсортировать содержимое списка задач,
Параметры обхода и облета
Параметры обхода и облета Чтобы управлять установками параметров обхода и облета, следует использовать диалоговое окно Walk and Fly (рис. 20.4), которое загружается из падающего меню View ? Walk and Fly? Walk and Fly Settings…или щелчком на пиктограмме Walk and FlySettings…на плавающей панели
Обход в ширину, симметричный обход и обход в глубину
Обход в ширину, симметричный обход и обход в глубину Прежде чем приступить к описанию остальных трех алгоритмов обхода, которые взаимосвязаны, приведем несколько иное определение бинарного дерева. Бинарное дерево состоит из корневого узла, содержащего указатели на
Функции работы со списком аргументов
Функции работы со списком аргументов Функция Краткое описание va_arg выбрать аргумент из списка va_end переустановить указатель va_start установить указатель на начало списка аргументов Эти макроопределения дают возможность получить доступ к аргументам функции, когда
Параметры обхода и облета
Параметры обхода и облета Чтобы управлять установками параметров обхода и облета, следует использовать диалоговое окно Walk and Fly (рис. 22.12), которое загружается из падающего меню View ? Walk and Fly ? Walk and Fly Settings… или щелчком на пиктограмме Walk and Fly Settings… на плавающей панели
11.2. Стратегия поиска в глубину
11.2. Стратегия поиска в глубину Существует много различных подходов к проблеме поиска решающего пути для задач, сформулированных в терминах пространства состояний. Основные две стратегии поиска — это поиск в глубину и поиск в ширину. В настоящем разделе мы реализуем
23. Понятие графа. Способы представления графа
23. Понятие графа. Способы представления графа Граф – пара G = (V,E), где V – множество объектов произвольной природы, называемых вершинами, а E – семейство пар ei = (vil, vi2), vijOV, называемых ребрами. В общем случае множество V и (или) семейство E могут содержать бесконечное число
24. Различные представления графа
24. Различные представления графа Для реализации графа в виде списка инцидентности можно использовать следующий тип:Type List = ^S;S = record;inf: Byte;next: List;end;Тогда граф задается следующим образом:Var Gr: array[1..n] of List;Теперь обратимся к процедуре обхода графа. Это вспомогательный
Поверхностное мышление: как цифровые СМИиК снижают глубину обработки информации
Поверхностное мышление: как цифровые СМИиК снижают глубину обработки информации Чем более поверхностно я вникаю в суть поступившей информации, тем меньше синапсов будет активизировано в моем головном мозге, следовательно, и запомню я ее плохо. Понимание этого крайне