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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ij

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

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

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

wk k−1

k−1

k−1

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

ij

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

ij

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

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

ij

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

ij

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

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

ij

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

z0

ij=

Ij (j, еслиw0

Ij 0,еслиw0

/=∞,

=∞.

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

(zk−1

k−1

ij ik kj

zk ij,еслиM=wij,

ij=

zk−1

k−1

ik,еслиM<wij.

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

ij

путейPk−1иPk−1иzk

ij

=zk−1.

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)еслиwk−1илиwk−1равно∞,тоwk

=wk−1.

ik kj

ij ij

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

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

(ВпроцессевычисленийматрицуWkзаписываемнаместоWk−1,аматрицуZk–наместоZk−1,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принадлежитнекоторомуциклуотрицательноговеса.

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

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

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