Главная » Просмотр файлов » В.А. Емеличев, О.И. Мельников, В.И. Сарванов, Р.И. Тышкевич - Лекции по теории графов

В.А. Емеличев, О.И. Мельников, В.И. Сарванов, Р.И. Тышкевич - Лекции по теории графов (1083735), страница 59

Файл №1083735 В.А. Емеличев, О.И. Мельников, В.И. Сарванов, Р.И. Тышкевич - Лекции по теории графов (В.А. Емеличев, О.И. Мельников, В.И. Сарванов, Р.И. Тышкевич - Лекции по теории графов) 59 страницаВ.А. Емеличев, О.И. Мельников, В.И. Сарванов, Р.И. Тышкевич - Лекции по теории графов (1083735) страница 592019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Один нз основных подходов к определению пошггия «трудоемкость алгоритма» ориентируется именно на такого рода наихудший случай. Определим трудоемкость (или слоя«ность) алгоритма решения данной задачи как функцию /, ставящую в соответствие каждому натуральному числу и время работы 1(п) алгоритма в худшем случае па входах длины и. Иначе говоря, 1'(и) — максимальное время работы алгоритма по всем входам данной задачи длины п. Анализ эффективности каждого из представленных в последующих параграфах алгоритмов заключается в выяснении вопроса: как быстро растет функция 1'(и) с ростом пу При ответе на этот вопрос обычно используют О-символику.

Будем говорить, что неотрицательная функция 1'(и) не превосходит по порядку функцию д(п), если существует такая константа с, что Яп) < сд(п) для всех и ~ О; при этом будем писать ((п)=0(у(п)). Часто встречающемуся далее выражению «трудоемкость (сложность) алгоритма есть (равна, составляет) 0(д(п))» придается именно этот смысл.

В частности, трудоемкость 0(1) означает, что время работы соответствующего алгоритма 21 в. м нмелкче» и яр. 321 не зависит от длины входа. Иногда вместо «трудоемкость алгоритма есть 0(у(п))» будем говорить «алгоритм решает задачу за время 0(а(н))». Ллгоритм с трудоемкостью 0(п), где п — длина входа, называют линейным. Линейный алгоритм ограниченное (константой) число раз просматривает входную информацию и для подавляющого большинства «естественных» задач является пеулучшаемым (по порядку) в смысле трудоемкости.

Поэтому отыскание линейного алгоритма для некоторой задачи часто является своего рода «последней точкой» в ое алгоритмическом решопии. Ллгорнтм, слоя«ность которого равна 0(п'), где с— константа, называется полиномиальным. Особая роль полнномиальпых алгоритмов выяснится в З 78.

Здесь заметим, что все задачи, считающиеся трудными для алгоритмического решения, пе имеют в настоящее время полиномнальных алгоритмов. Более того, понятие «полипомиальный алгоритм» является сейчас наиболее распространенной формализацией интуитивного представления об эффективном алгоритме. Эта формализация, как и любая другая, пе свободна от недостатков. Так, например, едва ли кто решится назвать эффективным алгоритм, время работы которого на входе длины п составляет и'«». Тем пе менее отмеченный недостаток пе столь серьезен, как зто может показаться на первый взгляд.

На практике дело обстоит таким образом, что появление полиномиального алгоритма решения какой-либо задачи приводит в конце копцов к алгоритму, трудоемкость которого оценивается сверху полиномом небольшой степени. В большинстве случаев зта степень не превосходит трех и оценка, как правило, имеет один из следующих видов: 0(п»), 0(п'), 0(нУп), 0(п )сап), 0(и). Представленные в последующих параграфах алгоритмы используют две важные структуры данных.

Это— списки, в которых удаление элементов и включение новых элементов производится специальным образом. Список Я назовем стеком, если удаление и добавление элементов производится с одного конца. Выполнение этих операций осуществляется с помощью переменной адреса (указателя) первой ячейки, занятой последним элементом списка Я. Если каждый элемент занимает г» ячеек, то для удаления элемента пз стека достаточно «передвинуть указатель», т.

е. выполнить одну элементарную операцию ~:=2 — «(. Включение какого-либо элемента а в стен Я вЂ” это выполнение двух элементарных 322 операций: ~:=~+3, о'(«):-а. Стек Я пуст, если ~<«, где ( — адрес первой ячейки Ю. Пусть, например, каждый элемент стека Я =(зп гг, гг, з«, з«) занимает одну ячейку. Рассмотрим последовательность операций (», ~, ап зг, », з»), где «+» означает удаление элемента из Я, а «г,» — добавление элемента з,к Я.

Тогда Я изменяется следующим образом: (зп гг, гг, г«), »=4; (гн зг, з»), ~ 3; (зп зг, зг, гт)»=4; (зп гг, зъ гт, гв), « = 5; (зп зг, зз, з»Л з = 4; (зн зг, зъ гп зг), » = 5. Список ч называется очередью, если все удаления элементов из этого списка производятся с одного конца ф а добавления — с другого. Эти операции выполняются с помощью двух указателей» и й Переменная» имеет тот же смысл, что и в предыдущем случае, а переменная 1— это адрес первой ячейки очереди Ч. Удаление элемента заключается в выполнении операции »:= ( + д, а добавление производится точно так же, как и в случае стека. Пусть, например, ч =(дн ог, о», о«, д») и последовательность производимых над Ч операций имеет вид (г, д«, », ", оп в).

Тогда реаультаты выполнения этих операций выглядят так: (дг, д», д«, д«), ( = 2, « = 5; (ог, дг, я«, д«), »=2, «=6; (д», д«, д«, д«), »=3, «=6; (д«, д«, д«), 4, «6; (7«, д«, д«, ут), (=4, «=7; (д», д«, дт), »=5, 8=7. Описывая алгоритмы, мы, как правило, не указываем в явном виде механизм изменения стека или очереди.

Вместо этого просто пишем «занести х в стек Я (в очередь ~)» или «исключить х из стека Я (из очереди Ч)». Очевидно, что каждая из перечисленных операций выполняется за время 0(1). Будем считать, наконец, что вершины графа 6, к которому применяется алгоритм, занумерованы числами 1, 2, ..., ! «!. Это — имена вершин, и в процессе работы алгоритма они не меняются, хотя при этом вершинам могут присваиваться н другие, дополнительные номера (метки). й 73.

Поиск в глубину В этом параграфе рассматривается один из методов обхода всех вершин и ребер графа. Этот метод, именуемый поиском е глубину (сокращенно ПГ), послужил основой для разработки ряда быстрых алгоритмов на графах. Один из таких алгоритмов — алгоритм выделения двусвязных компонент графа — приводится в з 74. 21* 323 Дадим вначале некоторые определения. Ориентированный граф Р=((т, А) назовем ориентированным деревом с корнем т ы '»т, если каждая его вершина достижима из т и основание графа Р— граф Р, — является деревом. В тех случаях, когда недоразумение исключено, ориентированное дерево с корнем г будем называть просто деревом.

Пусть 6 — неориоптирова>п>ый связный граф. В процессе поиска в глубину вершинам графа С присванваются номера (11Г-номера), а его ребра помечаются. В начале ребра не помечены, вершины не имеют ПГ-номеров. Начинаем с произвольной вершины и». Присваиваем ей ПГ-номер ПГ(и«) = 1 и выбираем произвольное ребро и»и>. Ребро изю помечается как «прямое», а вершина и> получает (из из) ПГ-номер ПГ(и>)= 2.

После этого переходим в вершину и>. Пусть в результате выполнения нескольких шагов этого процесса пришли в вершину х, и пусть >« — последний присвоенный ПГ-номер. Далее действуем в зависимости от ситуации следующим образом.

1. Имеется непомеченное ребро ху. Если у вершины у уже есть ПГ-номер, то ребро ху помечаем как «обратное» и продолжаем поиск непомеченного ребра, инцидептного вершине х. Если же вершина у ПГ-номера не имеет, то полагаем ПГ(у)= й+ 1, ребро ху помечаем как «прямое» и переходим в вершину у. Вершина у считается получившей свой ПГ-номер из вершины х. На следующем шаге будем просматривать ребра, инцидентные вершине у. 2. Все ребра, инцидентныо вершине х, помечены. В этом случае возвращаемся в вершину, из которой х получила свой ПГ-номер. Процесс закончится, когда все ребра будут помечены и произойдет возвращение в вершину ио. Описанный процесс можно реализовать так, чтобы время работы соответствующего алгоритма составляло о(Иа+ !Р~). Такой алгоритм (алгоритм,М>) мы сейчас рассмотрим.

Пусть граф 6 задан списками смежности, т. е. ˄— список вершин, инцидентных вершине и, и из — исходная вершина, с которой начинается поиск. В процессе работы алгоритма каждая вершина графа ровно один раз включается в список ~ и исключается из него. Вершина включается в этот список сразу после получения ПГ-номера, и исключается, как только произойдет возвращение нз этой вершины. Включение и исключение вершин производятся всегда с конца списка, т.

е. (> — стек. Результат 324 работы алгоритма — четыре списка ПГ, Г, Т и В: ПГ(п) — ПГ-номер вершины щ Е(и) — имя вершины, из которой вершина и получила свой ПГ-номер; Т и В— соответственпо списки ориентированных «прямых» и «обратных» ребер графа 6. Эти ребра получают ориентациго в процессе работы алгоритма,Мь Именно, если ребро ху помечается из вершины х как «прямое», то в Т заносится дуга (х, у), а если — как «обратное», то эта дуга заносится в В. Алгоритм .»»1 поиска в глубину в пеориентировапном свяаном графе. 1.

ПГ(п»):= 1, 0(1):= и«, Р(из):= О, Т:= 8, В:= З', й:= 1, р:= 1 [й — последний присвоенный ПГ-номер, р — указатель конца стека 0, т. е. (»(р) — имя последней вершины стена Я. 2. и:= 0(р) [и — исследуемая вершина). 3. Просматривая список Л'„, найти такую вершину и~, что ребро ии не помечено, и перейти к п. 4.

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

Список файлов лекций

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