Duomenų struktūros ir algoritmai

Grafiko duomenų struktūros pamoka

Grafiko duomenų struktūros pamoka
Skaičiuojant grafikas yra mazgų, sujungtų nuorodomis, rinkinys. Pagrindinis skirtumas tarp medžio ir grafiko yra tas, kad medis turi vieną šaknies mazgą, o grafikas turi daugiau nei vieną šaknies mazgą. Prieš atvykdami čia jau turėtumėte turėti pagrindinių žinių apie medžio duomenų struktūrą, nes čia vartojamos sąvokos bus vartojamos mažai arba visiškai nepaaiškins. Jei neturite šių žinių, perskaitykite pamoką pavadinimu „Medžio duomenų struktūros pamoka pradedantiesiems“ nuorodoje https: // linuxhint.com / tree_data_structure_tutorial_beginners /.

Grafo mazgas vadinamas viršūne (daugiskaita - viršūnės). Kartais jis vis dar vadinamas mazgu; tai taip pat galima vadinti tašku. Nuoroda grafike vadinama kraštu. Kartais jis vis dar vadinamas nuoroda; tai taip pat galima vadinti linija.

Grafikas su daugybe funkcijų

Šiame paveiksle parodyta diagrama su daugybe funkcijų:

Apskritimai (diskai) yra viršūnės. Bet kuri tiesi linija arba išlenkta linija ar kilpa yra kraštas.

Grafiko ypatybės

Viršūnė

Viršūnė yra objektas. Tai gali būti namas; tai gali būti asmuo; tai gali būti abstraktus daiktavardis; tai gali būti bet koks objektas, kurį galite sugalvoti.

Briauna

Briauna yra ryšys (ryšys) tarp dviejų viršūnių; ryšys gali būti abstraktus.

Kilpa

Kilpa yra kraštas, jungiantis viršūnę su savimi.

Rodyklės kraštas

Apsvarstykite du žmones: Joną ir Petrą. Jei Jonas paskolina Petrui 100 dolerių, o jei Jonas ir Petras yra viršūnės, paskolos briauna bus nukreipta į Petrą. Jei abu partneriai pamiršta, kad Petras yra skolingas Jonui, o Petras skolina Jonui 100 USD, tai kitame to paties krašto gale rodyklės galas bus nukreiptas į Joną. Jei Petras paskolino Jonui 75 USD, o ne 100 USD, tada kitas pranašumas sujungtų Petrą su Jonu. Šio antrojo krašto rodyklės galas bus nukreiptas į Joną. Antruoju atveju yra du kraštai, po vieną rodyklės antgalį, nukreiptą į priešingas puses.

Viršūnė, į kurią nukreiptas kraštas, yra to krašto galvos viršūnė. Viršūnė, iš kurios išeina kraštas, yra uodegos viršūnė.

Incidentas

Briauna jungia dvi viršūnes. Sakoma, kad kraštas yra atsitikęs į bet kurią viršūnę. Briaunoje nebūtinai turi būti rodyklės antgalis. Dvi viršūnės yra žinomos kaip krašto galiniai taškai. Galima turėti grafiką, kuriame viršūnė nepriklauso jokiam kraštui, tačiau šioje instrukcijoje į tai nebus atsižvelgta.

Nenukreiptas grafikas

Briauna gali būti rodyklė, arba ne. Grafikas, kuriame nė viena kraštinė nėra rodyklė, yra nenukreiptas grafikas. Kraštą galima pavaizduoti tiesia linija arba kreive ar kilpa.

Kryptinis grafikas

Grafikas, kuriame kiekvienas kraštas yra rodyklė (kryptis), yra nukreiptas grafikas. Rodyklės kraštas gali būti pavaizduotas tiesia linija su rodyklės galu arba kreivė su rodyklės galu arba kilpa su rodyklės galu.

Krypties nebuvimas nenukreipto grafiko krašte reiškia, kad kiekvienas nenukreipto grafiko kraštas yra dvikryptis.

Viršūnės laipsnis

Viršūnių, esančių viršūnėje, skaičius yra viršūnės laipsnis. Kilpa turi du įvykius ant viršūnės, todėl kilpa skaičiuojama du kartus.

Grafiko tvarka

Grafiko tvarka yra viršūnių skaičius diagramoje.

Multigrafas

Daugialypis grafikas yra grafikas, kuriame kai kurioms viršūnių poroms yra daugiau nei vienas kraštas. Nenukreiptas multigrafas yra toks grafikas, kuriame kraštai neturi krypčių (nėra rodyklės). Nukreiptas multigrafas yra tas, kur kiekvienas kraštas yra rodyklė, o viršūnių poroms, turinčioms daugiau nei vieną rodyklę, viena viršūnė yra tų rodyklių uodega, o kita viršūnė yra tų pačių rodyklių galva. Šioje diagramoje parodytas nenukreiptas daugialypis grafas:

Keli kraštai (t.e. keli kraštai) viršūnių porai dar vadinami lygiagrečiais kraštais.

Strėlinė

Drebulys yra daugiagrafis, leidžiantis kilpas (vieną ar daugiau kilpų). Kai kurie daugiaraščiai neleidžia kilpų.

Paprastas grafikas

Paprastas grafikas yra grafikas, kuriame nėra dviejų viršūnių porų, turinčių kelis kraštus. Paprastame grafike negalima naudoti kilpų.

Tuščias grafikas

Tuščias grafikas yra grafikas, kuriame nėra viršūnių ir todėl nėra kraštų.

Mišrus grafikas

Mišrus grafikas yra grafikas, kuriame kai kurie kraštai yra rodyklės, o kiti - ne; kitaip tariant: vieni kraštai turi kryptis, o kiti nėra nukreipti.

Svertinis grafikas

Galima turėti grafiką, kuriame kiekvienam kraštui priskirtas skaičius, žinomas kaip svoris. Kai kurie kraštai turi tą patį skaičių, tačiau skaičiai paprastai skiriasi. Toks grafikas vadinamas svertiniu grafiku. Tam tikro grafiko skaičiai gali atspindėti ilgį ar kainą (kainas) arba tam tikrą dydį, priklausomai nuo problemos.

Nepriklausomas ir peržengęs laipsnį

Žodynas, laipsnis ir laipsnis galioja tik nukreiptam grafui. Grafikas gali būti daugialypis arba ne. Grafike gali būti kilpų, jos gali ir nebūti.

Straipsnių, sujungtų su viršūne, skaičius yra tos viršūnės laipsnis. Strėlė su viena rodyklės galu turi galvos galą ir uodegą. Su viršūne sujungtų uodegų skaičius yra tos viršūnės viršūnė.

Pastaba: diagrama su keliais kraštais porai viršūnių, kai keli kraštai yra priešingomis kryptimis, šioje instrukcijoje nėra nagrinėjami.

Programinės įrangos grafiko atvaizdavimas

Grafiką programinėje įrangoje galima pavaizduoti taip, kaip jis nupieštas diagramoje. Grafiką programinėje įrangoje taip pat galima pavaizduoti matematine matrica (dvimatis masyvas). Viena iš tokių matricų vadinama gretimumo matrica.

Adjacency Matrix

Gretimumo matrica yra kvadratinė matrica. Eilučių antraštės yra visos viršūnės, parašytos didėjimo tvarka. Stulpelių antraštės vis dar yra tos pačios viršūnės, parašytos didėjimo tvarka. Matricos eilučių ar stulpelių skaičiavimas prasideda nuo 1, o ne nuo nulio, kaip su masyvais. Identifikuojant elementą matricoje, eilutės numeris rašomas pirmiausia prieš stulpelio numerį.

Nenukreiptame grafike kiekvienas gretimumo matricos įrašas (elementas) yra kraštų, jungiančių dvi atitinkamas viršūnes, skaičius. Kilpa turėtų būti skaičiuojama du kartus. Nukreiptame grafike kiekvienas įrašas gretimumo matricoje yra arba briaunų skaičius, paliekantis eilutės viršūnę ir įvedantis atitinkamą stulpelio viršūnę, arba briaunų skaičius, paliekantis stulpelio viršūnę ir įvedantis į atitinkamą eilutės viršūnę. Pasirinkimą turi pats programuotojas. Šioje situacijoje (bet kuriuo atveju) kilpa vis tiek turėtų būti skaičiuojama vieną kartą.

Pastaba: Grafikas yra diagrama, kuri yra savarankiška duomenų struktūra. Gretimybės matrica taip pat yra savarankiška duomenų struktūra.

Nenukreiptas grafikas ir adjacencijos matrica

Šios diagramos rodo nenukreiptą grafiką ir atitinkamą gretimybės matricą:

Pagrindinė matricos įstrižainė yra įstrižainė iš viršaus į kairę į apačią į dešinę. Nenukreipta matrica yra simetriška priekinės įstrižainės atžvilgiu. A eilutės ir C stulpelio matricos įrašas yra 1, tai reiškia, kad yra vienas kraštas, jungiantis A ir C viršūnes. C eilutės ir B stulpelio matricos įrašas yra 3, o tai reiškia, kad yra 3 kraštai, jungiantys C ir B viršūnes. Panašiai paaiškinami ir kiti įrašai.

Eilučių įrašų suma nurodo atitinkamos viršūnės kraštų skaičių (laipsnį). A eilutės įrašų suma yra 2, o tai reiškia, kad 2 kraštai yra prijungti prie A viršūnės. B eilutės įrašų suma yra 6, o tai reiškia, kad 6 kraštai yra prijungti prie B viršūnės. Kiti įrašai yra panašiai paaiškinti.

„Directed Graph“ ir „Adjacency Matrix“

Šios diagramos rodo nukreiptą grafiką ir atitinkamą gretimybės matricą:

Nukreipto grafiko gretimumo matrica nebūtinai yra simetriška priekinės įstrižainės atžvilgiu. A eilutės ir C stulpelio matricos įrašas yra 1, tai reiškia, kad vienas kraštas išeina iš A viršūnės į C viršūnę. C eilutės ir B stulpelio matricos įrašas yra 3, o tai reiškia, kad 3 kraštai palieka nuo C viršūnės iki B viršūnės. Panašiai paaiškinami ir kiti įrašai.

Stulpelio įrašų suma suteikia (stulpelio) viršūnės laipsnį. Eilučių įrašų suma suteikia (eilutės) viršūnės laipsnį. A stulpelio įrašų suma yra 1, o tai reiškia, kad vienas kraštas nukreiptas į A viršūnę. B eilutės įrašų suma yra 2, tai reiškia, kad iš B viršūnės palieka 2 kraštai. Kiti įrašai yra panašiai paaiškinti.

Grafiko operacijos

Duomenų struktūrą, pvz., Grafiką, sudaro duomenų reikšmių rinkinys arba objektų rinkinys, plius santykis tarp objektų ir operacijos (funkcijos) tarp objektų. Ryšius grafike nurodo kraštai. Be to, diagramoje turėtų būti bent šios operacijos:

gretimas (G, x, y)

G reiškia grafiką. Ši operacija patikrina, ar kraštas sujungia viršūnę x ir viršūnę y. Matricos įrašo vertė ir padėtis rodo krašto (ir jo tipo) ryšį.

kaimynai (G, x)

Ši operacija pateikia visų viršūnių, tiesiogiai sujungtų su viršūne x, sąrašą. Matricos įrašo vertė ir padėtis rodo krašto ryšį.

pašalinti_vertex (G, x)

Ši operacija pašalina viršūnę, x iš grafiko. Jei viršūnė neturėjo krašto, nėra jokių problemų. Tačiau jei viršūnė turėjo nuorodas, taip pat reikėtų pašalinti nuorodas (kraštus). Matricos įrašo vertė ir padėtis rodo tam tikros viršūnės buvimą. Jei viršūnė pašalinama, matricą reikia sureguliuoti.

add_vertex (G, x)

Tai prideda viršūnę, x be kraštų, arba pakeičia viršūnę, kuri turėjo kraštus, bet buvo pašalinta. Matricos įrašo vertė ir padėtis rodo tam tikros viršūnės buvimą. Jei pridedama viršūnė, matricą reikia pakoreguoti.

add_edge (G, x, y)

Ši operacija prideda naują kraštą tarp viršūnės x ir viršūnės y, jei krašto nebuvo. Matricos įrašo vertė ir padėtis rodo konkretaus krašto buvimą. Jei pridedamas kraštas, matricą reikia pakoreguoti.

pašalinti_edžas (G, x, y)

Ši operacija pašalintų kraštą tarp viršūnės x ir viršūnės y, jei kraštas būtų. Matricos įrašo vertė ir padėtis rodo konkretaus krašto buvimą. Jei kraštas pašalinamas, matricą reikia sureguliuoti.

get_vertex_value (G, x)

Ši operacija grąžina vertę, susietą su viršūne, x. Norėdami tai pasiekti, reikia viršūnių rinkinio viršūnių etiketėms ir jų reikšmėms.

set_vertex_value (G, x, v)

Ši operacija suteikia naują vertę, susietą su viršūne, x. Norėdami tai pasiekti, reikia viršūnių rinkinio viršūnių etiketėms ir jų reikšmėms.

Kai kurie grafikai taip pat susieja vertes su savo kraštais. Tokiems grafikams reikalingos šios papildomos operacijos:

get_edge_value (G, x, y)

Ši operacija grąžina vertę, susietą su kraštu, (x, y). Norėdami tai pasiekti, jums reikia galios rinkinių kraštų ir jų reikšmių rinkinių.

set_edge_value (G, x, y, v)

Ši operacija suteikia naują vertę, susietą su kraštu, (x, y). Norėdami tai pasiekti, jums reikia galios rinkinių kraštų ir jų reikšmių rinkinių.

Išvada

Grafikas yra su kraštais sujungtų viršūnių rinkinys. Grafikas gali būti nenukreiptas arba nukreiptas. Kraštai gali būti nesukreipti arba nukreipti. Grafike gali būti kilpų arba jų nėra. Tai, ką turėtumėte išmokti toliau, yra rinkinys, galios nustatymas ir daugybė duomenų, susijusių su grafikais. Po to turėtumėte išmokti įvairių tipų grafikų, tokių kaip orientuotas grafikas, įprastas grafikas, pilnas grafikas, dvišalis grafikas, turnyro grafikas, srauto tinklo grafikas ir kt.

Chrys

Apie autorių

Chrysanthus Forcha

Matematikos integracijos atradėjas iš pirmųjų principų ir susijusių serijų. Techninio švietimo magistro laipsnis, specializuojasi elektronikos ir kompiuterių programinės įrangos srityje. Elektronikos bakalauras. Taip pat turiu žinių ir patirties magistro lygiu skaičiavimo ir telekomunikacijų srityse. Iš 20 000 rašytojų aš buvau 37-as geriausias „Devarticles“ rašytojas.com. Šiose srityse dirbu daugiau nei 10 metų.

Peržiūrėti visus pranešimus
Kaip įdiegti „League of Legends“ „Ubuntu 14“.04
Jei esate „League of Legends“ gerbėjas, tai jums yra galimybė išbandyti „League of Legends“. Atminkite, kad LOL palaikoma „PlayOnLinux“, jei esate „Li...
Įdiekite naujausią „OpenRA“ strategijos žaidimą „Ubuntu Linux“
„OpenRA“ yra „Free / Free Real Time Strategy“ žaidimų variklis, atkuriantis ankstyvuosius „Westwood“ žaidimus, tokius kaip klasikinis „Command & Conqu...
Įdiekite naujausią „Dolecin Emulator“, skirtą „Gamecube“ ir „Wii“, sistemoje „Linux“
„Delfinų emuliatorius“ leidžia žaisti pasirinktus „Gamecube“ ir „Wii“ žaidimus „Linux“ asmeniniuose kompiuteriuose (PC). „Dolphin Emulator“ yra laisv...