Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Алгоритмынахождениякратчайшихпутейвграфе

Тип Реферат
Предмет Информатика
Просмотров
1377
Размер файла
1 б
Поделиться

Ознакомительный фрагмент работы:

Алгоритмынахождениякратчайшихпутейвграфе

Государственное образовательное учреждение

Высшее профессиональное образование

Донской государственный технический университет кафедра ПОВТ и АС

Отчет по курсовой работе по курсу «Алгоритмы, построение и анализ»

на темы«Алгоритмы нахождения кратчайших путей в графе.»

Выполнил ст. гр. УСУ‐21

Герусов К.А.

Руководитель работы:

Горлова М.Ю.

Медведева Т.А.

Ростов‐на‐Дону 2010г.


СОДЕРЖАНИЕ.

Введение……………………………………………………………….…………………………………………………………………….. 3

Постановка задачи…………….……………………………….……………………………………………………………………….. 5

Алгоритмизация………………….………….…………………………………………………………………………………………… 6

Выполнение поставленной задачи…………....………………………………………………………………………………. 9

Ручной просчёт………….…………………………………………………………………………………………………….. 9

Тест программы………………………..……………………………………………………………………………………. 11

Код программы…………………….…….…………………………………………………………………………………………….. 13

Приложение……………………………………..……………………………………………………………………………………….. 16

Список литературы……………………………………………………………………………………………………………………. 18 ВВЕДЕНИЕ.

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

Ю.И.Манин.

Многосвязная структура характеризуется следующими свойствами: (1) каждый элемент структуры содержит произвольное число направленных связей с другими элементами (или ссылок на другие элементы); (2) с каждым элементом может связываться произвольное количество других элементов (каждый элемент может быть объектом ссылки произвольного количества других элементов); (3) каждая связь в структуре имеет не только направление, но и вес. Такую многосвязную структуру называют сетевой структурой или сетью. Заметим, что логически сеть эквивалентна взвешенному ориентированному графу общего вида, и поэтому вместо термина "сеть" часто употребляются термины "графовая структура", или даже просто "граф".

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

Кратчайшие пути в графе. Алгоритм Форда-Беллмана.

Мы взбираемся на вершину, откуда можем бросить гордый взгляд назад и оценить пройденный путь.

П.Буль.

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

Исходными данными для поиска кратчайшего пути в графе является матрица весов дуг заданного ориентированного графа. Это означает, что каждой дуге (u,v)E поставлено в соответствие некоторое вещественное число А(u,v), называемое весом данной дуги. Длину кратчайшего пути d(s,t) между вершинами s и t называют расстоянием от s до t (расстояние, определенное таким образом, может быть и отрицательным). Если не существует ни одного пути из s в t, то полагают d(s,t)=Ґ, где Ґ- некоторый символ.

Большинство алгоритмов поиска расстояний между двумя фиксированными вершинами s и t включают в себя следующие действия: по данной матрице весов дуг A*u,v] (u,vV) вычисляют некоторые верхние ограничения D*v+ на расстояние от s до всех вершин v. На каждом шаге, если D*v++A*u,v+<D*v+ оценку D*v+ улучшают: D*v+=D*u++A*u,v+. Процесс прекращается, когда дальнейшее улучшение ни одного из ограничений невозможно.

Алгоритм Форда-Беллмана позволяет найти расстояние от источника до всех вершин D[v]=d(s,v), vV ориентированного графа при условии, что граф не содержит контуров отрицательной длины (n - количество вершин в графе). Исходными данными для этого алгоритма являются матрица весов дуг A[u,v].

На рисунке 1 приведен: (а) граф; (б) соответствующая ему матрица весов дуг; (в) результаты работы алгоритма Форда-Беллмана.

а б в

Рис. 1: Пример выполнения алгоритма Форда-Беллмана.

Приведенный алгоритм отыскания кратчайших путей в графах с отрицательными длинами дуг, принадлежащий Форду, Муру и Беллману, может служить одним из возможных способов обнаружения контуров отрицательной длины (или циклов в неориентированном графе).

ПОСТАНОВКА ЗАДАЧИ.

Даная задачу нужно рассматривать, как задачу оптимизации на графах. Она заключается в составлении программного кода на языке программирования Pascal, основываясь на алгоритме Форда-Беллмана, и её тестирования с ручном просчётом.

АЛГОРИТМИЗАЦИЯ.

Рис 2: Блок-схема.

Пояснения к блок-схеме.

1. Задание входных данных.

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

б) Программа предлагает ввести начальную вершину i дерева кратчайших путей.

в) Если в i-ой строке матрицы смежности только 0, то есть из вершины i не выходит ни одной дуги, значит, вершину i нельзя рассматривать как начальную и переходим к пункту б.

г) Вывод матрицы смежности на экран, в табличном виде.

2. Инициализация выходных данных (массивы: кратчайших путей – l и предков – ftr).

а) Если существует дуга (i,j), то выполняется пункт б, иначе пункт в.

б) Расстояние от i до j – вес дуги (i,j).

в) Расстояние от i до j – бесконечно велико.

г) Предком всех вершин графа становиться начальная вершина i.

3. Построение дерева кратчайших путей в графе.

а) Если существует дуга (c,j), то существует путь i->c->j.

б) Если весовая величина пути i->c->j меньше уже установленного расстояния от вершины i до j, то выполняется пункт в, иначе к пункту г.

в) Предком вершины j становится промежуточная вершина c, а расстояние от i до j сумма весов дуг пути i->c->j.

г) Для рассмотрения берётся следующая после вершина после вершины j – j+1.

д) Если все вершины занесены в дерево, то производится вывод на экран выходных данных, если нет, то происходит переход к пункту а.

ВЫПОЛНЕНИЕ ПОСТАВЛЕНОЙ ЗАДАЧИ.

Ручной просчет.

Даны 3 ориентированных графа G1(5,12), G2(4,7), G3(7,14), заданные матрицами смежности. Построить для этих графов деревья кратчайших путей.

Матрица смежности графа G1:

0 6 7 7 2

0 0 3 8 -3

0 -1 0 0 -4

0 0 -3 0 9

0 0 7 0 0

Массив предков: ftr = (0, 3, 4, 1, 3).

Массив расстояний от 1-ой начальной вершины до остальных: l = (0, 3, 4, 7, 0).

Рис. 3: Граф G1.

Рис. 4: Дерево кратчайших путей для графа G1.

Матрица смежности графа G2:

0 7 0 5

4 0 3 -1

-2 0 0 -6

0 0 0 0

Массив предков: ftr = (0, 1, 2, 3).

Массив расстояний от 1-ой

начальной вершины до остальных: Рис. 5: Граф G2.

l = (0, 7, 10, 4).

Рис. 6: Дерево кратчайших путей для графа G2.

Матрица смежности графа G3:

0 5 0 0 1 0 3

0 0 4 0 7 0 0

0 -4 0 0 -3 0 0

0 0 2 0 0 8 0

0 0 0 2 0 3 0

3 0 0 4 0 0 0

0 0 0 0 0 -1 0

Рис. 7: Граф G3.

Массив предков: ftr = (0, 3, 4, 5, 1, 7, 1).

Массив расстояний от 1-ой начальной вершины до остальных:

l=(0,1, 5, 3, 1, 2, 1).

Рис. 8: Дерево кратчайших путей для графа G3.

Тест программы.

Рис. 9: Выполнение программы для графа G1.

Рис. 10: Выполнение программы для графа G2.

Рис. 11: Выполнение программы для графа G3.

Рис. 12: Выполнение программы для графа G2.

В графе G2 есть вершина, из которой нельзя построить дерево кратчайших путей – это 4 вершина, так как из неё не выходят дуги. Программа проводит проверку на заданную пользователем вершину, в нашем случае 4, и проводит проверку и обнаруживает, что 4 не подходит. Далее программа вновь предлагает ввести номер вершины и для введенной 2 успешно вычисляет выходные массивы. Правильность данных можно проверить, сверив их с деревом кратчайших путей для графа G2 с начальной 2 вершиной на рисунке 13.

Рис. 13: Дерево кратчайших путей для графа G2 с начальной вершиной №2.

КОД ПРОГРАММЫ.

program kurs; uses crt; const m=10;

type matrix= array [1..m, 1..m] of integer; massiv= array [1..m] of integer; var i,j,min,c,k,s,n: integer; v,l,ftr: massiv; smej: matrix; f: file of integer; label metka;

procedure vvod1(n: integer; var smej: matrix); begin

assign(f,'data/graph_1.bin');

reset(f); for i:=1 to n do for j:=1 to n do begin read(f,c); smej[i,j]:=c; end; close(f); end;

procedure vvod2(n: integer; var smej: matrix); begin

assign(f,'data/graph_2.bin');

reset(f); for i:=1 to n do for j:=1 to n do begin read(f,c); smej[i,j]:=c; end; close(f); end;

procedure vvod3(n: integer; var smej: matrix); begin

assign(f,'data/graph_3.bin');

reset(f); for i:=1 to n do for j:=1 to n do begin read(f,c); smej[i,j]:=c; end; close(f); end; Begin clrscr;

write('Введите число вершин исследуемого графа (4,5,7) '); read(n); case n of 5: vvod1(n,smej);

4: vvod2(n,smej); 7: vvod3(n,smej); end;

write('Ведите исходную вершину ');

metka: read(i); s:=0; for k:=1 to n do if not(smej[i,k]=0) then s:=1; if s=0 then begin writeln('Из этой вершины нет выходящих дуг.'); write('Bведите другую вершину '); goto metka end; writeln('Матрица смежности: '); for k:=1 to n do begin for s:=1 to n do if smej[k,s]<0 then write(' ',smej[k,s]) else write(' ',smej[k,s]); writeln;

end;

for j:=1 to n do begin l[j]:=smej[i,j]; ftr[j]:=i;

if l[j]=0 then l[j]:=99; end;

l[i]:=0; for j:=1 to n do begin min:=l[j]; for k:=1 to n do if not(smej[k,j]=0) and not(k=i) then if smej[k,j]<min then begin

c:= k; min:=smej[k,j]; end; v[j]:= l[c]+smej[c,j]; if v[j]<l[j] then

begin

l[j]:=v[j]; ftr[j]:=c; j:=1; end;

End;

ftr[i]:=0; l[i]:=0;

writeln('Массив предков: ');

write(' ftr ='); for k:= 1 to n do

write(' ',ftr[k]); writeln;

writeln('Массив со значениями кратчайших путей от ',i,' вершины: '); write(' l ='); for k:=1 to n do if l[k]<0 then write(' ',l[k]) else write(' ',l[k]); End.

ПРИЛОЖЕНИЕ.

Коды программ используемые для создания файлов с данными. Для 1-го графа. program graph1; uses crt; const n=5;

type matrix= array [1..n, 1..n] of integer;

var i,j,c,n: integer; smej: matrix; f: file of integer; Begin clrscr;

smej[1,2]:=6; smej[1,3]:=7; smej[1,4]:=7; smej[1,5]:=2; smej[2,3]:=3; smej[2,4]:=8; smej[2,5]:=-3; smej[3,2]:=-1; smej[3,5]:=-4; smej[4,3]:=-3; smej[4,5]:=9; smej[5,3]:=7; assign(f,'data/graph_1.bin');

rewrite(f); for i:=1 to n do for j:=1 to n do begin c:=smej[i,j]; write(f,c); end; close(f); End.

Для 2-го графа. program graph2; uses crt; const n=4;

type matrix= array [1..n, 1..n] of integer;

var i,j,c,n: integer; smej: matrix; f: file of integer; Begin clrscr; smej[1,2]:=7; smej[1,4]:=5; smej[2,1]:=4;smej[2,3]:=3; smej[2,4]:=-1; smej[3,1]:=-2; smej[3,4]:=-6; assign(f,'data/graph_2.bin');

rewrite(f); for i:=1 to n do for j:=1 to n do begin c:=smej[i,j]; write(f,c); end; close(f); End.

Для 3-го графа. program kurs; uses crt; const n=7;

type matrix= array [1..n, 1..n] of integer;

var i,j,c,n: integer; smej: matrix; f: file of integer; Begin clrscr; smej[1,2]:=5; smej[1,5]:=1; smej[1,7]:=3; smej[2,3]:=4; smej[2,5]:=7; smej[3,2]:=-4; smej[3,5]:=-3; smej[4,3]:=2; smej[4,6]:=8; smej[5,4]:=2; smej[5,6]:=3; smej[6,1]:=3; smej[6,4]:=4; smej[7,6]:=-1; assign(f,'data/graph_3.bin'); rewrite(f); for i:=1 to n do for j:=1 to n do begin c:=smej[i,j]; write(f,c); end; close(f); End.

СПИСОК ЛИТЕРАТУРЫ.

В.Н. Землянухин, Л.Н. Землянухина – Задачи оптимизации на графах. 2009г.

А.Е. Костин, В.Ф. Шаньгин – Организация и обработка структур данных в вычислительных системах. Учебное пособие для вузов. 1987г.

Ж. Трамбле, П. Соренсон – Введение в структуры данных. 1982г.

Ф. Харари – Теория графов. 1973г.

В. Липский – Комбинаторика для программистов. 1988г.

В.Л. Бурковский, Л.В. Холопкина, Н.Л. Райхель, О.Я. Кравец – Методы моделирования и анализа вычислительных систем. Учебное пособие. 1996г.

В.А. Евстигнеев, В.Н. Касьянов – Графы в программировании: обработка, визуализация и применение.


Нет нужной работы в каталоге?

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

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Филиал государственного бюджетного образовательного учреждения высшего образования Московской област
Спасибо Елизавете за оперативность. Так как это было важно для нас! Замечаний особых не бы...
star star star star star
РУТ
Огромное спасибо за уважительное отношение к заказчикам, быстроту и качество работы
star star star star star
ТГПУ
спасибо за помощь, работа сделана в срок и без замечаний, в полном объеме!
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

решить 6 практических

Решение задач, Спортивные сооружения

Срок сдачи к 17 дек.

только что

Задание в microsoft project

Лабораторная, Программирование

Срок сдачи к 14 дек.

только что

Решить две задачи №13 и №23

Решение задач, Теоретические основы электротехники

Срок сдачи к 15 дек.

только что

Решить 4задачи

Решение задач, Прикладная механика

Срок сдачи к 31 дек.

только что

Выполнить 2 задачи

Контрольная, Конституционное право

Срок сдачи к 12 дек.

2 минуты назад

6 заданий

Контрольная, Ветеринарная вирусология и иммунология

Срок сдачи к 6 дек.

4 минуты назад

Требуется разобрать ст. 135 Налогового кодекса по составу напогового...

Решение задач, Налоговое право

Срок сдачи к 5 дек.

4 минуты назад

ТЭД, теории кислот и оснований

Решение задач, Химия

Срок сдачи к 5 дек.

5 минут назад

Решить задание в эксель

Решение задач, Эконометрика

Срок сдачи к 6 дек.

5 минут назад

Нужно проходить тесты на сайте

Тест дистанционно, Детская психология

Срок сдачи к 31 янв.

6 минут назад

Решить 7 лабораторных

Решение задач, визуализация данных в экономике

Срок сдачи к 6 дек.

7 минут назад

Вариационные ряды

Другое, Статистика

Срок сдачи к 9 дек.

8 минут назад

Школьный кабинет химии и его роль в химико-образовательном процессе

Курсовая, Методика преподавания химии

Срок сдачи к 26 дек.

8 минут назад

Вариант 9

Решение задач, Теоретическая механика

Срок сдачи к 7 дек.

8 минут назад

9 задач по тех меху ,к 16:20

Решение задач, Техническая механика

Срок сдачи к 5 дек.

9 минут назад
9 минут назад
10 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

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

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно