Graafityypit tietorakenteessa esimerkkien kanssa

โšก ร„lykรคs yhteenveto

Tietorakenteiden graafit ovat epรคlineaarisia kokoelmia solmuja ja kaaria, jotka luokitellaan rakenteeseen perustuviin perheisiin, kuten suunnatut, suuntaamattomat, painotetut, sykliset, asykliset, tรคydelliset, yhdistetyt, kaksijakoiset, Eulerin ja Hamiltonin graafit.

  • ๐Ÿ“ Mรครคritelmรค: Graafi G = (V, E) on epรคlineaarinen rakenne, jossa V on solmujoukko ja E on solmupareja yhdistรคvรค kaarejoukko.
  • โžก๏ธ suunta: Suunnatut graafit kรคyttรคvรคt nuoliviivoja, joilla on kiinteรค lรคhde ja kohde, kun taas suuntaamattomat graafit sallivat kaksisuuntaisen kulun jokaisen reunan yli.
  • ๐Ÿ‡ง๐Ÿ‡ท Paino: Painotetut graafit liittรคvรคt numeerisen kustannuksen jokaiseen reunaan, kun taas painottamattomat graafit kรคsittelevรคt kaikkia reunoja yhtรคlรคisten kustannusten yhteyksinรค.
  • ๐Ÿ” sykliรค: Sykliset graafit sisรคltรคvรคt yhden tai useamman syklin; suunnattu asyklinen graafi (DAG) kieltรครค syklit ja mahdollistaa ajoituksen ja topologisen lajittelun.
  • ๐Ÿ”— tรคydellisyys: Tรคydelliset graafit yhdistรคvรคt kaikki solmuparit, yhdistetyt graafit sallivat polun minkรค tahansa kahden solmun vรคlillรค ja nollagraafeissa on nolla kaaria.
  • ๐Ÿงฉ Erikoistyypit: Kaksijakoiset graafit, Eulerin graafit, Hamiltonin graafit, multigraafit, sykligraafit ja triviaaligraafit asettavat kukin tietyn sรครคnnรถn solmujen ja kaarien jรคrjestรคmiselle.

Kuvaajien tyypit tietorakenteessa

Graafi on epรคlineaarinen tietorakenne, joka koostuu solmuista ja kaarista. Solmut sisรคltรคvรคt tiedon tai datan, ja kaaret toimivat linkkinรค solmuparin vรคlillรค.

Graafeja voi olla useita erityyppisiรค solmujen ja kaarien sijainnista riippuen. Tรคssรค on joitakin tรคrkeitรค graafien tyyppejรค:

Ohjattu graafi

Suunnatun graafin reunoilla on nuolia, jotka osoittavat suunnan. Nuoli mรครคrittรครค, mihin reuna osoittaa tai mihin se pรครคttyy. Tรคssรค on esimerkki suunnatusta graafista.

Ohjattu graafi

Ohjattu graafi

  • Voimme siirtyรค solmusta A paikkaan D.
  • Emme kuitenkaan voi siirtyรค solmusta D solmuun A, koska reuna osoittaa pisteestรค A pisteeseen D.
  • Koska kaaviossa ei ole painoja, matkustaminen kรคrjestรค A paikkaan D maksaa saman verran kuin matkustaminen pisteestรค D paikkaan F.

Ohjaamaton kaavio

Suuntaamaton graafi sisรคltรครค viivoja ilman osoittimia. Tรคmรค tarkoittaa, ettรค voimme liikkua pรคinvastoin kahden kรคrjen vรคlillรค. Tรคssรค on yksinkertainen esimerkki suuntaamattomasta graafista.

Ohjaamaton kaavio

Ohjaamaton kaavio

Yllรค olevassa kaaviossa

  • Voimme siirtyรค pisteestรค A pisteeseen B.
  • Voimme myรถs siirtyรค pisteestรค B pisteeseen A.
  • Reunat eivรคt sisรคllรค ohjeita.

Se on esimerkki suuntaamattomasta graafista, jolla on รครคrellinen mรครคrรค solmuja ja kaaria ilman painoja.

Painotettu kaavio

Graafia, jonka kaarilla on painoja tai kustannuksia, kutsutaan painotetuksi graafiksi. Numeerinen arvo edustaa yleensรค siirtymiskustannuksia yhdestรค solmusta toiseen solmuun. Sekรค suunnatuilla ettรค suuntaamattomilla graafeilla voi olla painoja kaarilla. Tรคssรค on esimerkki painotetusta graafista (suuntattu).

Ohjattu kaavio painolla

Suunnattu graafi painolla

  • A:sta B:hen on etu ja painoarvo on 5, mikรค tarkoittaa, ettรค siirtyminen pisteestรค A pisteeseen B maksaa meille 5.
  • A osoittaa B:hen, mutta tรคssรค kaaviossa B:llรค ei ole suoraa reunaa A:han nรคhden. Joten emme voi matkustaa B:stรค A:han.
  • Jos kuitenkin haluamme siirtyรค pisteestรค A pisteeseen F, on olemassa useita polkuja. Polut ovat ADF ja ABF. ADF maksaa (10 + 11) eli 21.
  • Tรคssรค polku ABF maksaa (5 + 15) eli 20. Tรคssรค lisรคtรครคn polun jokaisen kaaren paino.

Tรคssรค on esimerkki suuntaamattomasta graafista painojen kanssa:

Ohjaamaton kaavio painolla

Ohjaamaton kaavio painolla

Tรคssรค reunalla on painoa, mutta ei suuntaa. Joten se tarkoittaa, ettรค matka pisteestรค A paikkaan D maksaa 10 ja pรคinvastoin.

Kaksisuuntainen kaavio

Kaksisuuntaisilla ja suuntaamattomilla graafeilla on yhteinen ominaisuus. Se on:

  • Yleisesti ottaen suuntaamattomalla graafilla voi olla yksi kaari kahden kรคrjen vรคlillรค.

Esimerkiksi:

Kaksisuuntainen kaavio

  • Tรครคllรค siirtyminen paikasta A paikkaan D tai D paikkaan A maksaa 10.
  • Kaksisuuntaisessa kuvaajassa voi olla kaksi reunaa kahden kรคrjen vรคlillรค.

Tรคssรค on esimerkki:

Kaksisuuntainen kaavio

Kaksisuuntainen kaavio

Matkustaminen pisteestรค A pisteeseen D maksaa 17, mutta pisteestรค D pisteeseen A 12. Emme siis voi antaa kahta eri painoa, jos kyseessรค on suuntaamaton graafi.

ร„รคretรถn kaavio

Graafi sisรคltรครค รครคrettรถmรคn mรครคrรคn kaaria ja solmuja. Jos graafi on รครคretรถn ja se on myรถs yhtenรคinen graafi, se sisรคltรครค myรถs รครคrettรถmรคn mรครคrรคn kaaria. Tรคssรค laajennetut kaaret tarkoittavat, ettรค nรคihin solmuihin voi olla kaarien kautta yhteydessรค useampia kaaria. Tรคssรค on esimerkki รครคrettรถmรคstรค graafista:

ร„รคretรถn kaavio

ร„รคretรถn kaavio

Nollakuvaaja

Nullgraafi sisรคltรครค vain solmuja tai kรคrkipisteitรค, mutta ei kaaria. Jos annetaan graafi G = (V, E), jossa V on kรคrkipisteet ja E on kaaret, se on null, jos kaarien lukumรครคrรค E on nolla. Tรคssรค on esimerkki nullgraafista:

Nollakuvaaja

Nollakuvaaja

Triviaali kaavio

Graafitietorakennetta pidetรครคn triviaalina, jos siinรค on vain yksi solmu tai piste ilman kaaria. Tรคssรค on esimerkki triviaalisesta graafista:

Triviaali kaavio

Monikuvaaja

Graafia kutsutaan multigraafiksi, kun kahden kรคrkipisteen vรคlillรค on useita kaaria tai kรคrkipisteessรค on silmukka. Termi "silmukka" graafitietorakenteessa tarkoittaa kaaria, joka osoittaa samaan solmuun tai kรคrkipisteeseen. Multigraafi voi olla suunnattu tai suuntaamaton. Tรคssรค on esimerkki monigraafista:

Monikuvaaja

Pisteen B ja A vรคlillรค on kaksi kaaria. Lisรคksi solmulla E on itsesilmukka. Yllรค oleva graafi on suunnattu graafi, jonka kaarilla ei ole painoja.

Tรคydellinen kaavio

Graafi on tรคydellinen, jos jokaisella kรคrjellรค on suunnattuja tai suuntaamattomia kaaria kaikkien muiden kรคrkien kanssa. Oletetaan, ettรค kรคrkien lukumรครคrรค on yhteensรค V ja jokaisella kรคrjellรค on tรคsmรคlleen V - 1 kaaria. Tรคllรถin tรคtรค graafia kutsutaan tรคydelliseksi graafiksi. Tรคllaisessa graafissa jokainen kรคrki on yhdistetty kaikkiin muihin kรคrkiin kaarien kautta. Tรคssรค on esimerkki tรคydellisestรค graafista, jossa on viisi kรคrkeรค:

Tรคydellinen kaavio

Kuvassa nรคkyy, ettรค solmujen kokonaismรครคrรค on viisi ja kaikilla solmuilla on tรคsmรคlleen neljรค reunaa.

Yhdistetty kaavio

Graafia kutsutaan yhtenรคiseksi graafiksi, jos se alkaa yhdestรค solmusta tai kรคrkipisteestรค ja voi jatkaa kaikkiin solmuihin lรคhtรถsolmusta. Tรคtรค varten jokaisen solmu- tai kรคrkipisteparin vรคlillรค tulisi olla vรคhintรครคn yksi kaari. Tรคssรค on esimerkki yhtenรคisestรค graafista:

Yhdistetty kaavio

Tรคssรค on selitys yllรค olevasta yhdistetystรค graafista:

  • Olettaen, ettei C:n ja F:n vรคlillรค ole reunaa, emme voi matkustaa pisteestรค A pisteeseen G. Reuna C:stรค F:รครคn kuitenkin mahdollistaa matkustamisen tietystรค solmusta mihin tahansa solmuun.
  • Tรคydellinen Graafi on Yhdistetty Graafi, koska voimme siirtyรค solmusta mihin tahansa toiseen solmuun annetussa kaaviossa.

Syklinen kaavio

Graafia sanotaan sykliseksi, jos siinรค on yksi tai useampi sykli. Tรคssรค on esimerkki syklisestรค graafista:

Syklinen kaavio

Tรคssรค solmut A, B ja C muodostavat syklin. Graafi voi sisรคltรครค useita syklejรค sen sisรคllรค.

Suunnattu asyklinen kaavio (DAG)

Graafia kutsutaan suunnatuksi asykliseksi graafiksi eli DAG:ksi, jos graafin sisรคllรค ei ole syklejรค. DAG on tรคrkeรค tehtรคvรค suoritettaessa... Topologinen lajittelu tai suoritusjรคrjestyksen lรถytรคmiseksi. DAG on tรคrkeรค myรถs aikataulutusjรคrjestelmien luomisessa tai resurssien riippuvuuksien skannaamisessa jne. Yllรค oleva graafi ei kuitenkaan sisรคllรค sykliรค. Tรคssรค on yksinkertainen esimerkki suunnatusta asyklisestรค graafista (DAG):

Suunnattu asyklinen kaavio (DAG)

Kiertokaavio

Syklikaavio ei ole sama asia kuin syklinen kaavio. Syklikaaviossa jokaisella solmulla on tรคsmรคlleen kaksi yhdistettyรค kaarraa, mikรค tarkoittaa, ettรค jokaisella solmulla on tรคsmรคlleen kaksi astetta. Tรคssรค on esimerkki syklikaaviosta:

Kiertokaavio

Kahdenvรคlinen kaavio

Tรคllaiset Kuvaajat ovat erikoisia graafeja, joissa solmut on sijoitettu kahteen joukkoon. Kaksijakoisen graafin on noudatettava sรครคntรถรค:

  • Kahden kรคrkijoukon tulee olla erilliset, mikรค tarkoittaa, ettรค kaikki kรคrkipisteet on jaettava kahteen ryhmรครคn tai joukkoon.
  • Saman joukon kรคrkipisteiden ei tulisi muodostaa kaaria.

Kahdenvรคlinen kaavio

Euler-kaavio

Graafitietorakennetta pidetรครคn Eulerin graafina, jos kaikilla sen solmuilla on parillinen aste. Termi solmujen aste tarkoittaa tiettyyn solmuun osoittavien tai siitรค ulospรคin osoittavien kaarien lukumรครคrรครค. Tรคssรค on esimerkki Eulerin graafista:

Euler-kaavio

Kaikilla kรคrkipisteillรค on parilliset asteet. Pisteillรค A, D, E ja H on kaksi astetta. Tรคssรค solmulla C on neljรค astetta, mikรค on parillinen luku.

Hamiltonin kaavio

Hamilton-graafi on yhtenรคinen graafi, jossa voit kรคydรค kaikissa tietyn pisteen solmuissa palaamatta samaan solmuun tai kรคyttรคmรคttรค samaa kaarea. Tรคmรคn tyyppistรค yhtenรคistรค graafia kutsutaan "Hamilton-graafiksi". Polkua, jota pitkin tarkistat, onko annettu graafi Hamilton-graafi vai ei, kutsutaan Hamiltonin poluksi. Tรคssรค on yksinkertainen esimerkki Hamiltonin graafista:

Hamiltonin kaavio

Tรคssรค kuvassa voimme vierailla kaikissa yllรค olevan kaavion solmupisteissรค. Yksi poluista voi olla ADCHBEOn myรถs mahdollista lรถytรครค Hamiltonin sykli. Hamiltonin sykli alkaa ja pรครคttyy samaan kรคrkeen. Joten Hamiltonin sykli on ADCHBEA.

UKK

Graafi on epรคlineaarinen tietorakenne, joka koostuu solmuista (vertekseistรค) ja linkeistรค (kaarista). Kรคrjet tallentavat dataa ja kaaret yhdistรคvรคt kรคrkipareja muodostaen verkkoja, joita kรคytetรครคn teiden, sosiaalisten siteiden, riippuvuuksien ja muiden mallintamiseen.

Suunnatut graafit kรคyttรคvรคt kaaria, joissa on lรคhteestรค kohteeseen osoittavia nuolia, mikรค rajoittaa liikkumista kyseiseen suuntaan. Suuntaamattomat graafit kรคyttรคvรคt kaaria ilman nuolia, mikรค sallii liikkumisen yhdistettyjen solmujen vรคlillรค kumpaan tahansa suuntaan.

Suunnattu asyklinen graafi eli DAG on suunnattu graafi, joka ei sisรคllรค syklejรค. DAGeja kรคytetรครคn laajalti tehtรคvien ajoitukseen, koontijรคrjestelmiin, pakettiriippuvuuksien ratkaisemiseen ja mihin tahansa tyรถnkulkuun, joka vaatii kelvollisen topologisen jรคrjestyksen.

Painotettu graafi liittรครค jokaiseen reunaan numeerisen painon, joka edustaa etรคisyyttรค, aikaa tai kustannusta. Lyhyimmรคn reitin algoritmit, kuten Dijkstra ja verkon reititysprotokollat, kรคyttรคvรคt painotettuja graafeja tehokkaimman reitin lรถytรคmiseen.

Tรคydellisessรค graafissa on kaari jokaisen solmuparin vรคlillรค. Yhtenรคinen graafi tarvitsee polun vain jokaisen parin vรคlillรค. Jokainen tรคydellinen graafi on yhtenรคinen, mutta jokainen yhtenรคinen graafi ei ole tรคydellinen.

Kaksijakoiset graafit jakavat solmut kahteen erilliseen joukkoon, joiden vรคlillรค on vain kaaria. Ne mallintavat yhteensovitusongelmia, kuten tyรถntekijรถiden osoittamista tyรถtehtรคviin, opiskelijoiden osoittamista kursseille tai kyytien tarjoamista kuljettajille matkustajille.

Graafineuraaliverkot soveltavat koneoppimista graafirakenteiseen dataan tehtรคvissรค, kuten petosten havaitsemisessa, lรครคkekehityksessรค ja suositusten antamisessa. Tietograafit tukevat tekoรคlyn vastausprosessia kysymyksiin, ja laskentagraafit kuvaavat syvรคoppimisen jokaista eteen- ja taaksepรคin suuntautuvaa vaihetta.

Kyllรค. AI Copilot -tyรถkalut, kuten GitHub Copilot ja ChatGPT, luovat mallikoodeja BFS:lle, DFS:lle, Dijkstralle ja topologiselle lajittelulle useimmilla kielillรค. Kehittรคjien on vielรค tarkistettava reunatapaukset, syklien kรคsittely ja monimutkaisuus tuotantokoodia varten.

Tiivistรค tรคmรค viesti seuraavasti: