54
FLOYD ALGORITMINING ISHLASH PRINSIPINI TADQIQ QILISH
Nazariy ma’lumotlar
Floyd algoritmi - yo‗naltirilgan grafning barcha balandliklari orasidagi eng
qisqa masofani topish uchun dinamik algoritm hisoblanadi. U 1962
yilda Robert
Floyd tomonidan ishlab chiqilgan, 1959 yilda Bernard Roy (Bernard Roy) xuddi
shu algoritmni e‘lon qilgan bo‗lsa-da, ammo bu ahamiyatsiz bo‗lib qoldi.
Bu algoritm Deykstra algoritmiga qaraganda
umumiyroq hisoblanadi,
chunki u istalgan ikkita tarmoq qurilma orasidagi eng qisqa yo‗llarni topadi. Bu
algoritmda tarmoq n satrlar va n ustunlarga ega bo‗lgan kvadrat matritsa shaklida
berilgan. (i, j) element i tugundan ј tugungacha bo‗lgan d
ij
masofaga teng, u agar (i,
j) joy mavjud bo‗lsa, chekli qiymatga ega va aks holda cheksizlikka teng bo‗ladi.
Oldin Floyd usulining asosiy g‗oyasini ko‗rsatamiz. Aytaylik, uchta i , j va k
tugunlar mavjud va ular orasidagi masofalar berilgan (8.1-rasm). Agar d
ij
+ d
jk
ik
tengsizlik bajarilsa, u holda i → k yo‗lni i → ј → k
bilan almashtirish tavsiya
etiladi. Bunday almashtirish (bundan keyin uni shartli ravishda uchburchak
operator deb ataymiz) Floyd algoritmini bajarish jarayonida
muntazam ravishda
amalga oshiriladi.
7.12-rasm. Uchburchak operatori
Floyd algoritmi quyidagi amallarni bajarilishini talab qiladi.
0-qadam
. Dastlabki D
0
masofa
matritsasi va S
0
tugunlarning ketma-ketlik
matritsasini aniqlaymiz. Ikkala matritsaning diagonal elementlari "-"
belgisi bilan
55
belgilanadi. U bu elementlarni hisoblashlarda qatnashmasligini ko‗rsatadi. k = 1
deb olamiz:
7.13-rasm. Floyd algoritmi bo‘yicha dastlabki holat
Dostları ilə paylaş: