Главная » Просмотр файлов » Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.)

Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.) (1123758), страница 125

Файл №1123758 Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.) (Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.)) 125 страницаТ. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.) (1123758) страница 1252019-05-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 125)

главу 16). В главах 24 и 25 рассматривается задача вычисления кратчайшего пути межау вершинами, когда каждому ребру присвоена некоторая длина или вес. Глава 24 посвящена вычислению кратчайшего пути из одной вершины во все остальные, а в главе 25 рассматривается поиск кратчайших путей для всех пар вершин. И наконец, в главе 26 рассматривается задача о максимальном потоке материала в сети (ориентированном графе) с определенным источником вещества, стоком и пропускной способностью каждого ребра. К этой общей задаче сводятся многие другие, так что хороший алгоритм ее решения может использоваться во многих приложениях. При описании времени работы алгоритма над данным графом С = (К Е) мы обычно определяем размер входного графа в терминах количества его вершин [1:[ и количества ребер [Е[ графа, т.е.

размер входных данных описывается двумя, а не одним параметром. Для удобства и краткости в асимптотических обозначениях (таких, как О и 9-обозначения), и только в них, символ У будет означать [1'[, а символ Š— [Е[, т.е. когда мы будем говорить "время работы алгоритма равно О (Ъ'Е)", то это означает "время работы алгоритма равно О ([Ъ'[ [Е[)". Такое соглашение позволяет сделать формулы для времени работы более удобочитаемыми без риска неоднозначности. Еще одно соглашение принято для псевдокода. Мы обозначаем множество вершин графа С как 1~ [С), а множество ребер — как Е [С1, т.е.

в псевдокоде множества вершин и ребер рассматриваются как атрибуты графа. ГЛАВА 22 Элементарные алгоритмы для работы с графами В этой главе рассматриваются методы представления графов, а также обход графа. Под обходом графа понимается систематическое перемещение по ребрам графа, при котором посещаются все его вершины. Алгоритм обхода графа может многое сказать о его структуре, поэтому многие другие алгоритмы начинают свою работу с получения информации о струкгуре путем обхода графа. Многие алгоритмы для работы с графами организованы как простое усовершенствование базовых алгоритмов обхода графа. В разделе 22.1 рассматриваются два наиболее распространенных способа представления графов — списки смежных вершин и матрица смежности.

В разделе 22.2 представлен простой алгоритм обхода графа, который называется поиском в ширину, и соответствующее этому алгоритму дерево. В разделе 22.3 представлен алгоритм поиска в глубину и доказываются некоторые свойства этого вида обхода графа. В разделе 22.4 вы познакомитесь с первым реальным применением поиска в глубину — топологической сортировкой ориентированного ациклического графа. Еще одно применение поиска в глубину — поиск сильно связных компонентов графа — приводится в разделе 22.5. 22.1 Представление графов Имеется два стандартных способа представления графа С = (К, Е): как набора списков смежных вершин или как матрицы смежности. Оба способа представления применимы как для ориентированных, так и для неориентированных Часть Ч1.

Алгоритмы для работы с графами 610 2 3 4 5 1 1 0 О 3~0 ~ 0: О, 4~0 ~ ! 0 31!О! -+ 2 1 -~4 5 'О~~1 2 ~ -~Д ~~~~ 5 ~ -1~3 33 + 4'агг'! 'Я:.: ——,,== ;,'==-.' '" . Д-~.~ Я-Я"' »(2Я Риа. 22.1. Два лрааатаалавиа ааорааатарввааасга 1рафа 3 4 4 6 !10 1 0 1 0 0,,' 2,'0 0 0 0 ! О' 3~0 О О О 4~0 ~ О 0 О О~ 5'о О 0 О~о 0 0 О 0 3 ~,-~ 4 б ~ -2О 5.Я б ! -' (6 ~"'3 —.1 43 о — -~2 ф О 42 — 5 (01 Рис. 22.2. Два представления ориентированного графа графов. Обычно более предпочтительно представление с помощью списков смежности, поскольку оно обеспечивает компактное представление разреженных (зрагае) графов, т.е. таких, для которых 1Е~ гораздо меньше 1У1~.

Большинство алгоритмов, представленных в данной книге, предполагают, что входной граф представлен именно в виде списка смежности. Представление при помощи матрицы смежности предпочтительнее в случае илотных (41епзе) графов, т.е. когда значение 1Е~ близко к 1Ц, или когда нам надо иметь возможность быстро определить, имеется ли ребро, соединяющие две данные вершины. Например, два алгоритма поиска кратчайшего пути для всех пар вершин, представленные в главе 25, используют представление графов именно в виде матриц смежности. Представление графа С = (К Е) в виде списка смяжкосвви (аб)асепсу-1151 гергеаеп1абоп) использует массив А46 из Щ списков, по одному для каждой вершины из У.

Для каждой вершины и Е 7" список А46 1и) содержит все вершины е, такие что (34,42) Е Е, т.е. Аа(3 134) состоит из всех вершин, смежных с и в графе С (список может содержать и не сами вершины, а указатели на них). Вершины в каждом списке обычно хранятся в произвольном порядке. На рис. 22.1б показано такое представление графа, изображенного на рис. 22.1а (на рис. 22.10 представлена его матрица смежности). Аналогично, на рис.

22.2б и рис. 22.20 показаны список и матрица смежности ориентированного графа, изображенного на рис. 22.2а. Глава 22. Элементарные алгоритмы для работы с графами 611 Если С вЂ” ориентированный граф, то сумма длин всех списков смежности равна [Е], поскольку ребру (и,и) однозначно соответствует элемент о в списке Аф [и]. Если С вЂ” неориентированный граф, то сумма длин всех списков смежности равна 2 [Е[, поскольку ребро (и, и), будучи неориентированным, появляется в списке Аф [и] как и, и в списке Аф [и] — как и. Как для ориентированных, так и для неориентированных графов представление в виде списков требует объем памяти, равный 9 (У + Е).

Списки смежности легко адаптируются для представления взвешенных графов (~не1йлгес$ агарь), т.е. графов, с каждым ребром которых связан определенный вес (юе(ййг)„обычно определяемый весовой функцией (юе1я1п Гипсбоп) ш: Е -+ К. Например, пусть С = (1г, Е) — взвешенный граф с весовой функцией и. Вес и (и, и) ребра (и, и) е Е просто хранится вместе с вершиной и в списке смежности и. Представление с помощью списков смежности достаточно гибко в том смысле, что легко адаптируется для поддержки многих других вариантов графов.

Потенциальный недостаток представления при помощи списков смежности заключается в том, что при этом нет более быстрого способа определить, имеется ли данное ребро (и, и) в графе, чем поиск и в списке А4 [и]. Этот недостаток можно устранить ценой использования асимптотически большего количества памяти и представления графа с помощью матрицы смежности (в упражнении 22.1-8 предлагается вариант списков смежности, позволяющий ускорить поиск ребер). Представление графа С = (1Г, Е) с помощью матрицы смежности (ао1аселсу-ша1пх гергезепгабол) предполагает, что вершины перенумерованы в некотором порядке числами 1, 2,..., [У[.

В таком случае представление графа С с использованием матрицы смежности представляет собой матрицу А = (а; ) размером [Ц х Щ, такую что 1 если (1,1) б Е, а;1 —— 0 в противном случае. На рис. 22.1в и 22.2в показаны представления с использованием матрицы смежности неориентированного и ориентированного графов, показанных на рис. 22.1а и 22.2а соответственно. Матрица смежности графа требует объем памяти, равный 9 [Уз), независимо от количества ребер графа. Обратите внимание на симметричность матрицы смежности на рис. 22.1в относительно главной диагонали. Определим транспонированную (ггапзрозе) матрицу А = (аб) как матрицу А = (аЦ, у которой ат = а;. Поскольку граф неориентирован, (и, и) и (и, и) представляют одно и то же ребро, так что матрица смежности неориентированного графа совпадает с транспонированной матрицей смежности, т.е.

А = А~. В ряде приложений это свойство позволяет хранить только элементы матрицы, находящиеся на главной диагонали и выше нее, что позволяет почти в два раза сократить необходимое количество памяти. Часть Ч!. Алгоритмы для работы с графами 612 Так же, как и представление со списками смежности, представление с матрицами смежности можно использовать для взвешенных графов. Например, если С = (У,Е) — взвешенный граф с весовой функцией ю, то вес ю (и, и) ребра (и, и) е Е хранится в записи в строке и и столбце и матрицы смежности. Если ребро не существует, то в соответствующем элементе матрицы хранится значение н|г„хотя для многих приложений удобнее использовать некоторое значение, такое как О или оо. Хотя список смежности асимптотически, как минимум, столь же эффективен в плане требуемой памяти, как и матрица смежности, простота последней делает ее предпочтительной при работе с небольшими графами.

Кроме того, в случае невзвешенных графов для представления одного ребра достаточно одного бита, что позволяет существенно сэкономить необходимую для представления память. Упражнения 22.1-1. Имеется представление ориентированного графа с использованием списков смежности. Как долго будут вычисляться исходящие степени всех вершин графа? А входящие степени? 22.1-2. Имеется представление с использованием списков смежности полного бинарного дерева с 7 вершинами. Приведите его представление с использованием матрицы смежности (считаем, что вершины пронумерованы от 1 до 7, как в бинарной пирамиде).

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6430
Авторов
на СтудИзбе
306
Средний доход
с одного платного файла
Обучение Подробнее