Vrste grafova u strukturi podataka s primjerima

โšก Pametni saลพetak

Grafovi u strukturi podataka su nelinearne kolekcije vrhova i bridova klasificiranih u porodice kao ลกto su usmjereni, neusmjereni, ponderirani, cikliฤki, acikliฤki, potpuni, povezani, bipartitni, Eulerovi i Hamiltonovi grafovi na temelju strukture.

  • ๐Ÿ“ Definicija: Graf G = (V, E) je nelinearna struktura gdje je V skup vrhova, a E skup bridova koji povezuju parove vrhova.
  • โžก๏ธ smjer: Usmjereni grafovi koriste rubove sa strelicama s fiksnim izvorom i ciljem, dok neusmjereni grafovi omoguฤ‡uju dvosmjerno kretanje preko svakog ruba.
  • โš–๏ธ Teลพina: Ponderirani grafovi pripisuju numeriฤku cijenu svakom bridu, dok neponderirani grafovi tretiraju sve bridove kao veze jednake cijene.
  • ๐Ÿ” ciklusa: Cikliฤki grafovi sadrลพe jedan ili viลกe ciklusa; usmjereni acikliฤki graf (DAG) zabranjuje cikluse i omoguฤ‡uje rasporeฤ‘ivanje i topoloลกko sortiranje.
  • ๐Ÿ”— Potpunost: Potpuni grafovi povezuju svaki par vrhova, povezani grafovi dopuลกtaju put izmeฤ‘u bilo koja dva vrha, a nulti grafovi imaju nula bridova.
  • ๐Ÿงฉ Posebne vrste: Bipartitni, Eulerovi, Hamiltonovi, viลกestruki, cikliฤki i trivijalni grafovi nameฤ‡u specifiฤno pravilo o tome kako su vrhovi i bridovi rasporeฤ‘eni.

Vrste grafova u strukturi podataka

Graf je nelinearna struktura podataka koja se sastoji od vrhova i bridova. Vrhovi sadrลพe informacije ili podatke, a bridovi djeluju kao veza izmeฤ‘u para vrhova.

Grafovi mogu biti viลกe vrsta, ovisno o poloลพaju ฤvorova i rubova. Evo nekih vaลพnih vrsta grafova:

Usmjereni graf

Rubovi usmjerenog grafa sadrลพe strelice koje oznaฤavaju smjer. Strelica odreฤ‘uje kamo je rub usmjeren ili gdje zavrลกava. Evo primjera usmjerenog grafa.

Usmjereni graf

Usmjereni graf

  • Moลพemo iฤ‡i od ฤvora A do D.
  • Meฤ‘utim, ne moลพemo iฤ‡i od ฤvora D do ฤvora A, jer rub pokazuje od A do D.
  • Kako Graf nema teลพine, putovanje od vrha A do D ฤ‡e koลกtati isto kao i putovanje od D do F.

Neusmjereni graf

Neusmjereni graf sadrลพi bridove bez pokazivaฤa. To znaฤi da se moลพemo kretati obrnuto izmeฤ‘u dva vrha. Evo jednostavnog primjera neusmjerenog grafa.

Neusmjereni graf

Neusmjereni graf

U gornjem grafikonu,

  • Moลพemo se kretati od toฤke A do toฤke B.
  • Takoฤ‘er se moลพemo pomaknuti iz B u A.
  • Rubovi ne sadrลพe smjerove.

To je primjer neusmjerenog grafa koji ima konaฤan broj vrhova i bridova bez teลพina.

Ponderirani grafikon

Graf koji sadrลพi teลพine ili troลกkove na rubovima naziva se ponderirani graf. Numeriฤka vrijednost opฤ‡enito predstavlja troลกak premjeลกtanja iz jednog vrha u drugi. I usmjereni i neusmjereni grafovi mogu imati teลพine na svojim rubovima. Evo primjera ponderiranog grafa (usmjerenog).

Usmjereni graf s teลพinom

Usmjereni graf s teลพinom

  • Od A do B, postoji rub, a teลพina je 5, ลกto znaฤi da ฤ‡e nas premjeลกtanje od A do B koลกtati 5.
  • A pokazuje na B, ali u ovom grafu, B nema izravnu prednost nad A. Dakle, ne moลพemo putovati od B do A.
  • Meฤ‘utim, ako se ลพelimo pomaknuti od A do F, postoji viลกe puteva. Putevi su ADF i ABF. ADF ฤ‡e koลกtati (10+11) ili 21.
  • Ovdje ฤ‡e put ABF koลกtati (5+15) ili 20. Ovdje zbrajamo teลพinu svakog brida u putu.

Evo primjera neusmjerenog grafa s teลพinama:

Neusmjereni graf s teลพinom

Neusmjereni graf s teลพinom

Ovdje rub ima teลพinu, ali nema smjer. Dakle, to znaฤi da ฤ‡e putovanje od vrha A do D koลกtati 10 i obrnuto.

Dvosmjerni graf

Dvosmjerni i neusmjereni grafovi imaju zajedniฤko svojstvo. To je:

  • Opฤ‡enito, neusmjereni graf moลพe imati jedan brid izmeฤ‘u dva vrha.

Na primjer:

Dvosmjerni graf

  • Ovdje ฤ‡e prelazak s A na D ili D na A koลกtati 10.
  • U dvosmjernom grafu moลพemo imati dva ruba izmeฤ‘u dva vrha.

Evo primjera:

Dvosmjerni graf

Dvosmjerni graf

Putovanje od A do D koลกtat ฤ‡e nas 17, ali putovanje od D do A koลกtat ฤ‡e nas 12. Dakle, ne moลพemo dodijeliti dvije razliฤite teลพine ako se radi o neusmjerenom grafu.

Beskonaฤni graf

Graf ฤ‡e sadrลพavati beskonaฤan broj bridova i ฤvorova. Ako je graf beskonaฤan i ujedno povezan graf, tada ฤ‡e sadrลพavati i beskonaฤan broj bridova. Ovdje proลกireni bridovi znaฤe da se viลกe bridova moลพe spojiti na te ฤvorove putem bridova. Evo primjera beskonaฤnog grafa:

Beskonaฤni graf

Beskonaฤni graf

Null Graph

Null graf sadrลพi samo ฤvorove ili vrhove, ali bez bridova. Ako je zadan graf G = (V, E), gdje su V vrhovi, a E bridovi, bit ฤ‡e null ako je broj bridova E nula. Evo primjera Null grafa:

Null Graph

Null Graph

Trivijalni graf

Struktura podataka grafa smatra se trivijalnom ako je prisutan samo jedan vrh ili ฤvor bez bridova. Evo primjera trivijalnog grafa:

Trivijalni graf

Viลกestruki grafikon

Graf se naziva multigraf kada postoji viลกe bridova izmeฤ‘u dva vrha ili vrh ima petlju. Izraz "petlja" u strukturi podataka grafa oznaฤava brid koji pokazuje na isti ฤvor ili vrh. Multigraf moลพe biti usmjeren ili neusmjeren. Evo primjera multigrafa:

Viลกestruki grafikon

Postoje dva brida od B do A. ล toviลกe, vrh E ima vlastitu petlju. Gornji graf je usmjereni graf bez teลพina na bridovima.

Kompletan grafikon

Graf je potpun ako svaki vrh ima usmjerene ili neusmjerene bridove sa svim ostalim vrhovima. Pretpostavimo da postoji ukupno V vrhova i da svaki vrh ima toฤno V-1 bridova. Tada ฤ‡e se ovaj graf nazivati โ€‹โ€‹potpunim grafom. U ovoj vrsti grafa, svaki vrh je povezan sa svim ostalim vrhovima putem bridova. Evo primjera potpunog grafa s pet vrhova:

Kompletan grafikon

Na slici moลพete vidjeti da je ukupan broj ฤvorova pet, a svi ฤvorovi imaju toฤno ฤetiri brida.

Povezani graf

Graf se naziva povezani graf ako poฤinjemo od ฤvora ili vrha i moลพemo putovati do svih ฤvorova iz poฤetnog ฤvora. Za to mora postojati barem jedan brid izmeฤ‘u svakog para ฤvorova ili vrhova. Evo primjera povezanog grafa:

Povezani graf

Evo objaลกnjenja gore navedenog povezanog grafa:

  • Pod pretpostavkom da nema brida izmeฤ‘u C i F, ne moลพemo putovati od A do G. Meฤ‘utim, brid C do F omoguฤ‡uje nam putovanje do bilo kojeg ฤvora iz zadanog ฤvora.
  • Potpuni graf je povezani graf jer se moลพemo kretati s ฤvora na bilo koji drugi ฤvor u danom grafu.

Cikliฤki graf

Graf se naziva cikliฤkim ako u grafu postoji jedan ili viลกe ciklusa. Evo primjera cikliฤkog grafa:

Cikliฤki graf

Ovdje vrhovi A, B i C tvore ciklus. Graf moลพe imati viลกe ciklusa unutar sebe.

Usmjereni acikliฤki graf (DAG)

Graf se naziva usmjereni acikliฤki graf ili DAG ako unutar grafa nema ciklusa. DAG je vaลพan pri izvoฤ‘enju Topoloลกko sortiranje ili pronalaลพenje redoslijeda izvrลกenja. DAG je takoฤ‘er vaลพan za stvaranje sustava rasporeฤ‘ivanja ili skeniranje ovisnosti resursa itd. Meฤ‘utim, gornji graf ne sadrลพi nikakav ciklus unutra. Evo jednostavnog primjera usmjerenog acikliฤkog grafa (DAG):

Usmjereni acikliฤki graf (DAG)

Grafikon ciklusa

Cikliฤni graf nije isto ลกto i cikliฤki graf. U cikliฤkom grafu, svaki ฤvor ฤ‡e imati toฤno dva povezana brida, ลกto znaฤi da ฤ‡e svaki ฤvor imati toฤno dva stupnja. Evo primjera cikliฤkog grafa:

Grafikon ciklusa

Bipartitni graf

Takve vrste Grafovi su posebne vrste grafova gdje su vrhovi dodijeljeni dvama skupovima. Dvodijelni graf mora slijediti pravilo:

  • Dva skupa vrhova trebaju biti razliฤita, ลกto znaฤi da svi vrhovi moraju biti podijeljeni u dvije skupine ili skupa.
  • Vrhovi istog skupa ne smiju formirati nikakve bridove.

Bipartitni graf

Eulerov graf

Struktura podataka Graf smatra se Eulerovim grafom ako svi vrhovi imaju paran stupanj. Pojam stupanj vrhova oznaฤava broj bridova koji pokazuju na ili iz odreฤ‘enog vrha. Evo primjera Eulerovog grafa:

Eulerov graf

Svi vrhovi imaju parne stupnjeve. Vrhovi A, D, E i H imaju dva stupnja. Ovdje ฤvor C ima ฤetiri stupnja, ลกto je paran broj.

Hamiltonov graf

Hamiltonov graf je povezani graf u kojem moลพete posjetiti sve vrhove iz zadanog vrha bez ponovnog posjeฤ‡ivanja istog ฤvora ili koriลกtenja istog brida. Ova vrsta povezanog grafa poznata je kao "Hamiltonov graf". Put koji posjeฤ‡ujete kako biste provjerili je li zadani graf Hamiltonov graf ili ne poznat je kao Hamiltonov put. Evo jednostavnog primjera Hamiltonovog grafa:

Hamiltonov graf

Na ovoj slici moลพemo posjetiti sve vrhove iz bilo kojeg ฤvora u gornjem grafikonu. Jedan od putova moลพe biti ADCHBETakoฤ‘er je moguฤ‡e pronaฤ‡i Hamiltonov ciklus. Hamiltonov ciklus poฤinje i zavrลกava u istom vrhu. Dakle, Hamiltonov ciklus ฤ‡e biti ADCHBEA.

Pitanja i odgovori

Graf je nelinearna struktura podataka sastavljena od vrhova (ฤvorova) i rubova (veza). Vrhovi pohranjuju podatke, a rubovi povezuju parove vrhova, tvoreฤ‡i mreลพe koje se koriste za modeliranje cesta, druลกtvenih veza, ovisnosti i joลก mnogo toga.

Usmjereni grafovi koriste rubove sa strelicama koje pokazuju od izvora prema cilju, ograniฤavajuฤ‡i kretanje u tom smjeru. Neusmjereni grafovi koriste rubove bez strelica, omoguฤ‡ujuฤ‡i kretanje izmeฤ‘u povezanih vrhova u bilo kojem smjeru.

Usmjereni acikliฤki graf ili DAG je usmjereni graf koji ne sadrลพi cikluse. DAG-ovi se ลกiroko koriste za rasporeฤ‘ivanje zadataka, izgradnju sustava, rjeลกavanje ovisnosti paketa i bilo koji tijek rada koji zahtijeva valjani topoloลกki poredak.

Ponderirani graf svakom bridu pripisuje numeriฤku teลพinu koja predstavlja udaljenost, vrijeme ili troลกak. Algoritmi za pronalaลพenje najkraฤ‡eg puta poput Dijkstre i protokoli mreลพnog usmjeravanja koriste ponderirane grafove za pronalaลพenje najuฤinkovitijeg puta.

Potpun graf ima brid izmeฤ‘u svakog para vrhova. Povezanom grafu potreban je samo put izmeฤ‘u svakog para. Svaki potpuni graf je povezan, ali ne svaki povezani graf je potpun.

Bipartitni grafovi dijele vrhove u dva disjunktna โ€‹โ€‹skupa s rubovima samo izmeฤ‘u dva skupa. Oni modeliraju probleme usklaฤ‘ivanja kao ลกto su dodjeljivanje radnika poslovima, studenata teฤajevima ili vozaฤa prijevoza putnicima.

Grafovske neuronske mreลพe primjenjuju strojno uฤenje na podatke strukturirane u obliku grafova za zadatke poput otkrivanja prijevara, otkrivanja lijekova i preporuฤivanja. Grafovi znanja pokreฤ‡u AI pri odgovaranju na pitanja, a raฤunalni grafovi opisuju svaki prolaz naprijed i natrag u dubokom uฤenju.

Da. AI Copilot alati kao ลกto su GitHub Copilot i ChatGPT generiraju standardne kodove za BFS, DFS, Dijkstra i topoloลกko sortiranje u veฤ‡ini jezika. Programeri i dalje moraju provjeriti rubne sluฤajeve, rukovanje ciklusima i sloลพenost produkcijskog koda.

Saลพmite ovu objavu uz: