Bu məqaləni lazımdır. |
Qraf (riyaziyyat) - (ing.graph, ru. граф) - proqramlaşdırmada: öz aralarında ixtiyari qaydada birləşmiş (tillər vasitəsilə) müəyyən sayda (sıfır da ola bilər) təpədən ibarət olan verilənlər strukturu. Qrafın istənilən iki təpəsi (düyün) tillə birləşdirilə və ya birləşdirilməyə bilər. Qrafın bütün təpələrinin birləşməsi vacib deyil, ancaq qrafın istənilən iki təpəsi arasında “yol” varsa, onda belə qraf rabitəli adlanır. Qrafin təpələrinin və tillərinin hər hansı altçoxluğuna altqraf deyilir. Qrafların çoxlu növləri vardır: çəkili qraflar – hər bir tilinə müəyyən əmsal (çəki) təyin olunur; yönəldilmiş (oriyentasiyalı) qraflar və ya diqraflar – hər bir tilin müəyyən istiqaməti olur, yəni til B təpəsindən A təpəsinə yox, A təpəsindən B təpəsinə gedir.
1. Qraflar
1.1 Əsas anlayışlar və qrafların növləri
Riyaziyyat əşyaların məzmunu ilə yox, onların strukturu ilə əməliyyatlar aparır və onları tam verilənlər vasitəsilə təsvir edir. Əşyanın keyfiyyətləri və xüsusiyyətlərindən kənarlaşmaq həmin əşyanın bünövrəsini, onu ilk görünüşdə ondan fərqli digər əşyalarla bir sıraya qoymağa imkan verən ayırlmaz hissəsini ortaya çıxarmağa icazə verir. Qraflar nəzəriyyəsi riyaziyyatın məhz bu kənarlaşmaq prinsipi istifadə edilən bölməsidir - əşyanın nə olduğu vacib deyil, onun yalnız qraf olub-olmaması, yəni qraf üçün vacib olan keyfiyyətlərə malik olub-olmaması vacibdir.
Qrafların təsvir olunmasına keçməmişdən əvvəl bəzi misallara baxaq, qrafa tərif verək və qraflar nəzəriyyəsinin əsas anlayışları ilə tanış olaq. Burada qraflar nəzəriyyəsinin bütün anlayışlarına baxa bilməyəcəyik (buna ehtiyac da yoxdur), amma bizə gələcəkdə lazım ola biləcək böyük hissəsini gözdən keçirəcəyik.
Gündəlik həyatda biz qraf strukturuna malik olan obyektlərlə tez-tez təmasda oluruq. Belə obyektlərə fərqli cür ictimai nəqliyyat marşrutlarını aid etmək olar – metropoliten sistemi, avtobus marşrutları və s. Proqramçıya kompüter şəbəkəsi xüsusən tanışdır və bu şəbəkə özü də qrafdır. (bax şək. 1). Bu iki anlayışın ortaq nöqtəsi hər ikisində xətlərlə birləşmiş nöqtələrin olmasıdır. Kompüter şəbəkəsində bu nöqtələr ayrı-ayrı serverlər, xətlər isə fərqli elektrik siqnallarıdır. Metropolitendə nöqtələr stansiyalar, xətlər isə stansiyalar arasındakı tunellərdir. Qraflar nəzəriyyəsində nöqtələr təpələr və ya düyünlər, xətlər isə tillər və ya qövslər adlanır. Beləlkiklə, qraf tillərlər birləşmiş təpələr məcmuəsidir.
Kompüter şəbəkələrinə qayıdaq. Bu şəbəkə şərti olaraq bir neçə kompüter və onları birləşdirən xətlər kimi göstərilə bilən müəyyən topologiyaya məxsusdur. Yuxarıdakı şəkildə taməlaqəli topologiya göstərilib.
Belə şəbəkə faktiki olaraq qrafdır. Beş kompüter beş təpə, onlar arasındakı birləşdirici xətlər (elektrik siqnallarının ötürülməsi yolları) isə tillərdir. Kompüterləri təpələrlə əvəz etsək, biz riyazi obyekt – qraf alarıq. Bu qrafın 10 tili və 5 təpəsi olacaq. Təpələri şəkildəki kimi adlandırmaq vacib deyil, bunu ixtiyari üsulla da etmək olar.
Qraflar nəzəriyyəsində istifadə edilən bəzi vacib anlayışlar:
· G=(V, E), burada G – qraf, V- onun təpələri, E – tillər;
· |V| - sıra (təpələrin sayı);
· |E| - qrafın ölçüsü (tillərin sayı).
Bizim halımıda (şək. 1) |V| = 5, |E| = 10 olur.
Hər hansı istənilən bir təpədən digər istənilən təpəyə getmək mümkündürsə, deməli bu qraf yönəldilməmiş (oriyentasiyasız) əlaqəli qraf adlanır (şək. 1). Əgər qraf əlaqəlidirsə, amma bu şərt yerinə yetirilmirsə, onda bu qraf yönəldilmiş (oriyentasiyalı) və ya orqraf adlanır (şək. 2). Orqrafın tilləri adətən qövs adlandırılır.
Orientasiyalı və oriyentasiyasız qraflarda təpənin qüvvəti anlayışı istifadə edilir. Təpənin qüvvəti – həmin təpəni digər təpələrlə birləşdirən tillərin sayına deyilir. Təpənin giriş qüvvəti – həmin təpəyə daxil olan tillərin sayı, çıxış qüvvəti – həmin təpədən çıxan tillərin sayıdır. Qrafın bütün qüvvətlərinin cəmi bütün tillərinin sayının ikiqatına bərabərdi. Şəkil 2-dəki qraf üçün bütün qüvvətlərin cəmi 20-ə bərabərdir.
Orientasiyasız qrafdan fərqli olaraq oriyentasiyalı qrafda h təpəsindən s təpəsinə aralıq təpələri keçmədən yalnız qövs (til) h təpəsindən çıxıb s təpəsinə daxil olursa, hərəkət etmək olur.
Orientasiyalı qraf növbəti qeyd olunma formasına məxsusdurlar:
G=(V, A), burada V – təpələr, A – tillərin istiqamətidir.
Qrafların üçüncü tipi – qarışıq qraflardır (şək. 3). Belə qrafların həm istiqamətlənmiş, həm də istiqamətlənməmiş tilləri olur. Formal olaraq bu cür qraflar belə yazılır:
G=(V, E, A), burada V – təpələr, E – tillərin sayı, A – tillərin istiqamətidir.
Bu şəkildə həm istiqamətlənmiş təpələr - [(e, a), (e, c), (a, b), (c, a), (d, b)], həm də istiqamətlənməmiş təpələr [(e, d), (e, b), (d, c)…] mövcuddur.
Tilin hər iki sonluğu üst-üstə düşürsə, yəni hər hansı bir F təpəsindən çıxan til, elə həmin təpəyə daxil olursa, onda belə til ilmə adlanır (şək 4.).
İki və ya daha çox qraf ilk görünüşdə öz strukturlarına görə fərqli görünə bilərlər, bu əsasən onların fərqli cür təsvir olunmasına görə yaranır. Bu həmişə belə olmur. İki qraf götürək (şək 5.). Onlar bir-birlərinə ekvivalentdirlər. Çünki, bu qraflardan hər birinin strukturunu dəyişdirmədən, digərini qura bilərik. Belə qraflar izomorf qraflar adlanır, yəni bir qrafda müəyyən sayda tilə məxsus olan təpə digər qrafda identik təpəyə sahib olur.
Qrafın hər tilinə qarşılıq olaraq tilin çəkisi adlı müəyyən əmsal qarşı qoyulursa, belə qraf çəkili qraf adlanır. Fərqli məsələlərdə çəki qismində fərqli ölçülər verilə bilər, məsələn, marşrutların uzunluğu, qiyməti və s. Qrafların qrafiki təsvirində çəki əmsalları bir qayda olaraq tillərin yanında göstərilir.
Nəzərdən keçirdiyimiz istənilən qrafda yol anlayışını fərqləndirə bilərik, həm də tək bir yol yox, bir neçə yol. Yol – hər biri qonşu təpə ilə til vasitəsilə birləşdirilən təpələr ardıcıllığıdır. Əgər ilk və son təpələr üst-üstə düşürsə, belə yol dövr adlanır. Yolun uzunluğu onu təşkil edən tillərin sayı ilə müəyyən edilir. Məsələn, şək 4.a-da [(e), (a), (b), (c)] ardıcıllığı yoldur. Bu yol altqrafdır, çünki o altqraflıq şərtini ödəyir. Bu şərt belədir: G’=(V’, E’) qrafı o vaxt G=(V, E) qrafının altqrafı adlanır ki, V’ və E’ V, E-yə aid olsun.
Qraf bir çox riyazi obyektlər kimi kompüterdə göstərilə və onun yaddaşında saxlanıla bilər. Qrafların interpretasiyasının bir çox üsulu var, onlardan ən məşhurları isə bunlardır:
· Qonşuluq matrisi;
· İdentiklik matrisi;
· Qonşuluq siyahısı;
· Tillər siyahısı.
İlk iki metodun istifadəsi qrafın ikiölçülü massiv (matris) kimi göstərilməsini nəzərdə tutur. Bu matrislərin ölçüləri isə baxılan qrafdakı təpələr və tillərin sayından asılı olur. Beləliklə, nxn ölçülü qonşuluq matrisinin ölçüsündə n təpələrin sayı, mxn ölçülü identiklik matrisində isə n təpələrin, m isə tillərin sayıdır.
1.2 Qonşuluq matrisi
Qrafın qonşuluq matrisi – hər bir elementi ya 0, ya da 1 qiyməti alan kvadrat matrisə deyilir. Qrafı qonşuluq matrisi kimi təsvir etməmişdən əvvəl, belə matrisin sadə misalına baxaq. (şək. 6)
Bu ikilik kvadrat matrisdir, çünki onun sətirlərinin sayı sütunlarının sayına bərabərdir və onun istənilən elementi ya 1, ya da ki 0 qiymətini alıb. İlk sətir və ilk sütun (onlar matrisin tərkibinə daxil deyillər və burada sadəcə anlaşılmanın rahatlığı üçün təsvir ediliblər) kəsişmələrində elementlər yerləşən rəqəmlərdən ibarətdir və bu sətir və sütunlar elementlərin indeksini müəyyənləşdirirlər. Belə matris olduğu halda müvafiq matris qurmaq elə də çətin deyil.
Aşağıda (şək 7.) həmin 4x4 ölçülü qonşuluq matrisi təsvir edilib. Mavi rənglə seçilmiş rəqəmləri matrisin qraf təsviri olan sağdakı qarışıq qrafın təpələri kimi qəbul etmək olar.
Qrafın qrafiki təsviri üçün qonşuluq matrisinə görə onun təpələrini saymaq bacarığına və növbəti qaydanı bilməyə ehtiyac var. Bir təpədən digərinə keçid mümkün olanda (yəni til olanda), xanaya 1 yazılır, keçid mümkün olmadıqda isə 0. Deyilənləri formallaşdırsaq alarıq ki - əgər i-dən j-yə til varsa, A[i][j]=1, əks halda A[i][j]=0. Göründüyü kimi, əsas diaqonalın bütün elementləri 0-a bərabərdir, bu qrafda ilmələrin olmamasının nəticəsidir. Lakin, bu həmişə belə olmaya bilər.
Proqram yazılışında qonşuluq matrisi adi nxn ölçüsünə malik ikiölçülü massiv kimi göstərilir. Burada n – qrafın təpələrinin sayıdır. C++ dilində bu matrisi belə yazmaq mümkündür:
int graph[n][n] =
{
{0, 1, 0, 1},
{0, 0, 1, 1},
{0, 1, 0, 0},
{1, 0, 1, 0}
};
Əgər qraf əvvəlcədən naməlumdursa və onu istifadəçi müəyyən edirsə, ikiölçülü massivin daxil edilməsi üçün əl ilə daxiletmə yaratmaq lazımdır.
Qrafı qonşuluq matrisi formasında təsvir etmək üçün O(|V|2) yaddaş lazımdır. Çünki matrisin ölçüsü əvvəl də dediyimiz kimi bütün təpələrin kvadratına bərabərdir. Və əgər təpələrə nisbətdə qrafın tillərinin sayı çox deyilsə, onda matrisin bir çox elementləri sıfıra bərabər olacaq və beləliklə bu qədər yaddaş yerinin istifadəsi məqsədəuyğun olmayacaq. Elə tip qonşuluq matrisləri üçün xüsusi təqdimat forması mövcuddur.
1.3 Qonşuluq siyahısı
Qonşuluq siyahıları qonşuluq matrislərinə nisbətən yaddaş istifadəsinə daha az tələbkardırlar vəə onların saxlanması üçün O(|V|+|E|) yaddaş lazımdır. Belə siyahını qrafiki olaraq iki sütunu və qrafın təpələrindən çox olmayan sətri olan cədvəl olaraq göstərə bilərik. Misal kimi qarışıq qrafı götürək:
Bu qrafda 6 təpə (|V|) və 5 til (|E|) var. Sonunculardan 2 til istiqamətlənmiş və 3-ü istiqamətlənməmişdir. Həmçinin hər təpədən ən azı bir til digər təpəyə daxil olur. Buradan belə nəticə çıxır ki, qrafın qonşuluq siyahısında |V| sətir olacaq.
Çıxış təpəsi | Giriş təpəsi |
1 | 5 |
2 | 6 |
3 | 2, 5 |
4 | 5 |
5 | 1, 4 |
6 | 2 |
İndi isə qonşuluq siyahısının proqram realizasiyasına keçək. Təpə və tillərin sayı klaviatura vasitəsilə daxil ediləcəyi üçün məhdudiyyətlər verməliyik. Yəni, bu məhdudiyyətlərdən birincisi maksimum təpə sayını (Vmax), digəri isə maksimum til sayını(Emax) müəyyənləşdirməlidir. Növbəti addımda bizə üç birölçülü tam ədədlər massivi lazım olacaq:
· terminal[1..Emax] – tillərin daxil olduğu təpələri saxlayır;
· next [1..Emax] – terminal massivinin elementlərinə daxil olan göstəriciləri saxlayır;
· head[1..Vmax] – altsiyahıların, yəni terminal massivinin bir i-ci təpədə qonşu olan bütün təpələrin sayılmasının başlandığı təpələrə olan göstəriciləri saxlayır.
Proqramda iki hissəni ayırmaq lazımdır – daha sonra qonşuluq siyahısına əlavə ediləcək tillərin daxil edilməsi və alınan qonşuluq siyahısının ekrana verilməsi. Bunları C++ dilində belə realizə etmək olar:
const int Vmax=100, Emax=Vmax*2;
int head[Vmax];
int next_el[Emax];
int terminal[Emax];
int n, m, i, j, k, v, u;
char r;
void Add(int v, int u) //tilin əlavə edilməsi
{
k=k+1;
terminal[k]=u;
next_el[k]=head[v];
head[v]=k;
}
void main() //əsas funksiya
{
k=0;
cout<<"Təpələrin sayı >> "; cin>>n;
cout<<"Кол. ребер >> "; cin>>m;
cout<<"Qonşu təpələri daxil edin:"<<endl;
for (i=0; i<m; i++) {
cin>>v>>u;
cout<<"Til istiqamətlənibmi.? (y/n) >> "; cin>>r;
if (r=='y') Add(v, u);
else {
Add(v, u);
Add(u, v); }
cout<<"..."<<endl;
}
cout<<"Qrafın qonşuluq siyahısı:";
for (i=0; i<n+1; i++) //qonşuluq siyahısının xaric edilməsi
{
j=head[i];
if (i) cout<<i<<"->";
while (j>0) {
if (!next_el[j]) cout<<terminal[j];
else cout<<terminal[j]<<", ";
j=next_el[j];
}
cout<<endl; }}
İlk fikir verməli olduğumuz addım qrafın n təpəsinin və m tilinin daxil edilməsinin istənməsidir (istifadəçi əvvəldən bu məlumatları bilməlidir). Daha sonra tillərin (qonşu təpələrin) daxil edilməsi dövrü başladılır. Bu dövrdəki şərt ona görə lazımdır ki, istifadəçi hansı tilin daxil edildiyini bilsin. Əgər istiqamətləndirilmiş til daxil edilirsə, add funksiyasına 1 dəfə müraciət edilir, əgər çağırılmırsa 2 dəfə, bu zaman funksiya həm i təpəsindən v təpəsinə, həm də v təpəsindən i təpəsinə tilin olduğu haqqında məlumat daxil edir. Qonşuluq siyahısı formalaşdırılandan sonra, proqram bu siyahını ekrana verir. Bunun üçün də 1-dən n-ə qədər dövr istifadə edilir ki, burada da n – təpələrin sayıdır. Həmçinin burada növbəti mövcud olmayan i-ci təpəyə müraciət edən göstərici olduğu halda dövrü kəsən şərt də daxil edilib.
Add funksiyası əvvəlcə boş olan qonşuluq siyahısına elementlərin daxil edilməsini həyata keçirir:
Add(v, u) {
k=k+1;
terminal[k]=u;
next[k]=head[v];
head[v]=k;}
Bunu həyata keçirmək üçün formal parametrlər, köməkçi k dəyişəni və üç birölçülü tam ədədlər massivi üzərində əməliyyatlar aparılır. K dəyişəninin qiyməti 1 vahid artırılır. Daha sonra terminal massivinin k-cı elementinə hər hansı til üçün sonuncu olan u təpəsi yazılır. Üçüncü sətirdə next massivinin k-cı elementinə terminal massivinin növbəti elementi mənimsədilir. Sonda isə head massivin başlanğıc elementlərinə - hər hansı i-ci təpəsi olan qonşu təpəli altsiyahılara göstəricilərlə doldurulur.
İ-ci sətir və 2-ci sütunun kəsişməsindəki xanaya bir neçə element yazıla bildiyi üçün (bir neçə qonşu təpələrə uyğundur) qonşuluq siyahısındakı hər bir sətri onun altsiyahısı adlandıracayıq. Beləliklə, çıxışa verilmiş qonşuluq siyahısında altsiyahıların elementləri əksinə sıralanmış olacaq. Amma, bir qayda olaraq, (altsiyahılarda) qonşu təpələrin çıxış ardıcıllığı sadəcə vacib deyil.
1.3 Tillər siyahısı
Hər sətrində iki qonşu təpə və onları birləşdirən tilin çəkisi yazılan siyahı qrafın tilləri siyahısı adlanır. G=(V, E) əlaqəli qrafını götürək və E tillər çoxluğunu iki sinifə - d və k siniflərinə bölək, burada d – G qrafının ancaq oriyentasiyasız tillərini özündə saxlayan altçoxluq, k – isə oriyentasiyasız tilləri özündə saxlayan altçoxluqdur. Fərz edək ki, hər hansı p ölçüsü d altçoluğuna daxil olan bütün tillərin, s ölçüsü isə k altçoluğuna daxil olan bütün tillərin sayına uyğundur. Bu zaman G qrafı üçün tillər siyahısının hündürlüyü s+p*2 bərabər olacaq. Digər sözlərlə, tillər siyahısındakı sətirlərin sayı həmişə oriyentasiyalı tillərin oriyentasiyasız tillərin ikiqatı ilə cəminə bərabər olmalıdır. Bu fikir əvvəlki düsturdan alınır, daha dəqiq desək, qrafın bu cür təqdimedilmə üsulu özündə hər sətirdə iki qonşu təpənin və həm v və u təpələrini birləşdirən və həm v-dən u-ya, həm də u-dan v-yə gedən oriyentasiyasız tilin saxlanmasını nəzərdə tutur.
Özündə 5 təpə, 4 til və hər tilə uyğun tam qiymət (rahat olması üçün bu qiymətlər təpələrin nömrələrindən təşkil edilib) müvafiq qoyulan qarışıq qrafı nəzərdən keçirək (şək. 9).
Bu qrafda 3 istiqamətlənmiş və 1 istiqamətlənməmiş til var. Bu qiymətləri düsturda yerinə qoysaq, tillər siyahısının hündürlüyünü alarıq: 3+1*2=5.
1 | 3 | 13 |
1 | 4 | 14 |
2 | 1 | 12 |
3 | 1 | 13 |
5 | 1 | 15 |
Verilmiş qrafın tillər siyahısını belə görünür. Bu nx3 ölçülü cədvəldə n=s+p*2=3+1*2=5. İlk sütunun elementləri artan sıra ilə düzüldüyü halda, ikinci sütundakı elementlərin ardıcıllığı birinci sütundan, üçüncü sütundakı elementlərin ardıcıllığı isə ikinci sütundan asılıdır.
Tillər siyahısının proqram realizasiyası qonşuluq siyahısının realizasiyasına bənzəyir. Sonuncuda olduğu kimi tillər siyahısında da, ilk öncə məlumatların daxil edilməsini təşkil etmək lazımdır. Bu məlumatlar xüsusi funksiyanın köməyi ilə massivlərə düzüləcəklər. İkinci addımda alınmış siyahını ekrana çıxartmaq lazımdır.
Qonşuluq siyahısında ancaq qonşu təpələr saxlandığı halda, burada onlardan başqa həmin təpələrə insidentliyə məxsus olan tillərin çəkiləri də saxlanır. Bunun üçün də əlavə massiv lazım olur. Həmçinin bu metod təpələrin xaric edilməsinin daha ciddi üsulunu tələb edir, çünki, əgər qonşuluq siyahısında ardıcıllıq ancaq sətirlərdə pozulurdusa, analoji üsulun istifadəsi sütunlardakı ardıcıllığın pozulmasına gətirib çıxara bilər. Buna görə də tillərin əlavə edilməsi funksiyasını başqa cür yazmaq lazımdır.
const int Vmax=100,
Emax=Vmax*(Vmax-1)/2; //qrafın tam olduğu halda
int terminal[Emax], weight[Emax], point[Emax];
int head[Vmax], last[Vmax];
int n, m, v, u, w, k=0, i;
char r;
void Add(int v, int u, int w) //tilin əlavə edilməsi
{
k=k+1;
terminal[k]=u; weight[k]=w;
//əgər v təpəsi yenidirsə,
//onun ilk qonşu təpəsi k nömrəsini alacaq
if (head[v]==0) head[v]=k;
//əgər təpəyə artıq baxılıbsa
//ona qonşu olan növbəti təpə k nömrəsini alacaq
if (last[v]!=0) point[last[v]]=k;
last[v]=k;
}
void main() //əsas funksiya
{
cout<<"Təpə sayı >> "; cin>>n;
cout<<"Til sayı >> "; cin>>m;
cout<<"Tilləri və onların çəkilərini daxil edin (v, u, w):\n";
for (i=0; i<m; i++) {
cin>>v>>u>>w;
cout<<"Til oriyentasıya olunub mu? (y/n) >> "; cin>>r;
if (r=='y') Add(v, u, w);
else {
Add(v, u, w);
Add(u, v, w);
}
cout<<"..."<<endl;
}
m=m*2;
cout<<"Qrafın tilləri siyahısı:\n";
for (i=0; i<m; i++) //Tillər siyahısının xaric edilməsi
{
k=head[i];
while (k>0)
{
cout<<"("<<i<<"->"<<terminal[k]<<")$="<<weight[k]<<endl;
k=point[k];
}
}
}
Qrafda maksimum təpə sayı Vmax ilə, maksimum til sayı isə Emax ilə işarə edilib. Son sabit Vmax*(Vmax-1)/2 ifadəsi ilə inisializasiya edilir və bu ifadə təpələrin bilindiyi halda tam qrafda tillərin sayını hesablayır. Növbəti sətirlərdə proqramda 5 massiv göstərilir:
· terminal – tillərin daxil olduğu təpələr massivi;
· weight – tillərin çəkiləri massivi;
· head[i]=k – i-ci təpə üçün terminal və weight massivlərinin k-cı elementlərini saxayır. Burada terminal[k] – i-ci təpə ilə qonşu olan ilk təpə, weight[k] – isə ona insident olan tilin çəkisidir;
· last[i]=k – i-ci təpə üçün terminal və weight massivlərinin k-cı elementlərini saxayır. Burada terminal[k] – i-ci təpə ilə qonşu olan son təpə, weight[k] – isə ona insident olan tilin çəkisidir;
· point[i]=k – i-ci təpə üçün terminal və weight massivlərinin k-cı elementlərini saxayır. Burada terminal[k] – i-ci təpə ilə qonşu olan növbəti təpə, weight[k] – isə ona insident olan tilin çəkisidir.
Təpə (n) və tillərin (m) daxil edilməsindən sonra hər addımında istifadəçinin klaviaturadan iki qonşu təpə və onların arasındakı tilin çəkisini daxil etdiyi dövr işə düşür. Əgər til oriyentasiya olunmuşdursa, onda siyahıya tillərin əlavə edilmə funksiyası (Add) bir dəfə, əgər oriyentasiya olunmamışdırsa iki dəfə çağırılır. Funksiyanın ümumi çağırış sayı elə həmin s+(p*2) düsturu ilə hesablanır ki, burada s – qrafın oriyentasiya olunmuş tilləri sayı, p isə oriyentasiya edilməmiş tillərinin sayıdır. Tillər siyahısını formalaşdırandan sonra m dəyişənini iki dəfə artırmaq lazımdır ki, tam oriyentasiya edilməmiş qraf daxil edildiyi halda onun hündürlüyü 0+(m*2) ilə hesablanır.
Bundan sonra təkcə alınmış konstruksiyanı ekrana çıxartmaq lazımdır. İ təpəsi ilə qonşu olan ilk təpənin nömrəsinə head[i] elementi işarə edir, deməli xarici dövrün hər yeni iterasiyası bu elementin götürülməsi ilə başlamalıdır (k=head[i]). Daxili dövr isə i təpəsi ilə heç bir qonşu təpə tapılmadıqda (k sıfıra bərabər olduqda) kəsilir, xarici dövr isə tillər siyahısının çıxışa verilib bitirildiyi anda.
1.5 İdentiklik matrisi
Bunu yadda saxlamaq lazımdır ki, g tilinin və u və y təpələrinin hər birinin g tilinə identik olduğunu ancaq g tilinin u və y təpələrini birləşdirdiyi halda demək olar. İdentiklik matrisi əvvəlki qonşuluq matrisi üsuluna oxşar üsulla qurulur. Yəni qonşuluq matrisi n təpəli və nxn ölçülü olduğu halda, identiklik matrisi n təpəli və m tilli nxm ölçülü olur. Bu halda xanaya qiymət verdikdə təpəni təpə ilə yox, təpəni til ilə qarşı qoymaq lazım olur.
Orientasiya edilməmiş qrafın identiklik matrisinin hər xanasında ya 0, ya da 1 yazılır, oriyentasiyalı qrafın matrisində isə 1, 0 və ya -1 qeyd edilir. İndi isə deyilənləri daha strukturlu şəkildə yazaq:
1. Orientasiya edilməmiş qraf:
· 1 – təpə tilə identikdir;
· 0 – təpə tilə identik deyil.
2. Orientasiyalı qraf:
· 1 – təpə tilə identikdir və onun başlanğıcıdır;
· 0 – təpə tilə identik deyil;
· 1 – təpə tilə identikdir və onun sonudur.
Əvvəlcə oriyentasiya edilməmiş qraf üçün (şək. 10), daha sonra orqraf üçün (şək. 11) identiklik matrisini quraq. Tilləri a-dan e-yə qədər hərflərlə, təpələri isə rəqəmlərlə işarə edək. Qrafın heç bir tili istiqamətlənmiş olmaığı üçün identiklik matrisi ancaq müsbət ədədlərlə doludur.
Orqraf üçün identiklik matrisi biraz başqa görünüşə məxsusdur. Onun hər bir xanasına üç qiymətdən biri yazılır. Hər iki matrisdə sıfırların eyni yerdə yazıldığına diqqət yetirin. Bunun səbəbi hər iki qrafın eyni struktura malik olmasıdır. Amma bəzi müsbət vahidlər mənfiyə çevrilirlər. Məsələn oriyentasiya olunmamış qrafda (1, b) xanası 1 olduğu halda, oriyentasiyalı qrafda bu vahid əks işarə ilə -1 kimi yazılır. Bunun səbəbi ilk dəfə tilinin istiqamətlənməmiş olması, oriyentasiyalı qrafda isə 1 təpəsindən çıxaraq istiqamətlənmiş olmasıdır.
Burada hər bir sütun bir tilə cavabdehdir, buna görə də identiklik matrisi ilə yazılmış qraf həmişə bu göstəriciyə malik olacaq - istiqamətlənmiş til üçün matrisin istənilən sütunu ya iki vahidə, ya da 1 və -1 qiymətlərinə malik olaraq, digər xanalar 0 olur.
Proqramda identiklik matrisi qonşuluq matrisi kimi, daha dəqiq desək ikiölçülü massivlə verilir. Onun elementləri isə ya daxil edilmə zamanı, ya da proqramın işə düşməsi ilə inisializasiya edilirlər.
- Qraf nümunəsi
- Qraf nümunəsi
- Qraf nümunəsi
- Qraf nümunəsi
- Qraf nümunəsi
- Qraf nümunəsi
Ədəbiyyat
- İsmayıl Calallı (Sadıqov), “İnformatika terminlərinin izahlı lüğəti”, 2017, “Bakı” nəşriyyatı, 996 s.
wikipedia, oxu, kitab, kitabxana, axtar, tap, meqaleler, kitablar, oyrenmek, wiki, bilgi, tarix, tarixi, endir, indir, yukle, izlə, izle, mobil, telefon ucun, azeri, azəri, azerbaycanca, azərbaycanca, sayt, yüklə, pulsuz, pulsuz yüklə, haqqında, haqqinda, məlumat, melumat, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, şəkil, muisiqi, mahnı, kino, film, kitab, oyun, oyunlar, android, ios, apple, samsung, iphone, pc, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, web, computer, komputer
Bu meqaleni vikilesdirmek lazimdir Lutfen meqaleni umumvikipediya ve redakte qaydalarina uygun sekilde tertib edin Bu adin diger istifade formalari ucun bax Qraf Qraf riyaziyyat ing graph ru graf proqramlasdirmada oz aralarinda ixtiyari qaydada birlesmis tiller vasitesile mueyyen sayda sifir da ola biler tepeden ibaret olan verilenler strukturu Qrafin istenilen iki tepesi duyun tille birlesdirile ve ya birlesdirilmeye biler Qrafin butun tepelerinin birlesmesi vacib deyil ancaq qrafin istenilen iki tepesi arasinda yol varsa onda bele qraf rabiteli adlanir Qrafin tepelerinin ve tillerinin her hansi altcoxluguna altqraf deyilir Qraflarin coxlu novleri vardir cekili qraflar her bir tiline mueyyen emsal ceki teyin olunur yoneldilmis oriyentasiyali qraflar ve ya diqraflar her bir tilin mueyyen istiqameti olur yeni til B tepesinden A tepesine yox A tepesinden B tepesine gedir 1 Qraflar 1 1 Esas anlayislar ve qraflarin novleri Riyaziyyat esyalarin mezmunu ile yox onlarin strukturu ile emeliyyatlar aparir ve onlari tam verilenler vasitesile tesvir edir Esyanin keyfiyyetleri ve xususiyyetlerinden kenarlasmaq hemin esyanin bunovresini onu ilk gorunusde ondan ferqli diger esyalarla bir siraya qoymaga imkan veren ayirlmaz hissesini ortaya cixarmaga icaze verir Qraflar nezeriyyesi riyaziyyatin mehz bu kenarlasmaq prinsipi istifade edilen bolmesidir esyanin ne oldugu vacib deyil onun yalniz qraf olub olmamasi yeni qraf ucun vacib olan keyfiyyetlere malik olub olmamasi vacibdir Qraflarin tesvir olunmasina kecmemisden evvel bezi misallara baxaq qrafa terif verek ve qraflar nezeriyyesinin esas anlayislari ile tanis olaq Burada qraflar nezeriyyesinin butun anlayislarina baxa bilmeyeceyik buna ehtiyac da yoxdur amma bize gelecekde lazim ola bilecek boyuk hissesini gozden kecireceyik Gundelik heyatda biz qraf strukturuna malik olan obyektlerle tez tez temasda oluruq Bele obyektlere ferqli cur ictimai neqliyyat marsrutlarini aid etmek olar metropoliten sistemi avtobus marsrutlari ve s Proqramciya komputer sebekesi xususen tanisdir ve bu sebeke ozu de qrafdir bax sek 1 Bu iki anlayisin ortaq noqtesi her ikisinde xetlerle birlesmis noqtelerin olmasidir Komputer sebekesinde bu noqteler ayri ayri serverler xetler ise ferqli elektrik siqnallaridir Metropolitende noqteler stansiyalar xetler ise stansiyalar arasindaki tunellerdir Qraflar nezeriyyesinde noqteler tepeler ve ya duyunler xetler ise tiller ve ya qovsler adlanir Belelkikle qraf tillerler birlesmis tepeler mecmuesidir Komputer sebekelerine qayidaq Bu sebeke serti olaraq bir nece komputer ve onlari birlesdiren xetler kimi gosterile bilen mueyyen topologiyaya mexsusdur Yuxaridaki sekilde tamelaqeli topologiya gosterilib Bele sebeke faktiki olaraq qrafdir Bes komputer bes tepe onlar arasindaki birlesdirici xetler elektrik siqnallarinin oturulmesi yollari ise tillerdir Komputerleri tepelerle evez etsek biz riyazi obyekt qraf alariq Bu qrafin 10 tili ve 5 tepesi olacaq Tepeleri sekildeki kimi adlandirmaq vacib deyil bunu ixtiyari usulla da etmek olar Qraflar nezeriyyesinde istifade edilen bezi vacib anlayislar G V E burada G qraf V onun tepeleri E tiller V sira tepelerin sayi E qrafin olcusu tillerin sayi Bizim halimida sek 1 V 5 E 10 olur Her hansi istenilen bir tepeden diger istenilen tepeye getmek mumkundurse demeli bu qraf yoneldilmemis oriyentasiyasiz elaqeli qraf adlanir sek 1 Eger qraf elaqelidirse amma bu sert yerine yetirilmirse onda bu qraf yoneldilmis oriyentasiyali ve ya orqraf adlanir sek 2 Orqrafin tilleri adeten qovs adlandirilir Orientasiyali ve oriyentasiyasiz qraflarda tepenin quvveti anlayisi istifade edilir Tepenin quvveti hemin tepeni diger tepelerle birlesdiren tillerin sayina deyilir Tepenin giris quvveti hemin tepeye daxil olan tillerin sayi cixis quvveti hemin tepeden cixan tillerin sayidir Qrafin butun quvvetlerinin cemi butun tillerinin sayinin ikiqatina beraberdi Sekil 2 deki qraf ucun butun quvvetlerin cemi 20 e beraberdir Orientasiyasiz qrafdan ferqli olaraq oriyentasiyali qrafda h tepesinden s tepesine araliq tepeleri kecmeden yalniz qovs til h tepesinden cixib s tepesine daxil olursa hereket etmek olur Orientasiyali qraf novbeti qeyd olunma formasina mexsusdurlar G V A burada V tepeler A tillerin istiqametidir Qraflarin ucuncu tipi qarisiq qraflardir sek 3 Bele qraflarin hem istiqametlenmis hem de istiqametlenmemis tilleri olur Formal olaraq bu cur qraflar bele yazilir G V E A burada V tepeler E tillerin sayi A tillerin istiqametidir Bu sekilde hem istiqametlenmis tepeler e a e c a b c a d b hem de istiqametlenmemis tepeler e d e b d c movcuddur Tilin her iki sonlugu ust uste dusurse yeni her hansi bir F tepesinden cixan til ele hemin tepeye daxil olursa onda bele til ilme adlanir sek 4 Iki ve ya daha cox qraf ilk gorunusde oz strukturlarina gore ferqli gorune bilerler bu esasen onlarin ferqli cur tesvir olunmasina gore yaranir Bu hemise bele olmur Iki qraf goturek sek 5 Onlar bir birlerine ekvivalentdirler Cunki bu qraflardan her birinin strukturunu deyisdirmeden digerini qura bilerik Bele qraflar izomorf qraflar adlanir yeni bir qrafda mueyyen sayda tile mexsus olan tepe diger qrafda identik tepeye sahib olur Qrafin her tiline qarsiliq olaraq tilin cekisi adli mueyyen emsal qarsi qoyulursa bele qraf cekili qraf adlanir Ferqli meselelerde ceki qisminde ferqli olculer verile biler meselen marsrutlarin uzunlugu qiymeti ve s Qraflarin qrafiki tesvirinde ceki emsallari bir qayda olaraq tillerin yaninda gosterilir Nezerden kecirdiyimiz istenilen qrafda yol anlayisini ferqlendire bilerik hem de tek bir yol yox bir nece yol Yol her biri qonsu tepe ile til vasitesile birlesdirilen tepeler ardicilligidir Eger ilk ve son tepeler ust uste dusurse bele yol dovr adlanir Yolun uzunlugu onu teskil eden tillerin sayi ile mueyyen edilir Meselen sek 4 a da e a b c ardicilligi yoldur Bu yol altqrafdir cunki o altqrafliq sertini odeyir Bu sert beledir G V E qrafi o vaxt G V E qrafinin altqrafi adlanir ki V ve E V E ye aid olsun Qraf bir cox riyazi obyektler kimi komputerde gosterile ve onun yaddasinda saxlanila biler Qraflarin interpretasiyasinin bir cox usulu var onlardan en meshurlari ise bunlardir Qonsuluq matrisi Identiklik matrisi Qonsuluq siyahisi Tiller siyahisi Ilk iki metodun istifadesi qrafin ikiolculu massiv matris kimi gosterilmesini nezerde tutur Bu matrislerin olculeri ise baxilan qrafdaki tepeler ve tillerin sayindan asili olur Belelikle nxn olculu qonsuluq matrisinin olcusunde n tepelerin sayi mxn olculu identiklik matrisinde ise n tepelerin m ise tillerin sayidir 1 2 Qonsuluq matrisi Qrafin qonsuluq matrisi her bir elementi ya 0 ya da 1 qiymeti alan kvadrat matrise deyilir Qrafi qonsuluq matrisi kimi tesvir etmemisden evvel bele matrisin sade misalina baxaq sek 6 Bu ikilik kvadrat matrisdir cunki onun setirlerinin sayi sutunlarinin sayina beraberdir ve onun istenilen elementi ya 1 ya da ki 0 qiymetini alib Ilk setir ve ilk sutun onlar matrisin terkibine daxil deyiller ve burada sadece anlasilmanin rahatligi ucun tesvir edilibler kesismelerinde elementler yerlesen reqemlerden ibaretdir ve bu setir ve sutunlar elementlerin indeksini mueyyenlesdirirler Bele matris oldugu halda muvafiq matris qurmaq ele de cetin deyil Asagida sek 7 hemin 4x4 olculu qonsuluq matrisi tesvir edilib Mavi rengle secilmis reqemleri matrisin qraf tesviri olan sagdaki qarisiq qrafin tepeleri kimi qebul etmek olar Qrafin qrafiki tesviri ucun qonsuluq matrisine gore onun tepelerini saymaq bacarigina ve novbeti qaydani bilmeye ehtiyac var Bir tepeden digerine kecid mumkun olanda yeni til olanda xanaya 1 yazilir kecid mumkun olmadiqda ise 0 Deyilenleri formallasdirsaq alariq ki eger i den j ye til varsa A i j 1 eks halda A i j 0 Gorunduyu kimi esas diaqonalin butun elementleri 0 a beraberdir bu qrafda ilmelerin olmamasinin neticesidir Lakin bu hemise bele olmaya biler Proqram yazilisinda qonsuluq matrisi adi nxn olcusune malik ikiolculu massiv kimi gosterilir Burada n qrafin tepelerinin sayidir C dilinde bu matrisi bele yazmaq mumkundur int graph n n 0 1 0 1 0 0 1 1 0 1 0 0 1 0 1 0 Eger qraf evvelceden namelumdursa ve onu istifadeci mueyyen edirse ikiolculu massivin daxil edilmesi ucun el ile daxiletme yaratmaq lazimdir Qrafi qonsuluq matrisi formasinda tesvir etmek ucun O V 2 yaddas lazimdir Cunki matrisin olcusu evvel de dediyimiz kimi butun tepelerin kvadratina beraberdir Ve eger tepelere nisbetde qrafin tillerinin sayi cox deyilse onda matrisin bir cox elementleri sifira beraber olacaq ve belelikle bu qeder yaddas yerinin istifadesi meqsedeuygun olmayacaq Ele tip qonsuluq matrisleri ucun xususi teqdimat formasi movcuddur 1 3 Qonsuluq siyahisi Qonsuluq siyahilari qonsuluq matrislerine nisbeten yaddas istifadesine daha az telebkardirlar vee onlarin saxlanmasi ucun O V E yaddas lazimdir Bele siyahini qrafiki olaraq iki sutunu ve qrafin tepelerinden cox olmayan setri olan cedvel olaraq gostere bilerik Misal kimi qarisiq qrafi goturek Bu qrafda 6 tepe V ve 5 til E var Sonunculardan 2 til istiqametlenmis ve 3 u istiqametlenmemisdir Hemcinin her tepeden en azi bir til diger tepeye daxil olur Buradan bele netice cixir ki qrafin qonsuluq siyahisinda V setir olacaq Cixis tepesi Giris tepesi1 52 63 2 54 55 1 46 2 Indi ise qonsuluq siyahisinin proqram realizasiyasina kecek Tepe ve tillerin sayi klaviatura vasitesile daxil edileceyi ucun mehdudiyyetler vermeliyik Yeni bu mehdudiyyetlerden birincisi maksimum tepe sayini Vmax digeri ise maksimum til sayini Emax mueyyenlesdirmelidir Novbeti addimda bize uc birolculu tam ededler massivi lazim olacaq terminal 1 Emax tillerin daxil oldugu tepeleri saxlayir next 1 Emax terminal massivinin elementlerine daxil olan gostericileri saxlayir head 1 Vmax altsiyahilarin yeni terminal massivinin bir i ci tepede qonsu olan butun tepelerin sayilmasinin baslandigi tepelere olan gostericileri saxlayir Proqramda iki hisseni ayirmaq lazimdir daha sonra qonsuluq siyahisina elave edilecek tillerin daxil edilmesi ve alinan qonsuluq siyahisinin ekrana verilmesi Bunlari C dilinde bele realize etmek olar const int Vmax 100 Emax Vmax 2 int head Vmax int next el Emax int terminal Emax int n m i j k v u char r void Add int v int u tilin elave edilmesi k k 1 terminal k u next el k head v head v k void main esas funksiya k 0 cout lt lt Tepelerin sayi gt gt cin gt gt n cout lt lt Kol reber gt gt cin gt gt m cout lt lt Qonsu tepeleri daxil edin lt lt endl for i 0 i lt m i cin gt gt v gt gt u cout lt lt Til istiqametlenibmi y n gt gt cin gt gt r if r y Add v u else Add v u Add u v cout lt lt lt lt endl cout lt lt Qrafin qonsuluq siyahisi for i 0 i lt n 1 i qonsuluq siyahisinin xaric edilmesi j head i if i cout lt lt i lt lt gt while j gt 0 if next el j cout lt lt terminal j else cout lt lt terminal j lt lt j next el j cout lt lt endl Ilk fikir vermeli oldugumuz addim qrafin n tepesinin ve m tilinin daxil edilmesinin istenmesidir istifadeci evvelden bu melumatlari bilmelidir Daha sonra tillerin qonsu tepelerin daxil edilmesi dovru basladilir Bu dovrdeki sert ona gore lazimdir ki istifadeci hansi tilin daxil edildiyini bilsin Eger istiqametlendirilmis til daxil edilirse add funksiyasina 1 defe muraciet edilir eger cagirilmirsa 2 defe bu zaman funksiya hem i tepesinden v tepesine hem de v tepesinden i tepesine tilin oldugu haqqinda melumat daxil edir Qonsuluq siyahisi formalasdirilandan sonra proqram bu siyahini ekrana verir Bunun ucun de 1 den n e qeder dovr istifade edilir ki burada da n tepelerin sayidir Hemcinin burada novbeti movcud olmayan i ci tepeye muraciet eden gosterici oldugu halda dovru kesen sert de daxil edilib Add funksiyasi evvelce bos olan qonsuluq siyahisina elementlerin daxil edilmesini heyata kecirir Add v u k k 1 terminal k u next k head v head v k Bunu heyata kecirmek ucun formal parametrler komekci k deyiseni ve uc birolculu tam ededler massivi uzerinde emeliyyatlar aparilir K deyiseninin qiymeti 1 vahid artirilir Daha sonra terminal massivinin k ci elementine her hansi til ucun sonuncu olan u tepesi yazilir Ucuncu setirde next massivinin k ci elementine terminal massivinin novbeti elementi menimsedilir Sonda ise head massivin baslangic elementlerine her hansi i ci tepesi olan qonsu tepeli altsiyahilara gostericilerle doldurulur I ci setir ve 2 ci sutunun kesismesindeki xanaya bir nece element yazila bildiyi ucun bir nece qonsu tepelere uygundur qonsuluq siyahisindaki her bir setri onun altsiyahisi adlandiracayiq Belelikle cixisa verilmis qonsuluq siyahisinda altsiyahilarin elementleri eksine siralanmis olacaq Amma bir qayda olaraq altsiyahilarda qonsu tepelerin cixis ardicilligi sadece vacib deyil 1 3 Tiller siyahisi Her setrinde iki qonsu tepe ve onlari birlesdiren tilin cekisi yazilan siyahi qrafin tilleri siyahisi adlanir G V E elaqeli qrafini goturek ve E tiller coxlugunu iki sinife d ve k siniflerine bolek burada d G qrafinin ancaq oriyentasiyasiz tillerini ozunde saxlayan altcoxluq k ise oriyentasiyasiz tilleri ozunde saxlayan altcoxluqdur Ferz edek ki her hansi p olcusu d altcoluguna daxil olan butun tillerin s olcusu ise k altcoluguna daxil olan butun tillerin sayina uygundur Bu zaman G qrafi ucun tiller siyahisinin hundurluyu s p 2 beraber olacaq Diger sozlerle tiller siyahisindaki setirlerin sayi hemise oriyentasiyali tillerin oriyentasiyasiz tillerin ikiqati ile cemine beraber olmalidir Bu fikir evvelki dusturdan alinir daha deqiq desek qrafin bu cur teqdimedilme usulu ozunde her setirde iki qonsu tepenin ve hem v ve u tepelerini birlesdiren ve hem v den u ya hem de u dan v ye geden oriyentasiyasiz tilin saxlanmasini nezerde tutur Ozunde 5 tepe 4 til ve her tile uygun tam qiymet rahat olmasi ucun bu qiymetler tepelerin nomrelerinden teskil edilib muvafiq qoyulan qarisiq qrafi nezerden kecirek sek 9 Bu qrafda 3 istiqametlenmis ve 1 istiqametlenmemis til var Bu qiymetleri dusturda yerine qoysaq tiller siyahisinin hundurluyunu alariq 3 1 2 5 1 3 131 4 142 1 123 1 135 1 15 Verilmis qrafin tiller siyahisini bele gorunur Bu nx3 olculu cedvelde n s p 2 3 1 2 5 Ilk sutunun elementleri artan sira ile duzulduyu halda ikinci sutundaki elementlerin ardicilligi birinci sutundan ucuncu sutundaki elementlerin ardicilligi ise ikinci sutundan asilidir Tiller siyahisinin proqram realizasiyasi qonsuluq siyahisinin realizasiyasina benzeyir Sonuncuda oldugu kimi tiller siyahisinda da ilk once melumatlarin daxil edilmesini teskil etmek lazimdir Bu melumatlar xususi funksiyanin komeyi ile massivlere duzulecekler Ikinci addimda alinmis siyahini ekrana cixartmaq lazimdir Qonsuluq siyahisinda ancaq qonsu tepeler saxlandigi halda burada onlardan basqa hemin tepelere insidentliye mexsus olan tillerin cekileri de saxlanir Bunun ucun de elave massiv lazim olur Hemcinin bu metod tepelerin xaric edilmesinin daha ciddi usulunu teleb edir cunki eger qonsuluq siyahisinda ardicilliq ancaq setirlerde pozulurdusa analoji usulun istifadesi sutunlardaki ardicilligin pozulmasina getirib cixara biler Buna gore de tillerin elave edilmesi funksiyasini basqa cur yazmaq lazimdir const int Vmax 100 Emax Vmax Vmax 1 2 qrafin tam oldugu halda int terminal Emax weight Emax point Emax int head Vmax last Vmax int n m v u w k 0 i char r void Add int v int u int w tilin elave edilmesi k k 1 terminal k u weight k w eger v tepesi yenidirse onun ilk qonsu tepesi k nomresini alacaq if head v 0 head v k eger tepeye artiq baxilibsa ona qonsu olan novbeti tepe k nomresini alacaq if last v 0 point last v k last v k void main esas funksiya cout lt lt Tepe sayi gt gt cin gt gt n cout lt lt Til sayi gt gt cin gt gt m cout lt lt Tilleri ve onlarin cekilerini daxil edin v u w n for i 0 i lt m i cin gt gt v gt gt u gt gt w cout lt lt Til oriyentasiya olunub mu y n gt gt cin gt gt r if r y Add v u w else Add v u w Add u v w cout lt lt lt lt endl m m 2 cout lt lt Qrafin tilleri siyahisi n for i 0 i lt m i Tiller siyahisinin xaric edilmesi k head i while k gt 0 cout lt lt lt lt i lt lt gt lt lt terminal k lt lt lt lt weight k lt lt endl k point k Qrafda maksimum tepe sayi Vmax ile maksimum til sayi ise Emax ile isare edilib Son sabit Vmax Vmax 1 2 ifadesi ile inisializasiya edilir ve bu ifade tepelerin bilindiyi halda tam qrafda tillerin sayini hesablayir Novbeti setirlerde proqramda 5 massiv gosterilir terminal tillerin daxil oldugu tepeler massivi weight tillerin cekileri massivi head i k i ci tepe ucun terminal ve weight massivlerinin k ci elementlerini saxayir Burada terminal k i ci tepe ile qonsu olan ilk tepe weight k ise ona insident olan tilin cekisidir last i k i ci tepe ucun terminal ve weight massivlerinin k ci elementlerini saxayir Burada terminal k i ci tepe ile qonsu olan son tepe weight k ise ona insident olan tilin cekisidir point i k i ci tepe ucun terminal ve weight massivlerinin k ci elementlerini saxayir Burada terminal k i ci tepe ile qonsu olan novbeti tepe weight k ise ona insident olan tilin cekisidir Tepe n ve tillerin m daxil edilmesinden sonra her addiminda istifadecinin klaviaturadan iki qonsu tepe ve onlarin arasindaki tilin cekisini daxil etdiyi dovr ise dusur Eger til oriyentasiya olunmusdursa onda siyahiya tillerin elave edilme funksiyasi Add bir defe eger oriyentasiya olunmamisdirsa iki defe cagirilir Funksiyanin umumi cagiris sayi ele hemin s p 2 dusturu ile hesablanir ki burada s qrafin oriyentasiya olunmus tilleri sayi p ise oriyentasiya edilmemis tillerinin sayidir Tiller siyahisini formalasdirandan sonra m deyisenini iki defe artirmaq lazimdir ki tam oriyentasiya edilmemis qraf daxil edildiyi halda onun hundurluyu 0 m 2 ile hesablanir Bundan sonra tekce alinmis konstruksiyani ekrana cixartmaq lazimdir I tepesi ile qonsu olan ilk tepenin nomresine head i elementi isare edir demeli xarici dovrun her yeni iterasiyasi bu elementin goturulmesi ile baslamalidir k head i Daxili dovr ise i tepesi ile hec bir qonsu tepe tapilmadiqda k sifira beraber olduqda kesilir xarici dovr ise tiller siyahisinin cixisa verilib bitirildiyi anda 1 5 Identiklik matrisi Bunu yadda saxlamaq lazimdir ki g tilinin ve u ve y tepelerinin her birinin g tiline identik oldugunu ancaq g tilinin u ve y tepelerini birlesdirdiyi halda demek olar Identiklik matrisi evvelki qonsuluq matrisi usuluna oxsar usulla qurulur Yeni qonsuluq matrisi n tepeli ve nxn olculu oldugu halda identiklik matrisi n tepeli ve m tilli nxm olculu olur Bu halda xanaya qiymet verdikde tepeni tepe ile yox tepeni til ile qarsi qoymaq lazim olur Orientasiya edilmemis qrafin identiklik matrisinin her xanasinda ya 0 ya da 1 yazilir oriyentasiyali qrafin matrisinde ise 1 0 ve ya 1 qeyd edilir Indi ise deyilenleri daha strukturlu sekilde yazaq 1 Orientasiya edilmemis qraf 1 tepe tile identikdir 0 tepe tile identik deyil 2 Orientasiyali qraf 1 tepe tile identikdir ve onun baslangicidir 0 tepe tile identik deyil 1 tepe tile identikdir ve onun sonudur Evvelce oriyentasiya edilmemis qraf ucun sek 10 daha sonra orqraf ucun sek 11 identiklik matrisini quraq Tilleri a dan e ye qeder herflerle tepeleri ise reqemlerle isare edek Qrafin hec bir tili istiqametlenmis olmaigi ucun identiklik matrisi ancaq musbet ededlerle doludur Orqraf ucun identiklik matrisi biraz basqa gorunuse mexsusdur Onun her bir xanasina uc qiymetden biri yazilir Her iki matrisde sifirlarin eyni yerde yazildigina diqqet yetirin Bunun sebebi her iki qrafin eyni struktura malik olmasidir Amma bezi musbet vahidler menfiye cevrilirler Meselen oriyentasiya olunmamis qrafda 1 b xanasi 1 oldugu halda oriyentasiyali qrafda bu vahid eks isare ile 1 kimi yazilir Bunun sebebi ilk defe tilinin istiqametlenmemis olmasi oriyentasiyali qrafda ise 1 tepesinden cixaraq istiqametlenmis olmasidir Burada her bir sutun bir tile cavabdehdir buna gore de identiklik matrisi ile yazilmis qraf hemise bu gostericiye malik olacaq istiqametlenmis til ucun matrisin istenilen sutunu ya iki vahide ya da 1 ve 1 qiymetlerine malik olaraq diger xanalar 0 olur Proqramda identiklik matrisi qonsuluq matrisi kimi daha deqiq desek ikiolculu massivle verilir Onun elementleri ise ya daxil edilme zamani ya da proqramin ise dusmesi ile inisializasiya edilirler Qraf numunesi Qraf numunesi Qraf numunesi Qraf numunesi Qraf numunesi Qraf numunesiEdebiyyatIsmayil Calalli Sadiqov Informatika terminlerinin izahli lugeti 2017 Baki nesriyyati 996 s