Mavzu. Graflar bilan ishlovchi sodda algoritmlar. Reja




Download 244.02 Kb.
bet2/4
Sana07.11.2022
Hajmi244.02 Kb.
#29315
1   2   3   4
Bog'liq
10-ma\'ruza. Graflar bilan ishlovchi sodda algoritmlar
guruh mustaqil ishlar ro\'yhati 2, 4 - kurs, Issiqlik elektr stansiyasi.pdf, Tarmoq xizmatlari, 8, Thin film 1, Заковат учун саволлар-01, 11, Oybegim mening (Oybekka hujum), Andijon mashinasozlik instituti mashinasozlik texnologiyasi fakulteti iqtisodiyot yonalishi, 1 savol javobi, Mustaqil ish topshiriqlari, rentgen spektraskop, 202-, Mustaqil ta\'lim
Bellman-Ford algoritmi
Algoritm tarixi uchta mustaqil matematiklar bilan bog'liq: Lester Ford, Richard Bellman va Edward Moore. Ford va Bellman algoritmni 1956 va 1958 yillarda nashr etishdi, Moore esa 1957 yilda taqdim qilgan. Va ba'zan uni Bellman-Ford-Moore algoritmi deb ham atashadi. Usul ba'zi vektorli-marshrutlash protokollarida, masalan, RIPda (Routing Information Protocol) qo'llaniladi. Deykstra algoritmi singari, Bellman-Ford algoritmi ham vaznga ega bo’lgan graflarda bitta tugundan qolgan barcha tugunlarga bo’lgan eng qisqa masofani aniqlashda ishlatiladi. Bu algoritm manfiy vaznga ega bo’lgan graflar bilan ishlashda ham qo’llanilishi mumkin (istisno holatlar ham mavjud).
s tugundan qolgan barcha tugunlargacha bo’lgan qisqa masofani Bellman-Ford algoritmidan foydalanib topish dinamik dasturlashtirish usulini qo’llash demakdir, ya’ni uni qism masalalarga ajratib, ularni yechimi orqali umumiy asosiy masalani hal qilishdir. Bunda qism masala bo’lib, bitta alohida qaralayotgan tugundan boshqasigacha eng qisqa yo’lni aniqlash masalasi hisoblanadi. Algoritm natijalarini saqlash uchun d[] bir o’lchovli massiv qabul qilamiz. Uning har bir i-elementida s gundan i-elementgacha qisqa masofa qiymatini saqlanadi (agar mavjud bo’lsa). Dastlab, d[] massiv elementlariga shartli sheksiz katta qiymat berib chiqiladi, d[s] ga 0 o’zlashtiriladi.
G={V, E}, n=|V|, m=|E| graf berilgan bo’lsin. Qo’shni tugunlarni v va u deb, (v,u) orasidagi qirrani w deb belgilab olamiz. Boshqacha aytganda, v tugundan chiquvchi va u tugunga kiruvchi qirra vazni w ga teng. U holda, Bellman-Ford algoritmining muhim qismi quyidagicha ko’rinishga ega bo’ladi:


Har bir n-qadamda d[] massiv elementlari qiymatlarini yashilashga harakat qilinadi: agar w(v,u) qirra vazni va d[v] element qiymati yig’indisi d[u] qiymaridan kichik bo’lsa, u holda bu qiymat d[u] ga o’zlashtiriladi.
#include "stdafx.h"
#include
#define inf 100000
using namespace std;
struct Edges{
int u, v, w;
};
const int Vmax=1000;
const int Emax=Vmax*(Vmax-1)/2;
int i, j, n, e, start;
Edges edge[Emax];
int d[Vmax];
//Bellman-Ford algoritmi
void bellman_ford(int n, int s)
{
int i, j;
for (i=0; id[s]=0;
for (i=0; ifor (j=0; jif (d[edge[j].v]+edge[j].wd[edge[j].u]=d[edge[j].v]+edge[j].w;
for (i=0; icout<"<else cout<"<}
//asosiy funksiya
void main()
{
int w;
cout<<"tugunlar soni > "; cin>>n;
e=0;
for (i=0; ifor (j=0; j{
cout<<"Вес "<"< "; cin>>w;
if (w!=0)
{
{
edge[e].v=i;
edge[e].u=j;
edge[e].w=w;
e++; } }
cout<<"boshlang’ich tugun > "; cin>>start;
cout<<"qisqa masofalar ro’yhati:";
bellman_ford(n, start-1);
system("pause>>void"); }
Bu yerda graf soddalashtirilgan qirralar ro’yhati ko’rinishida ifodalangan va foydalanuvchi tomonidan vazn matrisasi kiritiladi. Bellman-Ford algoritmining asosiy qismi m*(n-1) marta bajariladi, tashqi sik n-1 marta takrorlanadi, ichki sikl esa m marta. N-iterasiyadan voz kechish esa maqsadga muvofiqdir, chunki algoritm n-1 ta iterasiyada ham o’z vazifasini to’liq amalga oshira oladi. Ammo tashqi siklni n marta amalga oshirish grafda manfiy sikl mavjudligini aniqlashga imkon beradi.

Download 244.02 Kb.
1   2   3   4




Download 244.02 Kb.

Bosh sahifa
Aloqalar

    Bosh sahifa



Mavzu. Graflar bilan ishlovchi sodda algoritmlar. Reja

Download 244.02 Kb.