Graafin tietorakenne ja Algorithms (Esimerkki)
โก รlykรคs yhteenveto
Graafitietorakenne on epรคlineaarinen kokoelma solmuja ja kaaria, joissa jokainen kaari yhdistรครค kaksi solmua. Graafit mallintavat reaalimaailman verkostoja, kuten karttoja, sosiaalisia yhteyksiรค ja verkkosivuja, ja tukevat monia tehokkaita algoritmeja.

Mikรค on graafi tietorakenteessa?
Graafi on epรคlineaarinen tietorakenne, joka koostuu solmuista ja kaarista, joissa solmut sisรคltรคvรคt informaation tai datan ja kaaret toimivat linkkinรค solmujen parin vรคlillรค.
Sitรค kรคytetรครคn ratkaisemaan reaalimaailman ongelmia, kuten parhaan reitin lรถytรคmistรค mรครคrรคnpรครคhรคn sekรค reittiรค televiestinnรคlle ja sosiaalisille verkostoille. Kรคyttรคjiรค pidetรครคn graafissa solmuina, ja langat ovat kรคyttรคjiรค yhdistรคviรค reunoja.
Jos reunat esitetรครคn muodossa E ja kรคrjet V, niin graafi G voidaan kirjoittaa kรคrkien ja reunojen joukoksi, kuten esim. G (V, E).
Esimerkki graafista tietorakenteessa
Tรคssรค on yksinkertainen esimerkki graafin tietorakenteesta:
Se on yksinkertainen suuntaamaton graafi (erรครคnlainen graafi). Tรคssรค solmujen joukko on: {A, B, C, D, E, F}. Kaksi solmua muodostaa kaaren. Esimerkiksi A ja B on yhdistetty kaarella. A ja F eivรคt kuitenkaan ole yhdistetty millรครคn kaarilla.
Kuvaajan terminologiat tietorakenteessa
Seuraavassa on joitakin tรคrkeitรค termejรค, joita kรคytetรครคn graafin tietorakenteessa:
| Termi | Tuotetiedot |
|---|---|
| Kรคrki | Jokaista dataelementtiรค kutsutaan solmuksi tai kรคrkipisteeksi. Yllรค olevassa kuvassa A, B, C, D ja E ovat solmut. |
| Reuna (kaari) | Kahden solmun tai kรคrkipisteen vรคlisiรค yhdistรคviรค linkkejรค kutsutaan kaareksi (Arc). Sillรค on kaksi pรครคtรค ja se esitetรครคn muodossa (alkuPiste, loppuPiste). |
| Ohjaamaton reuna | Se on kaksisuuntainen reuna. |
| Ohjannut Edge | Se on yksisuuntainen reuna. |
| Painotettu reuna | Reuna, jolla on arvo. |
| Aste | Graafissa yhteen kรคrkeen yhdistettyjen kaarien lukumรครคrรครค kutsutaan asteeksi. |
| Indegree | Huippupisteeseen yhdistettyjen saapuvien reunojen kokonaismรครคrรค. |
| Ylimielinen | Huippupisteeseen yhdistettyjen lรคhtevien reunojen kokonaismรครคrรค. |
| Itsesilmukka | Reunaa kutsutaan itsesilmukaksi, jos sen kaksi pรครคtepistettรค ovat samat. |
| Viereisyys | Kรคrkien sanotaan olevan vierekkรคisiรค, jos niiden vรคlillรค on yhdistetty kaari. |
Kuvaajien tyypit tietorakenteessa
Tรคssรค on luettelo yleisimmistรค kaaviotyypit tietorakenteessa:
- Ohjattu graafi
- Ohjaamaton kaavio
- Painotettu kaavio
- Kaksisuuntainen kaavio
- รรคretรถn kaavio
- Nollakuvaaja
- Triviaali kaavio
- Monikuvaaja
- Tรคydellinen kaavio
- Yhdistetty kaavio
- Syklinen kaavio
- Suunnattu asyklinen kaavio (DAG)
- Kiertokaavio
- Kahdenvรคlinen kaavio
- Euler-kaavio
- Hamiltonin kaavio
Kuinka esittรครค graafi tietorakenteessa?
Graafi tallennetaan yleensรค muistiin kรคyttรคmรคllรค yhtรค kahdesta esitystavasta. Valinta vaikuttaa siihen, kuinka paljon muistia graafi kรคyttรครค ja kuinka nopeasti yleiset toiminnot suoritetaan.
- Vierekkรคisyysmatriisi: Kaksiulotteinen V ร V -taulukko, jossa solu [i][j] on 1 (tai kaaren paino), jos pisteiden i ja j vรคlillรค on kaari, ja 0 muuten. Se sallii O(1)-kaarenhaun, mutta kรคyttรครค O(Vยฒ)-avaruutta, mikรค tekee siitรค parhaan tiheille graafeille.
- Vierekkรคisyysluettelo: Listojen taulukko, jossa jokainen solmu tallentaa listan naapurisolmuistaan. Se kรคyttรครค O(V + E)-avaruutta ja on tehokas harvoille graafeille, minkรค vuoksi useimmat reaalimaailman graafit kรคyttรคvรคt sitรค.
Voit lukea lisรครค nรคistรค osiosta vierekkรคisyyslista ja graafin matriisiesitys opetusohjelma.
Graafisen tietorakenteen sovellukset
Graafilla on monia kรคyttรถtapauksia. On olemassa paljon algoritmeja, jotka kรคyttรคvรคt graafeja. Tรคssรค on joitakin graafin sovelluksia:
- Google Kartat kรคyttรคvรคt kuvaajia kahden tien risteyksen lรถytรคmiseen ja kahden sijainnin vรคlisen etรคisyyden laskemiseen. Esimerkiksi Dijkstra, lyhimmรคn etรคisyyden lรถytรคmiseksi lรคhtรถ- ja mรครคrรคnpรครคn vรคlillรค.
- Facebook kรคyttรครค graafeja lรถytรครคkseen kรคyttรคjien yhteiset ystรคvรคt. Sen algoritmi pitรครค jokaista kรคyttรคjรครค graafin solmuna.
- Resurssien allokointiin kรคytetรครคn DAG:ia (Directed Acyclic Graph). Se tarkistaa resurssien riippuvuuden.
- Google Hakukoneet kรคyttรคvรคt graafisia kaavioita verkkosivustojen sijoituksen luomiseen.
- Karttaping laite kรคyttรครค graafitietorakennetta.
- A reititin ja sen protokolla kรคyttรครค Graafia oppiakseen polun mรครคrรคnpรครคhรคn.

