Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Лекция 3. Алгоритмы поиска в глубину и поиска в ширину и их сложность

Лекция 3. Алгоритмы поиска в глубину и поиска в ширину и их сложность (Лекции 2016 года)

PDF-файл Лекция 3. Алгоритмы поиска в глубину и поиска в ширину и их сложность (Лекции 2016 года) Методы дискретной оптимизации (53954): Лекции - 8 семестрЛекция 3. Алгоритмы поиска в глубину и поиска в ширину и их сложность (Лекции 2016 года) - PDF (53954) - СтудИзба2019-09-19СтудИзба

Описание файла

Файл "Лекция 3. Алгоритмы поиска в глубину и поиска в ширину и их сложность" внутри архива находится в папке "Лекции 2016 года". PDF-файл из архива "Лекции 2016 года", который расположен в категории "". Всё это находится в предмете "методы дискретной оптимизации" из 8 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

Методы дискретной оптимизацииАлгоритмы поиска в глубину и поиска вширину и их сложность1 / 20ВведениеПоиск в графе сводится к обходу вершин графа в той или инойпоследовательности. В зависимости от цели поиска, структуры графаалгоритмы обхода могут быть различными. Например, поиск данных попользователям социальной сети предполагает различные алгоритмычтения при поиске конкретного пользователя или при наборе статистикипо предпочтениям конкретных групп.

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

Сточки зрения экономии объема памяти представление в виде матрицысмежности целесообразно в случае плотного графа, т.е. при условии, чтоотношение близко |E|/|V |2 к 1. Другой метод хранения графа –представления его в виде списка смежности. Список смежности графа G,т.е. Adj(G) – набор последовательностей вида {v|(u, v) ∈ E}∀u ∈ V . Такимобразом, список смежности состоит из |V | последовательностей, в каждойиз которой |E| элементов. Для орграфа длина списка смежности равна|E|, для неориентированного – 2|E|. В обоих случаях необходимый дляхранения объем памяти равен O(|V | + |E|). В случае матрицы смежностинеобходимый объем равен O(|V |2 ).3 / 20Обозначения1Атрибуты вершин и ребер обозначаются после точки, следующей заименем данной вершины (ребра).2Множество вершин, смежных с u, обозначается как Adj[u]. Такимобразом, списки смежности для данного графа – наборпоследовательностей Adj[u] для всех u из множества V .Задача обхода графа:Обойти все вершины графа G исходя из s ∈ V .4 / 20Поиск в ширинуСмысл термина: в данном алгоритме обход происходит в соответствии сочередностью в списке Adj[u], где в качестве начальной вершины uрассматривается s, а затем – первая в построенном списке очереди.

Длянаиболее простого описания алгоритма каждой вершине u из множестваV задаются атрибуты: цвет, расстояние от исходной вершины s, имяпредшественника, т.е. предыдущей вершины. Принцип работы алгоритмасостоит в построении очереди Q. На каждом шаге первая стоящая вочереди вершина окрашивается в красный цвет и удаляется из очереди, вкоторую по определенному правилу становятся другие вершины. Такимобразом, каждая вершина может быть окрашена в три цвета: зеленый,желтый и красный.

В красный цвет окрашивается вершина,просмотренная и удаленная из очереди. В зеленый цвет окрашенывершины, которые не поставлены в очередь. Желтые вершины – это те,которые находятся в очереди.5 / 20Поиск в ширину. Описание алгоритма1∀u ∈ V \{s} : u.color = green; u.d = ∞; u.π = ∅2s.color = yellow; s.d = 0; s.π = ∅3Q=∅4s→Q5While Q 6= ∅6Положить u: первая в списке Q7Для каждой вершины v ∈ Adj[u]8v.color = green ⇒ v.color = yellow; v.d = u.d + 1; v.π = u9v→Q10u.color = red6 / 20ПримерB=abcdefa010110b101011c010001d100000e f1 0 1 1 0 1  ; List : 0 0 0 11 0a → b, d, eb → a, c, e, fc → b, fd→ae → a, b, ff → b, c, eДля начальной вершины b последовательность шагов алгоритма:1.

Желтая вершинаu.color = yellow, v.color = green, v ∈ V \{u}, u.d = 0, Q = {b}v.d = ∞, v ∈ VAdj[u] = {a, c, e, f } ⇒a.color = yellow; a.d = 0 + 1 = 1; a.π = u = bc.color = yellow; c.d = 0 + 1 = 1; c.π = u = be.color = yellow; e.d = 0 + 1 = 1; e.π = u = bf.color = yellow; f.d = 0 + 1 = 1; f.π = u = bQ = {a, c, e, f }b.color = red7 / 20Пример2.u=aAdj[u] = {b, d, e} ⇒d.color = yellowd.d = a.d + 1 = 2d.π = aQ = {c, e, f, d}a.color = red3.u=cAdj[u] = {b, f } ⇒f.color = yellowf.d = c.d + 1 = 2f.π = cQ = {e, f, d}c.color = red8 / 20Пример4.u=eAdj[u] = {a, b, f } ⇒Q = {f, d}e.color = red5.u=fAdj[u] = {b, c, e} ⇒Q = {d}f.color = red9 / 20ПримерНа каждом шаге работы алгоритма к построенному дереву добавляетсявершина, в результате работы алгоритма строится дерево поиска:a b c d e fa → b, d a 0 1 0 1 0 0  b → a, c, e b 1 0 1 0 1 0  c→bB =  c 0 1 0 0 0 1  ; List :  d→a ; d 1 0 0 0 0 0  e→b e 0 1 0 0 0 0 f →cf 0 0 1 0 0 0a b c d e fv.d1 0 1 2 1 2 Pr ev(v) b ∅ b a b c10 / 20Анализ алгоритмаПокажем, что построенное дерево обладает свойством: для любого v ∈ Vвеличина v.d = δ(s, v), где v.d = δ(s, v) – длина кратчайшего из s в v пути.Под длиной пути из s в v понимается количество ребер при переходе.Лемма 1Для очереди Q = {vi , i = 1, 2, ..., r}, полученной на любом шаге алгоритма,справедливоvr .d ≤ v1 .d + 1,vi .d ≤ vi+1 .d, i = 1, 2, ..., r − 1Доказательство.

Пусть V = {v1 , v2 , ..., vn }. Рассуждения по индукции.Если очередь получена из вершин первого списка смежности, то послеисключения вершины v1 = s из очереди все вершины, смежные с ней,получают значение v1 .d = 1 и далее в роли вершины u выступаетследующая по списку вершина. Предположим, после изменения атрибутоввсех вершин, смежных с u, имеется очередь, первая вершина исключаетсяи рассматриваются атрибуты смежных с ней по горизонтальному списку.11 / 20Анализ алгоритмаПродолжение доказательства Леммы.

По индуктивномупредположению те вершины v1 , которые не изменили атрибуты,поскольку были в очереди ранее, удовлетворяют неравенствамu.d + 1 ≤ vi .d ≤ vi+1 .d, новые вершины, т.е. смежные с u и меняющиеатрибуты, получают значение vi .d = u.d + 1 и добавляются в конецочереди с атрибутом vi .d = u.d + 1. Это значит, что новые добавленныевершины соответствуют неравенствам леммы, что завершаетиндуктивный переход. Лемма доказана.Замечание. Если вершина vi вносится в очередь до вершины vj , тоvi .d ≤ vj .d.12 / 20Анализ алгоритмаТеорема 1Для любой начальной вершины в результате работы алгоритмасправедливо равенство v.d = δ(s, v), v ∈ V .Доказательство.

Предположим противное: для некоторой вершины vзначение атрибута d не равно кратчайшему пути от s к ней. Пустьвыбранная вершина такова, что для нее величина δ(s, v) минимальнасреди тех вершин, для которых значение d больше δ(s, v). Пусть u –вершина, непосредственно предшествующая v на кратчайшем от s до vпути, т.е.

δ(s, v) = δ(s, u) + 1. Это в частности означает, что v находится всписке смежности u. По определению v величина δ(s, u) = u.d и крометого v.d > δ(s, u) + 1 = u.d + 1. В момент удаления вершины u из очередивершина v может быть одного из трех цветов.13 / 20Анализ алгоритмаПродолжение доказательства Теоремы. Если по удалении u вершинаv зеленая, то сразу после этого полагается v.d = u.d + 1, что противоречитпредположению.

Если вершина v на момент удаления u красная, то этопротиворечит замечанию к лемме 1. Если вершина v на момент удаленияu желтая, то она приобрела такой цвет до момента удаления u, значитv.d = w.d + 1, где w – вершина, удаленная из очереди до удаления u,откуда v.d = w.d + 1 ≤ u.d + 1, что тоже невозможно. Таким образом,противоречия, полученные во всех случаях, доказывают равенствоv.d = δ(s, v), v ∈ V .

Аналогично показывается, что процедура алгоритмапроходит все вершины графа, в противном случае для некоторой вершиныv будет ∞ = v.d > δ(s, v). Теорема доказана.Замечание. Кратчайший путь из s в v, построенный алгоритмом,удовлетворяет равенству v.d = (v.π).d + 1.14 / 20Деревья поиска в ширинуВ процессе работы алгоритма строится граф предшествованияGπ = (Vπ , Eπ ), где Vπ = {v ∈ V |v.π 6= ∅} ∪ {s}, Eπ = {(v.π, v)|v ∈ V \{s}}.Теорема 2Процедура алгоритма поиска в ширину строит подграф предшествования,который является деревом поиска в ширину.Доказательство.

Необходимо показать, что для любой вершины v ∈ Vпуть из s в v является единственным простым путем. Это действительнотак, поскольку по построению графа предшествования алгоритмом поискав ширину имеется равенство |Eπ | = |Vπ | − 1 и указанный граф связен.Теорема доказана.Сложность алгоритма. При разумной организации метода времяисполнения O(n + m).15 / 20Поиск в глубинуОбщие соображения: стратегия обхода в глубину состоит в том, чтобыисследовать все ребра, выходящие из вершины, открытой последней ипроизвести возврат к вершине, когда не остается неисследованных ребер.В момент открытия вершины v, т.е.

когда ее цвет становится желтым,атрибут v.π устанавливается равным u. Подграф предшествования можетсостоять из нескольких деревьев, т.е. быть лесом. В отличие от поиска вширину у каждой вершины имеется атрибут v.f в паре с v.d. При этоматрибут v.f означает время завершения работы с v. В отличие от поиска вширину поиск в глубину работает не с очередью, а со стеком S. Пусть s –корень, т.е. начальная вершина поиска, сразу помещается в стек,полагается u = s – вершина стека. Далее возможны случаи:1Среди вершин, смежных с u, есть зеленая вершина v.

Тогда vзаписывается в стек, окрашивается в желтый цвет.2Все вершины, смежные с u, желтые. Вершина u окрашиваетсякрасным и удаляется из стека.3Стек пуст. Вершины все пройдены.16 / 20Алгоритм поиска в глубинуДля каждой вершины u ∈ V : u.color = white; u.π = ∅; time = 0. S = {s}Для каждой вершины u ∈ V :if u.color = white ⇒ time = time + 1; u.d = time; u.color = yellow.S = S ∪ {u}. Очередность перебора вершин u в соответствии со стеком S.Для каждой v ∈ Adj[u]: if v.color = white ⇒ v.pi = u; time =time + 1; v.d = time; v.color = yellow; S = S ∪ {u}.

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