46770 (Алгоритмы сортировки, поиска кратчайшего пути в графе и поиска покрытия, близкого к кратчайшему), страница 3

2016-07-30СтудИзба

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

Документ из архива "Алгоритмы сортировки, поиска кратчайшего пути в графе и поиска покрытия, близкого к кратчайшему", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "46770"

Текст 3 страницы из документа "46770"

Графом (G, X) называется совокупность двух конечных множеств: множества точек, которые называются вершинами (X = {Х1,...,Хn}), и множества связей в парах вершин, которые называются дугами, или ребрами ( (Хi, Хj) G ) в зависимости от наличия или отсутствия направленности связи.

Ребром называются две встречные дуги (Хi, Хj) и (Хj, Хi). На графе они изображаются одной линией без стрелки. Ребро, или дуга, конечные вершины которого совпадают, называется петлей.

Если на каждом ребре задается направление, то граф (G, Х) называется ориентированным. В противном случае граф называется неориентированным.

Две вершины, являющиеся конечными для некоторого ребра или некоторой дуги, называются смежными. Соответственно этот граф может быть представлен матрицей смежности либо матрицей инцидентности.

Матрицей инцидентности называется прямоугольная матрица с числом строк, равным числу вершин графа, и с числом столбцов, равным количеству ребер (дуг) графа. Элементы матрицы а задаются следующим образом: “1” ставится в случае если вершина vi, инцидентна ребру uj; “0” - в противном случае.

Вершина и ребро (дуга) называются инцидентными друг другу, если вершина является для этого ребра (дуги) концевой точкой.

Путь из начальной вершины хн к конечной вершине хк - последовательность дуг, начинающаяся в вершине хн Х, заканчивающаяся в вершине хк Х, и такая, что конец очередной дуги является началом следующей:

н, хi1)( хi1, хi2)( хi2… хik)( хik, xk) = (xн, хк).

Элементарный путь – путь, в котором вершины не повторяются.

Простой путь - путь, в котором дуги не повторяются.

Маршрут - последовательность ребер, составляющих, как и путь, цепочку.

Длина пути взвешенного графа определяется как сумма весов - его дуг. Если граф не взвешен, то можно считать веса дуг равными 1 .

Кратчайшим путем между выделенной парой вершин хн и хк называется путь, имеющий наименьшую длину среди всех возможных путей между этими вершинами.

Таким образом, нахождение кратчайшего пути – это поиск множества вершин, составляющих этот путь.

4.2 Словесное описание алгоритма и его работы

0. Инициализация кратчайших путей от вершины s до каждой вершины графа ∞, а все вершины 0, v=s.

1. Для каждой вершины u, смежной v, проверяем, отмечена ли она и какова длина пути между u и v. Если меньше, то запоминаем длину пути и текущую вершину u.

2. t= ∞, v=0. Для каждой вершины графа проверяем, отмечена ли она, и меньше ли путь от нее до s, чем t. Если так, то запоминаем её v=u, и её путь t=T[u] .

3. Если v=0, то пути нет, иначе если v=f, то путь найден и конец алгоритма.

4. Помечаем вершину v. Переход в п.1.

4.3 Выбор структур данных

Пусть p – количество вершин. Поскольку граф взвешен, то его представим в форме матрицы длин дуг:

С: array[1..p,1..p].

Используются следующие переменные и массивы:

s, f – вершины, между которыми следует найти кратчайший путь;

u, v – переменные циклов по вершинам;

T: array[1..p] of real – вектор, если вершина v лежит на кратчайшем пути от s к t, то T[v] – длина кратчайшего пути от s к v;

H: array[1..p] of 0..p – вектор, H[v] – вершина, непосредственно предшествующая v на кратчайшем пути;

X: array[1..p] of 0..1 – вектор меток вершин.

4.4 Описание схемы алгоритма

Блок-схема данного алгоритма изображена на рис. 4 в Приложении.

В блоке 1 происходит ввод графа в форме матрицы длин дуг, а также номеров вершин s и f. Далее организуется цикл по вершинам графа (блок 2). В нем инициализируются массив кратчайших путей и массив меток (блок 3): поскольку пути не известны, то они инициализируются бесконечностью, а метки – нулем. Далее отмечается вершина s, кратчайший путь от неё до неё же самой равен 0, и ей никто не предшествует; текущей вершиной v становится s (блок 5). Далее организовывается цикл по смежным с текущей вершинам (блок 6). В блоке 7 происходит проверка смежны ли вершины. В блоке 8 сравнивается уже имеющийся путь с путем между u и v. Если текущий меньше, то он и номер вершины запоминаются (блок 9).

В остальных блоках происходит поиск конца кратчайшего пути. Изначально его длина не известна (равна ∞), и вершина, оканчивающая его также не известна (блок 11). В блоке 12 организуется цикл по всем неотмеченным вершинам. В блоке 13 производиться сравнение уже имеющегося кратчайшего пути t с текущим T[u]. Если текущий меньше, то запоминаем его и вершину (блок 14). Далее производится анализ полученного конца пути. Если v=0 (блок 16), то не была найдена вершина конца кратчайшего пути, и, следовательно, нет такого пути (блок 17). Если же v=f (блок 18), то есть конец совпадает с заданной вершиной, то между ними существует кратчайший путь (блок 19). В обоих случаях конец алгоритма.

Если же не достигнута заданная вершина f, то текущая вершина v помечается (блок 20) и переход в блок 6.

Алгоритм работает, пока не будет вершина t либо пока не станет ясно, что пути из s в f нет.

4.5 Контрольный пример решения задачи с помощью алгоритма поиска кратчайшего пути

Пусть задан граф, изображенный на рис. 1. Рассмотрим на этом примере работу алгоритма.

0. for v=1..p

T[v]=∞;

X [v]=0;

H[s]=0;

T[s]=0;

X[s]=1;

v=s;

1. X2 € G(1) →

X[2]=0&(∞>0+4) →

T[2]=T[1]+C[1,2]=4;

H[2]=1;

X3 € G(1) →

X[3]=0&(∞>0+5) →

T[3]=T[1]+C[1,3]=5;

H[3]=1;

2. t=∞; v=0;

for u=1..p

X[2]=0&T[2]=4<∞ →

v=2; t=T[2]=4;

X[3]=0&T[3]=5!< ∞

3. v=2≠0;

v=2≠f=6;

4. X[2]=1 → п.1;

1. X4 € G(2) →

X[4]=0&(∞>0+2) →

T[4]=T[2]+C[2,4]=6;

H[4]=2;

2. t=∞; v=0;

for u=1..p

X[4]=0&T[4]=6<∞ →

v=4; t=T[4]=6;

3. v=4≠0;

v=4≠f=6;

4. X[4]=1 → п.1;

1. X3 € G(4) →

X[3]=0&(5!>6+3)

X5 € G(4) →

X[5]=0&(∞>0+7) →

T[5]=T[4]+C[4,5]=13;

H[5]=4;

X6 € G(4) →

X[6]=0&(∞>0+1) →

T[6]=T[4]+C[4,6]=7;

H[6]=4;

2. t=∞; v=0;

for u=1..p

X[3]=0&T[3]=5<∞ →

v=3; t=T[3]=5;

X[5]=0&T[5]=13!< 5

X[6]=0&T[6]=1<5 →

v=5; t=T[5]=7;

3. v=6≠0;

v=6=f=6; → конец алгоритма.

ЗАКЛЮЧЕНИЕ

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

Большое внимание уделено сравнению возможного использования нескольких структур данных, проведён анализ эффективности работы алгоритма в зависимости от используемой структуры.

Рассмотрена сложность каждого алгоритма, её зависимость от условий данной задачи, методы упрощения и облегчения понимания алгоритма.

ЛИТЕРАТУРА

1. Вирт Н. Алгоритмы и структуры данных. – С.-П.: Невский диалект, 2001. – 350 с.

2. Новиков Ф.А. Дискретная математика для программистов. – С.-П.: Питер, 2003.–292 с.

3. Шендрик Е.В. Конспект лекций по дисциплине «Теория алгоритмов». – Одесса, 2003.

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