Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5fan_ru_Исследование операций. Курс лекций.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
293.75 Кб
Скачать

4.6Кратчайшиепути

Рассмотриморграфсовзвешеннымидугамиипутьизвершиныiввершинуjвэтомграфе.Суммавесовдугэтогопутиназываетсяегодлиной.Путьминимальнойдлиныизiвjназываетсякратчайшимпутемизiвj.

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

РассмотриморграфG=(V,Aвыделеннойвершинойвесамиwij,(i,j)A.Алго-

ритмприсваиваетвершинамвременныеипостоянныеметки.Постояннаяметкавершины

равнадлинекратчайшегопутиизэтувершину.Крометого,формируетсямассивPred,вкоторомPred(v)содержитномернепосредственногопредшественникавершиныкратчайшемпутиизv.Такимобразомs,...,Pred(Pred(v)),Pred(v),vявляетсякратчайшимпутемизv.

АлгоритмДейкстры(построениякратчайшихпутейизвершиныsвовсеостальныевершиныорграфавслучаенеотрицательныхвесовдуг)

Шаг1.(Начало).ПомечаемвершинуsпостояннойметкойLength(s)=0.Всеосталь-ныевершиныv/=sпомечаютсявременнымиметкамиLength(v)=.Полагаемномер

итерацииi=1иномертекущейвершины,помеченнойпостояннойметкой,u=s.

Шаг2.(Рекурсия).Полагаемi=i+1.Рассмотримвершинуu.Длявсехеенепосредствен-ныхпоследователейвременнойметкойвычисляемM=min{Length(v),Length(u)+wuv}.ЕслиMменьшевременнойметкиLength(v),товычисляемновуюметкуLength(v)=

полагаемPred(v)=u.

Далеесредивсехвершинсвременнымиметкамивыбираемвершинунаименьшеймет-койиделаемеепостоянной.Еслиi<n1,тополагаемu=повторяемШаг2.Иначе

стоп:всекратчайшиепутиизостальныевершинымогутбытьвосстановленыпомас-сивуPred.

Алгоритмпостроениякратчайшихпутеймеждувсемипарамивершинипроверкиналичияциклаотрицательноговеса(дополнительныйматериал).ПриводимыйнижеалгоритмпредложенФлойдом.

РассмотриморграфG=(V,A)устьW0=||wij||n×nматрицавесовдугэтогографа.Полагаемwij=

,еслидуга(i,j)отсутствуетwii=0длявсехiV.АлгоритмФлойдастроитпоследовательность

ij

матрицW1,W2,...,Wnтакую,чтоэлементwn

матрицыWnравендлинекратчайшегопутиизiвjв

графеG.МатрицаWkопределяетсяпоматрицеWk1:

wk k1

k1

k1

ij=min{wij,wik +wkj}. (1)

ij

ПустьPkкратчайшийпутьизiвjсвнутреннимивершинамиизмножества{1,2,...,k}.Справедлива

ij

Теорема5Для0kn,величинаwk

являетсядлинойпутиPk.

ij

ВалгоритмеФлойдаодновременносдлинамикратчайшихпутейотыскиваютсясамипутиспомощью

ij

матрицZ0,Z1,...,Zn,гдеэлементzk

матрицыZkуказываетнавершину,непосредственноследующую

ij

заiвPk.Тогдаясно,что

z0

ij=

Ij (j, еслиw0

Ij 0,еслиw0

/=,

=.

МатрицаZkполучаетсяизZk1следующимобразом.ПустьM=min{wk1,wk1+wk1}.Тогда

(zk1

k1

ij ik kj

zk ij,еслиM=wij,

ij=

zk1

k1

ik,еслиM<wij.

ЕслиM=wk1,тодлинапутиPkравнадлинепутиPk1.ИначеPkполучаетсяврезультатесклеивания

ij

путейPk1иPk1иzk

ij

=zk1.

ij ij

ik kj

ij ik

Очевидно,чтократчайшийпутьизiвjопределяетсяпоследовательностьювершинi,i1,i2,...,ip,j,где

i1=zn,i2=zn

,i3=zn

,...,j=zn.

ij i1j

i2j

ipj

Отметим,чтов(1)еслиwk1илиwk1равно,тоwk

=wk1.

ik kj

ij ij

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

циклаотрицательноговеса)

процессевычисленийматрицуWkзаписываемнаместоWk1матрицуZkнаместоZk1,k=

1,...,n.Такимобразом,используемодноитожеобозначениеWдлявсехWkиZдлявсехZk.)

Шаг1.(Начало).Полагаемk=0.СтроимматрицыW=W0иZ=Z0.

Шаг2.(Рекурсия).Полагаемk=k+1.Длявсехтакихвершинi/=k,чтоwik/=ивсехтакихвершин

j/=k,чтоwkj/=,вычисляемM=min{wij,wik+wkj}.ЕслиM<wij,тополагаемzij=zikиwij=M.

Еслипоявляетсяwii<0,тостоп:вершинаiпринадлежитнекоторомуциклуотрицательноговеса.

Есливсеwii0иk=n,тостоп:wijдлинывсехкратчайшихпутей,аzijперваяпослеiвершинав

кратчайшемпутиизiвj.

Есливсеwii0иk<n,топовторяемШаг2.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]