[V];
}
void Graph::addEdge(int u, int v, int w)
{
adj[u].push_back(make_pair(v, w));
adj[v].push_back(make_pair(u, w));
}
void Graph::shortestPath(int src)
{
priority_queue< iPair, vector , greater> pq;
vector dist(V, INF);
pq.push(make_pair(0, src));
dist[src] = 0;
while (!pq.empty())
{
int u = pq.top().second;
pq.pop();
list< pair>::iterator i;
for (i = adj[u].begin(); i != adj[u].end(); ++i)
{
int v = (*i).first;
int weight = (*i).second;
if (dist[v] > dist[u] + weight)
{
dist[v] = dist[u] + weight;
pq.push(make_pair(dist[v], v));
}
}
}
printf("Og`irligi masofa uchlari orasidagi\n");
for (int i = 0; i < V; ++i)
printf("%d \t\t %d\n", i, dist[i]);
}
int main()
{
int V = 9;
Graph g(V);
g.addEdge(0, 1, 4);
g.addEdge(0, 7, 8);
g.addEdge(1, 2, 8);
g.addEdge(1, 7, 11);
g.addEdge(2, 3, 7);
g.addEdge(2, 8, 2);
g.addEdge(2, 5, 4);
g.addEdge(3, 4, 9);
g.addEdge(3, 5, 14);
g.addEdge(4, 5, 10);
g.addEdge(5, 6, 2);
g.addEdge(6, 7, 1);
g.addEdge(6, 8, 6);
g.addEdge(7, 8, 7);
g.shortestPath(0);
return 0;
}
Dastur natijasi:
Nazorat savollar:
1. Qanday grafga daraxt deyiladi?
2. 0‘rmon deb nimaga aytiladi?
3. 0‘rmon bilan daraxt bir-biridan nimasi bilan farq qiladi?
4. Daraxtning uchlari va qirralari sonlari orasida qanday bog‘lanish bor?
Daraxt va unga ekvivalent tushunchalar. Siklga ega bo‘lmagan oriyentirlanmagan bog‘lamli graf daraxt, deb ataladi1. Ta’rifga ko‘ra, daraxt sirtmoqlar va karrali qirralarga ega emas. Siklga ega bo‘lmagan oriyentirlanmagan graf о ‘rmon (asiklik graf), deb ataladi.
Beshta uchga ega bir-biriga izomorf bo‘lmagan barcha daraxtlar uchta, oltita uchga ega bunday barcha daraxtlar esa oltita ekanligini ko‘rsatish qiyin emas.
Daraxt tushunchasiga boshqacha ham ta’rif berish mumkin. Umuman olganda, G(tn,n)-graf uchun daraxtlar haqidagi asosiy teorema, deb ataluvchi quyidagi teorema o‘rinlidir.
1-teorema. Uchlari soni m va qirralari soni n bo ‘Igan G graf uchun quyidagi tasdiqlar ekvivalentdir:
1) G daraxtdir;
2) G asiklikdir va n=m—l ;
3) G bog‘lamlidir va n=m— 1;
4) G bog ‘lamlidir va undan istalgan qirrani olib tashlash amalini qo‘llash natijasida bog‘lamli bo‘Imagan graf hosil bo‘ladi, y a ’ni G ning har bir qirrasi ко ‘prikdir;
5) G grafning o ‘zaro ustma-ust tushmaydigan istalgan ikkita uchi faqat bitta oddiy zanjir bilan tutashtiriladi;
6) G asiklik bo ‘lib, uning qo ‘shni bo ‘Imagan ikki uchini qirra bilan tutashtirish amalini qo‘llash natijasida faqat bir siklga ega bo ‘Igan graf hosil bo ‘ladi.
Isboti. Teoremaning 1) tasdig‘idan uning 2) tasdig‘i kelib chiqishini isbotlaymiz. G graf daraxt bo‘lsin. Daraxtning ta’rifiga ko‘ra, u asiklik bo‘lishini ta’kidlab, m bo‘yicha matematik induksiya usuUni qo‘llaymiz.
Matematik induksiya usulining bazasi: agar m— 1 bo‘lsa, u holda G daraxt faqat bitta uchdan tashkil topgan bo‘ladi. Tabiiyki, agar bitta uchga ega bo‘lgan grafda sikl bo‘lmasa, u holda unda birorta ham qirra yo‘q, ya’ni n=0. Demak, bu holda tasdiq to‘g‘ridir.
Induksion o‘tish: G daraxt uchun k> 2 va m=k bo‘lganda, 2) tasdiq o‘rinli bo‘lsin deb faraz qilamiz. Endi uchlari soni m=k+ 1 va qirralari soni n bo‘lgan daraxtni qaraymiz. Bu daraxtning ixtiyoriy qirrasini (v,, v2) bilan belgilab, undan bu qirrani olib tashlasak, vt uchdan v2 uchgacha marshruti (aniqrog‘i, zanjiri) mavjud bo‘lmagan grafni hosil qilamiz, chunki agar hosil bo‘lgan grafda bunday zanjir bor bo‘lsa edi, u holda G daraxtda sikl topilar edi. Bunday bo‘lishi esa mumkin emas.
Hosil bo‘lgan graf ikkita Gx va G2 bog‘lamli komponentalardan iborat bo‘lib, bu komponentalaming har biri daraxtdir. Yana shuni ham e’tiborga olish kerakki, Gx va G2 daraxtlaming har biridagi uchlar soni к dan oshmaydi.
Matematik induksiya usuliga ko‘ra, bu daraxtlaming har birida qirralar soni uning uchlari sonidan bitta kam b o ‘lishini ta’kidlaymiz, ya’ni G{ graf (m, n)-graf bo‘lsa, quyidagi tengliklar o ‘rinlidir: /i=/jj+w2+ l, k + l= m l+m 1 va n=m — 1 (/=1,2). Bu tengliklardan
n=a1+n2+ l= m l—l+ m 2—1 + 1= (m,+/n2)—1 = (fc+l)—1
bo‘lishi kelib chiqadi. Demak, m=k+ 1 bo‘lganda ham n=m— I tenglik o‘rinlidir. Bu esa, matematik induksiya usuliga ko‘ra, kerakli tasdiqning isbotlanganligini anglatadi.
Minimal uzunlikka ega y o ‘l haqidagi masala. Berilgan bog‘lamli grafning har bir qirrasiga (agar berilgan graf oriyentirlangan bo‘lsa — yoyiga) qandaydir haqiqiy son mos qo‘yib, bu sonni qirraning (yoyning) uzunligi, deb ataymiz. Qirraning (yoyning) uzunligi additivlik xossasiga ega deb faraz qilamiz, ya’ni qirralar (yoylar) yordamida tuzilgan zanjiming (yo ‘Ining) uzunligi shu zanjimi (yo‘lni) tashkil etuvchi qirralar (yoylar) uzunliklari yig‘indisiga tengdir.
Tabiiyki, qirraning yoki yoyning uzunligi tushunchasi yechilayotgan masalaning mohiyatiga qarab, muayyan bir ma’noga ega bo‘lishi mumkin. Masalan, ikki shahar orasidagi masofa, qandaydir operatsiyani bajarish uchun zarur mablag‘ (xarajatlar) yoki vaqt va boshqalar. Shu nuqtayi nazardan, umuman olganda, bu yerda manfiy uzunlikka ega yoki uzunligi nolga teng qirra (yoy) ham ma’noga ega deb hisoblanadi.
Xulosa:
Men bu labaratorya ishida o`rmon bilan darxt farqini, daraxtning uchlari va qirralari sonlari orasida qanday bog`lanish borligini o`rgandim.