Iv. Динамические структуры данных



Download 0,82 Mb.
Pdf ko'rish
bet46/53
Sana21.02.2022
Hajmi0,82 Mb.
#52470
1   ...   42   43   44   45   46   47   48   49   ...   53
Bog'liq
devcpp 4

j
 = 12 для j = 1 
 
 
2) min b
j
 = 18 для j = 4 
3) min b
j
 = 25 для j = 2 
 
 
4) min b
j
 = 38 для j = 6 
5) min b
j
 = 47 для j = 5 
 
 
6) min b
j
 = 60 для j = 8 








a 








b 12 25 0 18 
∞ ∞ ∞ ∞
c 








1 2 3 4 5 6 7 8 

1 0 1 1 0 0 0 0 

12 25
0 18
38 ∞ ∞ 

3 3 0 3 3 4 3 3 
1 2 3 4 5 6 7 8 

1 0 1 0 0 0 0 0 

12 25 0 18 
∞ ∞ ∞ ∞ 

3 3 0 3 3 3 3 3 
1 2 3 4 5 6 7 8 

1 1 1 1 0 1 0 0 

12 25
0 18 47 38 62 60

3 3 0 3 2 4 6 2 
1 2 3 4 5 6 7 8 

1 1 1 1 0 0 0 0 

12 25 0 18 47 38 
60

3 3 0 3 2 4 3 2 
1 2 3 4 5 6 7 8 

1 1 1 1 1 1 0 0 

12 25 0 18 47 38 61 60

3 3 0 3 2 4 5 2 
 
1 2 3 4 5 6 7 8 

1 1 1 1 1 1 0 1 

12 25
0 18 47 38 61 60

3 3 0 3 2 4 5 2 
1

3
4

6

8
16
35
24
14
23
20
18
22
25
12
23


Программирование на языке Си
©
 К. Поляков, 1995-2009 
http://kpolyakov.narod.ru
37
Вывод кратчайшего пути. Найдем, например, кратчайший путь из вершины 3 в вершину 8
«Раскручивая» массив c, получаем 823
 Алгоритм Флойда-Уоршелла 
Если надо только вычислить кратчайшие расстояния между всеми вершинами, но не тре-
буется знать сами кратчайшие маршруты, можно использовать весьма элегантный и простой 
алгоритм Флойда-Уоршелла: 
for (k = 0; k < n; k ++) 
 for (i = 0; i < n; i ++) 
for (j = 0; j < n; j ++)
if ( d[i][j] > d[i][k]+d[k][j] ) { 
d[i][j] = d[i][k]+d[k][j]; 

p[i][j] = p[k][j]; 
 
}
Сначала в матрице {d
ij
} записаны расстояние между вершинами напрямую. Затем рассмотрим 
все пути, которые проходят через первую вершину. Если путь через нее короче, чем напрямую, 
то заменяем значение в матрице на новый кратчайший путь. В конце элемент матрицы {d
ij
} 
содержит длину кратчайшего пути из i в j. Каждая строка матрицы {p
ij
} сначала заполняет-
ся так, как массив c в алгоритме Дейкстры, а в конце элемент {p
ij
} равен номеру предпослед-
ней вершины для кратчайшего пути из вершины i в вершину j
 
Оптимальное размещение 
 Задача на минимум суммы 
Задача. Имеется n населенных пунктов, в каждом из которых живет p
i
школьников 
(i=1,...,n). Надо разместить школу в одном из них так, чтобы общее расстояние, проходи-
мое всеми учениками по дороге в школу, было минимальным. 
Эта задача просто решается на основе алгоритма Флойда-Уоршелла. Сначала получаем 
матрицу минимальных путей из каждой вершины в каждую {d
ij
}. Пусть школа размещается в 
вершине с номером k. Тогда общее расстояние, которое должны пройти ученики из пункта j по 
дороге в школу, равно произведению расстояния между вершинами i и j на количество учени-
ков в вершине j, то есть d
ij 
p
j
.
 
Суммируя эти произведения для всех вершин, найдем общее 
расстояние, которое будут проходить ученики, если школа будет в пункте i. Естественно, надо 
выбрать такую вершину k, для которой это число будет наименьшим. 
Рассмотрим сеть, показанную на рисунке а). Цифры у дуг показывают расстояние между 
населенными пунктами. Количество учеников в пунктах 1..7 задано числами (80, 100, 140, 90,
60, 50, 40).
а) 
б) 
1
3
2
5
4
6
7
11
8
6
4
5
6
7
11
5
9
13
14
10









9 10 15 11 17 24 6120 





5 10 17 
3 10


7 10 11 14 3640 
4 15




4 11 3800 
5 11
5 10


6 19 4560 
6 17 10 11


0 13 4930 
7 24 17 14 11 19 13 0 8360 
3440 


IV. Динамические структуры данных
©
 К. Поляков, 1995-2009 
http://kpolyakov.narod.ru
38
На рисунке б) показана матрица длин кратчайших путей. В последнем столбце сосчитано общее 
расстояние, проходимое учениками, если школа будет в данной вершине. Поскольку надо вы-
брать наименьшее расстояние, то школу надо размещать в вершине 2. 
 Минимаксная задача размещения 
Имеется n населенных пунктов, в одном из которых надо разместить спецподразделение, 
которое должно выезжать на вызовы при срабатывании сигнализации на одном из охраняемых 
объектов. Надо расположить его так, чтобы самый дальний охраняемый объект достигался за 
минимальное время. 
Прежде всего, находится матрица кратчайших путей. Затем в каждой строке i выбирается 
максимальное число – это будет расстояние до самого отдаленного охраняемого объекта, если 
пункт полиции разместить в вершине i. Затем выбирается такой пункт j, для которого это чис-
ло наименьшее.
Более сложной является минимаксная задача, в которой допускается размещать объект на 
ребрах сети (между пунктами). Для решения этой задачи можно использовать следующие 
идеи.
Рассмотрим ребро между вершинами i и j. Если расположить пункт полиции на нем, то 
расстояние от него до другой вершины k  не может быть меньше, чем 
δ
k
ik
jk
d d
= min(
,
)
Вычислив эти величины для всех вершин k, определим максимальную из них. Это число δ
0
называется нижней оценкой ребра (i,j), поскольку при любом выборе места для пункта по-
лиции на этом ребре расстояние до самого дальнего объекта не будет меньше 
δ
0
. Мы уже зна-
ем минимально возможное расстояние до самого дальнего пункта при размещении отряда в 
одном из городов. Очевидно, имеет смысл рассматривать только те ребра, для которых нижняя 
оценка не превышает это расстояние.
Для каждого ребра (i,j) с нижней оценкой, меньше уже полученной, сделать следующие 
операции: 
1. найти самую дальнюю вершину k из всех тех вершин, в которые надо ехать через вершину 

Download 0,82 Mb.

Do'stlaringiz bilan baham:
1   ...   42   43   44   45   46   47   48   49   ...   53




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish